一種嵌入式設備中調用外部存儲介質中應用程式的方法
2023-09-20 15:59:50 1
專利名稱:一種嵌入式設備中調用外部存儲介質中應用程式的方法
技術領域:
本發明涉及嵌入式設備的應用,具體涉及一種嵌入式設備中調 用外部存儲介質中應用程式的方法.背景技術對於嵌入式設備,往往要根據市場的需求添加新的功能.一 般情況下,新的功能往往跟隨主程序進行發布。但是隨著功能的 增加,會使主系統設計變得複雜。模塊化的代碼雖然在一定程度 上可以相對簡化流程、但也會造成主程序變得龐大,系統各個部 分的關聯性上升,造成開發和維護的時間延長、成本增加,所以, 有必要分離主程序和應用程式,將兩部分程序獨立開發,在使用 時利用主程序加載應用程式.在現有的嵌入式設備應用中,加載程序從被加載的程序中返回一般通過使用一個完整的商用作業系統(如linux作業系統)來 完成.使用這些作業系統要支付一定的費用,而且需要一個強大 的MCU處理器,這些都會增加系統的成本,影響產品的市場竟爭 力。而在不使用商用作業系統以及使用不含MMU功能的MCU處理 器的低成本嵌入式設備應用上,編譯器編譯出的代碼是使用絕對 地址的.如果要加載應用程式並能正確退出,就必須考慮空間復 用、應用程式初始化,以及恢復主程序狀態等因素。解決了這些 問題,加載應用程式的過程才能正確執行。發明內容本發明的目的在於提供一種嵌入式設備中調用外部存儲介質 中應用程式的方法,以解決在不附加商用作業系統且使用不支持 MMU功能的MCU處理器的低成本嵌入式設備下加栽外部存儲介質中
應用程式的問題.為了達到上述目的,本發明提供了一種嵌入式設備中調用外部存儲介質中應用程式的方法.該方法包括步驟a.將應用程式 的代碼和關鍵數據調入到主程序空間中,復用主程序運行數據空 間;b.備份系統棧,並跳轉到應用程式;c.返回主程序,並且 還原系統棧.由於採用了上述技術方案,僅通過簡單的編譯限定,即實現 了主程序的編譯過程與應用程式分離、主程序自由加載應用程式 並可以退出的應用目的。
下面將參照附圖對本發明的具體實施方案進行更詳細的說 明,其中圖l是根據本發明的一個實施例的程序空間分配圖;圖2是根據本發明的一個實施例的主程序調用應用程式流程圖。
具體實施方式
圖l是程序空間分配圖.如圖1所示,主程序編譯時,在嵌入式設備的存儲空間中分 配主程序空間.並將主程序空間劃分為一級中斷向量表102、 二級 中斷向量表104、主程序代碼空間106、主程序關鍵數據空間108、 主程序運行數據空間IIO和數據交換區112。主程序運行時,主程 序空間狀態不變.其中,主程序代碼空間106是主程序存儲運行的空間。主程序關鍵數據空間108是主程序的變量與要保存的數據空 間,也就是系統變量的位置。主程序運行數據空間110包括圖像顯示緩衝、聲音播放緩衝、 臨時數據緩衝等在切換程序時不需要保存的數據。一級中斷向量表102是真正硬體中斷的產生位置,它的功能 是跳轉到二級中斷向量表的位置,二級中斷向量表103存儲記載中斷服務程序入口地址的中斷 向量,它的作用是根據中斷向量跳轉到相應的中斷服務程序的指 定的代碼區域.數據交換區112用於主程序調用應用程式時傳遞所需數據.應用程式運行時,主程序空間狀態發生變化.應用程式的一級中斷向量表和二級中斷向量表復用主程序的 空間.特別的,應用程式的一級中斷向量表與主程序的一級中斷 向量表102相同.應用程式的二級中斷向量表復用主程序的二級 中斷向量表104,形成應用程式的二級中斷向量表1040。應用程式的代碼和關鍵數據空間復用主程序的運行數據空間 IIO,形成應用程式代碼空間IIOO和應用程式關鍵數據空間1102。主程序代碼空間106、主程序關鍵數據空間108以及數據交換 區112不變.在應用程式獨立編譯成功後,將一個特殊的彙編文件添加到 整個工程中.此彙編文件含有兩個記錄, 一是用於寫入應用程式 的初始入口地址;另一是用於從數據交換區中讀取應用程式返回 時的地址,並根據此地址返回主程序.添加完成後,將此時的應用程式文件重新編譯生成一個燒錄 文件。在一個例子中,將應用程式文件編譯生成一個標準bin文 件,在另一個例子中,將應用程式文件編譯生成一個標準hex文 件.編譯生成的應用程式bin文件中,包含應用程式的一級中斷 向量表、二級中斷向量表、應用程式代碼、應用程式關鍵數據以 及應用程式的初始入口地址、從數據交換區讀取應用程式返回時 的地址的指令和根據此地址返回主程序的指令.圖2是主程序調用應用程式流程圖。如圖2所示,在步驟202,當主程序要調用應用程式時,主程 序首先關閉所有用到主程序運行數據空間110的應用,4吏運行數 據空間110空閒,在步驟204,為了避免應用程式初始化影響到主程序的數據,
不能使應用程式的代碼和數據空間復用主程序的代碼和數據空間。在本發明中,將應用程式bin文件中的代碼和關鍵數據調入, 復用原主程序空間的運行數據空間110.在步驟206,將需要與應用程式傳遞的參數寫入數據交換區.在步驟208,關閉中斷.在步驟210,調入應用程式bin文件中的一級中斷向量表和二 級中斷向量表。應用程式bin文件中的一級中斷向量表與原主程 序空間的一級中斷向量表102相同;將原主程序的二級中斷向量 表104更新為應用程式的二級中斷向量表1040。在步驟212,由於一旦啟動應用程式後,系統棧可能遭到破壞, 即CPU的狀態信息可能遭到破壞,在應用程式調用結束後就無法 回到原來的狀態。因此,在跳轉到應用程式之前將系統棧完整的 備份出來並保存,以《更以後還原.在步驟214,主程序向數據交換區寫入應用程式返回時的地址,在步驟216,主程序從應用程式bin文件中讀取應用程式的初 始入口地址,才艮據此地址跳轉到應用程式的入口。此時,由應用 程序接管系統的控制權。在步驟218,應用程式打開中斷。在步驟220,應用程式執行自身內容.在步驟222,執行完成自身內容後,從數據交換區讀取應用程 序返回時的地址,並根據此地址返回主程序。 在步驟224,關閉中斷. 在步驟226,還原系統棧.在步驟228,將二級中斷向量表恢復為主程序的二級中斷向量 表104,在步驟230,打開中斷.此時,完成調用應用程式的過程,主程序繼續運行。 顯而易見,在此描述的本發明可以有許多變化,這種變化不 能認為偏離本發明的精神和範圍。因此,所有對本領域技術人員
顯而易見的改變,都包括在本權利要求書的涵蓋範圍之內.
權利要求
1.一種嵌入式設備中調用外部存儲介質中應用程式的方法,其特徵在於a.將應用程式的代碼和關鍵數據調入到主程序空間中,復用主程序運行數據空間;b.備份系統棧,並跳轉到應用程式;c.返回主程序,並且還原系統棧。
2. 如權利要求1所述的方法,其特徵在於,包括在將應用程式的代碼 和關鍵數據調入到主程序運行數據空間前將所有用到主程序運行數據空 間的應用關閉的步驟,以使主程序運行數據空間空閒。
3. 如權利要求1所述的方法,其特徵在於,所述主程序空間包括二 級中斷向量表;步驟b還包括關閉中斷,並將二級中斷向量表更新為應 用程序的二級中斷向量表的步驟;步驟c還包括關閉中斷,並恢復主程 序的二級中斷向量表的步驟.
4. 如權利要求1所述的方法,其特徵在於,所述應用程式的代碼和關 鍵數據是從編譯生成的應用程式燒錄文件中調出。
5. 如權利要求4所述的方法,其特徵在於,所述應用程式燒錄文件是 在應用程式獨立編譯後再添加一個彙編文件進行編譯得來.
6. 如權利要求5所述的方法,其特徵在於,所述彙編文件包含了一個 記錄,用於寫入應用程式的初始入口地址;並且步驟b還包括從應用程 序燒錄文件中讀取此地址,並跳轉到應用程式的步驟。
7. 如權利要求5所述的方法,其特徵在於,所述彙編文件還包含了另 一組指令,用於從數據交換區中讀取應用程式返回時的地址,並根據此 地址返回主程序;並且步驟b還包括讀取主程序向數據交換區寫入應用 程序返回時的地址的步驟.
8. 如權利要求1所述的方法,其特徵在於,所述編譯生成的應用程式 燒錄文件是標準bin文件,或標準hex文件。
9. 如權利要求1所述的方法,其特徵在於,所述主程序空間在主程序 編譯時分配。
全文摘要
本發明提供了一種嵌入式設備中調用外部存儲介質中應用程式的方法。該方法包括步驟a.將應用程式的代碼和關鍵數據調入到主程序空間中,復用主程序運行數據空間;b.備份系統棧,並跳轉到應用程式;c.返回主程序,並且還原系統棧。由於採用了該方法,僅通過簡單的編譯限定,即實現了主程序的編譯過程與應用程式分離、主程序自由加載應用程式並可以退出的應用目的。
文檔編號G06F9/46GK101110037SQ20071012084
公開日2008年1月23日 申請日期2007年8月28日 優先權日2007年8月28日
發明者巖 史, 鈞 敖 申請人:北京海爾集成電路設計有限公司