嵌入式的几个概念
Last updated
Last updated
要知道现代芯片设计和生产已经高度分工,一个STM32F103芯片中的模块(很多都可以称之为外设)(也就是上图中的颜色各异的方块)并不是全部都由ST这一家公司独立完成的,反而是由不同的专业团队各自设计其中的一块或几块,再由ST公司(购买后)拼接在自己设计的芯片中。
比如SPI模块是由公司A授权使用,CAN模块是由公司B授权使用,ST拿到这些模块之后再通过标准总线将他们连接起来,就变成了一块MCU,虽然可能A和B就是ST的子公司或内部团队。也就是说,芯片公司在设计一款芯片的时候,在一定程度上和我们去电脑城组装一台电脑有点相似,当然复杂性更高,以及更多工作要做。
所以芯片公司在设计通用芯片时,会考虑到芯片的核心运算功能通用性比较高,也就是不同芯片其实对核心运算功能的要求很相似(不同人的大脑结构相似),所以不会专门花心思去设计这一部分,反而芯片公司会去购买专门设计内核的公司设计出的内核。我们这里讨论的ARM核就是一种专门卖给芯片公司使用的内核。
也就是说内核有点类似于电脑的CPU,负责主要的数据计算,而外设诸如flash ram gpio,spi等等类似于电脑的硬件,比如硬盘内存,键盘接口之类的
ARM架构又分为三种主要内核A、R、M,性能依次排列。 高性能的A内核,如苹果、高通骁龙、华为麒麟&、一星猎户座只的芯片都是基于ARM的A内核设计的。 高实时性的R内核,针对高实时性设计 M内核主要针对微处理器Q/控制器。如stm32,nrf52840%等等 它们都使用精简指令集,他们也都是32/64bit的内核架构,
不同内核支持的具体指令可能不太相同,而且计算能力也不大相同,所以实际上是需要根据需求去进行选择的
而实际编程中需要接触操作的内核寄存器比较少,但并不是没有在涉及中断,包括启动的中断向量表中就有可能涉及
上图是在Coretx-M3权威指南的第10章找到的,而使用的编译器armcc,汇编器armasm,链接器armlink都可以在mdk的安装目录ARM\ARMCC\bin下找到
这个armcc是一个交叉编译器,所谓的交叉编译器就是可以跨平台编译程序,比如在x86架构编译arm架构的程序。
ARMCC即ARM Compiler 5(AC5)为MDK5的默认编译器,armcc支持到Armv7架构,下载地址Legacy Arm Compiler 5, 4.1, and RVCT (ACOMP5)
《 Arm Compiler 5.06 》__ARM编译器官网下载、安装和使用说明(小白也能懂)_逢场作戏L的博客-CSDN博客
ARM compiler 5/6 的安装和选择_安装arm 6 编译器_ZhonyC的博客-CSDN博客
ARMCLANG即ARM Compiler 6(AC6),armclang可以支持Armv6,Armv7, Armv8以及今后Arm的新处理器。
一般安装MDK5默认两个编译器都安装了,ARM\ARMCC文件夹下即AC5,ARM\ARMCLANG文件夹下即AC6,一般选择AC5因为AC6可能会出现编译错误