新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LZW壓縮算法在終端程序遠程更新中的應用

        LZW壓縮算法在終端程序遠程更新中的應用

        作者: 時間:2010-06-26 來源:網絡 收藏


        定義IAP的入口地址:
        # define IAP_ENTER_ADR 0x7ffffff1
        定義函數類型指針:
        Typedef void(* IAP)(uint32[ ],uint32[ ])
        IAP iap_entry;
        設置函數指針:
        Iap_entry=(IAP) IAP_ENTER_ADR;
        使用下面的語句來調用IAP:
        Iap_entry(command,result);

        IAP功能主要通過調用iap_entry()函數來實現。IAP命令和定義的函數如表2所列。



        在進行片內Flash修改時,首先需要讀取器件的ID和Boot代碼命令版本;確認無誤后,選擇準備編程的扇區;然后擦除扇區并執行扇區查空,將RAM內容復制到Flash中;最后進行RAM內容與Flash的比較,檢查是否復制成功。

        2 的實現

        2.1 分區

        軟件開發采用ADS1.2集成開放環境。ADS全稱為ARM Developer Suite,是ARM公司推出的ARM集成開發工具。在ADS鏈接選項ARM Linker中選擇Scattered方式后,通過修改.scf文件可以將編譯成程序和程序兩部分。其中,程序占用0~21扇區,用于實現的功能;程序占用22~27扇區,在出廠后不再進行修改。當進行程序更新時,利用IAP功能對程序部分進行擦除改寫,以實現應用程序的更新。鏈接用的.scf文件定義如下:



        在.scf文件中,RO表示程序代碼數據內容,RW和ZI表示該程序部分中定義的通用數據變量和需進行零初始化的數據變量。ROM_MAIN部分主要包括應用程序部分和其定義的數據。ROM_EXEC是應用程序的代碼區域,位于片內Flash,地址從0開始。IRAM中是程序運行的堆棧,位于片內RAM中。ERAM是應用程序定義的數據變量,位于片外RAM中。LOADER部分是更新程序的代碼區域,位于片內Flash,地址從0x78000開始。程序編譯、鏈接完成后,ADS會生成兩個名為ROM_MAIN和LOADER的十六進制文件。在需要程序更新時,主站將完成二進制提取的ROM_MAIN文件通過有線或無線的方式發送給終端,終端全部收到后調用更新程序進行程序更新。但由于提取完的二進制文件仍然比較大,需要對其進行,以降低通信費用。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江永县| 柳林县| 沂水县| 鹤壁市| 雷州市| 南召县| 道孚县| 余姚市| 华容县| 简阳市| 大邑县| 微山县| 中方县| 遂昌县| 盐城市| 芜湖市| 秀山| 健康| 若尔盖县| 景泰县| 定结县| 洪泽县| 贺兰县| 邳州市| 北京市| 舒城县| 名山县| 海晏县| 黑山县| 武夷山市| 和田市| 彰化县| 潞城市| 昌图县| 双城市| 龙口市| 罗源县| 长子县| 平陆县| 彭水| 涪陵区|