关于STM32启动流程,分散加载脚本与处理器架构

最近看了好多关于处理器内部架构和原理的内容,脱离具体处理器学习总感觉不太容易,因为STM32资料较多,于是先研究下STM32启动流程和执行架构,结果发现里面水很深,竟花近一个礼拜时间方才完全领悟,网上资料虽多,但也比较分散,于是想自己整理一个出来分享给大家。

首先,是关于处理器的哈佛架构和冯诺依曼架构的区别,简单来说,哈佛架构是一种将程序指令储存和数据储存分开的存储器结构冯诺依曼架构一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。怎么理解呢?具体到STM32上,STM32是哈佛架构,它在运行时,指令存储在片内的norflash上,数据存储在片内SRAM上,也就是说,STM32的程序是可以直接在FLASH上运行的,而不是先将FLASH上的程序全部copy到RAM再运行,这一点需要注意。

   接下来说下STM32启动流程。

STM整个启动过程是指从上电开始,一直到运行到main函数之间的这段过程,步骤为:

①上电后硬件设置SP、PC

②设置系统时钟

③软件设置SP

④加载.data、.bss,并初始化栈区

⑤跳转到C文件的main函数

     在真正讲解启动过程之前,先要讲解程序下载到Flash上的结构和程序运行时(执行到main函数)时的SRAM数据结构。程序在用户Flash上的结构如下图所示。下图是通过阅读hex文件和在MDK下调试综合提炼出来的。

MSP初始值        编译器生成,主堆栈的初始值

异常向量表        不多说

外部中断向量表      不多说

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值