《2 ARM嵌入式開發(fā)模式和基本開發(fā)流程》由會(huì)員分享,可在線閱讀,更多相關(guān)《2 ARM嵌入式開發(fā)模式和基本開發(fā)流程(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,ARM,嵌入式開發(fā)模式和基本開發(fā)流程,第2章,ARM,嵌入式開發(fā)模式和基本流程,內(nèi) 容,2.1,ARM,嵌入式開發(fā)模式,2.2,ARM,嵌入式開發(fā)流程,2.3,ARM,嵌入式系統(tǒng)控制界面,2.1,ARM,嵌入式開發(fā)模式,目標(biāo)機(jī)/宿主機(jī)開發(fā)模式,宿主機(jī)需要運(yùn)行一些軟件進(jìn)行程序編輯、編譯和調(diào)試等功能,這些軟件通常稱為集成開發(fā)環(huán)境(,IDE)。,集成開發(fā)環(huán)境,1、針對(duì)處理器的集成開發(fā)環(huán)境:,傳統(tǒng)的單片機(jī)程序開發(fā)環(huán)境一樣,是針對(duì)特定處理器的,而不是針對(duì)特定程序或者操作系統(tǒng)的。,主要采用在線仿真模式進(jìn)行調(diào)試,主要用于
2、調(diào)試無(wú)操作系統(tǒng)的程序和沒有指定編譯環(huán)境和集成開發(fā)環(huán)境的操作系統(tǒng)(如,uC,/OS-II、Nucleus)。,如,ARM ADS、ADT IDE,等。,2、針對(duì)操作系統(tǒng)的集成開發(fā)環(huán)境:,不是針對(duì)某一種處理器,而是針對(duì)某一種操作系統(tǒng),并支持多種不同的處理器。,主要采用駐留監(jiān)控模式進(jìn)行調(diào)試。,如開發(fā),VxWorks,的,Tornado,和,WorkBench,、,開發(fā),Windows CE,的,Platform Builder、,開發(fā),Linux,的,GNU,工具鏈等。,調(diào)試模式,1、在線仿真模式,2、駐留監(jiān)控模式,在線仿真模式,JTAG,邊界掃描即,IEEE 1149.1,標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)定義了可用
3、于完成功能和互連測(cè)試以及內(nèi)建自測(cè)過(guò)程的各種指令。,仿真器在調(diào)試時(shí)不額外占用目標(biāo)板的資源,包括,RAM、GPIO,端口等。,宿主機(jī),ADS 1.2,或,ADTIDE,在線仿真器,Multi-ICE,或,ADT1000A,嵌入式系統(tǒng),并口,JTAG,接口,駐留監(jiān)控模式,駐留監(jiān)控程序是一個(gè)特殊應(yīng)用的程序,開發(fā)者先將駐留監(jiān)控程序調(diào)試好并在目標(biāo)機(jī)上運(yùn)行,駐留監(jiān)控程序通過(guò)特定的通信方式(如以太網(wǎng)、,USB,等)和運(yùn)行于宿主機(jī)的集成開發(fā)環(huán)境進(jìn)行通信實(shí)現(xiàn)程序下載、調(diào)試等功能。,這種模式下載速度快,和集成開發(fā)環(huán)境連接緊密,但該程序運(yùn)行需要占用一些目標(biāo)板資源。,調(diào)試駐留監(jiān)控程序通常采用在線仿真模式進(jìn)行。,駐留監(jiān)控
4、程序有:,VxWorks,操作系統(tǒng)的,bootrom,、Linux,操作系統(tǒng)的,u-boot、Windows CE,的,Eboot,等。,2.2,ARM,嵌入式開發(fā)流程,需求分析,1 硬件需求分析,處理性能,技術(shù)指標(biāo)和成本,功耗,操作系統(tǒng)和軟件支持工具的選擇,2 軟件需求分析,實(shí)時(shí)性,系統(tǒng)的功能,開發(fā)的難度,成本,系統(tǒng)移植,這個(gè)階段根據(jù)不同的軟件設(shè)計(jì)方案可能不同。對(duì)于無(wú)操作系統(tǒng)的應(yīng)用該階段的主要目的是設(shè)計(jì)啟動(dòng)代碼。對(duì)于有操作系統(tǒng)的應(yīng)用則包括,bootloader,的移植和操作系統(tǒng)的移植。,啟動(dòng)代碼,由于,ARM,軟件編程一般采用高級(jí)語(yǔ)言,如,C,語(yǔ)言,因此在系統(tǒng)啟動(dòng)后必須有一段程序能夠?qū)?CP
5、U,帶入到能夠運(yùn)行,C,語(yǔ)言的狀態(tài),這段程序就是啟動(dòng)代碼。,啟動(dòng)代碼通常用匯編語(yǔ)言完成,并在系統(tǒng)復(fù)位入口點(diǎn)(,ARM,系統(tǒng)中為0地址)運(yùn)行。,在嵌入式系統(tǒng)中系統(tǒng)復(fù)位入口點(diǎn)所在的硬件通常是,Flash,等芯片,存儲(chǔ)在這些芯片中的數(shù)據(jù)即使掉電也能夠保存,而且這個(gè)地方的硬件的訪問寬度是由硬件設(shè)計(jì)決定,軟件不能更改,這樣就能保證上電后該地址的數(shù)據(jù)有效。,ARM,代碼結(jié)構(gòu),ARM,程序編譯后得到的二進(jìn)制代碼通常包含:,代碼段(,text,段或,code,段):編譯后的代碼,只讀,讀寫數(shù)據(jù)段(,data,段):可讀寫的全局變量,讀寫,只讀數(shù)據(jù)段(,rodata,段):只讀數(shù)據(jù),如,const,類型的全局變
6、量,BSS,段:需要清0的數(shù)據(jù),這些段在鏈接(,link),過(guò)程中產(chǎn)生,并且在鏈接過(guò)程中都應(yīng)該設(shè)置各段的起始地址。程序必須從代碼段指定的起始位置處運(yùn)行。,根據(jù)代碼段運(yùn)行所在地址的硬件介質(zhì)不同可以將程序分為在,RAM,運(yùn)行的程序和在,ROM,運(yùn)行的程序。,在,RAM,運(yùn)行程序結(jié)構(gòu)圖,在,ROM,運(yùn)行程序結(jié)構(gòu)圖,啟動(dòng)代碼主要功能(1),1、建立異常向量表,2、初始化硬件:初始化,RAM、,關(guān)閉中斷、關(guān)閉看門狗等,3、初始化堆棧,4、初始化讀寫數(shù)據(jù)段、,BSS,段:,在,ROM,中運(yùn)行的程序必須將數(shù)據(jù)段從,ROM,中拷貝到,RAM,中,并將,BSS,段清零;,在,RAM,中運(yùn)行的程序則需要將,BSS
7、,段清零,然后將整個(gè)代碼段、只讀數(shù)據(jù)段、讀寫數(shù)據(jù)段和,BSS,段從,ROM,拷貝到,RAM。,啟動(dòng)代碼主要功能(2),5、,重定向,位置無(wú)關(guān)的代碼是指該代碼不用在編譯指定的地址 運(yùn)行也能保證程序的執(zhí)行流程和執(zhí)行邏輯不會(huì)改變。,位置相關(guān)代碼運(yùn)行的地址必須和編譯時(shí)的地址一致,否則將導(dǎo)致程序運(yùn)行流程改變。,在初始化程序區(qū)、數(shù)據(jù)區(qū)之后需要一條跳轉(zhuǎn)指令將,PC,跳轉(zhuǎn)到編譯時(shí)指定的運(yùn)行地址接著運(yùn)行。,LDR,指令及之前的指令都在,ROM,中運(yùn)行,而,startram,標(biāo)號(hào)之后的代碼則跳轉(zhuǎn)到編譯時(shí)指定的地址(,RAM,或者,ROM,中)中運(yùn)行了,因?yàn)?startram,標(biāo)號(hào)表示的地址是由編譯時(shí)就確定的。這個(gè)
8、過(guò)程就是重定向。,LDRPC,=,startram,startram,:,重定向之前運(yùn)行的代碼必須是位置無(wú)關(guān)的代碼。,啟動(dòng)代碼主要功能(3),6、,跳轉(zhuǎn)到,C,代碼,LDRPC,=Main,Bootloader,在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行于非易失性存儲(chǔ)介質(zhì)的一段小程序。,在,BootLoader,中主機(jī)和目標(biāo)機(jī)之間都通過(guò)串口建立連接,,BootLoader,程序在執(zhí)行時(shí)通常會(huì)通過(guò)串口來(lái)進(jìn)行,I/O,,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。,操作模式:,啟動(dòng)加載模式,下載模式,常用串口、以太網(wǎng)、,USB,等接口在主機(jī)和目標(biāo)機(jī)之間傳遞數(shù)據(jù)(如下載程序)。,常見的,Bootloader
9、,u-boot,支持,PowerPC、ARM、,Xscale,、MIPS、,Coldfire,、NIOS、,Microblaze,和,x86,等。,除了支持,Linux,系統(tǒng)的引導(dǎo)外,還支持,NetBSD,、,VxWorks,、QNX、RTEMS、ARTOS、,LynxOS,等多種嵌入式操作系統(tǒng)的引導(dǎo)。,用戶接口類似于,Linux,的,shell,界面,通過(guò)串口連接,用戶可以交互式的輸入命令和看到結(jié)果。,使用,u-boot,可通過(guò)串口、以太網(wǎng)等接口從宿主機(jī)下載程序并引導(dǎo)系統(tǒng),同時(shí)還可以將程序固化到,Flash,中,它提供靈活的環(huán)境變量操作接口,方便實(shí)現(xiàn)自主模式和引導(dǎo)模式之間的切換。,常見的,B
10、ootloader,BootRom,BootRom,是,用于,VxWorks,操作系統(tǒng)開發(fā)的,bootloader,。,和,Tornado,等集成開發(fā)環(huán)境緊密結(jié)合。,可通過(guò)某種可選擇的通信手段(如網(wǎng)口、串口),將,VxWorks,內(nèi)核加載到目標(biāo)板。,BootRom,還提供如地址內(nèi)容查看、地址內(nèi)容修改和,BootRom,菜單顯示信息控制等功能。,常見的,Bootloader,EBoot,Eboot,是用于,Windows CE,操作系統(tǒng)開發(fā)的,bootloader,。,它通過(guò)以太網(wǎng)和主機(jī)的集成開發(fā)環(huán)境,Platform Builder,進(jìn)行通信,可以實(shí)現(xiàn),Windows CE,內(nèi)核的下載、調(diào)試。
11、,此外,Eboot,提供,Flash,固化等功能。,操作系統(tǒng)的移植,必須根據(jù)硬件平臺(tái)和應(yīng)用場(chǎng)合將某種操作系統(tǒng)進(jìn)行定制和代碼修改使其能夠運(yùn)行在該硬件平臺(tái)上,這個(gè)過(guò)程就是操作系統(tǒng)的移植。,操作系統(tǒng)提供商將針對(duì)某一個(gè)處理器的公板移植代碼進(jìn)行發(fā)布,用戶進(jìn)行移植時(shí)只需要選擇和你使用相同處理器的公板移植代碼,并根據(jù)你的硬件進(jìn)行適當(dāng)修改,這種移植稱為板級(jí)移植。,如果你所使用的處理器在操作系統(tǒng)的發(fā)布中還沒有一個(gè)公板代碼,則針對(duì)處理器部分的代碼都需要由用戶重寫,這種移植成為片級(jí)移植。,由于硬件資源的限制,嵌入式操作系統(tǒng)通常需要進(jìn)行裁減以減少代碼大小和提高運(yùn)行效率。需要的功能加上,不需要的功能去掉。,應(yīng)用程序設(shè)計(jì)
12、調(diào)試,1、圖形用戶界面:,VxWorks,下的,WindML,Linux,下的,QT Embedded、,MicroWindows,等,Windows CE,的用戶界面則保持傳統(tǒng)的,Windows,風(fēng)格界面,2、實(shí)時(shí)性:在應(yīng)用程序設(shè)計(jì)中同樣也要考慮。,3、功耗:在應(yīng)用程序設(shè)計(jì)時(shí)須充分考慮系統(tǒng)功耗,在不影響系統(tǒng)功能的同時(shí)將功耗降到最低。,4、程序大小,2.3,ARM,嵌入式系統(tǒng)控制界面,要操作,PC,通常必須使用鍵盤和顯示器或者鼠標(biāo)。,ARM,也是一臺(tái)計(jì)算機(jī),在開發(fā)過(guò)程甚至是產(chǎn)品設(shè)計(jì)中也需要有一定的交互方式。,由于硬件的局限,通常不會(huì)使用標(biāo)準(zhǔn)的鍵盤、顯示器作為輸入輸出設(shè)備,而是使用串口連接的方式和宿主機(jī)進(jìn)行通信。,宿主機(jī)運(yùn)行一個(gè)名為超級(jí)終端的軟件,它能夠接收從,ARM,通過(guò)串口發(fā)送過(guò)來(lái)的字符信息,并顯示出來(lái)(相當(dāng)于,ARM,的輸出設(shè)備,如顯示器),該軟件也能獲取用戶輸入并通過(guò)串口發(fā)送到,ARM,,由,ARM,接收并處理(相當(dāng)于,ARM,的輸入設(shè)備,如鍵盤)。,超級(jí)終端軟件,1、,Windows,超級(jí)終端,2、DNW,