嵌入式1-ARM学习(三)

IO与内存

  • 内存是程序的运行场所,内存和CPU之间通过总线连接,CPU通过一定的地址来访问具体内存单元。
  • IO(input and output)是输入输出接口,是CPU和其他外部设备(如串口、LCD、触摸屏、LED等)之间通信的道路。一般的,IO就是指CPU的各种内部或外部外设。

内存的访问方式

  • 内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
  • CPU的地址总线的位数是CPU设计时确定的,因此一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。
  • 内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高访问快,缺点是资源有限,扩展性差。

IO的访问方式

  • IO指的是与CPU连接的各种外设
  • CPU访问各种外设有2种方式:
  • 一种是类似于访问内存的方式,即把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设,叫IO与内存统一编址方式;如,显卡(Graphics Card)、网卡(Network Card)、声卡(Sound Card)、硬盘控制器(Hard Disk Controller);
  • 另一种是使用专用的CPU指令来访问某种特定外设,叫IO与内存独立编址。如,USB设备(如USB存储设备、USB打印机)、PCI设备(如PCI网卡、PCI声卡)、RS-232串口设备(如串口打印机、串口调试器)。

对比

  • 由于内存访问频率高,因此采用总线式连接,直接地址访问,效率最高。
  • IO与内存统一编址方式,优势是IO当作内存来访问,编程简单;缺点是IO也需要占用一定的CPU地址空间,而CPU的地址空间是有限资源。
  • IO与内存独立编织方式,优势是 不占用CPU地址空间,缺点是CPU设计变复杂了。

程序和数据

  • 程序运行时两大核心元素:程序 + 数据
  • 程序是我们写好的源代码经过编译、汇编之后得到的机器码,这些机器码可以拿给CPU去解码执行,CPU不会也不应该去修改程序,所以程序是只读的。
  • 数据是程序运行过程中定义和产生的变量的值,是可以读写的,程序运行实际就是为了改变数据的值。

冯诺依曼结构

  • 程序和数据都放在内存中,且不彼此分离的结构称为冯诺依曼结构。譬如Intel的CPU均采用冯诺依曼结构。

哈佛结构

  • 程序和数据分开独立放在不同的内存块中,彼此完全分离的结构称为哈佛结构。譬如大部分的单片机(MCS51、ARM9等)均采用哈佛结构。

优劣对比

  • 冯诺依曼结构中程序和数据不区分的放在一起,因此安全和稳定性是个问题,好处是处理起来简单。
  • 哈佛结构中程序(一般放在ROM、flash中)和数据(一般放在RAM中)独立分开存放,因此好处是安全和稳定性高,缺点是软件处理复杂一些(需要统一规划链接地址等)

寄存器

寄存器是软件能够控制硬件的关键。寄存器主要用于存储临时数据、指令操作、地址计算、数据传输和控制信号存储等功能,它在计算机的指令执行和数据处理过程中起到了至关重要的作用。(可参考C语言中的位操作)

在计算机系统中,CPU是执行计算和控制指令的核心部件,而内存则用于存储程序和数据。CPU需要频繁地访问内存来读取指令和数据,但是内存的访问速度相对较慢,无法满足CPU高速运算的需求。为了提高CPU的运行效率,引入了寄存器。

  • 寄存器属于CPU外设的硬件组成部分
  • CPU可以像访问内存一样访问寄存器
  • 寄存器是CPU的硬件设计者制定的,目的是留作外设被编程控制的“活动开关”
  • 正如汇编指令集是CPU的编程接口API一样,寄存器是外设硬件的软件编程接口API。使用软件编程控制某一硬件,其实就是编程读写该硬件的寄存器。
  • SoC中有2类寄存器:通用寄存器和特殊功能寄存器(SFR)

通用寄存器

  • 是CPU的组成部分,CPU的很多活动都需要通用寄存器的支持和参与。通用寄存器是用于存储临时数据的寄存器。它们可以存储任意类型的数据,如整数、浮点数、内存地址等。通常,计算机体系结构中会有多个通用寄存器,例如,x86体系结构中有AX、BX、CX、DX等通用寄存器。

通用寄存器的主要功能包括:

  • 存储临时数据:通用寄存器可用于存储运算过程中的中间结果和临时变量。
  • 存储函数参数和返回值:通用寄存器可以用于存储函数调用时的参数和返回值。
  • 存储计算结果:通用寄存器可以存储运算的结果,供后续指令使用。

特殊功能寄存器(SFR)

  • SFR(special function register,特殊功能寄存器)不在CPU中,而存在于CPU的外设中,我们通过访问外设的SFR来编程操控这个外设,这就是硬件编程控制的方法。特殊功能寄存器是用于特定目的而设计的寄存器。它们在计算机体系结构中起着特殊的作用,用于控制和管理计算机的各种功能。

特殊功能寄存器的功能包括:

  • 程序计数器(Program Counter,PC):存储下一条将被执行的指令的内存地址。
  • 标志寄存器(Flag Register):存储运算结果的状态信息,如溢出、零、进位等。
  • 状态寄存器(Status Register):存储处理器的当前状态信息,如运行状态、中断状态等。
  • 控制寄存器(Control Register):用于控制处理器的各种操作,如中断使能、内存管理等。

ARM

ARM是RISC架构

  • 常用ARM汇编指令只有二三十条
  • ARM是低功耗CPU
  • ARM的架构非常适合单片机、嵌入式,尤其是物联网领域;而服务器等高性能领域目前主导还是Intel

ARM是统一编址的

  • 大部分ARM(M3 M4 M7 M0 ARM9 ARM11 A8 A9等)都是32位架构
  • 32位ARM CPU支持的内存少于4G,通过CPU地址总线来访问
  • SoC中的各种内部外设通过各自的SFR编程访问,这些SFR的访问方式类似于访问普通内存,这叫IO与内存统一编址。

ARM是哈佛结构的

  • 常见ARM(除ARM7外)都是哈佛结构的
  • 哈佛结构保证了ARM CPU运行的稳定性和安全性,因此ARM适用于嵌入式领域
  • 哈佛结构也决定了ARM裸机程序(使用实地址即物理地址)的链接比较麻烦,必须使用复杂的链接脚本告知链接器如何组织程序;对于OS之上的应用(工作在虚拟地址之中)则不需考虑这么多

参考    ARM、ARM架构、ARM架构芯片

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白不想画工图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值