實(shí)時操作系統(tǒng)的基本概念_第1頁
實(shí)時操作系統(tǒng)的基本概念_第2頁
實(shí)時操作系統(tǒng)的基本概念_第3頁
實(shí)時操作系統(tǒng)的基本概念_第4頁
實(shí)時操作系統(tǒng)的基本概念_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課前回顧

實(shí)時操作系統(tǒng)的基本概念學(xué)習(xí)目標(biāo)

創(chuàng)建自己的RedBoot了解RedBoot的功能和結(jié)構(gòu)分析一種目標(biāo)板的RedBoot程序?qū)W習(xí)指南作業(yè)二的要求參照書上先完成交叉編譯環(huán)境的安裝最起碼要二種:arm-elf-gcc和i386-elf-gcc到網(wǎng)上參考基本的編譯參數(shù),或去學(xué)院課程FTP上下載相關(guān)文檔,學(xué)會進(jìn)行交叉編譯編譯自己的RedBoot,并在目標(biāo)機(jī)上跑起來可用虛擬機(jī)難重點(diǎn)

編譯生成自己的程序RedBoot并調(diào)試BootROMBank的劃分面對不同速度、總線寬度的外設(shè),通常,嵌入式處理器都把外部總線分成不同的Bank空間,對應(yīng)不同的地址。不同的Bank可以有不同的配置,或者對應(yīng)的功能也不一樣,支持的外設(shè)也不同。S3C44B0的Bank0-5支持,ROM、SRAM等那些線性尋址的存儲器或者外設(shè);Bank6-7,還可以支持SDRAM、DRAM等。而且,每一個Bank都可以配置成8-32bit的總線,大端(bigendian)或者小端(littleendian)等嵌入式處理器的啟動過程(1)通常系統(tǒng)上電(或者復(fù)位)以后,程序從地址空間的0x0開始即PC(程序計數(shù)器)指針,指向0x0。從這個地址開始讀取指令并運(yùn)行。通常這個地址對應(yīng)的是Bank0嵌入式處理器的啟動過程(2)因?yàn)橄到y(tǒng)是從bank0上引導(dǎo)的,所以,在Bank0上連接保存有啟動代碼的FlashROM,這就是我們常說的BootROMBootROM要實(shí)現(xiàn)的主要工作1硬件系統(tǒng)自檢配置其他Bank或者端口、外設(shè)等工作模式處理中系統(tǒng)的中斷在不支持remap的處理器中,中斷必然要經(jīng)過BootROM的空間,這時,BootROM需要處理的任務(wù)就是把固定的中斷向量映射到一個可編程的中斷處理子程序的地址BootROM要實(shí)現(xiàn)的主要工作2引導(dǎo)操作系統(tǒng)系統(tǒng)配置完成以后,BootROM需要把操作系統(tǒng)(或者其他程序)裝載到SDRAM(就是系統(tǒng)的RAM區(qū)),然后,把PC指針指向程序的RAM空間,使操作系統(tǒng)啟動,這就是引導(dǎo)。因此,BootROM中的代碼有常稱之為BootloaderBootROM要實(shí)現(xiàn)的主要工作3Flash(BootROM)編程對引導(dǎo)Flash(或者其他的非易失性存儲器)編程,通過串口或者以太網(wǎng)口下載編譯成功的操作系統(tǒng)或者應(yīng)用程序,甚至BootROM本身。要想實(shí)現(xiàn)BootROM的自編程,必須讓Boot程序是在RAM中運(yùn)行BootROM的制作BootROM使用來配置系統(tǒng)啟動的。沒有BootROM,系統(tǒng)就不能配置,更不能啟動。BootROM可以自編程,但是,第一次系統(tǒng)啟動用的BootROM是如何燒錄的呢?使用插座連接Flash配合編程器通過ARM的JTAG接口BootloaderBootloader的概念BootLoader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。通常,BootLoader是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的BootLoader幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫ootLoader歸納出一些通用的概念來,以指導(dǎo)用戶特定的BootLoader設(shè)計與實(shí)現(xiàn)。嵌入式系統(tǒng)離不開Bootloader每種CPU體系結(jié)構(gòu)都有不同的BootLoader。有些BootLoader也支持多種體系結(jié)構(gòu)的CPU,比如U-Boot就同時支持ARM體系結(jié)構(gòu)和MIPS體系結(jié)構(gòu)。除了依賴于CPU的體系結(jié)構(gòu)外,BootLoader實(shí)際上也依賴于具體的嵌入式板級設(shè)備的配置。這也就是說,對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構(gòu)建的,要想讓運(yùn)行在一塊板子上的BootLoader程序也能運(yùn)行在另一塊板子上,通常也都需要修改BootLoader的源程序。BootLoader的安裝媒介系統(tǒng)加電或復(fù)位后,所有的CPU通常都從某個由CPU制造商預(yù)先安排的地址上取指令。比如,基于ARM7TDMIcore的CPU在復(fù)位時通常都從地址0x00000000取它的第一條指令?;贑PU構(gòu)建的嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設(shè)備(比如:ROM、EEPROM或FLASH等)被映射到這個預(yù)先安排的地址上。因此在系統(tǒng)加電后,CPU將首先執(zhí)行BootLoader程序。典型存儲空間分配結(jié)構(gòu)bootloader啟動參數(shù)內(nèi)核根文件系統(tǒng)Bootloader空間結(jié)構(gòu)劃分控制BootLoader的設(shè)備或機(jī)制主機(jī)和目標(biāo)機(jī)之間一般通過串口建立連接,BootLoader軟件在執(zhí)行時通常會通過串口來進(jìn)行I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等BootLoader的操作模式大多數(shù)BootLoader都包含兩種不同的操作模式:“啟動加載”模式和“下載”模式,這種區(qū)別僅對于開發(fā)人員才有意義。最終用戶的角度看,BootLoader的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與下載工作模式的區(qū)別。啟動加載模式也稱為“自主”(Autonomous)模式。也即BootLoader從目標(biāo)機(jī)上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時侯,BootLoader顯然必須工作在這種模式下。下載模式在這種模式下,目標(biāo)機(jī)上的BootLoader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被BootLoader保存到目標(biāo)機(jī)的RAM中,然后再被BootLoader寫到目標(biāo)機(jī)上的FLASH類固態(tài)存儲設(shè)備中。BootLoader的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用;此外,以后的系統(tǒng)更新也會使用BootLoader的這種工作模式。工作于這種模式下的BootLoader通常都會向它的終端用戶提供一個簡單的命令行接口。BootLoader與主機(jī)如何通信?最常見的情況就是,目標(biāo)機(jī)上的BootLoader通過串口與主機(jī)之間進(jìn)行文件傳輸,傳輸協(xié)議通常是xmodem/ymodem/zmodem協(xié)議中的一種。但是,串口傳輸?shù)乃俣缺容^慢,因此通過以太網(wǎng)連接并借助TFTP協(xié)議來下載文件是個更好的選擇。BootLoader劃分大多數(shù)BootLoader都分為stage1和stage2兩大部分。依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實(shí)現(xiàn),以達(dá)到短小精悍的目的。而stage2則通常用C語言來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)給復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。Stage1通常包括以下步驟(以執(zhí)行的先后順序):硬件設(shè)備初始化。為加載BootLoader的stage2準(zhǔn)備RAM空間。拷貝BootLoader的stage2到RAM空間中。設(shè)置好堆棧。跳轉(zhuǎn)到stage2的C入口點(diǎn)。Stage2通常包括以下步驟(以執(zhí)行的先后順序):初始化本階段要使用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射(memorymap)。將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動參數(shù)。調(diào)用內(nèi)核。Blob的存儲器區(qū)域分配FLASHSDRAM大小Blob0-60KB0x0c10000060KB參數(shù)60-64KB0x0c1100004KB內(nèi)核64-768KB0x0c300000704KB根文件系統(tǒng)768-2048KB0x0c4000001280KB其他硬件RAM:隨機(jī)訪問內(nèi)存非易失性存儲器可以隨時讀寫嵌入式系統(tǒng)中最為常用存儲器RAM靜態(tài)(SRAM)斷電仍然保留數(shù)據(jù)速度很快¥¥動態(tài)(DRAM)斷電數(shù)據(jù)丟失Holdsdataforlessthanasecond比SRAM慢¥需要DRAM控制器進(jìn)行數(shù)據(jù)讀寫ROM:只讀存儲器非易失存儲器只讀,不能寫入用途存儲程序代碼存儲固定數(shù)據(jù)ROMMaskedROM可以長久保留數(shù)據(jù),除非損壞數(shù)據(jù)內(nèi)容在生產(chǎn)時就已經(jīng)確定下來價格低廉OTPPROM可以被編程,僅此一次需要特殊編程設(shè)備(ROM編程器)價格昂貴用于終端設(shè)備ROMEPROM可編程,可被擦寫幾千次壽命約10年,但對光線和電磁波敏感可以使用紫外線擦除數(shù)據(jù)非常昂貴用于設(shè)計開發(fā)環(huán)境EEPROM可編程,可部分被擦寫,可擦寫上萬次壽命約10年可以使用高過正常電壓的方式擦除數(shù)據(jù)讀速度快,寫速度慢非常昂貴用于設(shè)計開發(fā)環(huán)境FlashEEPROM快速擦除可以一次擦除多個Flash塊,而不是一次擦除一個字節(jié)一個Flash塊的大小一般為幾千字節(jié)如果一次寫入單個字節(jié),則速度會下降很多的可以一次讀出整個Flash塊,修改需要修改的內(nèi)容,然后整塊回寫,這樣可以提高效率用于嵌入式系統(tǒng)中存放大量數(shù)據(jù)的非易失性存儲器AFSFlash功能Libraryfunctions:支持應(yīng)用程序訪問ARMFlashUtility(AFU):將應(yīng)用加載到flash或RAM中ARMBootFlashUtility(BootFU):支持對flash啟動區(qū)和FPGA區(qū)域的編程Bootswitcher:選擇并運(yùn)行一個程序鏡像(image).Flash里可以存放多個程序鏡像,可以通過本功能選擇啟動某個程序鏡像。Bootmonitor:從串口加載一個鏡像,并在開發(fā)版上運(yùn)行。本功能提供一個命令行接口,用來提供系統(tǒng)調(diào)試和自檢

。Flash存儲Flash內(nèi)存是嵌入式系統(tǒng)中的一種非常重要的非易失性存儲媒介

。分為兩種:NORflash–

傳統(tǒng)

flash,可以直接訪問NANDflash–

便宜,地址總線和數(shù)據(jù)總線共用一個8位總線。沒用用過的flash中,僅僅包括一個邏輯“1”位Flash存儲對某個Bit的修改,從1到0或從0到1,不能單獨(dú)修改某個Bit,只能修改一個flash塊每一個flash塊都可以支持100,000次擦寫Flash設(shè)備上擁有一個buffer,用來提高寫效率以及減少擦寫的損耗Flash文件系統(tǒng)Flash設(shè)備可以模擬支持512字節(jié)扇區(qū)的塊設(shè)備,例如一個硬盤。Flash設(shè)備和文件系統(tǒng)上的邏輯位并不能直接一一對應(yīng)。效率低下,可靠性差由于擦寫可能帶來損耗,F(xiàn)lash文件系統(tǒng)必須保證擦寫機(jī)會均勻分布為了提供平均損耗以及高可靠性操作,模擬塊設(shè)備的扇區(qū)將數(shù)據(jù)存放在變化的物理位置上,因此需要flash文件系統(tǒng)來實(shí)現(xiàn)邏輯位置和物理位置的轉(zhuǎn)換。FlashImages開發(fā)版上的flash內(nèi)存邏輯上分為兩個部分:ApplicationFlash:存放用戶的應(yīng)用程序和數(shù)據(jù)。BootFlash:存放bootmonitor和

bootswitcher功能,用來加載和調(diào)試應(yīng)用程序FlashImage結(jié)構(gòu)Flash里存放的

image被分為三個到五個部分:Codeanddata:theactualcodeanddatafortheimageHeader:notallimageshaveaheader.Imageinformationblock:holdsadditionalinformationabouttheimagesuchasimagenameandstartaddressEmpty:iftheimagedoesnotcompletel

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論