圖9 重定向_user_initial_stackheap()
圖10 基本初始化過程
圖11 rom/ram重定向和對映
表1 系統復位和初始化 目前情況,一般假設程式從c庫函式的初始化入口_main開始執行。實際上,所有的嵌入式程式在啟動時都要執行一些系統級的初始化操作。在此討論這方面的內容。 初始化過程 圖10中顯示了乙個基於arm的嵌入式系統的基本初始化過程。可以看到,在_main之前加入了乙個復位處理模組reset handler,它在系統上電復位時立即啟動。標識為$sub$$main的新**塊在進入主程式之前執行。 復 位處理模組reset handler通常是一小段彙編**,在系統復位時執行。它至少完成應用程式中使用到的所有處理器模式的堆疊初始化工作。對於含有 本地儲存器系統的核心(比如含cache的arm核心),配置工作也必須在這一段初始化過程中完成。當完成系統初始化之後,通常程式會跳向_main,開 始c庫函式的初始化過程。 系統初始化過程一般還包括另外一些內容,中斷使能等,這些大多安排在c庫函式的初始化完成之後執行。$sub$$main()完成這部分功能。 向量表(vector table) 所有的arm系統都有一張中斷向量表當出現異常需要處理時,必須呼叫向量表。向量表一般要位於0位址處。
表2
表3
表4
表5
表6
表7
表8
表9
嵌入式軟體開發流程
1 嵌入式軟體開發流程在整個流程中,使用者首先需要建立工程並對工程做初步的配置,包括配置處理器和配置除錯裝置。編輯工程檔案,包括自己編寫的彙編和c語言源程式,還有工程編 譯時需要編寫的鏈結指令碼檔案,除錯過程中需要編寫儲存區映像檔案和命令指令碼檔案,以及上電復位時的程式執行入口的啟動程式檔案。對後四...
嵌入式軟體開發之我見
自己從事嵌入式系統開發有好多年了,在此想與大家分享我對於嵌入式開發的一點心得與體會。先大致說一說我的工作經歷。97年畢業後做了兩年的電氣與電子設計與開發,這一時期,我做過電路原理圖的設計和pcb板的設計。從99年開始,我進入了軟體行業。第一次做嵌入式開發是在2000年,在隨後的六年多的時間裡,我差不...
凹凸電子 嵌入式軟體開發
embedded software design engineer 1 讀程式段,回答問題 int main int argc,char argv a 寫出程式輸出 b 在乙個可移植的系統中這種表示式是否存在風險?why?include stdio.h int a 0 int b static ch...