嵌入式产品,我们一般都需要一个bootloader来更新固件和修复bug,一般常用的接口有,UART, CAN, USB, Ethernet,有的还有无线接口,像蓝牙,WiFi,等等,最基础常用的就是UART,熟悉NXP微控制器的猿友都知道,官方提供了基于UART和SPI, I2C,CAN等接口的bootloader,只要稍加修改就可以集成到自己的项目,最近在使用KEA汽车级的芯片,发现官网也提供了基于KEA的bootloader,目前只支持UART和SPI,因为SPI要转接板,所以还是UART方便一些,经常被选用。
官方提供的KEA的bootloader基本上分为三个层面
bootloader 层,通信层和驱动层
bootloader的代码放在flash的头4k字节,以KEA128Z为例可以划分为
中断向量表就要相应偏置到0x0000_1000 处,因为应用程序入口点在这里。bootloader 的流程在应用笔记里也有提供,可以很好的帮助开发者熟悉整个过程。默认支持UART接口,如果需要支持其他接口,需要再源码里使能,也可以同时支持几个接口,但UART优先级高,同时为了节省代码空间,一般都选择一种接口而禁止其他接口。
NXP的bootloader通信层都是基于SREC文件,这是一种摩托罗拉最早于二十世界,七十年代中叶发明的,它的格式如下
关于这种文件个详细描述,可以参考维基
https://en.wikipedia.org/wiki/SREC_(file_format)
例如可以通过一个例子很好的理解这种文件格式
按照这个结构,可以定义一个结构体来描述他
整个通信的流程为
如果手上有KEA的开发板就可以上手试试这个bootloader。
官方提供的压缩包里也有简单的上位机接口,
bootloader一定要理解系统内存的分布,可以参考官方提供的源码,修改使用于自己的项目,也可以自己开发,使用于自己的项目,总之bootloader还是很重要的,如果设计不好,会在后期给你带来很多坑。祝愿每一个工程师都能够设计出自己的友好的bootloader。
-
通信
+关注
关注
18文章
5970浏览量
135854 -
uart
+关注
关注
22文章
1227浏览量
101172 -
bootloader
+关注
关注
2文章
234浏览量
45546
原文标题:Bootloader需要你的精心设计
文章出处:【微信号:weixin21ic,微信公众号:21ic电子网】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论