如今,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完成寄存器读操作;
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/a752109494/article/details/135763678
|