前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Bootloader需要你的精心设计

Bootloader需要你的精心设计

作者头像
用户1605515
发布2018-07-25 10:08:25
5850
发布2018-07-25 10:08:25
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

嵌入式产品,我们一般都需要一个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。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档