Bootloader需要你的精心设计

本文介绍了KEA汽车级芯片的官方Bootloader,重点讲解了基于UART接口的应用,并探讨了其在嵌入式产品中的作用及如何集成到项目中。文中还提到了不同通信接口的选择及其在代码空间上的考虑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式产品,我们一般都需要一个bootloader来更新固件和修复bug,一般常用的接口有,UART, CAN, USB, Ethernet,有的还有无线接口,像蓝牙,WiFi,等等,最基础常用的就是UART,熟悉NXP微控制器的猿友都知道,官方提供了基于UART和SPI, I2C,CAN等接口的bootloader,只要稍加修改就可以集成到自己的项目,最近在使用KEA汽车级的芯片,发现官网也提供了基于KEA的bootloader,目前只支持UART和SPI,因为SPI要转接板,所以还是UART方便一些,经常被选用。

官方提供的KEA的bootloader基本上分为三个层面

bootloader 层,通信层和驱动层

640?wx_fmt=jpeg

bootloader的代码放在flash的头4k字节,以KEA128Z为例可以划分为

640?wx_fmt=jpeg

中断向量表就要相应偏置到0x0000_1000 处,因为应用程序入口点在这里。bootloader 的流程在应用笔记里也有提供,可以很好的帮助开发者熟悉整个过程。默认支持UART接口,如果需要支持其他接口,需要再源码里使能,也可以同时支持几个接口,但UART优先级高,同时为了节省代码空间,一般都选择一种接口而禁止其他接口。

640?wx_fmt=jpeg

NXP的bootloader通信层都是基于SREC文件,这是一种摩托罗拉最早于二十世界,七十年代中叶发明的,它的格式如下

640?wx_fmt=jpeg

关于这种文件个详细描述,可以参考维基

https://en.wikipedia.org/wiki/SREC_(file_format)

例如可以通过一个例子很好的理解这种文件格式

640?wx_fmt=png

640?wx_fmt=jpeg

按照这个结构,可以定义一个结构体来描述他

640?wx_fmt=jpeg

整个通信的流程为

640?wx_fmt=jpeg

如果手上有KEA的开发板就可以上手试试这个bootloader。

官方提供的压缩包里也有简单的上位机接口,

640?wx_fmt=jpeg

bootloader一定要理解系统内存的分布,可以参考官方提供的源码,修改使用于自己的项目,也可以自己开发,使用于自己的项目,总之bootloader还是很重要的,如果设计不好,会在后期给你带来很多坑。祝愿每一个工程师都能够设计出自己的友好的bootloader。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值