https://blog.csdn.net/weixin_42734533/article/details/131812546?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170980239416800182774385%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=170980239416800182774385&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-131812546-null-null.142v99pc_search_result_base8&utm_term=mcu%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B&spm=1018.2226.3001.4187
启动过程的执行工作
启动过程主要完成两部分工作:硬件环境、软件环境
硬件环境操作:
初始化时钟:初始化内核时钟,主时钟和各个外设的时钟
关闭看门狗:看门狗用来检测应用程序异常跑飞而复位CPU,在初始化阶段,没有“喂狗“的动作,有可能导致CPU 不断的复位,此处需要关闭看门狗
建立中断向量表:中断向量表作为中断源的识别标志,可以形成相应的中断入口地址,或者中断服务程序的入口地址的偏移量和段基值。CPU利用中断向量表转入中断服务程序处理相关到事务
初始化堆栈:堆栈的作用就是保护现场(上下文),函数调用或中断发生时,将当前执行地址压栈,调用完再返回执行此次的地址。在启动阶段,初始化堆栈的寄存器、堆栈大小、起始地址等
内存初始化:选择内部或外部RAM
软件环境操作:
把RO、RW从它们的加载域复制到运行域
初始化ZI域
初始化堆栈指针:包括C库所需要的内存空间、程序执行的所需资源、C库初始化
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42734533/article/details/131812546
bootroom说明
bootroom 是mcu启动最先运行的代码,他负责硬件资源的初始化,时钟,外设,存储,中断控制器,确保设备运行在一个稳定的阶段,
第二步加载用户端程序
https://wenku.baidu.com/view/0d85adb3a02d7375a417866fb84ae45c3a35c27b.html?wkts=1709803926871&bdQuery=mcu+bootroom%E4%BD%9C%E7%94%A8