内存是程序的运行场所,内存和CPU之间通过总线连接,CPU通过一定的地址来访问具体内存单元。
什么是IO?IO(input and output)是输入输出接口,是CPU和其他外部设备(如串口、LCD、触摸屏、LED等)之间通信的道路。一般的,IO就是指CPU的各种内部或外部外设。
内存的访问方式内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
CPU的地址总线的位数是CPU设计时确定的,因此一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。
内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高访问快,缺点是资源有限,扩展性差。
外设通过精密的硬件连接到处理器的地址空间通过地址访问的方式与外设进行通信类似于访问内存的方式,即把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设独立IO空间(IO与内存独立编址)
独立于地址空间,无法通过地址访问外设使用专用指令与外设进行通信
对比:
由于内存访问频率高,因此采用总线式连接,直接地址访问,效率最高。
IO与内存统一编址方式,优势是IO当作内存来访问,编程简单;缺点是IO也需要占用一定的CPU地址空间,而CPU的地址空间是有限资源。
IO与内存独立编织方式,优势是 不占用CPU地址空间,缺点是CPU设计变复杂了。
从软件工程师的角度来看,只需对不同的IO端口读写就可以操作外设;读写IO端口时候的具体值和意义需要查询具体的硬件手册。
3 硬件设计的关键通过具体的硬件设计,可以使得地址总线上的值在某个范围时,片选信号为“真”,即:使能连接的设备,从而读取相应地址中的数据!
比如我们需要通过串口实现通信时,那么这里的外部设备实际上相当于串口控制器,然后串口控制器通过相关控制线、数据线连接串口。实际上,串口控制器是集成在SoC内部。由于是同一编址,可以把串口控制器的寄存器看成是内存,那么就需要通过地址总线、数据总线进行读写。
设备地址映射示例 修改记录 时间动作2017.4.25首次上传 参考资料hldzc — 狄泰软件学院 — 十二月提升计划
受伤的小懒虫 — 《专业嵌入式软件开发 全面走向高质量编程》