版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
嵌入式系統(tǒng)教案嵌入式軟件系統(tǒng)設(shè)計1/5/2023嵌入式系統(tǒng)教案嵌入式軟件系統(tǒng)設(shè)計12/28/2022提綱13245嵌入式軟件開發(fā)過程ARM軟件設(shè)計與代碼分析ARM軟件開發(fā)流程和開發(fā)工具67第六章嵌入式軟件系統(tǒng)設(shè)計2提綱13245嵌入式軟件開發(fā)過程ARM軟件設(shè)計與代碼分析AR嵌入式系統(tǒng)軟件開發(fā)流程軟件需求分析:確定設(shè)計任務(wù)和目標(biāo),并提煉出設(shè)計規(guī)格說明書,作為正式設(shè)計指導(dǎo)和驗收的標(biāo)準(zhǔn)。嵌入式軟件開發(fā)過程概要設(shè)計:描述系統(tǒng)如何實(shí)現(xiàn)所述的需求,包括軟件模塊的劃分、系統(tǒng)的軟件開發(fā)工具選擇以及關(guān)鍵問題的論證等。詳細(xì)設(shè)計:詳細(xì)描述各個模塊的實(shí)現(xiàn)方法與過程,模塊間接口等問題,以作為編碼人員的編碼準(zhǔn)則。編碼3嵌入式系統(tǒng)軟件開發(fā)流程軟件需求分析:確定設(shè)計任務(wù)和目標(biāo),并提嵌入式系統(tǒng)的開發(fā)流程單元調(diào)試:編碼完成后,對各個模塊進(jìn)行單元調(diào)試,以保證模塊正常工作。嵌入式軟件開發(fā)過程集成調(diào)試4嵌入式系統(tǒng)的開發(fā)流程單元調(diào)試:編碼完成后,對各個模塊進(jìn)行單元常用調(diào)試方法軟件仿真駐留監(jiān)控程序硬件要求高,一般在硬件穩(wěn)定之后進(jìn)行需要占用目標(biāo)板上的一部分資源不能對程序的全速運(yùn)行進(jìn)行完全仿真JTAG仿真器完全非插入式調(diào)試,不使用片上資源,無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口仿真效果更加接近于目標(biāo)硬件在線仿真器ARM軟件開發(fā)流程和開發(fā)工具5常用調(diào)試方法軟件仿真ARM軟件開發(fā)流程和開發(fā)工具5處理器的選擇處理性能
技術(shù)指標(biāo)
功耗
操作系統(tǒng)和軟件支持工具的選擇
是否內(nèi)置調(diào)試工具
ARM軟件開發(fā)流程和開發(fā)工具6處理器的選擇處理性能ARM軟件開發(fā)流程和開發(fā)工具6操作系統(tǒng)和軟件支持工具的選擇
如果用戶希望使用WindowsCE、Linux等操作系統(tǒng),就需要選擇ARM720T以上帶有MMU(MemoryManagementUnit)功能的ARM芯片。ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都帶有MMU功能。而ARM7TDMI則沒有MMU,不支持WindowsCE和Linux,但目前有uCLinux以及uC/OS-II等不需要MMU支持的操作系統(tǒng)可運(yùn)行于ARM7TDMI硬件平臺之上。ARM軟件開發(fā)流程和開發(fā)工具7操作系統(tǒng)和軟件支持工具的選擇如果用戶希望使用Windows操作系統(tǒng)和軟件支持工具的選擇
如果決定采用Linux、WindowsCE、vxWorks等操作系統(tǒng)時,在選擇處理器時應(yīng)該盡量選擇該操作系統(tǒng)已經(jīng)支持的處理器,這樣可以大大加快開發(fā)進(jìn)度,降低難度。選擇不同的操作系統(tǒng),其軟件開發(fā)過程和調(diào)試手段各不相同,你的選擇方案是否能夠提供各個開發(fā)階段(包括bootloader開發(fā)、操作系統(tǒng)移植、驅(qū)動開發(fā)和應(yīng)用開發(fā))所需的軟件支持工具也是一個必須考慮的因素。
ARM軟件開發(fā)流程和開發(fā)工具8操作系統(tǒng)和軟件支持工具的選擇如果決定采用Linux、Win硬件驅(qū)動程序的調(diào)試如果硬件平臺是自行設(shè)計的,必須首先對硬件進(jìn)行調(diào)試,硬件調(diào)試成功是進(jìn)行操作系統(tǒng)移植和應(yīng)用程序開發(fā)的一個基本前提。這個過程通常是通過編寫一些簡單的測試程序直接驅(qū)動硬件以驗證硬件是否正確,這些程序可以基于操作系統(tǒng)進(jìn)行編程,也可以不使用操作系統(tǒng),而且后一種方法來得更加簡單,調(diào)試也更方便和快捷。ARM軟件開發(fā)流程和開發(fā)工具9硬件驅(qū)動程序的調(diào)試如果硬件平臺是自行設(shè)計的,必須首先對硬件進(jìn)操作系統(tǒng)的選擇和移植μC/OS-IILinux/uClinuxWindowsCEvxWorksARM軟件開發(fā)流程和開發(fā)工具10操作系統(tǒng)的選擇和移植μC/OS-IIARM軟件開發(fā)流程和開μC/OS-II免費(fèi)公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時內(nèi)核的實(shí)時操作系統(tǒng)。其內(nèi)核提供任務(wù)調(diào)度與管理、時間管理、任務(wù)間同步與通信、內(nèi)存管理和中斷服務(wù)等功能。它可以基于ROM運(yùn)行(ROMable)、可裁減,具有高度移植性。μC/OS-II實(shí)時嵌入式內(nèi)核在工業(yè)控制、數(shù)據(jù)采集等領(lǐng)域應(yīng)用廣泛。但μC/OS-II內(nèi)核不支持文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議等功能,而且沒有提供統(tǒng)一的硬件驅(qū)動程序接口和開發(fā)工具鏈,在復(fù)雜應(yīng)用中需要考慮內(nèi)核以外功能的實(shí)現(xiàn)難易程度。ARM軟件開發(fā)流程和開發(fā)工具11μC/OS-II免費(fèi)公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時內(nèi)μC/OS-II在μC/OS-II開發(fā)中,內(nèi)核、驅(qū)動程序和應(yīng)用程序都是集中編譯,μC/OS-II編譯以后的二進(jìn)制代碼中既包含內(nèi)核代碼,也包含驅(qū)動程序和應(yīng)用程序的代碼。μC/OS-II沒有提供統(tǒng)一的開發(fā)工具鏈,μC/OS-II程序的編譯應(yīng)該采用支持所選處理器的編譯器。對于ARM處理器,可以在Windows環(huán)境中使用ADS1.2、ADTIDE中編譯μC/OS-II,也可以在Linux環(huán)境中使用GNUGCC編譯μC/OS-II。ARM軟件開發(fā)流程和開發(fā)工具12μC/OS-II在μC/OS-II開發(fā)中,內(nèi)核、驅(qū)動程序和Linux/uClinuxLinux/uClinux是對于有MMU和沒有MMU的處理器的Linux解決方案。Linux/uClinux提供強(qiáng)大的文件系統(tǒng)、網(wǎng)絡(luò)功能、GUI等軟件模組支持,而且這些功能都是可以裁減的,同時它還提供了標(biāo)準(zhǔn)的驅(qū)動程序接口和軟件開發(fā)接口,便于用戶編程和程序維護(hù)。Linux/uClinux自身具備一整套工具鏈(GNUGCC),包括編譯和調(diào)試工具,用戶可以自行建立嵌入式系統(tǒng)的開發(fā)環(huán)境和交叉運(yùn)行環(huán)境。ARM軟件開發(fā)流程和開發(fā)工具13Linux/uClinuxLinux/uClinux是對于Linux/uClinux對于ARM處理器,Linux/uClinux內(nèi)核、驅(qū)動程序以及應(yīng)用程序的編譯都在Linux環(huán)境中使用GNUGCC完成。對于內(nèi)核和驅(qū)動程序的調(diào)試通常借助于運(yùn)行于Linux/uClinux之前的bootloader來完成,只有在很少的情況下需要借助在線仿真器完成。對于應(yīng)用程序的調(diào)試則可以完全拋棄在線仿真器,使用GDB完成。ARM軟件開發(fā)流程和開發(fā)工具14Linux/uClinux對于ARM處理器,Linux/uWindowsCEWindowsCE是Windows界面在嵌入式處理器中的實(shí)現(xiàn),它提供了友好的人機(jī)交互界面和強(qiáng)大的二次開發(fā)功能。WindowsCE包括四大基本模塊,它們提供了操作系統(tǒng)的關(guān)鍵特性,分別是:內(nèi)核(Kernel)模塊、對象存儲(ObjectStore)模塊、GWES(用戶、應(yīng)用程序和操作系統(tǒng)之間的圖形用戶界面)模塊和通信(Communication)模塊。ARM軟件開發(fā)流程和開發(fā)工具15WindowsCEWindowsCE是Windows界面WindowsCEWindowsCE擁有完善的軟件支持開發(fā)工具,WindowsCE的核心移植和驅(qū)動開發(fā)使用專門的操作系統(tǒng)定制工具:WindowsCEPlatformBuilder(簡稱PB)。而應(yīng)用程序的開發(fā)則有嵌入式開發(fā)工具包EmbeddedVisualTools,包括EmbeddedVisualC++(簡稱EVC)和EmbeddedVisualBasic(簡稱EVB)等。同時EmbeddedVisualTools下還可以進(jìn)行部分驅(qū)動程序的開發(fā)。同時在WindowsCE中還提供了用于WindowsCE開發(fā)的bootloader:EBOOT。
ARM軟件開發(fā)流程和開發(fā)工具16WindowsCEWindowsCE擁有完善的軟件支持開vxWorksVxWorks是專門為實(shí)時嵌入式系統(tǒng)設(shè)計開發(fā)的操作系統(tǒng)內(nèi)核,為程序員提供了高效的實(shí)時多任務(wù)調(diào)度、中斷管理,實(shí)時的系統(tǒng)資源以及實(shí)時的任務(wù)間通信。在各種CPU平臺上提供了統(tǒng)一的編程接口和一致的運(yùn)行特性,盡可能的屏蔽了不同CPU之間的底層差異。應(yīng)用程序員可以將盡可能多的精力放在應(yīng)用程序本身,而不必再去關(guān)心系統(tǒng)資源的管理?;赩xWorks操作系統(tǒng)的應(yīng)用程序可以在不同CPU平臺上輕松移植。ARM軟件開發(fā)流程和開發(fā)工具17vxWorksVxWorks是專門為實(shí)時嵌入式系統(tǒng)設(shè)計開發(fā)vxWorksVxWorks包括了進(jìn)程管理、存儲管理、設(shè)備管理、文件系統(tǒng)管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等幾個部分。VxWorks只占用了很小的存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運(yùn)行。TornadoII是為開發(fā)VxWorks應(yīng)用系統(tǒng)提供的集成開發(fā)環(huán)境,TornadoII中包含的工程管理軟件,可以將用戶自己的代碼與VxWorks的核心有效的組合起來,可以按用戶的需要裁剪配置VxWorks內(nèi)核。
ARM軟件開發(fā)流程和開發(fā)工具18vxWorksVxWorks包括了進(jìn)程管理、存儲管理、設(shè)備ARM主流開發(fā)工具Windows操作系統(tǒng)ARMADS/SDT+調(diào)試器GNU+Cygwin+調(diào)試器ARMSDT+簡易電纜Linux操作系統(tǒng)GNU+GDBARM軟件開發(fā)流程和開發(fā)工具19ARM主流開發(fā)工具Windows操作系統(tǒng)ARM軟件開發(fā)流程和ARM嵌入式開發(fā)模式(ARMADS/SDT+調(diào)試器)ARM軟件開發(fā)流程和開發(fā)工具20ARM嵌入式開發(fā)模式(ARMADS/SDT+調(diào)試器)ADS與Multi-ICE
ARMADS全稱為ARMDeveloperSuite,是ARM公司推出的用于ARM程序設(shè)計、開發(fā)和調(diào)試的集成開發(fā)工具?,F(xiàn)在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。ADS由命令行開發(fā)工具,ARM運(yùn)行時庫,圖形化集成開發(fā)環(huán)境(CodeWarrior和AXD),實(shí)用程序和支持軟件組成。ARM軟件開發(fā)流程和開發(fā)工具21ADS與Multi-ICEARMADS全稱為ARMDeADS命令行開發(fā)工具
ARMC(C++)編譯器ARM匯編器(armasm)ARM鏈接器(armlink)符號調(diào)試器(armsd)ARM軟件開發(fā)流程和開發(fā)工具22ADS命令行開發(fā)工具ARMC(C++)編譯器ARM軟件ARM運(yùn)行時庫ANSIC函數(shù)庫:(armlib)C++函數(shù)庫:ARM軟件開發(fā)流程和開發(fā)工具23ARM運(yùn)行時庫ANSIC函數(shù)庫:(armlib)ARM軟圖形化集成開發(fā)環(huán)境(CodeWarrior和AXD)
CodeWarriorforARM
ADS調(diào)試器實(shí)用程序fromELF
armar
Flashdownloader
支持的軟件ARMulatorARM軟件開發(fā)流程和開發(fā)工具24圖形化集成開發(fā)環(huán)境(CodeWarrior和AXD)CoADTforARM集成開發(fā)系統(tǒng)ARM軟件開發(fā)工具-ADTIDE簡介25ADTforARM集成開發(fā)系統(tǒng)ARM軟件開發(fā)工具-ADTADT1000EmulatorforARMARM軟件開發(fā)工具-ADTIDE簡介
26ADT1000EmulatorforARMARM軟件ADT1000EmulatorforARMARM軟件開發(fā)工具-ADTIDE簡介
ADTEmulatorforARM是連接主機(jī)核目標(biāo)機(jī)之間的硬件設(shè)備,它實(shí)現(xiàn)ADTIDEforARM與目標(biāo)機(jī)之間的連接。它具有如下特征:支持ARM核CPU非插入式調(diào)試,無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口2.5V/3.3V/5V兼容電平接口支持標(biāo)準(zhǔn)的14/20針JTAG接口運(yùn)行狀態(tài)指示與主機(jī)之間通過并口連接下載速度達(dá)到25Kbytes/S27ADT1000EmulatorforARMARM軟件ADTIDEforARMARM軟件開發(fā)工具-ADTIDE簡介
28ADTIDEforARMARM軟件開發(fā)工具-ADTIADTIDEforARM主要特征-可視化編程環(huán)境ARM軟件開發(fā)工具-ADTIDE簡介
支持ARM7、ARM9、SecurCore等。運(yùn)行于Windows98、NT、2000、XP等平臺。中文、英文版本支持可視化的源碼編輯和工程管理功能界面友好,使用方便:類似MSVisualStudio的用戶界面,支持打印功能,支持文件內(nèi)查找功能和FindinFiles功能29ADTIDEforARM主要特征-可視化編程環(huán)境AADTIDEforARM主要特征-可視化編程環(huán)境ARM軟件開發(fā)工具-ADTIDE簡介
工程管理器:ADTIDE提供圖形化的工程管理工具,實(shí)現(xiàn)文件級、文件目錄級、工程級的多級編譯連接選項管理以及工程級的調(diào)試參數(shù)管理源碼編輯器:支持標(biāo)準(zhǔn)的文本編輯功能,支持C語言、匯編語言語法高亮顯示輔助編輯工具:提供一系列輔助編輯工具,方便開發(fā)人員。包括:多剪貼板工具、代碼模板工具、頭文件和源文件切換工具、注釋工具、符號配對書寫工具等多種輔助編輯工具。30ADTIDEforARM主要特征-可視化編程環(huán)境AADTIDEforARM主要特征-交叉編譯功能ARM軟件開發(fā)工具-ADTIDE簡介
支持開發(fā)語言:ANSIC;EmbeddedC++;匯編語言編譯工具:使用著名優(yōu)秀自由軟件GNU的GCC交叉編譯工具,并經(jīng)過優(yōu)化和嚴(yán)格測試,支持C語言、匯編語言等編譯參數(shù)設(shè)置:完全圖形界面方式的編譯參數(shù)設(shè)置,提供可視化的設(shè)置功能。支持工程級、文件目錄級、文件級編譯參數(shù)設(shè)置31ADTIDEforARM主要特征-交叉編譯功能ARADTIDEforARM主要特征-調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
同時提供了圖形和命令行兩種調(diào)試方式程序的單步執(zhí)行程序下載存儲區(qū)下載和上載功能。工程級調(diào)試參數(shù)管理支持源程序、反匯編程序和混合窗口顯示,支持ARM/THUMB方式顯示具有與MSVisualStudio類似的調(diào)試菜單功能:Go,Stop,Reset,Restart,Stepinto,Stepover,Stepout,RuntoCursor等豐富的示例程序32ADTIDEforARM主要特征-調(diào)試功能ARM軟ADTIDEforARM主要特征-調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
斷點(diǎn)功能:支持軟件斷點(diǎn)和硬件斷點(diǎn),實(shí)現(xiàn)斷點(diǎn)設(shè)置、斷點(diǎn)屏蔽、斷點(diǎn)取消、斷點(diǎn)列表等功能變量監(jiān)視功能:隨程序運(yùn)行同步更新變量,即時修改變量值,可設(shè)置自動/手動刷新方式、十進(jìn)制/十六進(jìn)制顯示ARM各種模式的寄存器即時查看與修改,當(dāng)前模式指示,寄存器值修改時紅色突顯存儲器查看與修改,可設(shè)置自動/手動刷新方式、字節(jié)/雙字節(jié)/四字節(jié)顯示、大/小端方式顯示,存儲器值修改時紅色突顯33ADTIDEforARM主要特征-調(diào)試功能ARM軟ADTIDEforARM主要特征-調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
函數(shù)堆棧顯示,可設(shè)置自動/手動刷新方式、十進(jìn)制/十六進(jìn)制顯示、參數(shù)值顯示,參數(shù)類型顯示板上寄存器(OnBoardRegister)的查看和修改,可以查看支持CPU的所有板上寄存器的具體意義、當(dāng)前值、各個位的意義,可設(shè)置自動/手動刷新方式、二進(jìn)制/十進(jìn)制/十六進(jìn)制顯示、大/小端方式顯示,支持十進(jìn)制/十六進(jìn)制方式修改寄存器值,寄存器值修改時紅色突顯。flash在線編程器,支持對多種flash芯片的空白檢查、擦除、編程、校驗等操作,支持單一操作和自動操作兩種操作方式,支持8/16/32位flash訪問寬度,支持多片flash同時編程,編程速度達(dá)15Kbytes/s。提供統(tǒng)一的flash編程接口,可以方便地添加flash編程方案。34ADTIDEforARM主要特征-調(diào)試功能ARM軟ADTIDEforARMARM軟件開發(fā)工具-ADTIDE簡介
ADTIDE(Arm7Lpt、Arm9Lpt、SoftSim、Arm7Simple)用戶手冊、編程指南豐富例程35ADTIDEforARMARM軟件開發(fā)工具-ADTI多版本支持ARM軟件開發(fā)工具-ADTIDE簡介
軟件仿真版本ARM7版本ARM9版本簡易仿真版本36多版本支持ARM軟件開發(fā)工具-ADTIDE簡介
多工程管理ARM軟件開發(fā)工具-ADTIDE簡介
工程當(dāng)前活動工程37多工程管理ARM軟件開發(fā)工具-ADTIDE簡介
可視化編輯器ARM軟件開發(fā)工具-ADTIDE簡介
編輯菜單語法高亮編輯器輔助編輯工具條書簽38可視化編輯器ARM軟件開發(fā)工具-ADTIDE簡介
GCC交叉編譯ARM軟件開發(fā)工具-ADTIDE簡介編譯菜單編譯工具條編譯結(jié)果輸出錯誤定位39GCC交叉編譯ARM軟件開發(fā)工具-ADTIDE簡介編譯菜單編譯器設(shè)置ARM軟件開發(fā)工具-ADTIDE簡介多配置管理多工程設(shè)管理多參數(shù)配置40編譯器設(shè)置ARM軟件開發(fā)工具-ADTIDE簡介多配置管理多匯編器設(shè)置ARM軟件開發(fā)工具-ADTIDE簡介多配置管理多工程設(shè)管理多參數(shù)配置41匯編器設(shè)置ARM軟件開發(fā)工具-ADTIDE簡介多配置管理多連接器設(shè)置ARM軟件開發(fā)工具-ADTIDE簡介多配置管理多工程設(shè)管理多參數(shù)配置42連接器設(shè)置ARM軟件開發(fā)工具-ADTIDE簡介多配置管理多調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
調(diào)試菜單調(diào)試工具條命令行調(diào)試窗口43調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
多種調(diào)試模式ARM軟件開發(fā)工具-ADTIDE簡介
源碼模式混合模式匯編模式44多種調(diào)試模式ARM軟件開發(fā)工具-ADTIDE簡介
斷點(diǎn)ARM軟件開發(fā)工具-ADTIDE簡介
斷點(diǎn)列表斷點(diǎn)45斷點(diǎn)ARM軟件開發(fā)工具-ADTIDE簡介
存儲器窗口ARM軟件開發(fā)工具-ADTIDE簡介字模式半字模式字節(jié)模式修改凸顯標(biāo)記46存儲器窗口ARM軟件開發(fā)工具-ADTIDE簡介字模式半字模存儲區(qū)上載下載功能ARM軟件開發(fā)工具-ADTIDE簡介
存儲區(qū)上載存儲區(qū)下載47存儲區(qū)上載下載功能ARM軟件開發(fā)工具-ADTIDE簡介寄存器觀察窗口ARM軟件開發(fā)工具-ADTIDE簡介
多模式寄存器顯示修改凸顯標(biāo)記48寄存器觀察窗口ARM軟件開發(fā)工具-ADTIDE簡介
函數(shù)調(diào)用棧窗口ARM軟件開發(fā)工具-ADTIDE簡介
函數(shù)調(diào)用棧49函數(shù)調(diào)用棧窗口ARM軟件開發(fā)工具-ADTIDE簡介
變量觀察窗口ARM軟件開發(fā)工具-ADTIDE簡介
局部變量全局變量多個觀察窗口50變量觀察窗口ARM軟件開發(fā)工具-ADTIDE簡介
命令窗口ARM軟件開發(fā)工具-ADTIDE簡介
51命令窗口ARM軟件開發(fā)工具-ADTIDE簡介
單步調(diào)試-STEPINTOARM軟件開發(fā)工具-ADTIDE簡介52單步調(diào)試-STEPINTOARM軟件開發(fā)工具-ADT單步調(diào)試-STEPOVERARM軟件開發(fā)工具-ADTIDE簡介
53單步調(diào)試-STEPOVERARM軟件開發(fā)工具-ADT單步調(diào)試-STEPOUTARM軟件開發(fā)工具-ADTIDE簡介
54單步調(diào)試-STEPOUTARM軟件開發(fā)工具-ADTI單步調(diào)試-RUNTOCURSORARM軟件開發(fā)工具-ADTIDE簡介
55單步調(diào)試-RUNTOCURSORARM軟件開發(fā)工具-板上寄存器ARM軟件開發(fā)工具-ADTIDE簡介寄存器組寄存器寄存器位域熱點(diǎn)描述信息修改凸顯標(biāo)記56板上寄存器ARM軟件開發(fā)工具-ADTIDE簡介寄存器組寄存板上寄存器ARM軟件開發(fā)工具-ADTIDE簡介57板上寄存器ARM軟件開發(fā)工具-ADTIDE簡介57FLASH在線編程器ARM軟件開發(fā)工具-ADTIDE簡介
58FLASH在線編程器ARM軟件開發(fā)工具-ADTIDE簡介工具菜單ARM軟件開發(fā)工具-ADTIDE簡介
可自定制59工具菜單ARM軟件開發(fā)工具-ADTIDE簡介
在線幫助ARM軟件開發(fā)工具-ADTIDE簡介
60在線幫助ARM軟件開發(fā)工具-ADTIDE簡介
嵌入式軟件開發(fā)無操作系統(tǒng)的軟件開發(fā)啟動代碼應(yīng)用程序基于操作系統(tǒng)的軟件開發(fā)bootloader操作系統(tǒng)移植BSP板級支持包應(yīng)用程序開發(fā)ARM軟件設(shè)計與代碼分析61嵌入式軟件開發(fā)無操作系統(tǒng)的軟件開發(fā)ARM軟件設(shè)計與代碼分析6啟動代碼功能硬件初始化引導(dǎo)C代碼特征通常用匯編語言編寫程序復(fù)位運(yùn)行入口點(diǎn)代碼量非常小程序流程設(shè)置中斷、異常入口關(guān)中斷硬件寄存器初始化(GPIO配置、總線配置、PLL時鐘)初始化棧指針數(shù)據(jù)區(qū)初始化C入口函數(shù)調(diào)用BLMainARM軟件設(shè)計與代碼分析62啟動代碼功能程序流程ARM軟件設(shè)計與代碼分析62應(yīng)用程序(無操作系統(tǒng))功能硬件驅(qū)動應(yīng)用特征通常用C語言或者嵌入式匯編語言編寫程序較復(fù)雜,代碼量較大ARM軟件設(shè)計與代碼分析63應(yīng)用程序(無操作系統(tǒng))功能ARM軟件設(shè)計與代碼分析63bootloader功能硬件初始化引導(dǎo)操作系統(tǒng)下載程序(串口、網(wǎng)口、USB)燒寫flash特征程序復(fù)位運(yùn)行入口點(diǎn)通常用匯編語言+C語言編寫代碼量較小ARM軟件設(shè)計與代碼分析64bootloader功能ARM軟件設(shè)計與代碼分析64嵌入式操作系統(tǒng)移植LinuxWindowsCEuC/OSIIuClinuxNucleusARM軟件設(shè)計與代碼分析65嵌入式操作系統(tǒng)移植LinuxARM軟件設(shè)計與代碼分析65BSP板級支持包功能為應(yīng)用程序提供統(tǒng)一的硬件操作接口特征高度硬件相關(guān)高度依賴于具體硬件平臺各種操作系統(tǒng)各異ARM軟件設(shè)計與代碼分析66BSP板級支持包功能ARM軟件設(shè)計與代碼分析66應(yīng)用程序開發(fā)(操作系統(tǒng))功能GUI圖形、人機(jī)交互控制算法特征硬件依賴程度小部分可仿真調(diào)試各種操作系統(tǒng)各異ARM軟件設(shè)計與代碼分析67應(yīng)用程序開發(fā)(操作系統(tǒng))功能ARM軟件設(shè)計與代碼分析67嵌入式軟件設(shè)計和調(diào)試流程編輯創(chuàng)建工程添加文件、編寫程序匯編語言加C語言編譯配置編譯、匯編和連接參數(shù)編寫連接腳本文件編譯調(diào)試連接調(diào)試器下載程序運(yùn)行、調(diào)試固化通過仿真器燒寫flash專用或通用的編程器通過bootloader燒寫flashARM軟件設(shè)計與代碼分析68嵌入式軟件設(shè)計和調(diào)試流程編輯調(diào)試ARM軟件設(shè)計與代碼分析68交叉編譯GNU交叉編譯編譯.carm-elf-gcc匯編.Sarm-elf-gas連接.oarm-elf-ld操作文件匯編文件.SC文件.c鏈接腳本文件ldscript庫文件.o.lib.a生成調(diào)試格式文件.elfDWARF-1DWARF-2生成bin文件elf2binarm-elf-objcopyARM軟件設(shè)計與代碼分析69交叉編譯GNU交叉編譯生成調(diào)試格式文件.elfARM軟件設(shè)計鏈接腳本段Text段rodata段data段bss段符號Image_RO_Limit
Image_RW_BaseImage_ZI_BaseImage_ZI_LimitGCC庫專用調(diào)試信息ARM軟件設(shè)計與代碼分析70鏈接腳本段GCC庫專用ARM軟件設(shè)計與代碼分析70鏈接腳本示例程序在SDRAM中運(yùn)行程序在FLASH中運(yùn)行ARM軟件設(shè)計與代碼分析71鏈接腳本示例程序在SDRAM中運(yùn)行程序在FLASH中運(yùn)行ARGCC庫GCC庫標(biāo)準(zhǔn)C函數(shù)庫lib.a-lc標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)庫libm.a-lm標(biāo)準(zhǔn)函數(shù)庫的支持庫libg.a-lgGCC的支持庫libgcc.a-lgcc鏈接排列順序-lm–lc–lgcc-lgARM軟件設(shè)計與代碼分析72GCC庫GCC庫ARM軟件設(shè)計與代碼分析72ARM9-2440啟動代碼分析ARM軟件設(shè)計與代碼分析在基于ARM920Tcore的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時都從地址0x00000000開始執(zhí)行,因此在這個地址處安排的通常就是系統(tǒng)的啟動代碼。它通常也是BootLoader程序的一部分,可以在啟動代碼基礎(chǔ)上編寫B(tài)ootLoader。用匯編語言編寫。啟動代碼是在復(fù)位后運(yùn)行其它程序之前運(yùn)行的一段小程序。通過它,初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用C函數(shù)準(zhǔn)備好正確的環(huán)境。73ARM9-2440啟動代碼分析ARM軟件設(shè)計與代碼分析在基于啟動代碼的移植和修改ARM軟件設(shè)計與代碼分析啟動代碼除了依賴于CPU的體系結(jié)構(gòu)外,實(shí)際上也依賴于具體的嵌入式板級設(shè)備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設(shè)的類型等。對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構(gòu)建的,如果他們的硬件資源和配置不一致的話,要想讓運(yùn)行在一塊板子上的啟動代碼也能運(yùn)行在另一塊板子上,也還是需要作一些必要的修改。74啟動代碼的移植和修改ARM軟件設(shè)計與代碼分析啟動代碼除了依賴啟動代碼流程圖啟動代碼的功能:RAM初始化,設(shè)置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設(shè)置堆棧,調(diào)用C函數(shù)。注意:在本階段,特別是在堆棧設(shè)置之前,進(jìn)行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數(shù)據(jù)將產(chǎn)生不可預(yù)知的結(jié)果;ARM軟件設(shè)計與代碼分析75啟動代碼流程圖啟動代碼的功能:RAM初始化,設(shè)置各個部件的時設(shè)置異常跳轉(zhuǎn)表復(fù)位異常直接跳轉(zhuǎn)到ResetHandler處,它是相對跳轉(zhuǎn),位置無關(guān)。ARM軟件設(shè)計與代碼分析76設(shè)置異常跳轉(zhuǎn)表復(fù)位異常直接跳轉(zhuǎn)到ResetHandler處,關(guān)閉看門狗設(shè)置S3C2440WTCON寄存器必須設(shè)置0x01e000000x01d30000ARM軟件設(shè)計與代碼分析77關(guān)閉看門狗設(shè)置S3C2440WTCON寄存器0x01e00設(shè)置中斷模式并禁止中斷設(shè)置S3C2440中斷寄存器設(shè)置所有一級中斷源與二級中斷源為不可用狀態(tài)ARM軟件設(shè)計與代碼分析78設(shè)置中斷模式并禁止中斷設(shè)置S3C2440中斷寄存器ARM軟件配置存儲器控制寄存器寬度ARM軟件設(shè)計與代碼分析0x01e00000配置值79配置存儲器控制寄存器寬度ARM軟件設(shè)計與代碼分析0x01e0堆棧初始化ARM軟件設(shè)計與代碼分析80堆棧初始化ARM軟件設(shè)計與代碼分析80C代碼初始化ARM軟件設(shè)計與代碼分析拷貝RW數(shù)據(jù)段ZI段清零跳轉(zhuǎn)到Main函數(shù)處執(zhí)行81C代碼初始化ARM軟件設(shè)計與代碼分析拷貝RW數(shù)據(jù)段ZI段清零ARM9-2440BOOTLOADER分析ARM軟件設(shè)計與代碼分析BootLoader是在啟動代碼的基礎(chǔ)之上,通常啟動代碼包含于BootLoader之中BootLoader常用于引導(dǎo)操作系統(tǒng)或者應(yīng)用程序BootLoader可以包含一些簡單的調(diào)試手段ARM9-2440使用通用的u-boot82ARM9-2440BOOTLOADER分析ARM軟件設(shè)計與u-boot簡介ARM軟件設(shè)計與代碼分析u-boot是由德國DENX小組開發(fā)的交叉平臺BootLoader,其全稱為“universalBootLoader”。u-boot的開發(fā)目標(biāo)是支持盡可能多的嵌入式處理器和嵌入式操作系統(tǒng)。它提供數(shù)百種嵌入式開發(fā)板和各種CPU,包括PowerPC、ARM、Xscale、MIPS、Coldfire、NIOS、Microblaze和x86等,同時它除了支持Linux系統(tǒng)的引導(dǎo)外,還支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等多種嵌入式操作系統(tǒng)的引導(dǎo)。83u-boot簡介ARM軟件設(shè)計與代碼分析u-boot是由德國u-boot簡介ARM軟件設(shè)計與代碼分析u-boot的用戶接口類似于Linux的shell界面,通過串口連接以后,用戶可以交互式的輸入命令和看到結(jié)果,u-boot的啟動界面如下所示:U-Boot1.1.1(Sep62004-12:12:06)U-Bootcode:33F80000->33F9CED0BSS:->33FA116CRAMConfiguration:Bank#0:3000000064MBFlash:32MBIn:serialOut:serialErr:serialHitanykeytostopautoboot:0JX2410#84u-boot簡介ARM軟件設(shè)計與代碼分析u-boot的用戶接BootLoader的基本概念BootLoader是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。嵌入式系統(tǒng)中,整個系統(tǒng)的加載啟動任務(wù)完全由BootLoader來完成。比如在一個基于ARM920Tcore的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時都從地址0x00000000開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。簡單地說,BootLoader就是在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序準(zhǔn)備好正確的環(huán)境。通常,BootLoader是依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式領(lǐng)域,為嵌入式系統(tǒng)建立一個通用的BootLoader是很困難的。ARM軟件設(shè)計與代碼分析85BootLoader的基本概念BootLoader是系統(tǒng)加電BootLoader的移植和修改BootLoader除了依賴于CPU的體系結(jié)構(gòu)外,BootLoader實(shí)際上也依賴于具體的嵌入式板級設(shè)備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設(shè)的類型等。對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構(gòu)建的,如果他們的硬件資源和配置不一致的話,要想讓運(yùn)行在一塊板子上的BootLoader程序也能運(yùn)行在另一塊板子上,也還是需要作一些必要的修改。ARM軟件設(shè)計與代碼分析86BootLoader的移植和修改BootLoader除了依BootLoader的安裝系統(tǒng)加電或復(fù)位后,所有的CPU通常都從CPU制造商預(yù)先安排的地址上取指令。比如,S3C2440在復(fù)位時都從地址0x00000000取它的第一條指令。嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設(shè)備(比如:ROM、EEPROM或FLASH等)被安排這個起始地址上,因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。也就是說對于基于S3C2440的這套系統(tǒng),我們的BootLoader是從0地址開始存放的,而這塊起始地址需要采用可引導(dǎo)的固態(tài)存儲設(shè)備如FLASH。ARM軟件設(shè)計與代碼分析87BootLoader的安裝系統(tǒng)加電或復(fù)位后,所有的CPU通用來控制BootLoader的設(shè)備或機(jī)制串口通訊是最簡單也是最廉價的一種雙機(jī)通訊設(shè)備,所以往往在BootLoader中主機(jī)和目標(biāo)機(jī)之間都通過串口建立連接,BootLoader程序在執(zhí)行時通常會通過串口來進(jìn)行I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當(dāng)然如果認(rèn)為串口通訊速度不夠,也可以采用網(wǎng)絡(luò)或者USB通訊,那么相應(yīng)的在BootLoader中就需要編寫各自的驅(qū)動。ARM軟件設(shè)計與代碼分析88用來控制BootLoader的設(shè)備或機(jī)制串口通訊是最簡單BootLoader的操作模式啟動加載模式:這種模式也稱為"自主"(Autonomous)模式。也即BootLoader從目標(biāo)機(jī)上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式。下載模式:在這種模式下,目標(biāo)機(jī)上的BootLoader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件,比如:下載應(yīng)用程序、數(shù)據(jù)文件、內(nèi)核映像等。從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被BootLoader寫到目標(biāo)機(jī)上的固態(tài)存儲設(shè)備中。BootLoader的這種模式通常在系統(tǒng)更新時使用。工作于這種模式下的BootLoader通常都會向它的終端用戶提供一個簡單的命令行接口。在uboot中可以通過修改環(huán)境變量實(shí)現(xiàn)自主模式。ARM軟件設(shè)計與代碼分析89BootLoader的操作模式啟動加載模式:這種模式也稱BootLoader與主機(jī)間文件傳輸?shù)耐ㄐ旁O(shè)備及協(xié)議最常見的情況就是,目標(biāo)機(jī)上的BootLoader通過串口與主機(jī)之間進(jìn)行文件傳輸,傳輸可以簡單的采用直接數(shù)據(jù)收發(fā),當(dāng)然在串口上也可以采用xmodem/ymodem/zmodem協(xié)議以及在以太網(wǎng)上采用TFTP協(xié)議。ARM軟件設(shè)計與代碼分析90BootLoader與主機(jī)間文件傳輸?shù)耐ㄐ旁O(shè)備及協(xié)議最常見的BootLoader的主要任務(wù)與典型結(jié)構(gòu)框架從操作系統(tǒng)的角度看,BootLoader的總目標(biāo)就是正確地調(diào)用內(nèi)核來執(zhí)行。大多數(shù)BootLoader都分為stage1和stage2兩大部分。依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實(shí)現(xiàn),以達(dá)到短小精悍的目的,也就是前面說的啟動代碼。而stage2則通常用C語言來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。ARM軟件設(shè)計與代碼分析91BootLoader的主要任務(wù)與典型結(jié)構(gòu)框架從操作系統(tǒng)的角度BootLoader的主要任務(wù)與典型結(jié)構(gòu)框架BootLoader的stage1通常包括以下步驟 為加載BootLoader的stage2準(zhǔn)備RAM空間拷貝BootLoader的stage2到RAM空間中設(shè)置好堆棧跳轉(zhuǎn)到stage2的C入口點(diǎn)BootLoader的stage2通常包括以下步驟初始化本階段要使用到的硬件設(shè)備調(diào)用應(yīng)用程序或啟動內(nèi)核ARM軟件設(shè)計與代碼分析92BootLoader的主要任務(wù)與典型結(jié)構(gòu)框架BootLoadStage1初始化流程圖stage1的功能:RAM初始化,設(shè)置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設(shè)置堆棧,調(diào)用Stage2。注意:在本階段,特別是在堆棧設(shè)置之前,進(jìn)行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數(shù)據(jù)將產(chǎn)生不可預(yù)知的結(jié)果;ARM軟件設(shè)計與代碼分析93Stage1初始化流程圖stage1的功能:RAM初始Stage2流程圖stage2的功能: 初始化串口,顯示菜單,通過控制臺獲取用戶輸入,并執(zhí)行相應(yīng)的命令操作。ARM軟件設(shè)計與代碼分析94Stage2流程圖stage2的功能: 初始化串口,顯示板級支持包ARM軟件設(shè)計與代碼分析BSP(板級支持包)是介于底層硬件和操作系統(tǒng)之間的軟件層次,它完成系統(tǒng)上電后最初的硬件和軟件初始化,并對底層硬件進(jìn)行封裝,使得操作系統(tǒng)不再面對具體的操作。95板級支持包ARM軟件設(shè)計與代碼分析BSP(板級支持包)是介于板級支持包的特點(diǎn)ARM軟件設(shè)計與代碼分析硬件相關(guān)性:因為嵌入式實(shí)時系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,所以,作為高層軟件與硬件之間的接口,BSP必須為操作系統(tǒng)提供操作和控制具體硬件的方法。操作系統(tǒng)相關(guān)性:不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式。96板級支持包的特點(diǎn)ARM軟件設(shè)計與代碼分析硬件相關(guān)性:因為嵌入板級支持包的功能ARM軟件設(shè)計與代碼分析97板級支持包的功能ARM軟件設(shè)計與代碼分析97板級支持包的功能ARM軟件設(shè)計與代碼分析嵌入式系統(tǒng)初始化片級初始化板級初始化系統(tǒng)級初始化硬件相關(guān)的設(shè)備驅(qū)動程序和BootLoader存在一定的重疊98板級支持包的功能ARM軟件設(shè)計與代碼分析嵌入式系統(tǒng)初始化和B系統(tǒng)級初始化ARM軟件設(shè)計與代碼分析這是一個以軟件初始化為主的過程,主要進(jìn)行操作系統(tǒng)初始化。BSP將控制轉(zhuǎn)交給操作系統(tǒng),由操作系統(tǒng)進(jìn)行余下的初始化操作。包括加載和初始化與硬件無關(guān)的設(shè)備驅(qū)動程序,建立系統(tǒng)內(nèi)存區(qū),加載并初始化其他系統(tǒng)軟件模塊,比如網(wǎng)絡(luò)系統(tǒng)、文件系統(tǒng)等;最后,操作系統(tǒng)創(chuàng)建應(yīng)用程序環(huán)境并將控制轉(zhuǎn)交給應(yīng)用程序的入口。99系統(tǒng)級初始化ARM軟件設(shè)計與代碼分析這是一個以軟件初始化為主硬件相關(guān)的驅(qū)動程序ARM軟件設(shè)計與代碼分析與初始化過程相反,硬件相關(guān)的設(shè)備驅(qū)動程序的初始化和使用通常是一個從高層到底層的過程。盡管BSP中包含硬件相關(guān)的設(shè)備驅(qū)動程序,但是這些設(shè)備驅(qū)動程序通常不直接由BSP使用,而是在系統(tǒng)初始化過程中由BSP把它們與操作系統(tǒng)中通用的設(shè)備驅(qū)動程序關(guān)聯(lián)起來,并在隨后的應(yīng)用中由通用的設(shè)備驅(qū)動程序調(diào)用,實(shí)現(xiàn)對硬件設(shè)備的操作。100硬件相關(guān)的驅(qū)動程序ARM軟件設(shè)計與代碼分析與初始化過程相反,ARM9-2440應(yīng)用代碼設(shè)計及中斷處理ARM軟件設(shè)計與代碼分析連接腳本101ARM9-2440應(yīng)用代碼設(shè)計及中斷處理ARM軟件設(shè)計與代碼ARM9-2440應(yīng)用代碼中斷向量ARM軟件設(shè)計與代碼分析起始地址0x30000000除復(fù)位異常外,其余異常入口地址由FLASH跳轉(zhuǎn)得到102ARM9-2440應(yīng)用代碼中斷向量ARM軟件設(shè)計與代碼分析起ARM9-2440中斷處理流程執(zhí)行0x18處指令:LDRpc,=0x03000018,由u-boot控制執(zhí)行0x03000018處指令:HandlerIRQ,2410init.s執(zhí)行HandlerIRQ,2410init.s執(zhí)行HandleIRQ處保存的中斷分發(fā)例程,2410init.s中初始化為IsrIRQARM軟件設(shè)計與代碼分析根據(jù)INTOFFSET的值從中斷向量表中取出中斷服務(wù)函數(shù)地址R8中為產(chǎn)生了中斷的中斷源的中斷服務(wù)函數(shù)地址跳轉(zhuǎn)到中斷服務(wù)函數(shù)地址處運(yùn)行103ARM9-2440中斷處理流程執(zhí)行0x18處指令:LDRp中斷向量表ARM軟件設(shè)計與代碼分析從_ISR_STARTADDRESS+0x20開始每四個字節(jié)表示一個中斷源的中斷服務(wù)函數(shù)地址104中斷向量表ARM軟件設(shè)計與代碼分析從_ISR_STARTAD注冊中斷服務(wù)函數(shù)并使能中斷函數(shù)實(shí)現(xiàn)
/*請求中斷*/ Irq_Request(IRQ_EINT2,eint2_isr); Irq_Request(IRQ_EINT3,eint3_isr); /*使能中斷*/ Irq_Enable(IRQ_EINT2);Irq_Enable(IRQ_EINT3);ARM軟件設(shè)計與代碼分析注冊中斷服務(wù)函數(shù),即將eint2_isr中斷服務(wù)函數(shù)的地址賦值到中斷向量表中。開啟中斷源,必須在注冊中斷服務(wù)函數(shù)完成后進(jìn)行。105注冊中斷服務(wù)函數(shù)并使能中斷函數(shù)實(shí)現(xiàn)ARM軟件設(shè)計與代碼分析用C代碼編寫的中斷服務(wù)函數(shù)函數(shù)實(shí)現(xiàn)
ARM軟件設(shè)計與代碼分析必須聲明為中斷服務(wù)函數(shù)清除中斷標(biāo)記處理中斷106用C代碼編寫的中斷服務(wù)函數(shù)函數(shù)實(shí)現(xiàn)ARM軟件設(shè)計與代碼分析嵌入式系統(tǒng)教案嵌入式軟件系統(tǒng)設(shè)計1/5/2023嵌入式系統(tǒng)教案嵌入式軟件系統(tǒng)設(shè)計12/28/2022提綱13245嵌入式軟件開發(fā)過程ARM軟件設(shè)計與代碼分析ARM軟件開發(fā)流程和開發(fā)工具67第六章嵌入式軟件系統(tǒng)設(shè)計108提綱13245嵌入式軟件開發(fā)過程ARM軟件設(shè)計與代碼分析AR嵌入式系統(tǒng)軟件開發(fā)流程軟件需求分析:確定設(shè)計任務(wù)和目標(biāo),并提煉出設(shè)計規(guī)格說明書,作為正式設(shè)計指導(dǎo)和驗收的標(biāo)準(zhǔn)。嵌入式軟件開發(fā)過程概要設(shè)計:描述系統(tǒng)如何實(shí)現(xiàn)所述的需求,包括軟件模塊的劃分、系統(tǒng)的軟件開發(fā)工具選擇以及關(guān)鍵問題的論證等。詳細(xì)設(shè)計:詳細(xì)描述各個模塊的實(shí)現(xiàn)方法與過程,模塊間接口等問題,以作為編碼人員的編碼準(zhǔn)則。編碼109嵌入式系統(tǒng)軟件開發(fā)流程軟件需求分析:確定設(shè)計任務(wù)和目標(biāo),并提嵌入式系統(tǒng)的開發(fā)流程單元調(diào)試:編碼完成后,對各個模塊進(jìn)行單元調(diào)試,以保證模塊正常工作。嵌入式軟件開發(fā)過程集成調(diào)試110嵌入式系統(tǒng)的開發(fā)流程單元調(diào)試:編碼完成后,對各個模塊進(jìn)行單元常用調(diào)試方法軟件仿真駐留監(jiān)控程序硬件要求高,一般在硬件穩(wěn)定之后進(jìn)行需要占用目標(biāo)板上的一部分資源不能對程序的全速運(yùn)行進(jìn)行完全仿真JTAG仿真器完全非插入式調(diào)試,不使用片上資源,無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口仿真效果更加接近于目標(biāo)硬件在線仿真器ARM軟件開發(fā)流程和開發(fā)工具111常用調(diào)試方法軟件仿真ARM軟件開發(fā)流程和開發(fā)工具5處理器的選擇處理性能
技術(shù)指標(biāo)
功耗
操作系統(tǒng)和軟件支持工具的選擇
是否內(nèi)置調(diào)試工具
ARM軟件開發(fā)流程和開發(fā)工具112處理器的選擇處理性能ARM軟件開發(fā)流程和開發(fā)工具6操作系統(tǒng)和軟件支持工具的選擇
如果用戶希望使用WindowsCE、Linux等操作系統(tǒng),就需要選擇ARM720T以上帶有MMU(MemoryManagementUnit)功能的ARM芯片。ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都帶有MMU功能。而ARM7TDMI則沒有MMU,不支持WindowsCE和Linux,但目前有uCLinux以及uC/OS-II等不需要MMU支持的操作系統(tǒng)可運(yùn)行于ARM7TDMI硬件平臺之上。ARM軟件開發(fā)流程和開發(fā)工具113操作系統(tǒng)和軟件支持工具的選擇如果用戶希望使用Windows操作系統(tǒng)和軟件支持工具的選擇
如果決定采用Linux、WindowsCE、vxWorks等操作系統(tǒng)時,在選擇處理器時應(yīng)該盡量選擇該操作系統(tǒng)已經(jīng)支持的處理器,這樣可以大大加快開發(fā)進(jìn)度,降低難度。選擇不同的操作系統(tǒng),其軟件開發(fā)過程和調(diào)試手段各不相同,你的選擇方案是否能夠提供各個開發(fā)階段(包括bootloader開發(fā)、操作系統(tǒng)移植、驅(qū)動開發(fā)和應(yīng)用開發(fā))所需的軟件支持工具也是一個必須考慮的因素。
ARM軟件開發(fā)流程和開發(fā)工具114操作系統(tǒng)和軟件支持工具的選擇如果決定采用Linux、Win硬件驅(qū)動程序的調(diào)試如果硬件平臺是自行設(shè)計的,必須首先對硬件進(jìn)行調(diào)試,硬件調(diào)試成功是進(jìn)行操作系統(tǒng)移植和應(yīng)用程序開發(fā)的一個基本前提。這個過程通常是通過編寫一些簡單的測試程序直接驅(qū)動硬件以驗證硬件是否正確,這些程序可以基于操作系統(tǒng)進(jìn)行編程,也可以不使用操作系統(tǒng),而且后一種方法來得更加簡單,調(diào)試也更方便和快捷。ARM軟件開發(fā)流程和開發(fā)工具115硬件驅(qū)動程序的調(diào)試如果硬件平臺是自行設(shè)計的,必須首先對硬件進(jìn)操作系統(tǒng)的選擇和移植μC/OS-IILinux/uClinuxWindowsCEvxWorksARM軟件開發(fā)流程和開發(fā)工具116操作系統(tǒng)的選擇和移植μC/OS-IIARM軟件開發(fā)流程和開μC/OS-II免費(fèi)公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時內(nèi)核的實(shí)時操作系統(tǒng)。其內(nèi)核提供任務(wù)調(diào)度與管理、時間管理、任務(wù)間同步與通信、內(nèi)存管理和中斷服務(wù)等功能。它可以基于ROM運(yùn)行(ROMable)、可裁減,具有高度移植性。μC/OS-II實(shí)時嵌入式內(nèi)核在工業(yè)控制、數(shù)據(jù)采集等領(lǐng)域應(yīng)用廣泛。但μC/OS-II內(nèi)核不支持文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議等功能,而且沒有提供統(tǒng)一的硬件驅(qū)動程序接口和開發(fā)工具鏈,在復(fù)雜應(yīng)用中需要考慮內(nèi)核以外功能的實(shí)現(xiàn)難易程度。ARM軟件開發(fā)流程和開發(fā)工具117μC/OS-II免費(fèi)公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時內(nèi)μC/OS-II在μC/OS-II開發(fā)中,內(nèi)核、驅(qū)動程序和應(yīng)用程序都是集中編譯,μC/OS-II編譯以后的二進(jìn)制代碼中既包含內(nèi)核代碼,也包含驅(qū)動程序和應(yīng)用程序的代碼。μC/OS-II沒有提供統(tǒng)一的開發(fā)工具鏈,μC/OS-II程序的編譯應(yīng)該采用支持所選處理器的編譯器。對于ARM處理器,可以在Windows環(huán)境中使用ADS1.2、ADTIDE中編譯μC/OS-II,也可以在Linux環(huán)境中使用GNUGCC編譯μC/OS-II。ARM軟件開發(fā)流程和開發(fā)工具118μC/OS-II在μC/OS-II開發(fā)中,內(nèi)核、驅(qū)動程序和Linux/uClinuxLinux/uClinux是對于有MMU和沒有MMU的處理器的Linux解決方案。Linux/uClinux提供強(qiáng)大的文件系統(tǒng)、網(wǎng)絡(luò)功能、GUI等軟件模組支持,而且這些功能都是可以裁減的,同時它還提供了標(biāo)準(zhǔn)的驅(qū)動程序接口和軟件開發(fā)接口,便于用戶編程和程序維護(hù)。Linux/uClinux自身具備一整套工具鏈(GNUGCC),包括編譯和調(diào)試工具,用戶可以自行建立嵌入式系統(tǒng)的開發(fā)環(huán)境和交叉運(yùn)行環(huán)境。ARM軟件開發(fā)流程和開發(fā)工具119Linux/uClinuxLinux/uClinux是對于Linux/uClinux對于ARM處理器,Linux/uClinux內(nèi)核、驅(qū)動程序以及應(yīng)用程序的編譯都在Linux環(huán)境中使用GNUGCC完成。對于內(nèi)核和驅(qū)動程序的調(diào)試通常借助于運(yùn)行于Linux/uClinux之前的bootloader來完成,只有在很少的情況下需要借助在線仿真器完成。對于應(yīng)用程序的調(diào)試則可以完全拋棄在線仿真器,使用GDB完成。ARM軟件開發(fā)流程和開發(fā)工具120Linux/uClinux對于ARM處理器,Linux/uWindowsCEWindowsCE是Windows界面在嵌入式處理器中的實(shí)現(xiàn),它提供了友好的人機(jī)交互界面和強(qiáng)大的二次開發(fā)功能。WindowsCE包括四大基本模塊,它們提供了操作系統(tǒng)的關(guān)鍵特性,分別是:內(nèi)核(Kernel)模塊、對象存儲(ObjectStore)模塊、GWES(用戶、應(yīng)用程序和操作系統(tǒng)之間的圖形用戶界面)模塊和通信(Communication)模塊。ARM軟件開發(fā)流程和開發(fā)工具121WindowsCEWindowsCE是Windows界面WindowsCEWindowsCE擁有完善的軟件支持開發(fā)工具,WindowsCE的核心移植和驅(qū)動開發(fā)使用專門的操作系統(tǒng)定制工具:WindowsCEPlatformBuilder(簡稱PB)。而應(yīng)用程序的開發(fā)則有嵌入式開發(fā)工具包EmbeddedVisualTools,包括EmbeddedVisualC++(簡稱EVC)和EmbeddedVisualBasic(簡稱EVB)等。同時EmbeddedVisualTools下還可以進(jìn)行部分驅(qū)動程序的開發(fā)。同時在WindowsCE中還提供了用于WindowsCE開發(fā)的bootloader:EBOOT。
ARM軟件開發(fā)流程和開發(fā)工具122WindowsCEWindowsCE擁有完善的軟件支持開vxWorksVxWorks是專門為實(shí)時嵌入式系統(tǒng)設(shè)計開發(fā)的操作系統(tǒng)內(nèi)核,為程序員提供了高效的實(shí)時多任務(wù)調(diào)度、中斷管理,實(shí)時的系統(tǒng)資源以及實(shí)時的任務(wù)間通信。在各種CPU平臺上提供了統(tǒng)一的編程接口和一致的運(yùn)行特性,盡可能的屏蔽了不同CPU之間的底層差異。應(yīng)用程序員可以將盡可能多的精力放在應(yīng)用程序本身,而不必再去關(guān)心系統(tǒng)資源的管理。基于VxWorks操作系統(tǒng)的應(yīng)用程序可以在不同CPU平臺上輕松移植。ARM軟件開發(fā)流程和開發(fā)工具123vxWorksVxWorks是專門為實(shí)時嵌入式系統(tǒng)設(shè)計開發(fā)vxWorksVxWorks包括了進(jìn)程管理、存儲管理、設(shè)備管理、文件系統(tǒng)管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等幾個部分。VxWorks只占用了很小的存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運(yùn)行。TornadoII是為開發(fā)VxWorks應(yīng)用系統(tǒng)提供的集成開發(fā)環(huán)境,TornadoII中包含的工程管理軟件,可以將用戶自己的代碼與VxWorks的核心有效的組合起來,可以按用戶的需要裁剪配置VxWorks內(nèi)核。
ARM軟件開發(fā)流程和開發(fā)工具124vxWorksVxWorks包括了進(jìn)程管理、存儲管理、設(shè)備ARM主流開發(fā)工具Windows操作系統(tǒng)ARMADS/SDT+調(diào)試器GNU+Cygwin+調(diào)試器ARMSDT+簡易電纜Linux操作系統(tǒng)GNU+GDBARM軟件開發(fā)流程和開發(fā)工具125ARM主流開發(fā)工具Windows操作系統(tǒng)ARM軟件開發(fā)流程和ARM嵌入式開發(fā)模式(ARMADS/SDT+調(diào)試器)ARM軟件開發(fā)流程和開發(fā)工具126ARM嵌入式開發(fā)模式(ARMADS/SDT+調(diào)試器)ADS與Multi-ICE
ARMADS全稱為ARMDeveloperSuite,是ARM公司推出的用于ARM程序設(shè)計、開發(fā)和調(diào)試的集成開發(fā)工具。現(xiàn)在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。ADS由命令行開發(fā)工具,ARM運(yùn)行時庫,圖形化集成開發(fā)環(huán)境(CodeWarrior和AXD),實(shí)用程序和支持軟件組成。ARM軟件開發(fā)流程和開發(fā)工具127ADS與Multi-ICEARMADS全稱為ARMDeADS命令行開發(fā)工具
ARMC(C++)編譯器ARM匯編器(armasm)ARM鏈接器(armlink)符號調(diào)試器(armsd)ARM軟件開發(fā)流程和開發(fā)工具128ADS命令行開發(fā)工具ARMC(C++)編譯器ARM軟件ARM運(yùn)行時庫ANSIC函數(shù)庫:(armlib)C++函數(shù)庫:ARM軟件開發(fā)流程和開發(fā)工具129ARM運(yùn)行時庫ANSIC函數(shù)庫:(armlib)ARM軟圖形化集成開發(fā)環(huán)境(CodeWarrior和AXD)
CodeWarriorforARM
ADS調(diào)試器實(shí)用程序fromELF
armar
Flashdownloader
支持的軟件ARMulatorARM軟件開發(fā)流程和開發(fā)工具130圖形化集成開發(fā)環(huán)境(CodeWarrior和AXD)CoADTforARM集成開發(fā)系統(tǒng)ARM軟件開發(fā)工具-ADTIDE簡介131ADTforARM集成開發(fā)系統(tǒng)ARM軟件開發(fā)工具-ADTADT1000EmulatorforARMARM軟件開發(fā)工具-ADTIDE簡介
132ADT1000EmulatorforARMARM軟件ADT1000EmulatorforARMARM軟件開發(fā)工具-ADTIDE簡介
ADTEmulatorforARM是連接主機(jī)核目標(biāo)機(jī)之間的硬件設(shè)備,它實(shí)現(xiàn)ADTIDEforARM與目標(biāo)機(jī)之間的連接。它具有如下特征:支持ARM核CPU非插入式調(diào)試,無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口2.5V/3.3V/5V兼容電平接口支持標(biāo)準(zhǔn)的14/20針JTAG接口運(yùn)行狀態(tài)指示與主機(jī)之間通過并口連接下載速度達(dá)到25Kbytes/S133ADT1000EmulatorforARMARM軟件ADTIDEforARMARM軟件開發(fā)工具-ADTIDE簡介
134ADTIDEforARMARM軟件開發(fā)工具-ADTIADTIDEforARM主要特征-可視化編程環(huán)境ARM軟件開發(fā)工具-ADTIDE簡介
支持ARM7、ARM9、SecurCore等。運(yùn)行于Windows98、NT、2000、XP等平臺。中文、英文版本支持可視化的源碼編輯和工程管理功能界面友好,使用方便:類似MSVisualStudio的用戶界面,支持打印功能,支持文件內(nèi)查找功能和FindinFiles功能135ADTIDEforARM主要特征-可視化編程環(huán)境AADTIDEforARM主要特征-可視化編程環(huán)境ARM軟件開發(fā)工具-ADTIDE簡介
工程管理器:ADTIDE提供圖形化的工程管理工具,實(shí)現(xiàn)文件級、文件目錄級、工程級的多級編譯連接選項管理以及工程級的調(diào)試參數(shù)管理源碼編輯器:支持標(biāo)準(zhǔn)的文本編輯功能,支持C語言、匯編語言語法高亮顯示輔助編輯工具:提供一系列輔助編輯工具,方便開發(fā)人員。包括:多剪貼板工具、代碼模板工具、頭文件和源文件切換工具、注釋工具、符號配對書寫工具等多種輔助編輯工具。136ADTIDEforARM主要特征-可視化編程環(huán)境AADTIDEforARM主要特征-交叉編譯功能ARM軟件開發(fā)工具-ADTIDE簡介
支持開發(fā)語言:ANSIC;EmbeddedC++;匯編語言編譯工具:使用著名優(yōu)秀自由軟件GNU的GCC交叉編譯工具,并經(jīng)過優(yōu)化和嚴(yán)格測試,支持C語言、匯編語言等編譯參數(shù)設(shè)置:完全圖形界面方式的編譯參數(shù)設(shè)置,提供可視化的設(shè)置功能。支持工程級、文件目錄級、文件級編譯參數(shù)設(shè)置137ADTIDEforARM主要特征-交叉編譯功能ARADTIDEforARM主要特征-調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
同時提供了圖形和命令行兩種調(diào)試方式程序的單步執(zhí)行程序下載存儲區(qū)下載和上載功能。工程級調(diào)試參數(shù)管理支持源程序、反匯編程序和混合窗口顯示,支持ARM/THUMB方式顯示具有與MSVisualStudio類似的調(diào)試菜單功能:Go,Stop,Reset,Restart,Stepinto,Stepover,Stepout,RuntoCursor等豐富的示例程序138ADTIDEforARM主要特征-調(diào)試功能ARM軟ADTIDEforARM主要特征-調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
斷點(diǎn)功能:支持軟件斷點(diǎn)和硬件斷點(diǎn),實(shí)現(xiàn)斷點(diǎn)設(shè)置、斷點(diǎn)屏蔽、斷點(diǎn)取消、斷點(diǎn)列表等功能變量監(jiān)視功能:隨程序運(yùn)行同步更新變量,即時修改變量值,可設(shè)置自動/手動刷新方式、十進(jìn)制/十六進(jìn)制顯示ARM各種模式的寄存器即時查看與修改,當(dāng)前模式指示,寄存器值修改時紅色突顯存儲器查看與修改,可設(shè)置自動/手動刷新方式、字節(jié)/雙字節(jié)/四字節(jié)顯示、大/小端方式顯示,存儲器值修改時紅色突顯139ADTIDEforARM主要特征-調(diào)試功能ARM軟ADTIDEforARM主要特征-調(diào)試功能ARM軟件開發(fā)工具-ADTIDE簡介
函數(shù)堆棧顯示,可設(shè)置自動/手動刷新方式、十進(jìn)制/十六進(jìn)制顯示、參數(shù)值顯示,參數(shù)類型顯示板上寄存器(OnBoardRegister)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 園藝機(jī)械碳排放研究-洞察分析
- 網(wǎng)絡(luò)入侵防御系統(tǒng)研究-洞察分析
- 脫附吸附平衡模型-洞察分析
- 醫(yī)保產(chǎn)品市場拓展-洞察分析
- 醫(yī)生定期考核簡易程序述職報告范文(10篇)
- 淘寶店鋪流量分析-洞察分析
- 體育品牌的社會影響-洞察分析
- 吃低保的24種病申請書范文(9篇)
- 虛擬現(xiàn)實(shí)應(yīng)用研究-第1篇-洞察分析
- 稀土金屬應(yīng)用領(lǐng)域拓展-洞察分析
- 教育研究方法智慧樹知到期末考試答案2024年
- 教師職業(yè)道德與專業(yè)發(fā)展智慧樹知到期末考試答案2024年
- 會計學(xué)原理智慧樹知到期末考試答案2024年
- 幕墻工程專項施工方案審批流程
- 《血站業(yè)務(wù)場所建設(shè)指南 第3部分:獻(xiàn)血屋》
- 安寧護(hù)理個案
- (2024年)計算機(jī)安全培訓(xùn)
- 新視野英語教程(第四版)讀寫教程1 期末測試卷 測試卷A
- 城市地理學(xué)智慧樹知到期末考試答案2024年
- 項目撤銷方案
- 市級課題研究成果案例一等獎《“教研訓(xùn)一體化”混合式培訓(xùn)模式的建構(gòu)與實(shí)踐》
評論
0/150
提交評論