版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、嵌入式系統(tǒng)教案嵌入式系統(tǒng)教案嵌入式軟件系統(tǒng)設計嵌入式軟件系統(tǒng)設計2022-5-72提綱嵌入式軟件開發(fā)過程ARM軟件設計與代碼分析ARM軟件開發(fā)流程和開發(fā)工具第六章 嵌入式軟件系統(tǒng)設計3嵌入式系統(tǒng)軟件開發(fā)流程q軟件需求分析:確定設計任務和目標,軟件需求分析:確定設計任務和目標,并提煉出設計規(guī)格說明書,作為正式設計指并提煉出設計規(guī)格說明書,作為正式設計指導和驗收的標準。導和驗收的標準。嵌入式軟件開發(fā)過程q概要設計:描述系統(tǒng)如何實現所述的需概要設計:描述系統(tǒng)如何實現所述的需求,包括軟件模塊的劃分、系統(tǒng)的軟件開發(fā)求,包括軟件模塊的劃分、系統(tǒng)的軟件開發(fā)工具選擇以及關鍵問題的論證等。工具選擇以及關鍵問題的
2、論證等。概要設計模塊劃分軟件需求分析:編碼單元調試集成調試詳細設計BSP、應用程序測試產品q詳細設計:詳細描述各個模塊的實現方詳細設計:詳細描述各個模塊的實現方法與過程,模塊間接口等問題,以作為編碼法與過程,模塊間接口等問題,以作為編碼人員的編碼準則。人員的編碼準則。q編碼編碼4嵌入式系統(tǒng)的開發(fā)流程q單元調試:編碼完成后,對各個模塊進行單元調試,單元調試:編碼完成后,對各個模塊進行單元調試,以保證模塊正常工作。以保證模塊正常工作。嵌入式軟件開發(fā)過程q集成調試集成調試5常用調試方法q 軟件仿真q 駐留監(jiān)控程序 硬件要求高,一般在硬件穩(wěn)定之后進行 需要占用目標板上的一部分資源 不能對程序的全速運行
3、進行完全仿真q JTAG仿真器 完全非插入式調試,不使用片上資源,無需目標存儲器,不占用目標系統(tǒng)的任何端口 仿真效果更加接近于目標硬件q 在線仿真器ARM軟件開發(fā)流程和開發(fā)工具6處理器的選擇處理性能 技術指標 功耗 操作系統(tǒng)和軟件支持工具的選擇 是否內置調試工具 ARM軟件開發(fā)流程和開發(fā)工具7操作系統(tǒng)和軟件支持工具的選擇 如果用戶希望使用Windows CE、Linux等操作系統(tǒng),就需要選擇ARM720T以上帶有MMU(Memory Management Unit)功能的ARM芯片。ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都帶有MMU功能。而ARM7
4、TDMI則沒有MMU,不支持Windows CE和Linux,但目前有uCLinux以及uC/OS-II等不需要MMU支持的操作系統(tǒng)可運行于ARM7TDMI硬件平臺之上。ARM軟件開發(fā)流程和開發(fā)工具8操作系統(tǒng)和軟件支持工具的選擇 如果決定采用Linux、Windows CE、vxWorks等操作系統(tǒng)時,在選擇處理器時應該盡量選擇該操作系統(tǒng)已經支持的處理器,這樣可以大大加快開發(fā)進度,降低難度。選擇不同的操作系統(tǒng),其軟件開發(fā)過程和調試手段各不相同,你的選擇方案是否能夠提供各個開發(fā)階段(包括bootloader開發(fā)、操作系統(tǒng)移植、驅動開發(fā)和應用開發(fā))所需的軟件支持工具也是一個必須考慮的因素。 ARM
5、軟件開發(fā)流程和開發(fā)工具9硬件驅動程序的調試如果硬件平臺是自行設計的,必須首先對硬件進行調試,硬件調試成功是進行操作系統(tǒng)移植和應用程序開發(fā)的一個基本前提。這個過程通常是通過編寫一些簡單的測試程序直接驅動硬件以驗證硬件是否正確,這些程序可以基于操作系統(tǒng)進行編程,也可以不使用操作系統(tǒng),而且后一種方法來得更加簡單,調試也更方便和快捷。ARM軟件開發(fā)流程和開發(fā)工具10操作系統(tǒng)的選擇和移植C/OS-II Linux/uClinux Windows CE vxWorks ARM軟件開發(fā)流程和開發(fā)工具11C/OS-II 免費公開源代碼、結構小巧、具有可剝奪實時內核的實時操作系統(tǒng)。其內核提供任務調度與管理、時間
6、管理、任務間同步與通信、內存管理和中斷服務等功能。它可以基于ROM運行(ROMable)、可裁減,具有高度移植性。C/OS-II實時嵌入式內核在工業(yè)控制、數據采集等領域應用廣泛。但C/OS-II內核不支持文件系統(tǒng)、網絡協(xié)議等功能,而且沒有提供統(tǒng)一的硬件驅動程序接口和開發(fā)工具鏈,在復雜應用中需要考慮內核以外功能的實現難易程度。ARM軟件開發(fā)流程和開發(fā)工具12C/OS-II 在C/OS-II開發(fā)中,內核、驅動程序和應用程序都是集中編譯,C/OS-II編譯以后的二進制代碼中既包含內核代碼,也包含驅動程序和應用程序的代碼。C/OS-II沒有提供統(tǒng)一的開發(fā)工具鏈,C/OS-II程序的編譯應該采用支持所選
7、處理器的編譯器。對于ARM處理器,可以在Windows環(huán)境中使用ADS 1.2、ADT IDE中編譯C/OS-II,也可以在Linux環(huán)境中使用GNU GCC編譯C/OS-II。ARM軟件開發(fā)流程和開發(fā)工具13Linux/uClinux Linux/uClinux是對于有MMU和沒有MMU的處理器的Linux解決方案。Linux/uClinux提供強大的文件系統(tǒng)、網絡功能、GUI等軟件模組支持,而且這些功能都是可以裁減的,同時它還提供了標準的驅動程序接口和軟件開發(fā)接口,便于用戶編程和程序維護。Linux/uClinux自身具備一整套工具鏈(GNU GCC),包括編譯和調試工具,用戶可以自行建立
8、嵌入式系統(tǒng)的開發(fā)環(huán)境和交叉運行環(huán)境。ARM軟件開發(fā)流程和開發(fā)工具14Linux/uClinux 對于ARM處理器,Linux/uClinux內核、驅動程序以及應用程序的編譯都在Linux環(huán)境中使用GNU GCC完成。對 于 內 核 和 驅 動 程 序 的 調 試 通 常 借 助 于 運 行 于Linux/uClinux之前的bootloader來完成,只有在很少的情況下需要借助在線仿真器完成。對于應用程序的調試則可以完全拋棄在線仿真器,使用GDB完成。ARM軟件開發(fā)流程和開發(fā)工具15Windows CEWindows CE是Windows界面在嵌入式處理器中的實現,它提供了友好的人機交互界面和
9、強大的二次開發(fā)功能。Windows CE包括四大基本模塊,它們提供了操作系統(tǒng)的關鍵特性,分別是:內核(Kernel)模塊、對象存儲(Object Store)模塊、GWES(用戶、應用程序和操作系 統(tǒng) 之 間 的 圖 形 用 戶 界 面 ) 模 塊 和 通 信(Communication)模塊。ARM軟件開發(fā)流程和開發(fā)工具16Windows CEWindows CE擁有完善的軟件支持開發(fā)工具,Windows CE的核心移植和驅動開發(fā)使用專門的操作系統(tǒng)定制工具:Windows CE Platform Builder(簡稱PB)。而應用程序的開發(fā)則有嵌入式開發(fā)工具包Embedded Visual
10、Tools,包括Embedded Visual C+(簡稱EVC)和Embedded Visual Basic(簡稱EVB)等。同時Embedded Visual Tools下還可以進行部分驅動程序的開發(fā)。同時在Windows CE中還提供了用于Windows CE開發(fā)的bootloader:EBOOT。 ARM軟件開發(fā)流程和開發(fā)工具17vxWorks VxWorks是專門為實時嵌入式系統(tǒng)設計開發(fā)的操作系統(tǒng)內核,為程序員提供了高效的實時多任務調度、中斷管理,實時的系統(tǒng)資源以及實時的任務間通信。在各種CPU平臺上提供了統(tǒng)一的編程接口和一致的運行特性,盡可能的屏蔽了不同CPU之間的底層差異。應用程
11、序員可以將盡可能多的精力放在應用程序本身,而不必再去關心系統(tǒng)資源的管理?;赩xWorks操作系統(tǒng)的應用程序可以在不同CPU平臺上輕松移植。ARM軟件開發(fā)流程和開發(fā)工具18vxWorks VxWorks包括了進程管理、存儲管理、設備管理、文件系統(tǒng)管理、網絡協(xié)議及系統(tǒng)應用等幾個部分。VxWorks只占用了很小的存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運行。TornadoII是為開發(fā)VxWorks應用系統(tǒng)提供的集成開發(fā)環(huán)境,TornadoII中包含的工程管理軟件,可以將用戶自己的代碼與VxWorks的核心有效的組合起來,可以按用戶的需要裁剪配置VxWorks內核。 ARM軟件開發(fā)流程和開發(fā)
12、工具19ARM主流開發(fā)工具qWindows操作系統(tǒng)ARM ADS/SDT + 調試器GNU + Cygwin + 調試器ARM SDT + 簡易電纜qLinux操作系統(tǒng)GNU + GDBARM軟件開發(fā)流程和開發(fā)工具20ARM嵌入式開發(fā)模式( ARM ADS/SDT + 調試器)ARM軟件開發(fā)流程和開發(fā)工具21ADS與Multi-ICE qARM ADS全稱為ARM Developer Suite,是ARM公司推出的用于ARM程序設計、開發(fā)和調試的集成開發(fā)工具?,F在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。qADS由命令行開發(fā)工具,ARM運行時庫,圖形化集成開發(fā)環(huán)境(C
13、ode Warrior和AXD),實用程序和支持軟件組成。ARM軟件開發(fā)流程和開發(fā)工具22ADS命令行開發(fā)工具 qARM C(C+)編譯器 qARM匯編器(armasm) qARM鏈接器(armlink) q符號調試器(armsd) ARM軟件開發(fā)流程和開發(fā)工具23ARM運行時庫qANSI C函數庫:(armlib) qC+函數庫: ARM軟件開發(fā)流程和開發(fā)工具24圖形化集成開發(fā)環(huán)境(Code Warrior和AXD) qCodeWarrior for ARM qADS調試器q實用程序 fromELF armar Flash downloader q支持的軟件 ARMulatorARM軟件開發(fā)
14、流程和開發(fā)工具25ADT for ARM集成開發(fā)系統(tǒng)ARM軟件開發(fā)工具ADT IDE簡介26ADT 1000 Emulator for ARMARM軟件開發(fā)工具ADT IDE簡介 27ADT 1000 Emulator for ARMARM軟件開發(fā)工具ADT IDE簡介 qADT Emulator for ARMADT Emulator for ARM是連接主機核目標機之間的是連接主機核目標機之間的硬件設備,它實現硬件設備,它實現ADT IDE for ARMADT IDE for ARM與目標機之間的連接。與目標機之間的連接。q它具有如下特征:它具有如下特征:支持支持ARMARM核核CPUC
15、PU非插入式調試,無需目標存儲器,不占用目標系統(tǒng)的任何非插入式調試,無需目標存儲器,不占用目標系統(tǒng)的任何端口端口2.5V/3.3V/5V2.5V/3.3V/5V兼容電平接口兼容電平接口支持標準的支持標準的14/2014/20針針JTAGJTAG接口接口運行狀態(tài)指示運行狀態(tài)指示與主機之間通過并口連接與主機之間通過并口連接下載速度達到下載速度達到25Kbytes/S25Kbytes/S28ADT IDE for ARMARM軟件開發(fā)工具ADT IDE簡介 29ADT IDE for ARM主要特征 可視化編程環(huán)境ARM軟件開發(fā)工具ADT IDE簡介 q支持支持ARM7ARM7、ARM9ARM9、S
16、ecurCoreSecurCore等。等。q運行于運行于Windows98 Windows98 、NTNT、20002000、XPXP等平臺。等平臺。q中文、英文版本支持中文、英文版本支持q可視化的源碼編輯和工程管理功能可視化的源碼編輯和工程管理功能q界面友好,使用方便:類似界面友好,使用方便:類似MS Visual StudioMS Visual Studio的用的用戶界面,支持打印功能,支持文件內查找功能和戶界面,支持打印功能,支持文件內查找功能和Find in Find in FilesFiles功能功能30ADT IDE for ARM主要特征 可視化編程環(huán)境ARM軟件開發(fā)工具ADT
17、IDE簡介 q工程管理器:工程管理器:ADT IDEADT IDE提供圖形化的工程管理工具,提供圖形化的工程管理工具,實現文件級、文件目錄級、工程級的多級編譯連接選項實現文件級、文件目錄級、工程級的多級編譯連接選項管理以及工程級的調試參數管理管理以及工程級的調試參數管理q源碼編輯器:支持標準的文本編輯功能,支持源碼編輯器:支持標準的文本編輯功能,支持C C語言、語言、匯編語言語法高亮顯示匯編語言語法高亮顯示q輔助編輯工具:提供一系列輔助編輯工具,方便開輔助編輯工具:提供一系列輔助編輯工具,方便開發(fā)人員。包括:多剪貼板工具、代碼模板工具、頭文件發(fā)人員。包括:多剪貼板工具、代碼模板工具、頭文件和源
18、文件切換工具、注釋工具、符號配對書寫工具等多和源文件切換工具、注釋工具、符號配對書寫工具等多種輔助編輯工具。種輔助編輯工具。31ADT IDE for ARM主要特征 交叉編譯功能ARM軟件開發(fā)工具ADT IDE簡介 q支持開發(fā)語言:支持開發(fā)語言:ANSI CANSI C;Embedded C+Embedded C+;匯編語言;匯編語言q編譯工具:使用著名優(yōu)秀自由軟件編譯工具:使用著名優(yōu)秀自由軟件GNUGNU的的GCCGCC交叉編交叉編譯工具,并經過優(yōu)化和嚴格測試,支持譯工具,并經過優(yōu)化和嚴格測試,支持C C語言、匯編語言語言、匯編語言等等q編譯參數設置:完全圖形界面方式的編譯參數設置,編譯參
19、數設置:完全圖形界面方式的編譯參數設置,提供可視化的設置功能。支持工程級、文件目錄級、文提供可視化的設置功能。支持工程級、文件目錄級、文件級編譯參數設置件級編譯參數設置32ADT IDE for ARM主要特征 調試功能ARM軟件開發(fā)工具ADT IDE簡介 q同時提供了圖形和命令行兩種調試方式同時提供了圖形和命令行兩種調試方式q程序的單步執(zhí)行程序的單步執(zhí)行q程序下載程序下載q存儲區(qū)下載和上載功能。存儲區(qū)下載和上載功能。q工程級調試參數管理工程級調試參數管理q支持源程序、反匯編程序和混合窗口顯示,支持支持源程序、反匯編程序和混合窗口顯示,支持ARM/THUMBARM/THUMB方式顯示方式顯示q
20、具有與具有與MS Visual StudioMS Visual Studio類似的調試菜單功能:類似的調試菜單功能:GoGo,StopStop,ResetReset,RestartRestart,Step intoStep into,Step overStep over,Step Step outout,Run to CursorRun to Cursor等等q豐富的示例程序豐富的示例程序33ADT IDE for ARM主要特征 調試功能ARM軟件開發(fā)工具ADT IDE簡介 q斷點功能:支持軟件斷點和硬件斷點,實現斷點設斷點功能:支持軟件斷點和硬件斷點,實現斷點設置、斷點屏蔽、斷點取消、斷點
21、列表等功能置、斷點屏蔽、斷點取消、斷點列表等功能q變量監(jiān)視功能:隨程序運行同步更新變量,即時修變量監(jiān)視功能:隨程序運行同步更新變量,即時修改變量值,可設置自動改變量值,可設置自動/ /手動刷新方式、十進制手動刷新方式、十進制/ /十六進十六進制顯示制顯示qARMARM各種模式的寄存器即時查看與修改,當前模式指各種模式的寄存器即時查看與修改,當前模式指示,寄存器值修改時紅色突顯示,寄存器值修改時紅色突顯q存儲器查看與修改,可設置自動存儲器查看與修改,可設置自動/ /手動刷新方式、字手動刷新方式、字節(jié)節(jié)/ /雙字節(jié)雙字節(jié)/ /四字節(jié)顯示、大四字節(jié)顯示、大/ /小端方式顯示,存儲器值修小端方式顯示,
22、存儲器值修改時紅色突顯改時紅色突顯34ADT IDE for ARM主要特征 調試功能ARM軟件開發(fā)工具ADT IDE簡介 q函數堆棧顯示,可設置自動函數堆棧顯示,可設置自動/ /手動刷新方式、十進制手動刷新方式、十進制/ /十六進制顯示、參數值顯示,參數類型顯示十六進制顯示、參數值顯示,參數類型顯示q板上寄存器板上寄存器(On Board Register)(On Board Register)的查看和修改,可的查看和修改,可以查看支持以查看支持CPUCPU的所有板上寄存器的具體意義、當前值、的所有板上寄存器的具體意義、當前值、各個位的意義,可設置自動各個位的意義,可設置自動/ /手動刷新方
23、式、二進制手動刷新方式、二進制/ /十十進制進制/ /十六進制顯示、大十六進制顯示、大/ /小端方式顯示,支持十進制小端方式顯示,支持十進制/ /十十六進制方式修改寄存器值,寄存器值修改時紅色突顯。六進制方式修改寄存器值,寄存器值修改時紅色突顯。qflashflash在線編程器,支持對多種在線編程器,支持對多種flashflash芯片的空白檢芯片的空白檢查、擦除、編程、校驗等操作,支持單一操作和自動操查、擦除、編程、校驗等操作,支持單一操作和自動操作兩種操作方式,支持作兩種操作方式,支持8/16/328/16/32位位flashflash訪問寬度,支持訪問寬度,支持多片多片flashflash
24、同時編程,編程速度達同時編程,編程速度達15Kbytes/s15Kbytes/s。提供統(tǒng)一。提供統(tǒng)一的的flashflash編程接口,可以方便地添加編程接口,可以方便地添加flashflash編程方案。編程方案。35ADT IDE for ARMARM軟件開發(fā)工具ADT IDE簡介 ADT IDE(Arm7Lpt、Arm9Lpt、SoftSim、Arm7Simple)用戶手冊、編程指南豐富例程36多版本支持ARM軟件開發(fā)工具ADT IDE簡介 軟件仿真版本軟件仿真版本ARM7ARM7版本版本ARM9ARM9版本版本簡易仿真版本簡易仿真版本37多工程管理ARM軟件開發(fā)工具ADT IDE簡介 工程
25、工程當前活動工程當前活動工程38可視化編輯器ARM軟件開發(fā)工具ADT IDE簡介 編輯菜單編輯菜單語法高亮編輯器語法高亮編輯器輔助編輯工具條輔助編輯工具條書簽39GCC交叉編譯ARM軟件開發(fā)工具ADT IDE簡介編譯菜單編譯工具條編譯結果輸出錯誤定位40編譯器設置ARM軟件開發(fā)工具ADT IDE簡介多配置管理多工程設管理多參數配置41匯編器設置ARM軟件開發(fā)工具ADT IDE簡介多配置管理多工程設管理多參數配置42連接器設置ARM軟件開發(fā)工具ADT IDE簡介多配置管理多工程設管理多參數配置43調試功能ARM軟件開發(fā)工具ADT IDE簡介 調試菜單調試工具條命令行調試窗口44多種調試模式ARM
26、軟件開發(fā)工具ADT IDE簡介 源碼模式混合模式匯編模式45斷點ARM軟件開發(fā)工具ADT IDE簡介 斷點列表斷點46存儲器窗口ARM軟件開發(fā)工具ADT IDE簡介字模式半字模式字節(jié)模式修改凸顯標記47存儲區(qū)上載下載功能ARM軟件開發(fā)工具ADT IDE簡介 存儲區(qū)上載存儲區(qū)下載48寄存器觀察窗口ARM軟件開發(fā)工具ADT IDE簡介 多模式寄存器顯示修改凸顯標記49函數調用棧窗口ARM軟件開發(fā)工具ADT IDE簡介 函數調用棧50變量觀察窗口ARM軟件開發(fā)工具ADT IDE簡介 局部變量全局變量多個觀察窗口51命令窗口ARM軟件開發(fā)工具ADT IDE簡介 52單步調試 STEP INTOARM軟
27、件開發(fā)工具ADT IDE簡介53單步調試 STEP OVERARM軟件開發(fā)工具ADT IDE簡介 54單步調試 STEP OUTARM軟件開發(fā)工具ADT IDE簡介 55單步調試 RUN TO CURSORARM軟件開發(fā)工具ADT IDE簡介 56板上寄存器ARM軟件開發(fā)工具ADT IDE簡介寄存器組寄存器寄存器位域熱點描述信息修改凸顯標記57板上寄存器ARM軟件開發(fā)工具ADT IDE簡介58FLASH在線編程器ARM軟件開發(fā)工具ADT IDE簡介 59工具菜單ARM軟件開發(fā)工具ADT IDE簡介 可自定制60在線幫助ARM軟件開發(fā)工具ADT IDE簡介 61嵌入式軟件開發(fā)q 無操作系統(tǒng)的軟件
28、開發(fā) 啟動代碼 應用程序q 基于操作系統(tǒng)的軟件開發(fā) bootloader 操作系統(tǒng)移植 BSP板級支持包 應用程序開發(fā)ARM軟件設計與代碼分析62啟動代碼q 功能 硬件初始化 引導C代碼q 特征 通常用匯編語言編寫 程序復位運行入口點 代碼量非常小q 程序流程 設置中斷、異常入口 關中斷 硬件寄存器初始化(GPIO配置、總線配置、PLL時鐘) 初始化棧指針 數據區(qū)初始化 C入口函數調用 BL MainARM軟件設計與代碼分析63應用程序(無操作系統(tǒng))q 功能 硬件驅動 應用q 特征 通常用C語言或者嵌入式匯編語言編寫 程序較復雜,代碼量較大ARM軟件設計與代碼分析64bootloaderq 功
29、能 硬件初始化 引導操作系統(tǒng) 下載程序(串口、網口、USB) 燒寫flashq 特征 程序復位運行入口點 通常用匯編語言+C語言編寫 代碼量較小ARM軟件設計與代碼分析65嵌入式操作系統(tǒng)移植q Linuxq Windows CE q uC/OS IIq uClinuxq NucleusARM軟件設計與代碼分析66BSP板級支持包q 功能 為應用程序提供統(tǒng)一的硬件操作接口q 特征 高度硬件相關 高度依賴于具體硬件平臺 各種操作系統(tǒng)各異ARM軟件設計與代碼分析67應用程序開發(fā)(操作系統(tǒng))q 功能 GUI圖形、人機交互 控制 算法q 特征 硬件依賴程度小 部分可仿真調試 各種操作系統(tǒng)各異ARM軟件設
30、計與代碼分析68嵌入式軟件設計和調試流程q 編輯 創(chuàng)建工程 添加文件、編寫程序 匯編語言加C語言q 編譯 配置編譯、匯編和連接參數 編寫連接腳本文件 編譯q 調試 連接調試器 下載程序 運行、調試q 固化 通過仿真器燒寫flash 專用或通用的編程器 通過bootloader燒寫flashARM軟件設計與代碼分析69交叉編譯q GNU交叉編譯 編譯.c arm-elf-gcc 匯編.S arm-elf-gas 連接.o arm-elf-ldq 操作文件 匯編文件.S C文件.c 鏈接腳本文件ldscript 庫文件.o .lib .aq 生成調試格式文件.elf DWARF-1 DWARF-2
31、q 生成bin文件 elf2bin arm-elf-objcopyARM軟件設計與代碼分析70鏈接腳本q 段 Text段 rodata段 data段 bss段q 符號 Image_RO_Limit Image_RW_Base Image_ZI_Base Image_ZI_Limitq GCC庫專用q 調試信息ARM軟件設計與代碼分析71鏈接腳本示例q 程序在SDRAM中運行q 程序在FLASH中運行ARM軟件設計與代碼分析72GCC庫q GCC庫 標準C函數庫lib.a -lc 標準數學函數庫libm.a -lm 標準函數庫的支持庫libg.a -lg GCC的支持庫libgcc.a -lgc
32、cq 鏈接排列順序 -lm lc lgcc -lgARM軟件設計與代碼分析73ARM9-2440啟動代碼分析ARM軟件設計與代碼分析q 在基于ARM920T core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址0 x00000000開始執(zhí)行,因此在這個地址處安排的通常就是系統(tǒng)的啟動代碼。q 它通常也是BootLoader程序的一部分,可以在啟動代碼基礎上編寫B(tài)ootLoader。q 用匯編語言編寫。q 啟動代碼是在復位后運行其它程序之前運行的一段小程序。通過它,初始化硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用C函數準備好正確的環(huán)境。74啟動代碼的移植
33、和修改ARM軟件設計與代碼分析q啟動代碼除了依賴于 CPU 的體系結構外,實際上也依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設的類型等。q對于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU而構建的,如果他們的硬件資源和配置不一致的話,要想讓運行在一塊板子上的啟動代碼也能運行在另一塊板子上,也還是需要作一些必要的修改。 75啟動代碼流程圖q 啟動代碼的功能:RAM初始化,設置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設置堆棧,調用C函數。q 注意:在本階段,特別是在堆棧設置之前,進行函數調用(也有些匯編子程序不需要使用堆棧)或者使用
34、堆棧保存數據將產生不可預知的結果;Boot Loader 入口設置中斷向量表切換到超級模式,并禁止中斷ResetHandler:復位入口設置中斷模式,關閉所有中斷初始化硬件關閉看門狗使能回寫B(tài)uffer和Cache設置非Cache區(qū)域設置端口關閉數據線015上拉設置外部中斷的觸發(fā)方式設置時鐘設置CPU的運行頻率,系統(tǒng)各部件的總線礦寬度以及各部件的時鐘將Boot Loader拷貝到RAM拷貝代碼到RAM跳至C代碼程序ARM軟件設計與代碼分析76設置異常跳轉表q復位異常直接跳轉到ResetHandler處,它是相對跳轉,位置無關。 ARM軟件設計與代碼分析77關閉看門狗q設置S3C2440 WTC
35、ON寄存器q必須設置0 x01e000000 x01d30000ARM軟件設計與代碼分析78設置中斷模式并禁止中斷q設置S3C2440中斷寄存器q設置所有一級中斷源與二級中斷源為不可用狀態(tài)ARM軟件設計與代碼分析79配置存儲器控制寄存器寬度ARM軟件設計與代碼分析0 x01e00000配置值80堆棧初始化ARM軟件設計與代碼分析81C代碼初始化ARM軟件設計與代碼分析拷貝RW數據段ZI段清零跳轉到Main函數處執(zhí)行82ARM9-2440 BOOTLOADER分析ARM軟件設計與代碼分析qBootLoader是在啟動代碼的基礎之上,通常啟動代碼包含于BootLoader之中qBootLoader
36、常用于引導操作系統(tǒng)或者應用程序qBootLoader可以包含一些簡單的調試手段qARM9-2440使用通用的u-boot83u-boot簡介ARM軟件設計與代碼分析qu-boot是由德國DENX小組開發(fā)的交叉平臺BootLoader,其全稱為“universal Boot Loader”。qu-boot的開發(fā)目標是支持盡可能多的嵌入式處理器和嵌入式操作系統(tǒng)。它提供數百種嵌入式開發(fā)板和各種CPU,包括PowerPC、ARM、Xscale、MIPS、Coldfire、NIOS、Microblaze和x86等,同時它除了支持Linux系統(tǒng)的引導外,還支持NetBSD、VxWorks、QNX、RTEM
37、S、ARTOS、LynxOS等多種嵌入式操作系統(tǒng)的引導。84u-boot簡介ARM軟件設計與代碼分析qu-boot的用戶接口類似于Linux的shell界面,通過串口連接以后,用戶可以交互式的輸入命令和看到結果,u-boot的啟動界面如下所示:U-Boot 1.1.1 (Sep 6 2004 - 12:12:06) U-Boot code: 33F80000 - 33F9CED0 BSS: - 33FA116CRAM Configuration:Bank #0: 30000000 64 MBFlash: 32 MBIn: serialOut: serialErr: serialHit any
38、key to stop autoboot: 0JX2410 #85BootLoader的基本概念q BootLoader是系統(tǒng)加電后運行的第一段軟件代碼。q 嵌入式系統(tǒng)中,整個系統(tǒng)的加載啟動任務完全由 BootLoader來完成。比如在一個基于ARM920T core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址0 x00000000開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。q 簡單地說,BootLoader就是在操作系統(tǒng)內核或用戶應用程序運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以
39、便為最終調用操作系統(tǒng)內核或用戶應用程序準備好正確的環(huán)境。q 通常,BootLoader 是依賴于硬件而實現的,特別是在嵌入式領域,為嵌入式系統(tǒng)建立一個通用的 BootLoader 是很困難的。ARM軟件設計與代碼分析86BootLoader 的移植和修改q BootLoader除了依賴于 CPU 的體系結構外,BootLoader 實際上也依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設的類型等。q 對于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU而構建的,如果他們的硬件資源和配置不一致的話,要想讓運行在一塊板子上的BootLoader程序也能運行在
40、另一塊板子上,也還是需要作一些必要的修改。 ARM軟件設計與代碼分析87BootLoader 的安裝q 系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先安排的地址上取指令。比如,S3C2440在復位時都從地址 0 x00000000 取它的第一條指令。q 嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設備(比如:ROM、EEPROM或FLASH等)被安排這個起始地址上,因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。q 也就是說對于基于S3C2440的這套系統(tǒng),我們的BootLoader是從0地址開始存放的,而這塊起始地址需要采用可引導的固態(tài)存儲設備如FLASH。ARM軟件設計與代碼分
41、析88用來控制 BootLoader 的設備或機制q 串口通訊是最簡單也是最廉價的一種雙機通訊設備,所以往往在BootLoader中主機和目標機之間都通過串口建立連接,BootLoader 程序在執(zhí)行時通常會通過串口來進行 I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當然如果認為串口通訊速度不夠,也可以采用網絡或者USB通訊,那么相應的在BootLoader中就需要編寫各自的驅動。ARM軟件設計與代碼分析89Boot Loader 的操作模式q 啟動加載模式:這種模式也稱為自主(Autonomous)模式。也即BootLoader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到R
42、AM中運行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式。 q 下載模式:在這種模式下,目標機上的BootLoader將通過串口連接或網絡連接等通信手段從主機下載文件,比如:下載應用程序、數據文件、內核映像等。從主機下載的文件通常首先被BootLoader保存到目標機的RAM中,然后再被 BootLoader寫到目標機上的固態(tài)存儲設備中。BootLoader 的這種模式通常在系統(tǒng)更新時使用。工作于這種模式下的 BootLoader 通常都會向它的終端用戶提供一個簡單的命令行接口。 q 在uboot中可以通過修改環(huán)境變量實現自主模式。ARM軟件設計與代碼分析90Boot
43、Loader與主機間文件傳輸的通信設備及協(xié)議q 最常見的情況就是,目標機上的 BootLoader 通過串口與主機之間進行文件傳輸,傳輸可以簡單的采用直接數據收發(fā),當然在串口上也可以采用xmodemymodemzmodem 協(xié)議以及q 在以太網上采用TFTP協(xié)議。ARM軟件設計與代碼分析91BootLoader的主要任務與典型結構框架q 從操作系統(tǒng)的角度看,BootLoader的總目標就是正確地調用內核來執(zhí)行。 q 大多數BootLoader都分為stage1和stage2兩大部分。q 依賴于CPU體系結構的代碼,比如設備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現,以達
44、到短小精悍的目的,也就是前面說的啟動代碼。q 而stage2 則通常用C語言來實現,這樣可以實現復雜的功能,而且代碼會具有更好的可讀性和可移植性。 ARM軟件設計與代碼分析92BootLoader的主要任務與典型結構框架q BootLoader的stage1通常包括以下步驟 為加載 BootLoader 的 stage2 準備 RAM 空間 拷貝 BootLoader 的 stage2 到 RAM 空間中 設置好堆棧 跳轉到 stage2 的 C 入口點q BootLoader的stage2通常包括以下步驟 初始化本階段要使用到的硬件設備 調用應用程序或啟動內核ARM軟件設計與代碼分析93St
45、age 1初始化流程圖q stage 1的功能: RAM初始化,設置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設置堆棧,調用Stage 2。q 注意:在本階段,特別是在堆棧設置之前,進行函數調用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數據將產生不可預知的結果;Boot Loader 入口設置中斷向量表切換到超級模式,并禁止中斷ResetHandler:復位入口設置中斷模式,關閉所有中斷初始化硬件關閉看門狗使能回寫B(tài)uffer和Cache設置非Cache區(qū)域設置端口關閉數據線015上拉設置外部中斷的觸發(fā)方式設置時鐘設置CPU的運行頻率,系統(tǒng)各部件的總線礦寬度以及各部件的時鐘將Boot Loader拷貝到RAM拷貝代碼到RAM跳至C代碼程序ARM軟件設計與代碼分析94Stage 2流程圖q stage
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年金融服務合作意向書
- 川教版六上合并
- 建筑項目雇傭合同范本
- 官方住宅購房合同模板
- 餐具與食物建構課程設計
- 工程安全生產文明施工協(xié)議
- 店鋪出租合同協(xié)議書范本
- 現代文閱讀Ⅰ滿分攻略-2025年高考語文一輪復習解析版
- 2024年餐飲承包經營合同范本
- 外協(xié)加工保密協(xié)議書范文
- 消防安全培訓內容
- 校園展美 課件 2024-2025學年人美版(2024)初中美術七年級上冊
- 2024年遼寧鐵道職業(yè)技術學院高職單招(英語/數學/語文)筆試歷年參考題庫含答案解析
- 主播藝人入職面試信息登記表
- 2023年學習興稅(網絡信息)知識考試復習題庫(含答案)
- 藝術設計專業(yè)人才需求報告
- 社區(qū)工作者經典備考題庫(必背300題)
- 圖形創(chuàng)意(第二版)教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案合集最新課件匯編
- 混凝土早強劑檢驗報告(出廠)
- 物流系統(tǒng)課件(PPT 52頁).ppt
- 風力發(fā)電機組滅火系統(tǒng)培訓ppt課件.ppt
評論
0/150
提交評論