Concept
Cotex-M Core & Cortex-M MCU
内核只是 CPU 的架构,而 MCU 是具体的封装实现。CM3
-> Cortex-M3
。
内存映射
-
0x0000 0000
~0x1FFF FFFF
是代码段。具体拆分如下图:
0x0800 0000
是内部FLASH
起始地址,这是代码烧写的地方。System Memory
是bootloader
(ROM)。bootloader
可以通过其他外设(USART,USB)上传代码。Option bytes
中是配置MCU
一些标志位。 -
0x2000 0000
是内部SRAM
起始地址。内部SRAM
会由于芯片厂家而大小不同。所以其末地址也会不一样。 -
0x4000 0000
是外设寄存器起始地址。由于部分外设端口只占用了一个寄存器中的一到两位,所以在多进程时无法用atomic operation
同时操作。ARM
采用bit-banding
技术。就是将同一地址下的不同寄存器位分别映射成单个地址,方便多进程操作。
Interrupt & Exception
处理函数:Exception Handler
--> Exception
;Interrupt Service Routine
(ISR) --> Interrupt
。
优先级管理是在 NVIC
中。
SysTimer
Cortex-M
中提供了 SysTick
作为系统时钟。可以用来:
- 为 RTOS 提供周期性的中断,作为调度用。
- 提供准确的定时功能。
CMSIS
Cortex Microcontroller Software Interface Standard (CMSIS) 是 Cortex-M 系列的标准软件接口。
但是由于各家硬件平台不一样,所以迁移仍然十分困难。
参考书目:
- Mastering STM32 by Carmine Noviello.