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