|
一、 題目:
AVR單片機(jī)BootLoader功能應(yīng)用
二、 特色芯片技術(shù)介紹、使用說明:
AVR單片機(jī)中多數(shù)Mega系列單片機(jī)具有片內(nèi)引導(dǎo)程序自編程功能即BootLoader功能。MCU 通過運(yùn)行一個(gè)常駐FLASH的BootLoader 程序,利用任何可用的數(shù)據(jù)接口讀取代碼后寫入自身的FLASH存儲(chǔ)器中,實(shí)現(xiàn)自編程目的。
BootLoader功能將FLASH程序存儲(chǔ)器其分為應(yīng)用程序區(qū)和引導(dǎo)加載區(qū),通過設(shè)置熔絲位BOOTSZ0和BOOTSZ1可以配置不同大小的引導(dǎo)加載區(qū)空間;通過設(shè)置熔絲位BOOTRST用于設(shè)置復(fù)位向量,當(dāng)BOOTRST未被編程時(shí)器件復(fù)位后從應(yīng)用程序區(qū)首地址開始執(zhí)行,當(dāng)BOOTRST被編程時(shí)器件復(fù)位后從引導(dǎo)區(qū)首地址開始執(zhí)行。在設(shè)置好BOOTSZ0、BOOTSZ1和BOOTRST熔絲位后,需要把BootLoader程序定位并寫入到引導(dǎo)區(qū)中,其首地址由熔絲位ROOTSZ0和BOOTSZ1的編程狀態(tài)決定。在單片機(jī)上電復(fù)位后BootLoader程序開始執(zhí)行,BootLoader程序可以通過USART、TWI或其它方式從計(jì)算機(jī)或其它數(shù)據(jù)源讀取應(yīng)用程序代碼并寫入到應(yīng)用區(qū)中。
avr-libc提供一組C程序接口API來支持BootLoader功能,包含在<avr/boot.h>中,主要幾個(gè)宏有:
boot_page_erase ( address ):擦除FLASH指定頁,address是以字節(jié)為單位的FLASH地址。
boot_page_fill ( address, data ):填充BootLoader 緩沖頁,address為以字節(jié)為單位的緩沖頁地址(對mega8:0~64),而data是長度為兩個(gè)字節(jié)的字?jǐn)?shù)據(jù),因此調(diào)用前address 的增量應(yīng)為2。此時(shí)data的高字節(jié)寫入到高地址,低字節(jié)寫入到低地址。
boot_page_write ( address ):boot_page_write執(zhí)行一次的SPM指令,將緩沖頁數(shù)據(jù)寫入到FLASH指定頁。
boot_rww_enable ( ):RWW區(qū)讀使能,根據(jù)自編程的同時(shí)是否允許讀FLASH存儲(chǔ)器。RWW(Read-While-Write)可同時(shí)讀寫區(qū),在對RWW 區(qū)自編程即頁寫入或頁擦除時(shí),由硬件鎖定RWW區(qū),RWW區(qū)的讀操作被禁止,在對RWW區(qū)的編程結(jié)束后應(yīng)當(dāng)調(diào)用boot_rww_enable()使RWW區(qū)開放。
三、 驅(qū)動(dòng)程序的流程圖
本應(yīng)用以實(shí)際使用的Mega系列單片機(jī)Mega168為例,說明AVR單片機(jī)BootLoader的功能應(yīng)用。BootLoader程序通過串口與計(jì)算機(jī)進(jìn)行通信,執(zhí)行讀、寫以及跳轉(zhuǎn)到FLASH應(yīng)用區(qū)的操作。單片機(jī)與計(jì)算機(jī)通信使用Xmodem通信協(xié)議,Xmodem通信協(xié)議見相關(guān)文檔。其程序流程如下圖。(可見附件中“流程圖.vsd”文件)
四、 驅(qū)動(dòng)程序的源程序
對應(yīng)Mega168的BootLoader程序包括bootloader.c和bootloader.h。
源程序清單如下:(可見附件中“bootloader.c”和“bootloader.h”文件)
五、 設(shè)計(jì)及調(diào)試技巧
BootLoader程序不使用中斷,以查詢的方式讀寫UART數(shù)據(jù)。退出BootLoader程序后程序指針跳轉(zhuǎn)到應(yīng)用程序區(qū)首地址,如果要重新執(zhí)行BootLoader程序以加載應(yīng)用區(qū)程序,必須使用硬件復(fù)位。
六、 典型問題及解決辦法
在程序升級過程中遇到多個(gè)模塊通過485總線連接在一起時(shí),引起多個(gè)模塊響應(yīng),造成誤擦除,升級不能成功,在硬件及Bootloader程序中設(shè)置升級條件,條件滿足時(shí)升級模塊程序,否則跳轉(zhuǎn)到應(yīng)用程序區(qū)。
單片機(jī)源程序如下:
0.png (48.38 KB, 下載次數(shù): 138)
下載附件
2018-8-2 15:30 上傳
所有資料51hei提供下載:
AVR單片機(jī)BootLoader功能應(yīng)用.rar
(88 KB, 下載次數(shù): 144)
2018-8-2 09:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|