主机:
主要分为以下几个部分
cpu | 计算机的心脏,负责运算 |
---|
显卡 | 用于处理图像数据 | 内存 | 用于cpu和硬盘交换数据,进行临时存储 | 硬盘 (固态或机器) | 所有文件均存储在此 | 主板 | 计算机的各部分插在主板上协同工作 |
arm处理器相对电脑cpu。比如s5pv210。 那cpu是如何将外设、内存等联系在一起的呢
答:寄存器是cpu的硬件设计者制定的,通过查阅数据手册查阅相关寄存器
寄存器与cpu有关
寄存器包括两部分
通用寄存器(37个) | 在cpu中 |
---|
特殊功能寄存器(外设) | 不在cpu中 |
可以理解为API
汇编 | CPU的编程接口API |
---|
寄存器 | 外设硬件的软件编程接口API |
32位系统为从0x0000_0000到0xFFFF_FFFF一共有4G个数字 所以为 2^32的地址总线 2^32的数据总线
一般的核心版主要包括 CPU、DDR、nandflash这三个部分 cpu是必须要有的,但是DDR有缺陷是掉电不保存,nandflash的缺陷是有烧写寿命。 所以思路为 在cpu中 运行cpu内irom的启动代码,将bl1复制到cpu内iram中。
bl1初始化DDR,将代码复制到DDR中,再去DDR中运行程序,最终的目的为将nandflash的代码copy到DDR中去运行。 这里有一个问题 为什么需要重定位
1、链接地址与运行地址不同:小内存到大内存 2、重定位:位置无关码的作用:将位置有关码复制到链接地址
tftp方式 | 直接下载到内存DDR,不经过inand |
---|
fastboot方式 | 程序烧录到inand上面,但inand有烧写寿命 |
位置有关码 短跳转:跳转至运行地址 长链接:跳转至链接地址 长链接需要把代码copy到链接地址才能跳转
中断
单核cpu实际无法并行的,但可通过中断机制,宏观上的并行,微观上的串行 在cpu设计时,就事先定义了cpu中一些特定作为哦异常中断的入口地址(启动文件.s) 当发生中断处理时,在汇编中,而不是在c中,目的是保护现场
单片机 | 中断可嵌套 | 考虑实时性 |
---|
linux的arm | 中断不可嵌套 | 不考虑实时性 |
当进入一个中断,会屏蔽IRQ 在commit log清晰的解释了中断嵌套可能引入的一些risk,比如stack溢出等
从计算机底层原理思考
都是通过配置寄存器来控制硬件,原理相同 从文件类型思考
段
总体上从底层的角度从新思考了一下嵌入式到底在干什么,它的内部思维,保持思路清晰,自己解决
|