Bootloader技術(shù)在數(shù)字信號控制器中的應(yīng)用
6. 3 dsPIC30F器件. g ld文件的修改
Bootloader程序運行時, 需要讀出用戶程序中預(yù)先設(shè)置好的一個延時值(本設(shè)計為1s) 作為下位機等待PC 機發(fā)送升級命令的周期, 還要指定用戶程序起始地址以便Boot loader程序執(zhí)行完畢后可以繼續(xù)執(zhí)行用戶程序。為了滿足這兩個要求, 必須修改用戶程序的鏈接文件( . g ld文件), 以指定用戶程序的起始地址和Bootloader 程序的延時周期。對于. g ld文件的具體修改如圖2所示。
圖2 . g ld文件的修改。
6. 4 Boot loader程序流程:
系統(tǒng)上電復(fù)位后, 在完成各種初始化配置后首先判斷0x500地址單元中值是否為0xFF, 如果是,則說明系統(tǒng)從未下載過用戶程序, 系統(tǒng)會一直運行Boot loader程序等待PC 機發(fā)送下載命令; 如果0x500中的值不是0xFF, 則說明系統(tǒng)中已經(jīng)下載過用戶程序了, 這時候根據(jù)0x500中的值來設(shè)置定時器T imer2的初值并開始計時, 如果UART2 在指定的自舉周期內(nèi)未接收到PC 機發(fā)來的下載命令(說明系統(tǒng)不需要下載程序), 系統(tǒng)會自動跳出Boo tloader程序而去運行已有的用戶代碼, 如果UART2在自舉周期內(nèi)接收到了下載命令, Boo tloader程序會進入循環(huán)狀態(tài)等待PC機發(fā)送數(shù)據(jù)。如圖3所示。
圖3 程序流程圖。
評論