筆者發(fā)現(xiàn)很多朋友需要bootloader實現(xiàn)在線升級,在這里筆者將實現(xiàn)過程與大家分享,并筆者的bootloader固件給大家參考。筆者在mage和xmage上都實現(xiàn)過,不過使用的RS485,所以固件里面也是RS485的,大家使用RS232的話,把RS485的控制去掉就可以了,RS232實現(xiàn)起來比RS485簡單,因為RS232是全雙工的。
筆者開發(fā)使用的環(huán)境是Atmel Studio 6.2,這個看大家習(xí)慣,環(huán)境主要就是實現(xiàn)可執(zhí)行文件。bootloader固件都是C語言實現(xiàn),相信大家都能看明白,這里就直接上傳bootloader固件源碼,大家到原文中下載。bootloader固件是需要仿真器等設(shè)備下載到設(shè)備中的。
ATMEL的mcu大多數(shù)都分boot區(qū)和應(yīng)用區(qū),都有熔絲位的設(shè)置,所以要實現(xiàn)在線升級,首先需要設(shè)置熔絲位,使mcu上電從boot區(qū)啟動。然后在boot區(qū)判斷是否需要升級,不需要自動跳到應(yīng)用。還有就是要注意,筆者給的bootloader固件只是實現(xiàn)上電時進(jìn)入boot區(qū),需要其他方法實現(xiàn),可以自行修改,原理一樣。
下面說一下熔絲位的設(shè)置,這個需要針對mcu,不通的mcu設(shè)置稍有不同。
筆者在mage88pa上實現(xiàn)過,熔絲位設(shè)置為:
使用仿真器ISP設(shè)置mega88pa熔絲位,設(shè)置如下:
1, BOOTSZ:選擇512W_0E00;
2, BOOTRST:選中,表示使用上電從boot區(qū)開始啟動。
3, SPIEN:選中,默認(rèn)仿真器模型,ISP下載程序,但不能仿真。該模式可設(shè)置熔絲位。
4, 需要仿真時,選中DWEN,去掉SPIEN。即選擇debugwire,在仿真在調(diào)試時disable后進(jìn)入ISP;
5, EESAVE:執(zhí)行擦除命令時是否保留E2PROM中的內(nèi)容,默認(rèn)狀態(tài)為“1”,表示E2PROM中的內(nèi)容同F(xiàn)lash中的內(nèi)容一同擦除。該位設(shè)置為“0”,對程序進(jìn)行下載前的擦除命令只會對FLASH代碼區(qū)有效,而對E2PROM區(qū)無效。
6, BODLEVEL:選擇4.2V;掉電檢測。
7, SUT_CKSEL:選擇EXTXOSC_8MHZ_XX_16kCK_14CK_65MS;最后一個,根據(jù)使用的晶體來選擇。
8, 其他不選擇。
在xmage16上實現(xiàn)過,熔絲位設(shè)置相對簡單一下,只設(shè)置從boot區(qū)啟動即可。
熔絲位設(shè)置好后,就使用仿真器把bootloader固件固化到mcu中。
接下來就是實現(xiàn)在線升級了。如果使用pc機(jī)實現(xiàn)在線升級的畫,在pc機(jī)就需要一個應(yīng)用軟件。這里筆者提供一個與bootloader配套的軟件,大家可以在原文中下載;
接下來說一下這個應(yīng)用軟件的的使用,下面是針對mage88pa來說:
1) 啟動 AVRUBD.EXE 。
2) 設(shè)置 AVRUBD 。 點(diǎn)擊“選項”,點(diǎn)擊下拉菜單的AVR, 先將“ AVR ” 選項卡下的參數(shù)設(shè)置為圖 一 的要求, 注意 flash 空間大小是8K (這個根據(jù)具體mcu設(shè)置,如xmage16,應(yīng)設(shè)置為16K); 聯(lián)機(jī)密碼為HEX:41 56 52 55 42;然后選“系統(tǒng)” 卡片, 設(shè)成圖二 所示, 注意通訊協(xié)議要選簡化 Xmodem 協(xié)議;數(shù)據(jù)幀長度為:64,(根據(jù)mcu串口接收buff設(shè)置,如xmage16應(yīng)設(shè)置為256); 再選“串口 ” 卡片, 將其設(shè)成圖三 所示, 其中串口號要根據(jù)你所用電腦實際串口確定;波特率為38400; 完成以上設(shè)置后點(diǎn)擊“確定”
3) 載入要寫到芯片中的 HEX 文件。 這一步是將你要下載到電路板的程序先裝入電腦, 方法是點(diǎn)擊
左上角菜單中“文件 –> 載入”, 然后選擇要下載的文件, 點(diǎn)擊“打開”。
4) 點(diǎn)擊“下載”( 圖4 ), 隨即給目標(biāo)板上電。 注意這里有一個時間配合的問題, 當(dāng)你點(diǎn)擊“下載”
后, PC 會查詢下位機(jī), 這段時間約為數(shù)秒。 當(dāng)板卡上電后也有一個等待串口命令的時間,
這個時間只有 1 – 2 秒, 如果這兩個時間配合不上, 就會出現(xiàn)聯(lián)機(jī)失?。?圖 5 ), 所以應(yīng)當(dāng)點(diǎn)擊“下
載” 后馬上給下位機(jī)( 即主板卡) 上電。 當(dāng)順利完成時, 你應(yīng)該看到與圖 6 類似的結(jié)果。
到這里,在線升級完全實現(xiàn)了。謝謝閱讀~
-
mcu
+關(guān)注
關(guān)注
147文章
18392瀏覽量
379086 -
bootloader
+關(guān)注
關(guān)注
2文章
240瀏覽量
47378
原文標(biāo)題:ATMEL系列MCU在線升級bootloader固件源碼及操作過程
文章出處:【微信號:Atmel_community,微信公眾號:Atmel中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
請問誰有stm8的IAP升級bootloader工程源碼嗎?
無法使用內(nèi)置Bootloader的DFU方式進(jìn)行固件升級的問題進(jìn)行分析
STM32F407的系統(tǒng)bootloader之串口IAP固件升級
使用系統(tǒng)bootloader做程序升級的方法
使用系統(tǒng)bootloader做程序升級的方法
使用系統(tǒng)bootloader做程序升級的方法
使用系統(tǒng)bootloader做程序升級的方法
STM32H7的系統(tǒng)bootloader之串口IAP固件升級
bootloader的升級模式有哪幾種
STM32 BootLoader升級固件

STM32單片機(jī)網(wǎng)絡(luò)遠(yuǎn)程升級固件的源碼下載
如何快速將BootLoader與APP固件合并
如何開發(fā)不帶Flash API 的Bootloader實現(xiàn)在線升級

評論