Bootloader技術(shù)在數字信號控制器中的應用
如前文所述, PC 機發(fā)送的數據是從. hex 文件中提取的, PC機首先發(fā)送擴展地址部分, 下位機接收保存后會(huì )繼續等待接收32個(gè)指令字( 96字節)并保存到RAM 中, 然后根據接收到的地址擦除FLASH 存儲器中的1行, 擦除FLASH 是通過(guò)調用匯編函數E raseMem來(lái)進(jìn)行的, 函數原型如下:
mov# 0x4041, NVMCON ; 使NVMCON 寄存器為擦除FLASH模式
mov # 0x55, W 0
movW0, NVMKEY
mov # 0xAA, W0
movW 0, NVMKEY ; 將0x55、0xAA 寫(xiě)入密鑰寄存器
bsetNVMCON, #WR ; 開(kāi)始擦除
nop
nop
return
擦除FLASH存儲器的一行后需要把接收到的32個(gè)指令字寫(xiě)入到FLASH 存儲器寫(xiě)鎖存器中, 這一過(guò)程可以通過(guò)函數W riteLatch 實(shí)現, 函數原型如下:
movW0, TBLPAG ; 寫(xiě)表寄存器
tb lw tlW3, [W1]
tb lw thW2, [W1] ; 寫(xiě)入鎖存器
return
這一步完成之后就可以將接收到的32個(gè)指令字寫(xiě)入FLASH 存儲器了, 其方法與擦除FLASH 類(lèi)似, 寫(xiě)完一行后向PC 機發(fā)送應答。待FLASH 存儲器全部寫(xiě)完之后, PC 機會(huì )發(fā)送表示結束下載的命令, 下位機接收后退出Boo tloader程序, 進(jìn)入新的用戶(hù)程序繼續運行, 從而完成整個(gè)在線(xiàn)自編程過(guò)程。
7 結束語(yǔ)
dsPIC30F 系列數字信號控制器應用Boot loader實(shí)現用戶(hù)程序在線(xiàn)自編程升級的方法具有很高的應用價(jià)值, 尤其是應用于自主開(kāi)發(fā)的工業(yè)自動(dòng)化儀表時(shí)給用戶(hù)程序的現場(chǎng)升級帶來(lái)了極大的方便。該方法已經(jīng)成功用于電子皮帶秤控制儀表系統中, 達到了提高系統軟件升級的更換效率、降低升級費用、提高產(chǎn)品制造商對用戶(hù)的服務(wù)質(zhì)量滿(mǎn)意度的目的。方法雖然僅以dsPIC30F系列芯片為例, 但對于M icrochip公司生產(chǎn)的其它系列芯片只要略加修改同樣適用。
評論