当前位置:   article > 正文

学习FreeRTOS (一) - 芯片启动_freertos boot

freertos boot

学习操作系统,我们带着问题去学习:

1. 当一个空白的芯片,我们怎么样去启动它?

系统上电的时候,第一个执行的启动文件里面有汇编写的复位函数Reset_Handler(不同的芯片平台有不同的entry point). 复位函数最后会调用C库函数_main, 从而进入到用户编写的C语言的程序中。

里面编译时用的link file的entry point 在不同平台是不同的,但是工作都是初始化处理器,配置各种堆栈(比如说起始地址和size),寄存器,interrupt 向量列表, 时钟等。

具体里面每一步汇编指令,有什么作用,得要拿到芯片的配置指南才能一一走进去了。

另外,通过一些网上搜索,查到了stm32启动的大体流程(就是对初始化处理器的汇编代码解读):

总结STM32启动的大体过程:

1、上电复位,CPU从0x00000000处获取栈顶指针MSP(默认使用主堆栈),从0x00000004处获取程序计数器PC。

2、MSP指针必然指向SRAM区的,因为堆栈必须建立在该区。

3、根据PC的值找到复位中断处理函数Reset_Handler。

4、调用SystemInit函数。

5、调用__main函数,初始化运行环境和应用程序。

6、调用main函数,进入C语言环境。

https://blog.csdn.net/sudoeast/article/details/129039248

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/677282
推荐阅读
相关标签
  

闽ICP备14008679号