当咱们在完结某一个试验,当咱们正幸亏的时分,咱们忍不住发生一种不安的主意——咱们是否现已少量了解其间的种种细节?
特别,当咱们一切的工作都依赖于编译环境或Firmware,抑或别人的程序,而自己仅仅是Copy和Modify,致使Using。当你仍是一个初学者的时分,或许不会太过于重视于此,可是要想进步自己对单片机、处理器原理的了解,而且期望走得更远的时分,您就需求重视更为具体的内部常识,您需求了解编译环境、Firmware等为你的静静奉献。
1 STM32体系结构
如Figure 1,是STM32体系结构框图。
依据STM32 Reference manual (RM0008)中的描绘,如图:
能够得知STM32体系结构的组成,每一个模块更为具体的内容,请参阅相关文档。
RM0008文档中能够看出,STM32选用的是Cortex-M3内核,因而,有必要了解Cortex-M3的存储器结构。
图中还能够看出,Cortex-M3是经过各个总线和Flash、SROM相衔接的。
2 STM32内核(Cortex-M3)的结构
以下是Cortex-M3模块框图:
该Cortex-M3内核经过I-Code、D-Code、System总线与STM32内部的Flash、SROM相衔接的,该种衔接状况直接关系到STM32存储器的结构安排;也便是说,Cortex-M3的存储器结构决议了STM32的存储器结构。
这儿或许说的比较抽象,能够这样了解:Cortex-M3是一个内核,本身界说了一个存储器结构,ST公司依照Cortex-M3的这个存储器界说,规划出了自己的存储器结构;可是ST公司的STM32的存储器结构有必要依照Cortex-M3这个界说的存储器结构来进行规划。
举个比如:
我买了一个煮饭的调料盒子,有三块区域(假定存储器分为3块),上面别离标有盐(Flash)、糖(SROM)、味精(Peripheral);此刻,该调料盒子并没有任何含义(对应Cortex-M3内核);我依照标签放入特定品牌、特定重量的盐(Flash)、糖(SROM)、味精(Peripheral),发生一个有实际含义的调料盒(各类Cortex-M3内核的芯片,如STM32)。
期间,调料方位不能放错,但能够不放。由上面的比如能够看出,空的调料盒子决议了有含义的调料盒子寄存调料的结构。因而,只需了解空盒子的存储结构,就能够很清楚的了解当有调料时的用法了。
3 STM32内核(Cortex-M3)的存储器映射
存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOTBLOCK等进行一致编址。即用地址来表明目标。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的状况下可进行自界说。
如图,是Cortex-M3存储器映射结构图。
Cortex-M3是32位的内核,因而其PC指针能够指向2^32=4G的地址空间,也便是0x0000_0000——0xFFFF_FFFF这一大块空间。
好,依据图中描绘,Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G巨细的空间分红8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等。导致了,运用该内核的芯片厂家有必要依照这个进行各自芯片的存储器结构规划。