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裸机二
124 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=
1362 0
|
5月前
|
数据处理 编译器 数据库
x64 和 arm64 处理器架构的区别
x64 和 arm64 处理器架构的区别
|
5天前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
9天前
|
存储 Docker 容器
ARM架构鲲鹏主机BClinux离线安装docker步骤
下载并安装适用于ARM架构的Docker CE二进制文件,解压后移动至/usr/bin目录。创建docker组,配置systemd服务脚本(docker.service、docker.socket、containerd.service),重载systemd配置,启动并启用docker服务。编辑daemon.json配置存储驱动、镜像加速地址等,最后拉取所需镜像。
15 0
|
13天前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
2月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
|
1月前
ARM64架构提供的Cache操作
ARM64架构提供的Cache操作
|
2月前
|
Ubuntu Windows
ARM架构安装ubuntu系统
8月更文挑战第19天
783 0