新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CAN總線的在線更新機制的設計與實現

        基于CAN總線的在線更新機制的設計與實現

        作者: 時間:2013-07-31 來源:網絡 收藏

          

          其中①啟動程序是一段特定的駐留代碼,專門用于接收來自主機新的代碼,將其燒寫到相應的FLASH空間,完成后跳轉到應用代碼區去執行新的程序,代碼比較少,編譯生成的映像文件小于4 KB,每次系統上電或重啟后先執行啟動程序。

         ?、趹贸绦蚴钦嬲龑崿F用戶功能的代碼。

          ③用戶數據區是用于存儲應用程序的一些設置和數據。

          3.3 中斷向量表重映射與復制

          LPC11C24支持32個向量中斷,中斷向量表默認位于FLASH 的第一個4 KB 空間,地址從0×00000000~0×00000079.按照前面的設計,啟動程序占用第一個4KB的空間,當跳轉到應用程序時,實際的中斷向量表是位于0×00001000~0×00001079的空間。但LPC11C24系列的單片機不支持自定義中斷向量表的地址,只支持將中斷向量表從FLASH重映射到RAM.

          為了能讓應用程序實現正常的中斷處理,啟動程序在跳轉到應用程序之前還需要將應用程序的中斷向量表復制并映射到RAM[10].

          代碼實例如下:

          

          3.4 啟動程序和應用程序的設計與固化

          程序都在Keil for ARM 集成環境下編寫并編譯。

          首先在Keil軟件下新建基于LPC11C24的工程,并配置FLASH和SRMA的起始地址和大小。具體如表2所示。

          

          3.5 啟動程序與應用程序之前的跳轉

          在啟動程序中定義應用程序的地址,#defineAPP_CODE_ADDR (0×00001000),程序跳轉的代碼采用匯編語言編寫,代碼實例如下:

          

          3.6 啟動代碼的實現流程當用戶需要更新應用代碼時,PC的上位機軟件通過向各種終端發送升級命令。而終端開機后自動運行啟動程序,啟動程序會檢測沒有升級命令,如果有的話,則接收應用程序代碼,直到完成整個升級。如果沒有,則運行應用程序。實現的流程圖如圖2,圖3所示。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西乡县| 九台市| 青州市| 永善县| 福鼎市| 湖南省| 日土县| 高碑店市| 鹤岗市| 庆安县| 新宾| 施甸县| 上饶县| 昌平区| 来宾市| 五华县| 五寨县| 蒲江县| 固镇县| 阿勒泰市| 沅陵县| 青龙| 鄄城县| 清镇市| 额济纳旗| 汶川县| 西藏| 孝义市| 九江县| 新密市| 桃源县| 宣威市| 白朗县| 青龙| 永寿县| 施甸县| 新津县| 项城市| 宁波市| 朝阳市| 丁青县|