微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì):第11章 嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程_第1頁(yè)
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì):第11章 嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程_第2頁(yè)
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì):第11章 嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程_第3頁(yè)
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì):第11章 嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程_第4頁(yè)
微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì):第11章 嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十一章2022/7/16嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程選擇芯片繪制原理圖PCB布線制作PCB調(diào)試硬件板移植系統(tǒng)軟件編寫(xiě)應(yīng)用軟件嵌入式軟件系統(tǒng)結(jié)構(gòu)簡(jiǎn)單的嵌入式應(yīng)用若嵌入式系統(tǒng)的功能需求比較簡(jiǎn)單,嵌入式系統(tǒng)軟件只需完成較簡(jiǎn)單的監(jiān)控、驅(qū)動(dòng)和處理功能,則不需要嵌入式操作系統(tǒng)的支持。如基于8051的應(yīng)用:玩具、家電、汽車(chē)等的控制系統(tǒng)復(fù)雜的嵌入式應(yīng)用若嵌入式系統(tǒng)的功能需求比較復(fù)雜,需要圖形用戶界面、網(wǎng)絡(luò)管理、存儲(chǔ)管理、進(jìn)程/線程管理或需要支持二次開(kāi)發(fā)等,則通過(guò)嵌入式操作系統(tǒng)的幫助,可以加快嵌入式系統(tǒng)軟件的開(kāi)發(fā)進(jìn)度和可靠性。如基于ARM的應(yīng)用:手機(jī)、 PDA簡(jiǎn)單嵌入式系統(tǒng)軟件結(jié)構(gòu)不需要使用操作系統(tǒng),基于裸機(jī)開(kāi)發(fā)系統(tǒng)上

2、電后轉(zhuǎn)移到main函數(shù)入口,首先進(jìn)行系統(tǒng)初始化,然后進(jìn)入工作循環(huán)直到系統(tǒng)停電或者出現(xiàn)重大錯(cuò)誤。void main(void) /變量、參數(shù)等的定義及說(shuō)明 X_init( ); /系統(tǒng)初始化,一般為匯編代碼While(1) X( ); /超級(jí)循環(huán)復(fù)雜嵌入式系統(tǒng)軟件的一般結(jié)構(gòu)ARM+M+I/OHAL、底層封裝、部分由OS提供BOOTLOAD復(fù)雜嵌入式系統(tǒng)軟件工作流程嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)功能處理器管理存儲(chǔ)管理中斷管理時(shí)間管理任務(wù)擴(kuò)展管理文件管理嵌入式實(shí)時(shí)操作系統(tǒng)RTlinux及其他嵌入式實(shí)時(shí)LinuxuC/OS IIeCOSVxworks (wind river systems公司)QNX

3、(QNX software systems公司)pSOSOS/9VRTXThreadX嵌入式非實(shí)時(shí)操作系統(tǒng) 一些嵌入inux系統(tǒng)Windows CE、Embedded windows xp(Microsoft)Palm OS (Palm公司)EPOC (Symbian公司)LINUX嵌入式操作系統(tǒng)Linux是一個(gè)類Unix(Unix-like)的、免費(fèi)的、源代碼開(kāi)放的、符合POSIX(Portable Operating System Interface Standard)標(biāo)準(zhǔn)規(guī)范的操作系統(tǒng);嚴(yán)格來(lái)說(shuō),Linux指由Linux Torvalds維護(hù)的(及通過(guò)主要鏡像網(wǎng)站發(fā)布的)內(nèi)核,而整個(gè)Li

4、nux系統(tǒng)的其它大部分都建立在GNU軟件之上;嵌入式Linux內(nèi)核為特殊的硬件配置、或?yàn)榱酥С痔貏e的應(yīng)用而經(jīng)過(guò)特別的裁剪的修改過(guò)的Linux內(nèi)核;通常具有不同于工作站與服務(wù)器的內(nèi)核配置;嵌入式Linux系統(tǒng)基于Linux內(nèi)核的嵌入式系統(tǒng);嵌入式Linux發(fā)行套件開(kāi)發(fā)嵌入式Linux系統(tǒng)的平臺(tái);各種為了在嵌入式系統(tǒng)中使用而剪裁過(guò)的應(yīng)用軟件;LINUX內(nèi)核的發(fā)展歷史1991年11月,芬蘭赫爾辛基大學(xué)的學(xué)生 Linus Torvalds寫(xiě)了個(gè)小程序,取名為L(zhǎng)inux,放在互聯(lián)網(wǎng)上。他表達(dá)了一個(gè)愿望,希望借此搞出一個(gè)操作系統(tǒng)的“內(nèi)核”來(lái),這完全是一個(gè)偶然事件;1993,在一批高水平黑客的參與下,誕生了

5、Linux 1.0 版 ;1994年,Linux 的第一個(gè)商業(yè)發(fā)行版 Slackware 問(wèn)世;1996年,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)局的計(jì)算機(jī)系統(tǒng)實(shí)驗(yàn)室確認(rèn) Linux 版本 1.2.13(由 Open Linux 公司打包)符合 POSIX 標(biāo)準(zhǔn);2001年,Linux2.4版內(nèi)核發(fā)布 ;2003年,Linux2.6版內(nèi)核發(fā)布;Linux內(nèi)核版本號(hào)由3位數(shù)字組成r.x.y第1位數(shù)字r為主版本號(hào) 第2位數(shù)字x為說(shuō)明版本類型的次版本號(hào),如果x為偶數(shù),則表示為產(chǎn)品化版本,為奇數(shù)時(shí)表示為實(shí)驗(yàn)版本 第3位數(shù)字y為修改號(hào),表示錯(cuò)誤修補(bǔ)的次數(shù) 幾種流行的Linux OS發(fā)行版本交叉編譯在一種機(jī)器上編譯可在另一種機(jī)

6、器上運(yùn)行的程序如:pc機(jī)上編譯ARM可執(zhí)行程序。Arm-linux-gcc輸出支持ARM體系結(jié)構(gòu)的Elf文件引導(dǎo)程序BootLoader是嵌入式系統(tǒng)在加電啟動(dòng)后執(zhí)行的第一段代碼,功能類似pc機(jī)的BIOS和OS Loader,通常需要固化在目標(biāo)板中;主要負(fù)責(zé)CPU、存儲(chǔ)器及相關(guān)硬件的初始化,以及將裝載操作系統(tǒng)映像到內(nèi)存中,然后跳轉(zhuǎn)到規(guī)定的地址啟動(dòng)操作系統(tǒng)運(yùn)行。 Bootloader是嚴(yán)重依賴硬件而實(shí)現(xiàn)的,每一種不同體系結(jié)構(gòu)的處理器都有不同的Bootloader,甚至同一種處理器的外圍硬件配置不同,其Bootloader也有差別。因此開(kāi)發(fā)特定的Bootloader是構(gòu)建嵌入式linux系統(tǒng)之前的一

7、項(xiàng)必要的基礎(chǔ)工作。Bootloader的開(kāi)發(fā)Stage1(匯編實(shí)現(xiàn))基本硬件設(shè)備初始化:CPU時(shí)鐘頻率,寄存器,存儲(chǔ)器數(shù)據(jù)寬度、訪問(wèn)周期、刷新周期,中斷系統(tǒng),I/O端口等;為第二階段準(zhǔn)備RAM空間;復(fù)制第二階段代碼到RAM中;設(shè)置堆棧;并跳轉(zhuǎn)到第二階段入口點(diǎn);Stage2(C實(shí)現(xiàn))初始化本階段要使用到的硬件設(shè)備,實(shí)現(xiàn)對(duì)板級(jí)驅(qū)動(dòng)的支持;檢測(cè)系統(tǒng)內(nèi)存映射;將內(nèi)核鏡像和根文件系統(tǒng)鏡像從flash讀到RAM中;為內(nèi)核設(shè)置啟動(dòng)參數(shù);將PC指針指向內(nèi)核的入口處,調(diào)用內(nèi)核。掛載文件系統(tǒng);Linux 環(huán)境下BootLoader種類BootloaderMonitor描 述x86ARMPowerPCLILO否Li

8、nux磁盤(pán)引導(dǎo)程序是否否GRUB否GNU的LILO替代程序是否否Loadlin否從DOS引導(dǎo)Linux是否否ROLO否從ROM引導(dǎo)Linux而不需要BIOS是否否Etherboot否通過(guò)以太網(wǎng)卡啟動(dòng)Linux系統(tǒng)的固件是否否LinuxBIOS否完全替代BUIS的Linux引導(dǎo)程序是否否BLOB否LART等硬件平臺(tái)的引導(dǎo)程序否是否U-boot是通用引導(dǎo)程序是是是RedBoot是基于eCos的引導(dǎo)程序是是是u-bootuboot全稱 Universal Boot Loader,支持ARM體系等多種處理器,包含常見(jiàn)的外設(shè)的驅(qū)動(dòng),是一個(gè)開(kāi)源的、功能強(qiáng)大的板極支持包;由德國(guó)DENX軟件工程中心的Wolf

9、gang Denk維護(hù)。u-boot啟動(dòng)時(shí)處于正常的啟動(dòng)加載模式,但是它會(huì)延時(shí)指定時(shí)間(單位秒)等待終端用戶按下任意鍵而切換到下載模式,如果在指定時(shí)間內(nèi)用戶沒(méi)有按鍵,則繼續(xù)啟動(dòng)操作系統(tǒng)。u-boot主要包括以下目錄:include:U-Boot頭文件,其configs子目錄下是與目標(biāo)板相關(guān)的配置頭文件; board:目標(biāo)板相關(guān)文件,包含SDRAM、Flash驅(qū)動(dòng)等;cpu:與處理器相關(guān)文件,如網(wǎng)口、中斷初始化等; lib_xxx:處理器體系相關(guān)的文件,如lib_ppc, lib_arm目錄分別包含與PowerPC、ARM體系結(jié)構(gòu)相關(guān)的文件;driver: 通用設(shè)備驅(qū)動(dòng),如CFI FLASH驅(qū)動(dòng)

10、;net:與網(wǎng)絡(luò)功能相關(guān)的文件目錄,如bootp,nfs,tftp; post:上電自檢文件目錄。 doc:U-Boot的說(shuō)明文檔;examples:可在U-Boot下運(yùn)行的示例程序;tools 用于創(chuàng)建U-Boot S-RECORD和BIN鏡像文件的工具S3C2440啟動(dòng)方式韓國(guó)三星公司的S3C2440支持Nor Flash和Nand Flash啟動(dòng), 可以通過(guò)硬件跳線(引腳OM1:0)設(shè)置啟動(dòng)方式。具體含義如下:OM1:0=00時(shí),處理器從NAND Flash啟動(dòng)OM1:0=01時(shí),處理器從16位寬度的Nor Flash啟動(dòng)OM1:0=10時(shí),處理器從32位寬度的Nor Flash啟動(dòng)OM

11、1:0=11時(shí),處理器從Test Mode啟動(dòng)S3C2440 Nand Flash啟動(dòng)過(guò)程:在系統(tǒng)上電后,Nand Flash控制器會(huì)自動(dòng)的把Nand Flash上的前4K U-BOOT數(shù)據(jù)搬移到內(nèi)部SRAM的地址最低端(此SRAM被稱為Steppingstone);CPU從內(nèi)部RAM的0 x00000000位置開(kāi)始啟動(dòng)并在uboot啟動(dòng)代碼的前4K里完成S3C2440的核心配置,然后把U-BOOT剩余部分搬到RAM中運(yùn)行; S3C2440 Nand Flash嵌入式Linux系統(tǒng)結(jié)構(gòu)圖 嵌入式Linux具有分層的體系結(jié)構(gòu),一般可分為3小層及內(nèi)核空間和用戶空間兩大塊,每一層模塊都屏蔽了其以下各

12、層的具體細(xì)節(jié),只對(duì)上層提供功能接口或圖形界面。上層模塊不需要知道其以下各層模塊的實(shí)現(xiàn)方式,只需要利用下層提供的接口完成相應(yīng)功能即可。這樣的層次模型大大增加了嵌入式Linux的安全性、穩(wěn)定性、裁減或增添模塊的便利性。Linux內(nèi)核的各子系統(tǒng)之間的關(guān)系 嵌入式Linux內(nèi)核一般可以分為4個(gè)部分:進(jìn)程調(diào)度管理、內(nèi)存管理、文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序,它們之間的關(guān)系如上圖所示。進(jìn)程調(diào)度處于中心位置,其他所有子系統(tǒng)都依賴于它。在嵌入式系統(tǒng)中,嵌入式Linux的實(shí)時(shí)性能改造與進(jìn)程調(diào)度有很大的關(guān)系,調(diào)度策略的算法直接關(guān)系到系統(tǒng)的實(shí)時(shí)性能。嵌入式Linux中的文件系統(tǒng)結(jié)構(gòu) 嵌入式Linux的文件系統(tǒng)建立在塊設(shè)備上,

13、不采用驅(qū)動(dòng)器號(hào)或驅(qū)動(dòng)器名稱來(lái)標(biāo)識(shí),而是采用了樹(shù)形結(jié)構(gòu),每個(gè)獨(dú)立文件系統(tǒng)為一個(gè)子樹(shù),組成樹(shù)形的層次化的結(jié)構(gòu)。當(dāng)引入新的文件系統(tǒng)時(shí),嵌入式Linux通過(guò)掛載方式將其連接到某個(gè)目錄,從而使不同的文件系統(tǒng)組合成一個(gè)整體成為可能。嵌入式LINUX內(nèi)核移植如果一個(gè)系統(tǒng)是可以在不同的硬件平臺(tái)上運(yùn)行,那么這個(gè)系統(tǒng)就是可移植的。Linux內(nèi)核移植指根據(jù)自己的硬件平臺(tái)對(duì)內(nèi)核源代碼進(jìn)行修改,同時(shí)對(duì)內(nèi)核進(jìn)行裁剪,編譯出適合自己硬件平臺(tái)的內(nèi)核鏡像文件。Linux內(nèi)核源代碼包括多個(gè)目錄:(1)arch:包括硬件特定內(nèi)核代碼,如arm、mips等;(2)drivers:包含硬件驅(qū)動(dòng)代碼;(3)include:通用頭文件及針

14、對(duì)不同平臺(tái)的特定頭文件;(4)init:內(nèi)核初始化代碼;(5)ipc:進(jìn)程間通信代碼;(6)kernel:內(nèi)核核心代碼;(7)mm:內(nèi)存管理代碼;(8)net:與網(wǎng)絡(luò)協(xié)議棧相關(guān)的代碼;(9)fs:文件系統(tǒng)相關(guān)代碼,如nfs、vfat等;(10)lib:庫(kù)文件,與平臺(tái)無(wú)關(guān)的strlen、strcpy等嵌入式LINUX的配置與編譯 對(duì)linux內(nèi)核的裁剪是通過(guò)內(nèi)核配置來(lái)實(shí)現(xiàn)的,在內(nèi)核配置過(guò)程中可以選擇自己需要的功能,而取消掉自己不需要的功能,這樣可以在滿足自己需要的同時(shí)盡可能的縮小內(nèi)核鏡像的大小,這在嵌入式開(kāi)發(fā)中是至關(guān)重要的。 對(duì)linux進(jìn)行配置的方法是:在終端下進(jìn)入內(nèi)核源代碼目錄,輸入命令make menuconfig進(jìn)入內(nèi)核配置窗口;配置完畢后,在終端命令行下輸入命令make即可在linux內(nèi)核目錄/arch/*/boot文件夾下生成內(nèi)核

溫馨提示

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

評(píng)論

0/150

提交評(píng)論