




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
嵌入式系統(tǒng)教案武漢創(chuàng)維特信息技術(shù)有限企業(yè)
10/10/第1頁提要13245嵌入式軟件開發(fā)過程ARM軟件設(shè)計與代碼分析ARM軟件開發(fā)工具-ADTIDE介紹67第六章嵌入式軟件系統(tǒng)設(shè)計第2頁2嵌入式系統(tǒng)軟件開發(fā)流程軟件需求分析:確定設(shè)計任務(wù)和目標(biāo),并提煉出設(shè)計規(guī)格說明書,作為正式設(shè)計指導(dǎo)和驗收標(biāo)準(zhǔn)。嵌入式軟件開發(fā)過程概要設(shè)計:描述系統(tǒng)怎樣實現(xiàn)所述需求,包含軟件模塊劃分、系統(tǒng)軟件開發(fā)工具選擇以及關(guān)鍵問題論證等。詳細(xì)設(shè)計:詳細(xì)描述各個模塊實現(xiàn)方法與過程,模塊間接口等問題,以作為編碼人員編碼準(zhǔn)則。編碼第3頁3嵌入式系統(tǒng)開發(fā)流程單元調(diào)試:編碼完成后,對各個模塊進(jìn)行單元調(diào)試,以確保模塊正常工作。嵌入式軟件開發(fā)過程集成調(diào)試第4頁4ARM主流開發(fā)工具Windows操作系統(tǒng)ARMADS/SDT+調(diào)試器GNU+Cygwin+調(diào)試器ARMSDT+簡易電纜Linux操作系統(tǒng)GNU+GDBARM軟件開發(fā)工具-ADTIDE介紹第5頁5慣用調(diào)試方法軟件仿真駐留監(jiān)控程序硬件要求高,普通在硬件穩(wěn)定之后進(jìn)行需要占用目標(biāo)板上一部分資源不能對程序全速運行進(jìn)行完全仿真JTAG仿真器完全非插入式調(diào)試,不使用片上資源,無需目標(biāo)存放器,不占用目標(biāo)系統(tǒng)任何端口仿真效果愈加靠近于目標(biāo)硬件在線仿真器ARM軟件開發(fā)工具-ADTIDE介紹第6頁6ADTforARM集成開發(fā)系統(tǒng)ARM軟件開發(fā)工具-ADTIDE介紹第7頁7ADT1000EmulatorforARMARM軟件開發(fā)工具-ADTIDE介紹
第8頁8ADT1000EmulatorforARMARM軟件開發(fā)工具-ADTIDE介紹
ADTEmulatorforARM是連接主機(jī)核目標(biāo)機(jī)之間硬件設(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接口運行狀態(tài)指示與主機(jī)之間經(jīng)過并口連接下載速度到達(dá)25Kbytes/S第9頁9ADTIDEforARMARM軟件開發(fā)工具-ADTIDE介紹
第10頁10ADTIDEforARM主要特征-可視化編程環(huán)境ARM軟件開發(fā)工具-ADTIDE介紹
支持ARM7、ARM9、SecurCore等。運行于Windows98、NT、、XP等平臺。漢字、英文版本支持可視化源碼編輯和工程管理功效界面友好,使用方便:類似MSVisualStudio用戶界面,支持打印功效,支持文件內(nèi)查找功效和FindinFiles功效第11頁11ADTIDEforARM主要特征-可視化編程環(huán)境ARM軟件開發(fā)工具-ADTIDE介紹
工程管理器:ADTIDE提供圖形化工程管理工具,實現(xiàn)文件級、文件目錄級、工程級多級編譯連接選項管理以及工程級調(diào)試參數(shù)管理源碼編輯器:支持標(biāo)準(zhǔn)文本編輯功效,支持C語言、匯編語言語法高亮顯示輔助編輯工具:提供一系列輔助編輯工具,方便開發(fā)人員。包含:多剪貼板工具、代碼模板工具、頭文件和源文件切換工具、注釋工具、符號配對書寫工具等各種輔助編輯工具。第12頁12ADTIDEforARM主要特征-交叉編譯功效ARM軟件開發(fā)工具-ADTIDE介紹
支持開發(fā)語言:ANSIC;EmbeddedC++;匯編語言編譯工具:使用著名優(yōu)異自由軟件GNUGCC交叉編譯工具,并經(jīng)過優(yōu)化和嚴(yán)格測試,支持C語言、匯編語言等編譯參數(shù)設(shè)置:完全圖形界面方式編譯參數(shù)設(shè)置,提供可視化設(shè)置功效。支持工程級、文件目錄級、文件級編譯參數(shù)設(shè)置第13頁13ADTIDEforARM主要特征-調(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等豐富示例程序第14頁14ADTIDEforARM主要特征-調(diào)試功效ARM軟件開發(fā)工具-ADTIDE介紹
斷點功效:支持軟件斷點和硬件斷點,實現(xiàn)斷點設(shè)置、斷點屏蔽、斷點取消、斷點列表等功效變量監(jiān)視功效:隨程序運行同時更新變量,即時修改變量值,可設(shè)置自動/手動刷新方式、十進(jìn)制/十六進(jìn)制顯示ARM各種模式存放器即時查看與修改,當(dāng)前模式指示,存放器值修改時紅色突顯存放器查看與修改,可設(shè)置自動/手動刷新方式、字節(jié)/雙字節(jié)/四字節(jié)顯示、大/小端方式顯示,存放器值修改時紅色突顯第15頁15ADTIDEforARM主要特征-調(diào)試功效ARM軟件開發(fā)工具-ADTIDE介紹
函數(shù)堆棧顯示,可設(shè)置自動/手動刷新方式、十進(jìn)制/十六進(jìn)制顯示、參數(shù)值顯示,參數(shù)類型顯示板上存放器(OnBoardRegister)查看和修改,能夠查看支持CPU全部板上存放器詳細(xì)意義、當(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編程方案。第16頁16ADTIDEforARMARM軟件開發(fā)工具-ADTIDE介紹
ADTIDE(Arm7Lpt、Arm9Lpt、SoftSim、Arm7Simple)用戶手冊、編程指南豐富例程第17頁17多版本支持ARM軟件開發(fā)工具-ADTIDE介紹
軟件仿真版本ARM7版本ARM9版本簡易仿真版本第18頁18多工程管理ARM軟件開發(fā)工具-ADTIDE介紹
工程當(dāng)前活開工程第19頁19可視化編輯器ARM軟件開發(fā)工具-ADTIDE介紹
編輯菜單語法高亮編輯器輔助編輯工具條書簽第20頁20GCC交叉編譯ARM軟件開發(fā)工具-ADTIDE介紹編譯菜單編譯工具條編譯結(jié)果輸出錯誤定位第21頁21編譯器設(shè)置ARM軟件開發(fā)工具-ADTIDE介紹多配置管理多工程設(shè)管理多參數(shù)配置第22頁22匯編器設(shè)置ARM軟件開發(fā)工具-ADTIDE介紹多配置管理多工程設(shè)管理多參數(shù)配置第23頁23連接器設(shè)置ARM軟件開發(fā)工具-ADTIDE介紹多配置管理多工程設(shè)管理多參數(shù)配置第24頁24調(diào)試功效ARM軟件開發(fā)工具-ADTIDE介紹
調(diào)試菜單調(diào)試工具條命令行調(diào)試窗口第25頁25各種調(diào)試模式ARM軟件開發(fā)工具-ADTIDE介紹
源碼模式混合模式匯編模式第26頁26斷點ARM軟件開發(fā)工具-ADTIDE介紹
斷點列表斷點第27頁27存放器窗口ARM軟件開發(fā)工具-ADTIDE介紹字模式半字模式字節(jié)模式修改凸顯標(biāo)識第28頁28存放區(qū)上載下載功效ARM軟件開發(fā)工具-ADTIDE介紹
存放區(qū)上載存放區(qū)下載第29頁29存放器觀察窗口ARM軟件開發(fā)工具-ADTIDE介紹
多模式存放器顯示修改凸顯標(biāo)識第30頁30函數(shù)調(diào)用棧窗口ARM軟件開發(fā)工具-ADTIDE介紹
函數(shù)調(diào)用棧第31頁31變量觀察窗口ARM軟件開發(fā)工具-ADTIDE介紹
局部變量全局變量多個觀察窗口第32頁32命令窗口ARM軟件開發(fā)工具-ADTIDE介紹
第33頁33單步調(diào)試-STEPINTOARM軟件開發(fā)工具-ADTIDE介紹第34頁34單步調(diào)試-STEPOVERARM軟件開發(fā)工具-ADTIDE介紹
第35頁35單步調(diào)試-STEPOUTARM軟件開發(fā)工具-ADTIDE介紹
第36頁36單步調(diào)試-RUNTOCURSORARM軟件開發(fā)工具-ADTIDE介紹
第37頁37板上存放器ARM軟件開發(fā)工具-ADTIDE介紹存放器組存放器存放器位域熱點描述信息修改凸顯標(biāo)識第38頁38板上存放器ARM軟件開發(fā)工具-ADTIDE介紹第39頁39FLASH在線編程器ARM軟件開發(fā)工具-ADTIDE介紹
第40頁40工具菜單ARM軟件開發(fā)工具-ADTIDE介紹
可自定制第41頁41在線幫助ARM軟件開發(fā)工具-ADTIDE介紹
第42頁42嵌入式軟件開發(fā)無操作系統(tǒng)軟件開發(fā)開啟代碼應(yīng)用程序基于操作系統(tǒng)軟件開發(fā)bootloader操作系統(tǒng)移植BSP板級支持包應(yīng)用程序開發(fā)ARM軟件設(shè)計與代碼分析第43頁43開啟代碼功效硬件初始化引導(dǎo)C代碼特征通慣用匯編語言編寫程序復(fù)位運行入口點代碼量非常小程序流程設(shè)置中止、異常入口關(guān)中止硬件存放器初始化(GPIO配置、總線配置、PLL時鐘)初始化棧指針數(shù)據(jù)區(qū)初始化C入口函數(shù)調(diào)用BLMainARM軟件設(shè)計與代碼分析第44頁44應(yīng)用程序(無操作系統(tǒng))功效硬件驅(qū)動應(yīng)用特征通慣用C語言或者嵌入式匯編語言編寫程序較復(fù)雜,代碼量較大ARM軟件設(shè)計與代碼分析第45頁45bootloader功效硬件初始化引導(dǎo)操作系統(tǒng)下載程序(串口、網(wǎng)口、USB)燒寫flash特征程序復(fù)位運行入口點通慣用匯編語言+C語言編寫代碼量較小ARM軟件設(shè)計與代碼分析第46頁46嵌入式操作系統(tǒng)移植LinuxWindowsCEuC/OSIIuClinuxNucleusARM軟件設(shè)計與代碼分析第47頁47BSP板級支持包功效為應(yīng)用程序提供統(tǒng)一硬件操作接口特征高度硬件相關(guān)高度依賴于詳細(xì)硬件平臺各種操作系統(tǒng)各異ARM軟件設(shè)計與代碼分析第48頁48應(yīng)用程序開發(fā)(操作系統(tǒng))功效GUI圖形、人機(jī)交互控制算法特征硬件依賴程度小部分可仿真調(diào)試各種操作系統(tǒng)各異ARM軟件設(shè)計與代碼分析第49頁49嵌入式軟件設(shè)計和調(diào)試流程編輯創(chuàng)建工程添加文件、編寫程序匯編語言加C語言編譯配置編譯、匯編和連接參數(shù)編寫連接腳本文件編譯調(diào)試連接調(diào)試器下載程序運行、調(diào)試固化經(jīng)過仿真器燒寫flash專用或通用編程器經(jīng)過bootloader燒寫flashARM軟件設(shè)計與代碼分析第50頁50交叉編譯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è)計與代碼分析第51頁51鏈接腳本段Text段rodata段data段bss段符號Image_RO_Limit
Image_RW_BaseImage_ZI_BaseImage_ZI_LimitGCC庫專用調(diào)試信息ARM軟件設(shè)計與代碼分析第52頁52鏈接腳本示例程序在SDRAM中運行程序在FLASH中運行ARM軟件設(shè)計與代碼分析第53頁53GCC庫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è)計與代碼分析第54頁54JX44B0開啟代碼分析ARM軟件設(shè)計與代碼分析在基于ARM7TDMIcore嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時都從地址0x00000000開始執(zhí)行,所以在這個地址處安排通常就是系統(tǒng)開啟代碼。它通常也是BootLoader程序一部分,能夠在開啟代碼基礎(chǔ)上編寫B(tài)ootLoader。用匯編語言編寫。開啟代碼是在復(fù)位后運行其它程序之前運行一段小程序。經(jīng)過它,初始化硬件設(shè)備、建立內(nèi)存空間映射圖(JX44B0不需要),從而將系統(tǒng)軟硬件環(huán)境帶到一個適當(dāng)狀態(tài),方便為最終調(diào)用C函數(shù)準(zhǔn)備好正確環(huán)境。第55頁55開啟代碼移植和修改ARM軟件設(shè)計與代碼分析開啟代碼除了依賴于CPU體系結(jié)構(gòu)外,實際上也依賴于詳細(xì)嵌入式板級設(shè)備配置,比如板卡硬件地址分配,RAM芯片類型,其它外設(shè)類型等。對于兩塊不一樣嵌入式板而言,即使它們是基于同一個CPU而構(gòu)建,假如他們硬件資源和配置不一致話,要想讓運行在一塊板子上開啟代碼也能運行在另一塊板子上,也還是需要作一些必要修改。第56頁56開啟代碼流程圖開啟代碼功效:RAM初始化,設(shè)置各個部件時鐘和片選,將BootLoader拷貝到RAM中,設(shè)置堆棧,調(diào)用C函數(shù)。注意:在本階段,尤其是在堆棧設(shè)置之前,進(jìn)行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保留數(shù)據(jù)將產(chǎn)生不可預(yù)知結(jié)果;ARM軟件設(shè)計與代碼分析第57頁57設(shè)置中止向量表該段向量表除了復(fù)位異常外,只有位于0地址處有效,也就是必須將該段代碼燒寫到FLASH中。復(fù)位異常直接跳轉(zhuǎn)到ResetHandler處,它是相對跳轉(zhuǎn),位置無關(guān)。其余異常將跳轉(zhuǎn)到0c000008+向量地址位置,使用絕對跳轉(zhuǎn)。ARM軟件設(shè)計與代碼分析第58頁58復(fù)位入口:切換到超級模式系統(tǒng)復(fù)位成功后,將自動進(jìn)入SVC模式在初始化之前必須關(guān)閉中止,以免引發(fā)異常LOCKOUT:0xc0Bit6,7=1MODE_MASK:0x1fSUP_MODE:0x13ARM軟件設(shè)計與代碼分析第59頁59設(shè)置中止模式并禁止中止設(shè)置S3C44B0INTCON存放器缺省值為0x07,能夠不作該工作0x01e000000x01e00000ARM軟件設(shè)計與代碼分析第60頁60關(guān)閉看門狗設(shè)置S3C44B0WTCON存放器必須設(shè)置0x01e000000x01d30000ARM軟件設(shè)計與代碼分析第61頁61系統(tǒng)配置存放器使能回寫buffer打開Cache0x01e000000x01c00000ARM軟件設(shè)計與代碼分析第62頁62設(shè)置非Cache區(qū)域使能回寫buffer打開Cache0-0x0b0000000c7000000-0xc730ARM軟件設(shè)計與代碼分析第63頁63端口設(shè)置ARM軟件設(shè)計與代碼分析第64頁64設(shè)置外部中止觸發(fā)方式0x01e000000x01d0ARM軟件設(shè)計與代碼分析第65頁65配置總線訪問寬度ARM軟件設(shè)計與代碼分析第66頁66配置總線訪問時序ARM軟件設(shè)計與代碼分析第67頁67C代碼初始化ARM軟件設(shè)計與代碼分析第68頁68堆棧初始化ARM軟件設(shè)計與代碼分析第69頁69跳轉(zhuǎn)到C入口函數(shù)ARM軟件設(shè)計與代碼分析第70頁70JX44B0BOOTLOADER分析ARM軟件設(shè)計與代碼分析BootLoader是在開啟代碼基礎(chǔ)之上,通常開啟代碼包含于BootLoader之中BootLoader慣用于引導(dǎo)操作系統(tǒng)或者應(yīng)用程序BootLoader能夠包含一些簡單調(diào)試伎倆第71頁71BootLoader基本概念BootLoader是系統(tǒng)加電后運行第一段軟件代碼。嵌入式系統(tǒng)中,整個系統(tǒng)加載開啟任務(wù)完全由BootLoader來完成。比如在一個基于ARM7TDMIcore嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時都從地址0x00000000開始執(zhí)行,而在這個地址處安排通常就是系統(tǒng)BootLoader程序。簡單地說,BootLoader就是在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運行之前運行一段小程序。經(jīng)過這段小程序,我們能夠初始化硬件設(shè)備、建立內(nèi)存空間映射圖(有CPU沒有內(nèi)存映射功效如S3C44B0),從而將系統(tǒng)軟硬件環(huán)境帶到一個適當(dāng)狀態(tài),方便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序準(zhǔn)備好正確環(huán)境。通常,BootLoader是依賴于硬件而實現(xiàn),尤其是在嵌入式領(lǐng)域,為嵌入式系統(tǒng)建立一個通用BootLoader是很困難。ARM軟件設(shè)計與代碼分析第72頁72BootLoader移植和修改BootLoader除了依賴于CPU體系結(jié)構(gòu)外,BootLoader實際上也依賴于詳細(xì)嵌入式板級設(shè)備配置,比如板卡硬件地址分配,RAM芯片類型,其它外設(shè)類型等。對于兩塊不一樣嵌入式板而言,即使它們是基于同一個CPU而構(gòu)建,假如他們硬件資源和配置不一致話,要想讓運行在一塊板子上BootLoader程序也能運行在另一塊板子上,也還是需要作一些必要修改。ARM軟件設(shè)計與代碼分析第73頁73BootLoader安裝系統(tǒng)加電或復(fù)位后,全部CPU通常都從CPU制造商預(yù)先安排地址上取指令。比如,S3C44B0在復(fù)位時都從地址0x00000000取它第一條指令。嵌入式系統(tǒng)通常都有某種類型固態(tài)存放設(shè)備(比如:ROM、EEPROM或FLASH等)被安排這個起始地址上,所以在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。也就是說對于基于S3C44B0這套系統(tǒng),我們BootLoader是從0地址開始存放,而這塊起始地址需要采取可引導(dǎo)固態(tài)存放設(shè)備如FLASH。ARM軟件設(shè)計與代碼分析第74頁74用來控制BootLoader設(shè)備或機(jī)制串口通訊是最簡單也是最廉價一個雙機(jī)通訊設(shè)備,所以往往在BootLoader中主機(jī)和目標(biāo)機(jī)之間都經(jīng)過串口建立連接,BootLoader程序在執(zhí)行時通常會經(jīng)過串口來進(jìn)行I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當(dāng)然假如認(rèn)為串口通訊速度不夠,也能夠采取網(wǎng)絡(luò)或者USB通訊,那么對應(yīng)在BootLoader中就需要編寫各自驅(qū)動。ARM軟件設(shè)計與代碼分析第75頁75BootLoader操作模式開啟加載模式:這種模式也稱為"自主"(Autonomous)模式。也即BootLoader從目標(biāo)機(jī)上某個固態(tài)存放設(shè)備上將操作系統(tǒng)加載到RAM中運行,整個過程并沒有用戶介入。這種模式是BootLoader正常工作模式。下載模式:在這種模式下,目標(biāo)機(jī)上BootLoader將經(jīng)過串口連接或網(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通常都會向它終端用戶提供一個簡單命令行接口。在教學(xué)系統(tǒng)中提供BootLoader中沒有實現(xiàn)自主模式,能夠經(jīng)過修改代碼來實現(xiàn)該功效。ARM軟件設(shè)計與代碼分析第76頁76BootLoader與主機(jī)間文件傳輸通信設(shè)備及協(xié)議最常見情況就是,目標(biāo)機(jī)上BootLoader經(jīng)過串口與主機(jī)之間進(jìn)行文件傳輸,傳輸能夠簡單采取直接數(shù)據(jù)收發(fā),當(dāng)然在串口上也能夠采取xmodem/ymodem/zmodem協(xié)議以及在以太網(wǎng)上采取TFTP協(xié)議。ARM軟件設(shè)計與代碼分析第77頁77BootLoader主要任務(wù)與經(jīng)典結(jié)構(gòu)框架從操作系統(tǒng)角度看,BootLoader總目標(biāo)就是正確地調(diào)用內(nèi)核來執(zhí)行。大多數(shù)BootLoader都分為stage1和stage2兩大部分。依賴于CPU體系結(jié)構(gòu)代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現(xiàn),以到達(dá)短小精悍目標(biāo),也就是前面說開啟代碼。而stage2則通慣用C語言來實現(xiàn),這么能夠?qū)崿F(xiàn)復(fù)雜功效,而且代碼會含有更加好可讀性和可移植性。ARM軟件設(shè)計與代碼分析第78頁78BootLoader主要任務(wù)與經(jīng)典結(jié)構(gòu)框架BootLoaderstage1通常包含以下步驟 為加載BootLoaderstage2準(zhǔn)備RAM空間拷貝BootLoaderstage2到RAM空間中設(shè)置好堆棧跳轉(zhuǎn)到stage2C入口點BootLoaderstage2通常包含以下步驟初始化本階段要使用到硬件設(shè)備調(diào)用應(yīng)用程序或開啟內(nèi)核ARM軟件設(shè)計與代碼分析第79頁79Stage1初始化流程圖stage1功效:RAM初始化,設(shè)置各個部件時鐘和片選,將BootLoader拷貝到RAM中,設(shè)置堆棧,調(diào)用Stage2。注意:在本階段,尤其是在堆棧設(shè)置之前,進(jìn)行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保留數(shù)據(jù)將產(chǎn)生不可預(yù)知結(jié)果;ARM軟件設(shè)計與代碼分析第80頁80Stage2流程圖stage2功效: 初始化串口,顯示菜單,經(jīng)過菜單獲取用戶輸入,并執(zhí)行對應(yīng)操作。ARM軟件設(shè)計與代碼分析第81頁81Bootloader更新程序流程圖經(jīng)過BootLoader更新程序流程。注意為了使用Bootloader更新FLASH中程序,需要首先將Bootloader搬遷到RAM中運行。ARM軟件設(shè)計與代碼分析第82頁82嵌入式實時操作系統(tǒng)ARM軟件設(shè)計與代碼分析將在后面介紹第83頁83板級支持包ARM軟件設(shè)計與代碼分析BSP(板級支持包)是介于底層硬件和操作系統(tǒng)之間軟件層次,它完成系統(tǒng)上電后最初硬件和軟件初始化,并對底層硬件進(jìn)行封裝,使得操作系統(tǒng)不再面對詳細(xì)操作。第84頁84板級支持包特點ARM軟件設(shè)計與代碼分析硬件相關(guān)性:因為嵌入式實時系統(tǒng)硬件環(huán)境含有應(yīng)用相關(guān)性,所以,作為高層軟件與硬件之間接口,BSP必須為操作系統(tǒng)提供操作和控制詳細(xì)硬件方法。操作系統(tǒng)相關(guān)性:不一樣操作系統(tǒng)含有各自軟件層次結(jié)構(gòu),所以,不一樣操作系統(tǒng)含有特定硬件接口形式。第85頁85板級支持包功效ARM軟件設(shè)計與代碼分析第86頁86板級支持包功效ARM軟件設(shè)計與代碼分析嵌入式系統(tǒng)初始化片級初始化板級初始化系統(tǒng)級初始化硬件相關(guān)設(shè)備驅(qū)動程序和BootLoader存在一定重合第87頁87系統(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)用程序入口。第88頁88硬件相關(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)用,實現(xiàn)對硬件設(shè)備操作。第89頁89JX44B0應(yīng)用代碼設(shè)計及中止處理ARM軟件設(shè)計與代碼分析連接腳本第90頁90JX44B0應(yīng)用代碼中止向量ARM軟件設(shè)計與代碼分析起始地址0x0c000008除復(fù)位異常外,其余異常入口地址由FLASH跳轉(zhuǎn)得到第91頁91JX44B0中止處理流程執(zhí)行0x18處指令:LDRpc,=0x0c000020,由Bootloader控制執(zhí)行0x0c000020處指令:HandlerIRQ,ramstart.s執(zhí)行HandlerIRQ,ramstart.s執(zhí)行HandleIRQ處保留中止分發(fā)例程,ramstart.s中初始化為IsrIRQARM軟件設(shè)計與代碼分析第92頁92用匯編代碼編寫中止分發(fā)例程保護(hù)現(xiàn)場IsrIRQ: /*usingI_ISPRregister.*/ sublr,lr,#4 stmfdsp!,{lr}/*保留中止返回PC值*/stmfdsp!,{r0-r4}/*備份存放器R0-R4*/sub sp,sp,#4/*為PC預(yù)留??臻g*/stmfdsp!,{r8-r9}/*備份存放器R8-R9*/ldrr9,=I_ISPR/*讀取中止?fàn)顟B(tài)*/ldrr9,[r9]
R9中保留中止?fàn)顟B(tài)ARM軟件設(shè)計與代碼分析第93頁93用匯編代碼編寫中止分發(fā)例程尋找中止源 cmp r9,#0x0/*檢驗中止?fàn)顟B(tài)*/ beq i2 movr8,#0x0/*R8保留中止表偏移*/i0:/*逐位檢驗中止?fàn)顟B(tài)*/movsr9,r9,lsr#1 bcsi1 /*假如該位等于1,則處理這一中止*/addr8,r8,#4 /*修改當(dāng)前中止偏移*/bi0 /*處理下一比特*/
找到中止則跳轉(zhuǎn)到i1,R8保留找到中止偏移未找到中止則跳轉(zhuǎn)到i2ARM軟件設(shè)計與代碼分
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 滑雪場地建設(shè)與維護(hù)合同書
- 深圳市冷凍水產(chǎn)品購銷合同
- 重大突破:中國與尼日爾簽訂基礎(chǔ)設(shè)施建設(shè)項目合同
- 正式婚后財產(chǎn)歸屬合同樣本
- 設(shè)備采購與租賃合同樣本
- 社區(qū)衛(wèi)生服務(wù)中心藥師聘用合同范本
- 建筑工程總承包合同中新防水工程條款
- 緊急設(shè)備配送及維護(hù)合同
- 樓盤分銷代理合同范本
- 衛(wèi)浴產(chǎn)品標(biāo)準(zhǔn)制定與質(zhì)量認(rèn)證考核試卷
- 前庭功能鍛煉科普知識講座
- 供應(yīng)鏈戰(zhàn)略布局與區(qū)域拓展案例
- 上海話培訓(xùn)課件
- 注塑車間績效考核方案
- 初中英語閱讀理解專項練習(xí)26篇(含答案)
- 誦讀經(jīng)典傳承文明課件
- 高中數(shù)學(xué)選擇性必修3 教材習(xí)題答案
- 智能語音技術(shù)與應(yīng)用-基于Python實現(xiàn)(高職)全套教學(xué)課件
- 北師大版二年級下冊數(shù)學(xué)第一單元 除法教案
- 2024年兒童托管行業(yè)分析報告及未來發(fā)展趨勢
- 野生動植物保護(hù)
評論
0/150
提交評論