新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于CAN總線的在線更新機(jī)制的設(shè)計與實(shí)現(xiàn)

基于CAN總線的在線更新機(jī)制的設(shè)計與實(shí)現(xiàn)

作者: 時間:2013-07-31 來源:網(wǎng)絡(luò) 收藏

  

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

  ②應(yīng)用程序是真正實(shí)現(xiàn)用戶功能的代碼。

 ?、塾脩魯?shù)據(jù)區(qū)是用于存儲應(yīng)用程序的一些設(shè)置和數(shù)據(jù)。

  3.3 中斷向量表重映射與復(fù)制

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

  為了能讓應(yīng)用程序?qū)崿F(xiàn)正常的中斷處理,啟動程序在跳轉(zhuǎn)到應(yīng)用程序之前還需要將應(yīng)用程序的中斷向量表復(fù)制并映射到RAM[10].

  代碼實(shí)例如下:

  

  3.4 啟動程序和應(yīng)用程序的設(shè)計與固化

  程序都在Keil for ARM 集成環(huán)境下編寫并編譯。

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

  

  3.5 啟動程序與應(yīng)用程序之前的跳轉(zhuǎn)

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

  

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



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉