BootLoader与MCU启动过程

STM32那点事(1)_STM32F40_41xx启动文件详解

STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担。只需要调用相关模块封装,对相关结构提初始化即可,较少开发调试时间。 

ARM之Cortex M3的启动过程

目前,多数MCU厂商都提供一个启动文件。当然,编程者也可以自己编写启动文件,具体编写要求ARM的网站上都有相关文档进行说明。下面分析一下STM32启动文件startup_stm32f407xx.s 

STM32F0单片机快速入门三 MCU启动过程               这篇可以好好看看,来龙去脉讲得比较清楚

最初芯片内是不能存储代码的,需要外挂EPROM,就是下面这种带个小玻璃窗的存储器。擦除 EPROM 中的代码需要用紫外线照射几分钟才行。

后来出现了 Flash 这种可电擦写的存储器,并集成在了单片机内部。

后来,有芯片厂商把这种代码在出厂时就固化在芯片里,极大的方便了代码下载和程序更新。STM32F030内部就固化了Bootloader。当我们把一个引脚 BOOT0 拉高的同时,重新给芯片上电或复位,就会触发Boootloader进入运行。此时我们通过单片机的串口就可以把新程序发送给单片机,发送完后把 BOOT0 拉低,再复位单片机,新程序就会运行起来。

Startup Code 可以译为启动代码。单片机上电或复位后最先执行的一段代码。一般主要会完成堆栈指针的设置,复位向量的获取和加载,然后初始化变量,最后跳转到用户代码。在详细看启动代码之前,我们先看一下 STM32F030 的内存映射。

 STM32(一)之启动文件简介

 本文以STM32F103为例,介绍STM32的启动文件。

        一般而言,系统上电后第一个执行的是由汇编所编写的启动文件,其主要工作为一下五部分:

      (1)、初始化堆栈指针SP=_initial_sp

      (2)、初始化PC指针,令其=Reset_Handler

      (3)、初始化中断向量表

      (4)、配置系统时钟

      (5)、调用C库函数_main初始化用户堆栈,从而最终调用main函数进入C的世界

         这上述的五个功能一般都由STM32官方在它们提供的官方库里的ASM文件(汇编启动文件)startup_stm32f10x_hd.s实现,因此在实际中只需要根据所用编译软件的不同选择对应的ASM文件,然后将之加入编译的工程中,再编写自己的main文件便可,而系统时钟已在ASM文件中设为72M,以及向量表已经设置完成(向量表的介绍在别的文章里介绍)。

kEIL5环境下移置STM32库文件            打开Keil5新建工程,Project-New Project,并在新工程目录下新建5个文件夹,STARTUP、CMSSIS、FWLIB、USER、DOC;

启动文件、库文件是和自己写的c文件一起编译之后,一块烧到flash里面的。

库函数也是用到什么外设的库,才把它的库文件加入工程中。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值