ARM裸机

简介: ARM裸机

一、从源码到cpu执行过程

高级语言-->.s汇编-->.exe二进制可执行程序-->bin格式烧录文件-->cpu读flash-->解码后cpu执行指令

二、汇编和高级语言差异

汇编:无可移植性,难写,执行效率高

高级语言:可移植性高,好写,执行效率低,适合大型复杂项目

三、CISC和RISC

RAM架构是RISC

地址总线:最大寻址范围(32位,4g)
数据总线:单次交换信息数量(32位,4字节)

CISC:复杂指令集(例如复杂计算只需要一条指令就可完成),编译器好设计,cpu难,IO与内存独立编址

RISC:精简指令集(提供基本功能指令),cpu设计和工艺简单,编译器难,IO与内存统一编址(例如单片机寄存器和内存是统一编址)

四、程序和数据

程序运行核心:程序(只读的)+数据(可读写的)

五、冯诺依曼结构与哈佛结构

冯诺依曼结构:程序和数据存放在内存,不分离(Intel),程序和数据可读可写(不安全),处理简单

哈佛:程序和数据在内存,分离(大部分嵌入式单片机),程序不可写(安全),软件处理复杂

六、寄存器

特殊功能寄存器(SFR):一般在外设里面,通过访问寄存器来控制外设

通用寄存器:r1,r2。。。。sp,lr,pc,cpsr,spsr(共37个,汇编用的多,c一般不使用)

每种模式下最多只能看到18个寄存器,其他寄存器名字相同但在当前模式(七个模式)不可见。

对于r14来说,RAM共有6个r14,但在特定模式下只有一个是可见的,其他必须切换到对应模式下才能看见,这种设计叫影子寄存器。

七、内存外存

CPU连接内存是总线访问(好处直接访问随机访问,坏处占用地址空间大小受限)

一般pc:小容量BIOS(NorFlash)+大容量硬盘+大容量DRAM

单片机:小容量NorFlash+小容量SRAM

嵌入式系统:外接大容量Nand+外接大容量DRAM+内置SRAM

内存
内部存储器,运行程序RAM断电数据数据丢失(DRAM SRAM DDR)

SRAM:静态内存,容量小价格高,优点上电直接使用

DRAM:动态内存,容量大价格低,缺点需要软件初始化才能使用

外存
外部存储器,ROM断电数据数据不会丢失(硬盘 flash u盘 sd卡)

NorFlash:容量小,价格高,优点可以与cpu直接总线连接,一般用作启动介质

NandFlash:容量大,价格低,需要软件初始化,通过时序接口读写

八、嵌入式系统启动方式

1.先从内部IROM读取代码(BL0),执行(做一些初始化cpu时钟,看门狗等,然后判断启动模式,从相应的外部存储器读取一部分启动代码BL1到SRAM)

2.执行上一步读取来的代码IRAM,BL1负责初始化NandFlash,然后将BL2读取到IRAM

3.从IRAM运行BL2,初始化DRAM,然后将OS读到DRAM,启动系统。

先读取内部ROM初始化一些东西判断启动方式,然后去对应的地方读取boot执行,最后读取os到DRAM启动系统

BL0

关看门狗
初始化cache指令
初始化堆栈
初始化块设备复制函数
设置系统时钟
复制BL1到IRAM
校验BL1,跳转到BL1执行

九、编程模式和7种模式

大部分ARM core提供:ARM指令集(32bit),Thumb指令集(16),Thumb2指令集(16&32)

工作模式:

user:非特权模式

FIQ高优先级,IRQ低优先级,Supervisor复位或软中断,About存取异常,Under未定义指令:特权模式,异常

system:特权模式

cpu为什么会有这些模式:

cpu是硬件,os是软件,软件的设计要依靠硬件的特性,硬件的设计要考虑软件需要。

操作系统有安全级别要求。

异常
异常向量表,有些cpu支持多个中断会有二级中断向量表
所有cpu都有异常向量表,当异常发生,cpu会自动动作(PC跳转到异常向量处理异常)

异常处理机制
1.异常产生时

拷贝CPSR到SPSR

设置适当CPSR位(改变处理器状态ARM态,改变处理器进入相应异常模式,设置中断禁止相应中断)

保存返回地址到LR_

设置PC为相应的异常向量地址。

2.返回时
从SPSR恢复CPSR
从LR_恢复PC

目录
相关文章
|
存储 固态存储 Shell
ARM裸机二
ARM裸机二
135 0
|
异构计算
【黑金ZYNQ7000系列原创视频教程】03.体验FPGA里的ARM——裸机helloworld实验
黑金论坛地址: http://www.heijin.org/forum.php?mod=viewthread&tid=36637&extra=page%3D1     爱奇艺地址: http://www.iqiyi.com/w_19rugii7ut.html?source=
1369 0
|
27天前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
|
2月前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
2月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
|
2月前
|
存储 Docker 容器
ARM架构鲲鹏主机BClinux离线安装docker步骤
下载并安装适用于ARM架构的Docker CE二进制文件,解压后移动至/usr/bin目录。创建docker组,配置systemd服务脚本(docker.service、docker.socket、containerd.service),重载systemd配置,启动并启用docker服务。编辑daemon.json配置存储驱动、镜像加速地址等,最后拉取所需镜像。
69 0
|
2月前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
4月前
|
机器学习/深度学习 算法 数据库
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
在我们选择阿里云服务器的架构时,选择合适的云服务器架构对于提升业务效率、保障业务稳定至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供参考和选择。
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
|
4月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
143 3