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