新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Bootloader技術在數字信號控制器中的應用

        Bootloader技術在數字信號控制器中的應用

        作者: 時間:2012-09-03 來源:網絡 收藏

        6 程序編寫

        6. 1 dsPIC30F系列器件存儲空間的分配

        在編寫程序之前, 我們必須首先了解芯片的程序存儲空間分配情況。dsPIC30F 系列芯片包含144K字節的FLASH 程序存儲空間, 尋址范圍為0x0000100~ 0x017FFE, 圖1 ( a)為dsPIC30F系列芯片的程序存儲器地址映射情況。

        0x00~ 0x03地址單元是復位向量; 0x04~ 0xFE地址單元是中斷向量表和后備中斷向量表( IVT /A IVT) ; 在其后的0x100~ 0x17FFE單元為48K指令字的用戶閃存程序存儲器。原則上, Boot loader程序可以放在整個程序空間中的任何位置, 但是為了簡單方便、具有通用性和盡量減少對用戶程序的影響,本設計使用了0x100 ~ 0x4FE 的一段程序存儲器( Boo tloader程序與用戶程序的代碼總量不能超過144KB)。程序后面便可存放用戶程序,但是受到FLASH 存儲器頁的限制, 用戶程序不可緊跟在Boo tloader程序之后, 它必須從下一個FLASH存儲器頁的開始處(如0x500) 存放, 如圖1 ( b) 所示。

        程序存儲器地址映射
        圖1 程序存儲器地址映射

        6. 2 . hex文件的解析

        當dsPIC30F系列的程序編寫完成之后, 利用開發平臺MPLAB IDE編譯后會生成一個. hex 文件, 將這個. hex 文件燒寫到FLASH 存儲器中系統才能運行, 因此要完成的任務就是將這個. hex 文件下載到目標系統中。如果直接從PC 端將. hex 文件中的全部內容發送給下位機, 就需要Boot loader程序來解析提取要寫入存儲器的數據, 這樣做勢必加大Boo tloader程序代碼長度, 也會影響整個Boo tloader過程的時間, 因此本設計采用在PC機端程序解析. hex 文件的方法。為了正確地將這個. hex文件下載到下位機中必須對. hex 文件有一個比較深入的了解。. hex文件的格式如下:

        : BBAAAATTHHHH……HHCC

        BB: 二位16 進制值, 表示該幀數據的字節長度。

        AAAA: 四位16 進制值, 表示隨后數據的起始地址, 該地址為字節地址。

        TT: 二位16進制值, 表示數據幀類型( 00 : 數據幀; 01 : 結束幀; 04 : 擴展地址幀)。

        HH: 16進制值, 表示具體的數據, 即具體程序代碼。

        CC: 二位16進制的校驗碼, 使該幀全部以二位16進制相加后總和為0。

        一個. hex 文件可分為5部分代碼: 復位向量代碼、程序代碼、中斷向量代碼、后備中斷向量代碼和結束代碼, 除結束代碼僅含結束幀外, 其余各部分代碼都由擴展地址幀和數據幀組成, 其中僅數據幀存儲了用戶程序信息。因此PC 機端程序僅保留擴展地址幀和數據幀的內容并按順序進行發送即可, 下位機接收數據后根據擴展地址幀可以直接將用戶代碼寫入FLASH 存儲器相應的地址單元中, 從而提高了整個Bootloader的效率。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 襄樊市| 丰台区| 洛隆县| 健康| 敖汉旗| 德江县| 夏河县| 永安市| 贺兰县| 天门市| 类乌齐县| 中阳县| 洪雅县| 吴忠市| 莱州市| 交城县| 柳林县| 文安县| 海阳市| 常山县| 双城市| 鲁山县| 万安县| 苏尼特右旗| 山阳县| 简阳市| 瑞昌市| 山东省| 冀州市| 拉孜县| 长顺县| 于都县| 任丘市| 贵德县| 牙克石市| 曲水县| 栾川县| 泾川县| 宁安市| 皮山县| 馆陶县|