ARM处理器
ARM处理器与GCC
https://community.arm.com/cn/b/blog/posts/arm-cortex-a-gcc-985543018
ARM7与ARMv7的差别
ARM处理器的一些名字有时比较容易让新人混淆。
比如ARM7和ARMv7:
- 前者指的是一个比较老的处理器系列,其对应的指令集是ISA v4T,通常也被称为ARMv4;
- 后者指的是ARM的指令集:ISA v7,即ARMv7,相对较新的Cortex系列处理器支持ARMv7指令集;由于指令集和处理器通常都是向前兼容的,因此支持ARMv7的处理器也支持ARMv4指令集,但反过来只支持到ARMv4的处理器一定无法执行ARMv7指令。
当前ARM处理器系列
当前ARM处理器系列为Cortex系列,Cortex处理器按照使用场景划分了三个系列:Cortex-A、Cortex-R以及Cortex-M。
- Cortex-M:是功率最低的处理器,主要场景是微控制器;
- Cortex-R:是专为实时场景优化过的高性能处理器,用于汽车、航天等行业对处理器的实时性有强要求的场景;
- Cortex-A:是效能密集型的应用级别处理器,是目前主流平板、手机在使用的处理器。
目前市场上主流的处理器是ARMv7和ARMv8系列。
AP与BP
在一个移动设备SoC中,要有两个Processor:一个是Application Processor,一个是Baseband Processor。前者和PC的CPU地位相当,我们所说的操作系统就执行在这个处理器上,后者是专用于处理射频相关的功能的,一般性能不需要太高,运行着一个实时操作系统专门负责处理通讯功能。
一般管Application Processor叫做AP、CPU、Core;管Baseband Processor叫做BP、modem、baseband chip。
在ARM处理器的spec中不找不到关于BP的资料,因为BP是一个单独的处理器。具体选用什么样的BP和AP集成在一起,是SoC设计要考虑的事情,不是Processor要考虑的。
将BP和AP分开,可以得到的一个好处是,AP可以在用户不使用设备时另自己陷入休眠,但BP依然处于活动状态,只有当BP收到电话或者短信等事件时,才通过中断将AP唤醒,从而节约设备电量。如果没有插入sim卡,没有连接wifi,并且又开启了省电模式,甚至可以做到在锁屏后完全关闭AP和BP,这样手机可以在锁屏状态下坚持得和过去的小灵通一样久。
这里是高通枭龙865的wifi:https://en.wikichip.org/wiki/qualcomm/snapdragon_800/865
可以看到,上面的SoC采用了ARMv7-a系列中的基于Cortex-A55和Cortex-A77架构的Kryo 585 Sliver/Gold处理器作为AP,配合snapdragon x55 5g modem作为BP。
另外,这里是ARM Community上的讨论:https://community.arm.com/developer/tools-software/tools/f/arm-compilers-forum/4663/application-processor-and-baseband-processor
内存布局
在ARM处理器的reference manual里一般找不到具体外部设备的memory mapping,因为具体外设被映射到总线的哪个地址是由SoC决定的。ARM提供的仅仅是芯片,其他公司基于ARM芯片再进行SoC的设计,因此具体的外设内存映射得根据具体的SoC来查询。
但是,似乎在网上并没有公开的SoC reference manual,查不到采用Cortex-A系列的SoC的具体设备内存布局。
其他一些流行的单片机的外设及其对应的内存布局则很容易找到,可能是因为SoC一般是面向手机厂商的,和手机厂商合作比较紧密,因此不需要将内部技术文档公开吧。单片机则不同,使用单片机的厂家非常多,SoC厂商无法同所有买家进行紧密合作,因此才会选择公开技术文档。