嵌入式產品,我們一般都需要一個bootloader來更新固件和修復bug,一般常用的接口有,UART, CAN, USB, Ethernet,有的還有無線接口,像藍牙,WiFi,等等,最基礎常用的就是UART,熟悉NXP微控制器的猿友都知道,官方提供了基于UART和SPI, I2C,CAN等接口的bootloader,只要稍加修改就可以集成到自己的項目,最近在使用KEA汽車級的芯片,發(fā)現(xiàn)官網(wǎng)也提供了基于KEA的bootloader,目前只支持UART和SPI,因為SPI要轉接板,所以還是UART方便一些,經常被選用。
官方提供的KEA的bootloader基本上分為三個層面
bootloader 層,通信層和驅動層
bootloader的代碼放在flash的頭4k字節(jié),以KEA128Z為例可以劃分為
中斷向量表就要相應偏置到0x0000_1000 處,因為應用程序入口點在這里。bootloader 的流程在應用筆記里也有提供,可以很好的幫助開發(fā)者熟悉整個過程。默認支持UART接口,如果需要支持其他接口,需要再源碼里使能,也可以同時支持幾個接口,但UART優(yōu)先級高,同時為了節(jié)省代碼空間,一般都選擇一種接口而禁止其他接口。
NXP的bootloader通信層都是基于SREC文件,這是一種摩托羅拉最早于二十世界,七十年代中葉發(fā)明的,它的格式如下
關于這種文件個詳細描述,可以參考維基
https://en.wikipedia.org/wiki/SREC_(file_format)
例如可以通過一個例子很好的理解這種文件格式
按照這個結構,可以定義一個結構體來描述他
整個通信的流程為
如果手上有KEA的開發(fā)板就可以上手試試這個bootloader。
官方提供的壓縮包里也有簡單的上位機接口,
bootloader一定要理解系統(tǒng)內存的分布,可以參考官方提供的源碼,修改使用于自己的項目,也可以自己開發(fā),使用于自己的項目,總之bootloader還是很重要的,如果設計不好,會在后期給你帶來很多坑。祝愿每一個工程師都能夠設計出自己的友好的bootloader。
-
通信
+關注
關注
18文章
5926瀏覽量
135712 -
uart
+關注
關注
22文章
1216瀏覽量
101005 -
bootloader
+關注
關注
2文章
233瀏覽量
45467
原文標題:Bootloader需要你的精心設計
文章出處:【微信號:weixin21ic,微信公眾號:21ic電子網(wǎng)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論