如今,mcu应用在很多领域中,如车载平台、物联网、家电、工业控制等等,作为嵌入式软件开发人员,不仅要懂得如何使用mcu,更要只能mcu在运行时,硬件里面到底发生了什么,这样更利于在遇到问题时定位和分析问题;
以STM32为例,在软件中执行这些代码的时候,硬件里面会发生什么呢?
uint32t reg_addr;
volatile uint32t tmp;
int main() {
reg_addr = 0x40013000;
tmp = (uint32t *)reg_addr;
return 0;
}
1 首先,编译器会将代码编译成对应的指令,存放在hex文件中;
2 hex会存放在flash中;
3 在上电时,硬件会将flash中的代码加载一部分到SRAM中;
4 加载完成之后,cpu开始取指令;(下图中的红色路径)
5 当cpu执行到第5行代码对应的指令时,通过System总线发起访问请求;
6 硬件仲裁结构将请求转到寄存器地址对应的SPI1模块;(下图中的红色路径)
7 SPI1模块返回寄存器数据,CPU完成寄存器读操作;
提问:DMA的时候硬件里面会发生?
欢迎关注公众号“数字设计打工人”