移植 stm32f7_【BootLoader】OpenBLT 移植记录

62dda35d2cac9259f59977afc81325ef.png

BootLoader主要方便于升级固件代码,而不同的硬件平台涉及的内核,外设的初始化和配置均有差异,很难做到统一。好在现在开源的BootLoader适配的硬件平台还比较齐全,在自己需要使用时,可以移植现有的开源BootLoader,对其进行裁剪或增加功能即可。比较常用的是U-Boot,但是编译后占用的体积较大。在小存储的硬件条件下,OpenBLT比较适合。

OpenBTL的设计考虑到了灵活性和可移植性。其理念是引导加载程序可以运行在任何类型的微控制器上,并具有任何类型的数据传输接口,用于实际的固件更新。

设计架构

OpenBTL的功能和代码分为4类:

ce76f32cefeac5cfea6af9587b7db32f.png

特定于应用程序的功能。本部分中的代码用于根据项目的特定需求调整引导加载程序。它包含main()函数、引导加载程序的配置文件和钩子函数,这些函数允许你调整引导加载程序的行为,而不需要修改引导加载程序的内部结构。例如,在这里,您可以实现控制后门的打开和关闭以及看门狗(如果适用的话)的处理的功能。

独立的功能目标。这一部分是驱动引导加载程序的核心部分。在软件更新期间,它处理从固件文件到微控制器内存的数据传输。它形成了应用程序细节和硬件之间的链接。您不需要对引导加载程序的这一部分进行任何更改。主机PC和嵌入式引导程序之间的通信遵循XCP 1.0协议。它的官方名称是ASAM MCD-1 XCP V1.0.0,它是一个通用的测量和校准协议,定义了一个总线独立的主从通信协议,用于连接ECU和校准系统。

目标相关的功能。当将引导加载程序移植到一个新的微控制器时,只有这一部分需要修改。它包含访问通信、定时器和内存外设的低级驱动程序。

编译器的具体功能。这实际上是目标相关类别的一个子类别。它包含诸如c启动例程和中断向量表之类的代码,这些代码通常需要一点编译器链接到正确的内存位置。

e07b6e5a4923b0f54eaea21528fee63e.png

通信流程

在固件更新过程中,主机通过配置的通信接口向微控制器目标发送XCP命令,且每个命令均有响应。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值