08嵌入式軟件系統(tǒng)設計.ppt_第1頁
08嵌入式軟件系統(tǒng)設計.ppt_第2頁
08嵌入式軟件系統(tǒng)設計.ppt_第3頁
08嵌入式軟件系統(tǒng)設計.ppt_第4頁
08嵌入式軟件系統(tǒng)設計.ppt_第5頁
已閱讀5頁,還剩92頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、1,提綱,1,3,2,嵌入式軟件開發(fā)過程,ARM軟件設計與代碼分析,ARM軟件開發(fā)工具ADT IDE簡介,第六章 嵌入式軟件系統(tǒng)設計,2,嵌入式系統(tǒng)軟件開發(fā)流程,軟件需求分析:確定設計任務和目標,并提煉出設計規(guī)格說明書,作為正式設計指導和驗收的標準。,嵌入式軟件開發(fā)過程,概要設計:描述系統(tǒng)如何實現(xiàn)所述的需求,包括軟件模塊的劃分、系統(tǒng)的軟件開發(fā)工具選擇以及關鍵問題的論證等。,詳細設計:詳細描述各個模塊的實現(xiàn)方法與過程,模塊間接口等問題,以作為編碼人員的編碼準則。,編碼,3,嵌入式系統(tǒng)的開發(fā)流程,單元調(diào)試:編碼完成后,對各個模塊進行單元調(diào)試,以保證模塊正常工作。,嵌入式軟件開發(fā)過程,集成調(diào)試,4,

2、ARM主流開發(fā)工具,Windows操作系統(tǒng) ARM ADS/SDT + 調(diào)試器 GNU + Cygwin + 調(diào)試器 ARM SDT + 簡易電纜 Linux操作系統(tǒng) GNU + GDB,ARM軟件開發(fā)工具ADT IDE簡介,5,常用調(diào)試方法,軟件仿真 駐留監(jiān)控程序 硬件要求高,一般在硬件穩(wěn)定之后進行 需要占用目標板上的一部分資源 不能對程序的全速運行進行完全仿真 JTAG仿真器 完全非插入式調(diào)試,不使用片上資源,無需目標存儲器,不占用目標系統(tǒng)的任何端口 仿真效果更加接近于目標硬件 在線仿真器,ARM軟件開發(fā)工具ADT IDE簡介,6,ADT for ARM集成開發(fā)系統(tǒng),ARM軟件開發(fā)工具AD

3、T IDE簡介,7,ADT 1000 Emulator for ARM,ARM軟件開發(fā)工具ADT IDE簡介,8,ADT 1000 Emulator for ARM,ARM軟件開發(fā)工具ADT IDE簡介,ADT Emulator for ARM是連接主機核目標機之間的硬件設備,它實現(xiàn)ADT IDE for ARM與目標機之間的連接。,它具有如下特征:,支持ARM核CPU,非插入式調(diào)試,無需目標存儲器,不占用目標系統(tǒng)的任何端口,2.5V/3.3V/5V兼容電平接口,支持標準的14/20針JTAG接口,運行狀態(tài)指示,與主機之間通過并口連接,下載速度達到25Kbytes/S,9,ADT IDE fo

4、r ARM,ARM軟件開發(fā)工具ADT IDE簡介,10,ADT IDE for ARM主要特征 可視化編程環(huán)境,ARM軟件開發(fā)工具ADT IDE簡介,支持ARM7、ARM9、SecurCore等。,運行于Windows98 、NT、2000、XP等平臺。,中文、英文版本支持,可視化的源碼編輯和工程管理功能,界面友好,使用方便:類似MS Visual Studio的用戶界面,支持打印功能,支持文件內(nèi)查找功能和Find in Files功能,11,ADT IDE for ARM主要特征 可視化編程環(huán)境,ARM軟件開發(fā)工具ADT IDE簡介,工程管理器:ADT IDE提供圖形化的工程管理工具,實現(xiàn)文

5、件級、文件目錄級、工程級的多級編譯連接選項管理以及工程級的調(diào)試參數(shù)管理,源碼編輯器:支持標準的文本編輯功能,支持C語言、匯編語言語法高亮顯示,輔助編輯工具:提供一系列輔助編輯工具,方便開發(fā)人員。包括:多剪貼板工具、代碼模板工具、頭文件和源文件切換工具、注釋工具、符號配對書寫工具等多種輔助編輯工具。,12,ADT IDE for ARM主要特征 交叉編譯功能,ARM軟件開發(fā)工具ADT IDE簡介,支持開發(fā)語言:ANSI C;Embedded C+;匯編語言,編譯工具:使用著名優(yōu)秀自由軟件GNU的GCC交叉編譯工具,并經(jīng)過優(yōu)化和嚴格測試,支持C語言、匯編語言等,編譯參數(shù)設置:完全圖形界面方式的編譯

6、參數(shù)設置,提供可視化的設置功能。支持工程級、文件目錄級、文件級編譯參數(shù)設置,13,ADT IDE for ARM主要特征 調(diào)試功能,ARM軟件開發(fā)工具ADT IDE簡介,同時提供了圖形和命令行兩種調(diào)試方式,程序的單步執(zhí)行,程序下載,存儲區(qū)下載和上載功能。,工程級調(diào)試參數(shù)管理,支持源程序、反匯編程序和混合窗口顯示,支持ARM/THUMB方式顯示,具有與MS Visual Studio類似的調(diào)試菜單功能:Go,Stop,Reset,Restart,Step into,Step over,Step out,Run to Cursor等,豐富的示例程序,14,ADT IDE for ARM主要特征 調(diào)

7、試功能,ARM軟件開發(fā)工具ADT IDE簡介,斷點功能:支持軟件斷點和硬件斷點,實現(xiàn)斷點設置、斷點屏蔽、斷點取消、斷點列表等功能,變量監(jiān)視功能:隨程序運行同步更新變量,即時修改變量值,可設置自動/手動刷新方式、十進制/十六進制顯示,ARM各種模式的寄存器即時查看與修改,當前模式指示,寄存器值修改時紅色突顯,存儲器查看與修改,可設置自動/手動刷新方式、字節(jié)/雙字節(jié)/四字節(jié)顯示、大/小端方式顯示,存儲器值修改時紅色突顯,15,ADT IDE for ARM主要特征 調(diào)試功能,ARM軟件開發(fā)工具ADT IDE簡介,函數(shù)堆棧顯示,可設置自動/手動刷新方式、十進制/十六進制顯示、參數(shù)值顯示,參數(shù)類型顯示

8、,板上寄存器(On Board Register)的查看和修改,可以查看支持CPU的所有板上寄存器的具體意義、當前值、各個位的意義,可設置自動/手動刷新方式、二進制/十進制/十六進制顯示、大/小端方式顯示,支持十進制/十六進制方式修改寄存器值,寄存器值修改時紅色突顯。,flash在線編程器,支持對多種flash芯片的空白檢查、擦除、編程、校驗等操作,支持單一操作和自動操作兩種操作方式,支持8/16/32位flash訪問寬度,支持多片flash同時編程,編程速度達15Kbytes/s。提供統(tǒng)一的flash編程接口,可以方便地添加flash編程方案。,16,ADT IDE for ARM,ARM軟

9、件開發(fā)工具ADT IDE簡介,ADT IDE (Arm7Lpt、Arm9Lpt、SoftSim、Arm7Simple),用戶手冊、編程指南,豐富例程,17,多版本支持,ARM軟件開發(fā)工具ADT IDE簡介,18,多工程管理,ARM軟件開發(fā)工具ADT IDE簡介,19,可視化編輯器,ARM軟件開發(fā)工具ADT IDE簡介,20,GCC交叉編譯,ARM軟件開發(fā)工具ADT IDE簡介,21,編譯器設置,ARM軟件開發(fā)工具ADT IDE簡介,22,匯編器設置,ARM軟件開發(fā)工具ADT IDE簡介,23,連接器設置,ARM軟件開發(fā)工具ADT IDE簡介,24,調(diào)試功能,ARM軟件開發(fā)工具ADT IDE簡介

10、,25,多種調(diào)試模式,ARM軟件開發(fā)工具ADT IDE簡介,26,斷點,ARM軟件開發(fā)工具ADT IDE簡介,27,存儲器窗口,ARM軟件開發(fā)工具ADT IDE簡介,28,存儲區(qū)上載下載功能,ARM軟件開發(fā)工具ADT IDE簡介,29,寄存器觀察窗口,ARM軟件開發(fā)工具ADT IDE簡介,30,函數(shù)調(diào)用棧窗口,ARM軟件開發(fā)工具ADT IDE簡介,31,變量觀察窗口,ARM軟件開發(fā)工具ADT IDE簡介,32,命令窗口,ARM軟件開發(fā)工具ADT IDE簡介,33,單步調(diào)試 STEP INTO,ARM軟件開發(fā)工具ADT IDE簡介,34,單步調(diào)試 STEP OVER,ARM軟件開發(fā)工具ADT I

11、DE簡介,35,單步調(diào)試 STEP OUT,ARM軟件開發(fā)工具ADT IDE簡介,36,單步調(diào)試 RUN TO CURSOR,ARM軟件開發(fā)工具ADT IDE簡介,37,板上寄存器,ARM軟件開發(fā)工具ADT IDE簡介,38,板上寄存器,ARM軟件開發(fā)工具ADT IDE簡介,39,FLASH在線編程器,ARM軟件開發(fā)工具ADT IDE簡介,40,工具菜單,ARM軟件開發(fā)工具ADT IDE簡介,41,在線幫助,ARM軟件開發(fā)工具ADT IDE簡介,42,嵌入式軟件開發(fā),無操作系統(tǒng)的軟件開發(fā) 啟動代碼 應用程序 基于操作系統(tǒng)的軟件開發(fā) bootloader 操作系統(tǒng)移植 BSP板級支持包 應用程序

12、開發(fā),ARM軟件設計與代碼分析,43,啟動代碼,功能 硬件初始化 引導C代碼 特征 通常用匯編語言編寫 程序復位運行入口點 代碼量非常小,程序流程 設置中斷、異常入口 關中斷 硬件寄存器初始化(GPIO配置、總線配置、PLL時鐘) 初始化棧指針 數(shù)據(jù)區(qū)初始化 C入口函數(shù)調(diào)用 BL Main,ARM軟件設計與代碼分析,44,應用程序(無操作系統(tǒng)),功能 硬件驅(qū)動 應用 特征 通常用C語言或者嵌入式匯編語言編寫 程序較復雜,代碼量較大,ARM軟件設計與代碼分析,45,bootloader,功能 硬件初始化 引導操作系統(tǒng) 下載程序(串口、網(wǎng)口、USB) 燒寫flash 特征 程序復位運行入口點 通常

13、用匯編語言+C語言編寫 代碼量較小,ARM軟件設計與代碼分析,46,嵌入式操作系統(tǒng)移植,Linux Windows CE uC/OS II uClinux Nucleus,ARM軟件設計與代碼分析,47,BSP板級支持包,功能 為應用程序提供統(tǒng)一的硬件操作接口 特征 高度硬件相關 高度依賴于具體硬件平臺 各種操作系統(tǒng)各異,ARM軟件設計與代碼分析,48,應用程序開發(fā)(操作系統(tǒng)),功能 GUI圖形、人機交互 控制 算法 特征 硬件依賴程度小 部分可仿真調(diào)試 各種操作系統(tǒng)各異,ARM軟件設計與代碼分析,49,嵌入式軟件設計和調(diào)試流程,編輯 創(chuàng)建工程 添加文件、編寫程序 匯編語言加C語言 編譯 配置

14、編譯、匯編和連接參數(shù) 編寫連接腳本文件 編譯,調(diào)試 連接調(diào)試器 下載程序 運行、調(diào)試 固化 通過仿真器燒寫flash 專用或通用的編程器 通過bootloader燒寫flash,ARM軟件設計與代碼分析,50,交叉編譯,GNU交叉編譯 編譯.c arm-elf-gcc 匯編.S arm-elf-gas 連接.o arm-elf-ld 操作文件 匯編文件.S C文件.c 鏈接腳本文件ldscript 庫文件.o .lib .a,生成調(diào)試格式文件.elf DWARF-1 DWARF-2 生成bin文件 elf2bin arm-elf-objcopy,ARM軟件設計與代碼分析,51,鏈接腳本,段 T

15、ext段 rodata段 data段 bss段 符號 Image_RO_Limit Image_RW_Base Image_ZI_Base Image_ZI_Limit,GCC庫專用 調(diào)試信息,ARM軟件設計與代碼分析,52,鏈接腳本示例,程序在SDRAM中運行,程序在FLASH中運行,ARM軟件設計與代碼分析,53,GCC庫,GCC庫 標準C函數(shù)庫lib.a -lc 標準數(shù)學函數(shù)庫libm.a -lm 標準函數(shù)庫的支持庫libg.a -lg GCC的支持庫libgcc.a -lgcc 鏈接排列順序 -lm lc lgcc -lg,ARM軟件設計與代碼分析,54,JX44B0啟動代碼分析,AR

16、M軟件設計與代碼分析,在基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址0 x00000000開始執(zhí)行,因此在這個地址處安排的通常就是系統(tǒng)的啟動代碼。 它通常也是BootLoader程序的一部分,可以在啟動代碼基礎上編寫B(tài)ootLoader。 用匯編語言編寫。 啟動代碼是在復位后運行其它程序之前運行的一段小程序。通過它,初始化硬件設備、建立內(nèi)存空間的映射圖(JX44B0不需要),從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用C函數(shù)準備好正確的環(huán)境。,55,啟動代碼的移植和修改,ARM軟件設計與代碼分析,啟動代碼除了依賴于 CPU 的體系結構外,實際上也依賴于具

17、體的嵌入式板級設備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設的類型等。 對于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU而構建的,如果他們的硬件資源和配置不一致的話,要想讓運行在一塊板子上的啟動代碼也能運行在另一塊板子上,也還是需要作一些必要的修改。,56,啟動代碼流程圖,啟動代碼的功能:RAM初始化,設置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設置堆棧,調(diào)用C函數(shù)。 注意:在本階段,特別是在堆棧設置之前,進行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數(shù)據(jù)將產(chǎn)生不可預知的結果;,ARM軟件設計與代碼分析,57,設置中斷向量表,該段向量

18、表除了復位異常外,只有位于0地址處有效,也就是必須將該段代碼燒寫到FLASH中。 復位異常直接跳轉(zhuǎn)到ResetHandler處,它是相對跳轉(zhuǎn),位置無關。 其余的異常將跳轉(zhuǎn)到0c000008+向量地址的位置,使用絕對跳轉(zhuǎn)。,ARM軟件設計與代碼分析,58,復位入口:切換到超級模式,系統(tǒng)復位成功后,將自動進入SVC模式 在初始化之前必須關閉中斷,以免引起異常,LOCKOUT:0 xc0 Bit6,7 = 1,ARM軟件設計與代碼分析,59,設置中斷模式并禁止中斷,設置S3C44B0 INTCON寄存器 缺省值為0 x07,可以 不作該工作,ARM軟件設計與代碼分析,60,關閉看門狗,設置S3C44

19、B0 WTCON寄存器 必須設置,ARM軟件設計與代碼分析,61,系統(tǒng)配置寄存器,使能回寫buffer 打開Cache,ARM軟件設計與代碼分析,62,設置非Cache區(qū)域,使能回寫buffer 打開Cache,00 x0b000000,0c70000000 xc7320000,ARM軟件設計與代碼分析,63,端口設置,ARM軟件設計與代碼分析,64,設置外部中斷的觸發(fā)方式,ARM軟件設計與代碼分析,65,配置總線訪問寬度,ARM軟件設計與代碼分析,66,配置總線訪問時序,ARM軟件設計與代碼分析,67,C代碼初始化,ARM軟件設計與代碼分析,68,堆棧初始化,ARM軟件設計與代碼分析,69,

20、跳轉(zhuǎn)到C入口函數(shù),ARM軟件設計與代碼分析,70,JX44B0 BOOTLOADER分析,ARM軟件設計與代碼分析,BootLoader是在啟動代碼的基礎之上,通常啟動代碼包含于BootLoader之中 BootLoader常用于引導操作系統(tǒng)或者應用程序 BootLoader可以包含一些簡單的調(diào)試手段,71,BootLoader的基本概念,BootLoader是系統(tǒng)加電后運行的第一段軟件代碼。 嵌入式系統(tǒng)中,整個系統(tǒng)的加載啟動任務完全由 BootLoader來完成。比如在一個基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址0 x00000000開始執(zhí)行,而在這個地址處安

21、排的通常就是系統(tǒng)的BootLoader程序。 簡單地說,BootLoader就是在操作系統(tǒng)內(nèi)核或用戶應用程序運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內(nèi)存空間的映射圖(有的CPU沒有內(nèi)存映射功能如S3C44B0),從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應用程序準備好正確的環(huán)境。 通常,BootLoader 是依賴于硬件而實現(xiàn)的,特別是在嵌入式領域,為嵌入式系統(tǒng)建立一個通用的 BootLoader 是很困難的。,ARM軟件設計與代碼分析,72,BootLoader 的移植和修改,BootLoader除了依賴于 CPU 的體系結構外,

22、BootLoader 實際上也依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,RAM芯片的類型,其他外設的類型等。 對于兩塊不同的嵌入式板而言,即使它們是基于同一種 CPU而構建的,如果他們的硬件資源和配置不一致的話,要想讓運行在一塊板子上的BootLoader程序也能運行在另一塊板子上,也還是需要作一些必要的修改。,ARM軟件設計與代碼分析,73,BootLoader 的安裝,系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先安排的地址上取指令。比如,S3C44B0在復位時都從地址 0 x00000000 取它的第一條指令。 嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設備(比如:RO

23、M、EEPROM或FLASH等)被安排這個起始地址上,因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。 也就是說對于基于S3C44B0的這套系統(tǒng),我們的BootLoader是從0地址開始存放的,而這塊起始地址需要采用可引導的固態(tài)存儲設備如FLASH。,ARM軟件設計與代碼分析,74,用來控制 BootLoader 的設備或機制,串口通訊是最簡單也是最廉價的一種雙機通訊設備,所以往往在BootLoader中主機和目標機之間都通過串口建立連接,BootLoader 程序在執(zhí)行時通常會通過串口來進行 I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。當然如果認為串口通訊速度不夠

24、,也可以采用網(wǎng)絡或者USB通訊,那么相應的在BootLoader中就需要編寫各自的驅(qū)動。,ARM軟件設計與代碼分析,75,Boot Loader 的操作模式,啟動加載模式:這種模式也稱為自主(Autonomous)模式。也即BootLoader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到RAM中運行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式。 下載模式:在這種模式下,目標機上的BootLoader將通過串口連接或網(wǎng)絡連接等通信手段從主機下載文件,比如:下載應用程序、數(shù)據(jù)文件、內(nèi)核映像等。從主機下載的文件通常首先被BootLoader保存到目標機的RAM中,然后再

25、被 BootLoader寫到目標機上的固態(tài)存儲設備中。BootLoader 的這種模式通常在系統(tǒng)更新時使用。工作于這種模式下的 BootLoader 通常都會向它的終端用戶提供一個簡單的命令行接口。 在教學系統(tǒng)中提供的BootLoader中沒有實現(xiàn)自主模式,可以通過修改代碼來實現(xiàn)該功能。,ARM軟件設計與代碼分析,76,BootLoader與主機間文件傳輸?shù)耐ㄐ旁O備及協(xié)議,最常見的情況就是,目標機上的 Boot Loader 通過串口與主機之間進行文件傳輸,傳輸可以簡單的采用直接數(shù)據(jù)收發(fā),當然在串口上也可以采用xmodemymodemzmodem 協(xié)議以及 在以太網(wǎng)上采用TFTP協(xié)議。,ARM

26、軟件設計與代碼分析,77,BootLoader的主要任務與典型結構框架,從操作系統(tǒng)的角度看,BootLoader的總目標就是正確地調(diào)用內(nèi)核來執(zhí)行。 大多數(shù)BootLoader都分為stage1和stage2兩大部分。 依賴于CPU體系結構的代碼,比如設備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的,也就是前面說的啟動代碼。 而stage2 則通常用C語言來實現(xiàn),這樣可以實現(xiàn)復雜的功能,而且代碼會具有更好的可讀性和可移植性。,ARM軟件設計與代碼分析,78,BootLoader的主要任務與典型結構框架,BootLoader的stage1通常包括以下步驟

27、 為加載 BootLoader 的 stage2 準備 RAM 空間 拷貝 BootLoader 的 stage2 到 RAM 空間中 設置好堆棧 跳轉(zhuǎn)到 stage2 的 C 入口點 BootLoader的stage2通常包括以下步驟 初始化本階段要使用到的硬件設備 調(diào)用應用程序或啟動內(nèi)核,ARM軟件設計與代碼分析,79,Stage 1初始化流程圖,stage 1的功能: RAM初始化,設置各個部件的時鐘和片選,將BootLoader拷貝到RAM中,設置堆棧,調(diào)用Stage 2。 注意:在本階段,特別是在堆棧設置之前,進行函數(shù)調(diào)用(也有些匯編子程序不需要使用堆棧)或者使用堆棧保存數(shù)據(jù)將產(chǎn)生不

28、可預知的結果;,ARM軟件設計與代碼分析,80,Stage 2流程圖,stage 2的功能:初始化串口,顯示菜單,通過菜單獲取用戶輸入,并執(zhí)行相應的操作。,ARM軟件設計與代碼分析,81,Bootloader更新程序流程圖,通過BootLoader更新程序的流程。注意為了使用Bootloader更新FLASH中的程序,需要首先將Bootloader搬遷到RAM中運行。,ARM軟件設計與代碼分析,82,嵌入式實時操作系統(tǒng),ARM軟件設計與代碼分析,將在后面介紹,83,板級支持包,ARM軟件設計與代碼分析,BSP(板級支持包)是介于底層硬件和操作系統(tǒng)之間的軟件層次,它完成系統(tǒng)上電后最初的硬件和軟件

29、初始化,并對底層硬件進行封裝,使得操作系統(tǒng)不再面對具體的操作。,84,板級支持包的特點,ARM軟件設計與代碼分析,硬件相關性:因為嵌入式實時系統(tǒng)的硬件環(huán)境具有應用相關性,所以,作為高層軟件與硬件之間的接口,BSP必須為操作系統(tǒng)提供操作和控制具體硬件的方法。 操作系統(tǒng)相關性:不同的操作系統(tǒng)具有各自的軟件層次結構,因此,不同的操作系統(tǒng)具有特定的硬件接口形式。,85,板級支持包的功能,ARM軟件設計與代碼分析,86,板級支持包的功能,ARM軟件設計與代碼分析,嵌入式系統(tǒng)初始化 片級初始化 板級初始化 系統(tǒng)級初始化 硬件相關的設備驅(qū)動程序,87,系統(tǒng)級初始化,ARM軟件設計與代碼分析,這是一個以軟件初

30、始化為主的過程,主要進行操作系統(tǒng)初始化。BSP將控制轉(zhuǎn)交給操作系統(tǒng),由操作系統(tǒng)進行余下的初始化操作。包括加載和初始化與硬件無關的設備驅(qū)動程序,建立系統(tǒng)內(nèi)存區(qū),加載并初始化其他系統(tǒng)軟件模塊,比如網(wǎng)絡系統(tǒng)、文件系統(tǒng)等;最后,操作系統(tǒng)創(chuàng)建應用程序環(huán)境并將控制轉(zhuǎn)交給應用程序的入口。,88,硬件相關的驅(qū)動程序,ARM軟件設計與代碼分析,與初始化過程相反,硬件相關的設備驅(qū)動程序的初始化和使用通常是一個從高層到底層的過程。 盡管BSP中包含硬件相關的設備驅(qū)動程序,但是這些設備驅(qū)動程序通常不直接由BSP使用,而是在系統(tǒng)初始化過程中由BSP把它們與操作系統(tǒng)中通用的設備驅(qū)動程序關聯(lián)起來,并在隨后的應用中由通用的設

31、備驅(qū)動程序調(diào)用,實現(xiàn)對硬件設備的操作。,89,JX44B0應用代碼設計及中斷處理,ARM軟件設計與代碼分析,連接腳本,90,JX44B0應用代碼中斷向量,ARM軟件設計與代碼分析,起始地址0 x0c000008,除復位異常外,其余異常入口地址由FLASH跳轉(zhuǎn)得到,91,JX44B0中斷處理流程,執(zhí)行0 x18處指令:LDR pc, = 0 x0c000020,由Bootloader控制,執(zhí)行0 x0c000020處指令:HandlerIRQ,ramstart.s,執(zhí)行HandlerIRQ,ramstart.s,執(zhí)行HandleIRQ處保存的中斷分發(fā)例程,ramstart.s中初始化為IsrIR

32、Q,ARM軟件設計與代碼分析,92,用匯編代碼編寫的中斷分發(fā)例程,保護現(xiàn)場 IsrIRQ:/*using I_ISPR register.*/ sub lr,lr,#4 stmfd sp!,lr /* 保存中斷返回的PC值 */ stmfd sp!,r0-r4 /* 備份寄存器R0-R4 */ sub sp,sp,#4 /* 為PC預留??臻g */ stmfd sp!,r8-r9 /* 備份寄存器R8-R9 */ ldr r9,=I_ISPR /* 讀取中斷狀態(tài) */ ldr r9,r9,R9中保存中斷狀態(tài),ARM軟件設計與代碼分析,93,用匯編代碼編寫的中斷分發(fā)例程,尋找中斷源 cmp r9, #0 x0 /* 檢查中斷狀態(tài) */ beq i2 mov r8,#0 x0 /* R8保存中斷表的偏移 */ i0: /* 逐位檢查中斷狀態(tài) */ movs r9,r9

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論