嵌入式bootloader概论

文章讲述了bootloader在操作系统启动过程中的作用,如STM32的串口更新,以及如何通过设计驱动程序实现硬件初始化、通信协议支持和应用程序的加载与更新。着重介绍了MCU和MPU中bootloader的实现思路和关键步骤。
摘要由CSDN通过智能技术生成
1、bootloader介绍

        bootloader(引导加载程序)是操作系统启动过程中的一个重要组成部分(STM32的bootloader程序(通过串口更新STM32应用程序)_stm32 bootloader-CSDN博客)。例如linux操作系统启动时,需要uboot初始化一些硬件,同时加载内核和传入对应的参数实现linux的启动(i.MX6ULL嵌入式Linux开发1-uboot移植初探 - 知乎 (zhihu.com))。当然类似于uboot grub bios等程序也只是属于二级引导,一般在芯片中的非易失存储区间还有一段初级引导程序,通过读取指定管脚的状态,在芯片中运行存储在不同的存储介质(外置的spi、nand和emmc等...)中的程序,其中这些程序可以是裸机程序、rtos和二级引导程序。总而言之,bootloader只是相较于其他程序,其功能比较单一,当加载完成后芯片就会跳转到应用程序,其运行的生命周期也会停止。

2、 实现思路

        bootloader的主要功能:对板载硬件进行初始化和检查,为下一个阶段准备运行的应用程序准备环境,然后将运行的指针跳转到应用程序的地址,运行应用程序。利用这一特性可以实现应用程序的更新,例如使用uboot加载不同版本的内核程序,或者利用wifi、串口、蓝牙等通信协议实现设备程序的固化与更新。

        在设计程序的过程中,我们需要先设计以下驱动程序:

        1)完成准备使用的通信协议驱动程序,常用的有usb、uart和wifi等协议;

        2)设计出可以对存储介质的进行擦写的驱动,例如利用qspi或者iic实现对flash存储介质的擦写;

        3)移植相应的校验程序,类似于crc程序实现对传入的bin文件数据或者其他格式的数据进行校验检错;

        若还有一些其他硬件需要在bootloader阶段进行唤醒或自检,则还需要添加相应的驱动程序,这里就只列举常用的一些功能,其实这一过程在mcu中实现比较简单,因为mcu的硬件资源较少,因此只需要完成少许的驱动程序即可实现;但是在mpu中就稍微复杂一点,涉及到的驱动和逻辑也更见繁琐。(在本文中就先只提mcu中实现bootloader程序,基本的思路都是一致)       

         注:这些驱动都可以在uboot源码或者其他开源的源码中找到对应代码,可以参考其实现的代码并移植到对应的工程;

        在完成以上相应驱动程序设计后,利用其进行跳转到设计程序的设计:

        1)与普通的应用程序一样,也需要启动汇编文件准备C环境的,跳转到main函数中,在这里MCU会自动加载MSP和PC(STM32单片机bootloader扫盲_stm32 bootloader-CSDN博客);

        2)通过在代码中设置相应的状态标志实现判读是否直接加载存储介质中的程序,或者接收新的运行程序固件并更新存储介质中的应用程序;

        3)利用相应的驱动程序将准备运行的程序固件加载到运行的内存

        4)为准备运行的应用程序清理环境,对当前芯片中的所有中断进行失能,并清除中断的状态。

        5)设置堆栈指针,最后利用函数指针跳转的方式,跳转到应用程序的内存地址,最终程序就进入到应用程序。

3 总结

        bootloader和应用程序也是一样的,只不过其可以实现功能为能通过一定的接收协议实现接收固件数据,同时将数据存储到特定的介质中,最后能实现跳转到其他应用程序的特殊应用程序。当bootloader完成跳转到其他程序之后,就结束了其程序运行的生命周期。

注意:本文只是个人对最近查看的boot程序的总结,只是提出了实现的思路,没有相关的代码和流程图,同时文字还总结不够精炼与专业。

         

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值