目录
1.系统架构
下面以STM32的一款型号为STM32F103VET6的单片机为例,下面为其系统框架:
STM32F103系列单片机采用的Cortex-M3内核,CPU最高速度达72MHz,内置FLASH,存储空间达到512KB,SRAM达到64KB。图中STM32F103VET6这一款单片机,具有100个引脚,其中I/O引脚有80个。
主系统由这些部分和一些外设组成,整体称之为片上系统(SoC):
- 四个驱动单元: Cortex-M3内核DCode总线(D-bus)、系统总线(S-bus) 、通用DMA1、通用DMA2 ;
- 四个被动单元:内部SRAM、内部Flash、FSMC、AHB到APB的桥(AHB2APBx),它连接所有的APB设备;
FSMC:灵活的静态存储器控制器,CPU与外部存储之间的桥梁,功能就是往相应的地址写数据时,不需要用软件模拟外部存储芯片的读写时序,只需配置FMSC相关的寄存器,然后往相应存储块中的地址里写数据就行了。
I-bus:将内核指令与FLASH闪存存储器连接,指令预取在此总线完成;
D-bus:将内核数据与FLASH闪存存储器连接(常量加载和调试访问),数据处理在此完成;
S-bus:连接内核(外设总线)至总线矩阵,总线矩阵协调内核和DMA间的访问。
2.计算机组成原理
计算机硬件由5大部分构成:运算器,控制器,存储,输入/输出设备。其中运算器和控制器构成中央处理器(CPU),可以是Intel的I7/I8/I9,也可以是ARM的M3/M4/M7/A8/A9...等。存储器又分为内存与外存,可以是PC端的DDR和硬盘,也可以是单片机端的SRAM和Flash。对于嵌入式来说,图1的系统架构体现出计算机组成原理的设计,各个模块之间通过总线进行通信。
3.哈佛架构
STM32芯片就是哈佛架构。哈佛架构与冯诺依曼的最大区别(数据和指令分开处理还是统一处理)
哈佛架构的数据总线,指令总线是分开独立的,CPU通过Icode从Flash中取指令,再译码,得到数据的地址,再通过Dcode总线和SRAM进行数据交互。常用在嵌入式处理器,数字信号处理等。冯诺依曼结构数据存储器和指令存储器合并在一起,只有两条总线。常用在PC机,使用i3/5/7处理器,如台式电脑、笔记本等。
哈佛架构的优势:并行体系结构,将程序指令和数据存储在不同的存储空间中,每个存储器独立编址、独立访问。哈佛架构的微处理器通常具有较高的执行效率,其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。
4.总线矩阵
总线矩阵的前级是主设备(Msater):cortex-M3和DMA;后级是从设备:存储器以及各个外设控制器。通过总线矩阵,可以实现内核与DMA控制器对外设的访问,凡是挂在总线矩阵上的设备,内核与DMA都是有权访问的。
5.内核
内核(CPU),通过取指,译码,执行这样的三级流水线执行代码,若没有中断与异常,CPU一直顺序执行。但CPU很强大的功能之一就是有响应中断和异常的能力,通过规定好的异常向量表处理异常(比如复位,hard fault等),通过规定好的中断向量表处理中断,中断的性能从一定程度上表示这款内核的性能。
6.DMA控制器
当外设与存储器之间有大量数据传输时,CPU处理的方式有两种:一是轮询(polling),二是中断(interrupt),这两种都会使CPU不断的处理数据的传输,从而导致其他功能的执行会受影响。为了提高大数据量传输时CPU的效率,从硬件上增加了DMA控制器,来实现外设与内存之间的数据传输。