嵌入式第三章_第1頁
嵌入式第三章_第2頁
嵌入式第三章_第3頁
嵌入式第三章_第4頁
嵌入式第三章_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式第三章第1頁,共85頁,2023年,2月20日,星期一3.1Bootloader簡介Bootloader是指操作系統(tǒng)的啟動加載程序通常引導加載程序包括固化在固件(firmware)中的boot代碼(可選),和Bootloader兩大部分,是系統(tǒng)加電后運行的第一段軟件代碼相對于操作系統(tǒng)內(nèi)核來說,它是一個硬件抽象層第2頁,共85頁,2023年,2月20日,星期一PC機中的引導加載程序兩部分組成:BIOS(其本質(zhì)就是一段固件程序)位于硬盤MBR(MainBootRecord,主引導記錄)中的操作系統(tǒng)Bootloader(如LILO和GRUB等)流程:BIOS在完成硬件檢測和資源分配后,將硬盤MBR中的Bootloader讀到系統(tǒng)的RAM中,然后將控制權(quán)交給操作系統(tǒng)BootloaderBootloader的主要運行任務就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,即開始啟動操作系統(tǒng)。第3頁,共85頁,2023年,2月20日,星期一嵌入式系統(tǒng)中引導加載程序嵌入式系統(tǒng)中通常沒有BIOS那樣的固件程序少數(shù)嵌入式CPU也會內(nèi)嵌一段短小的啟動程序系統(tǒng)的加載啟動任務就完全由Bootloader來完成例如ARM7TDMI中,系統(tǒng)在上電或復位時從地址0x00000000處開始執(zhí)行這個地址存放的是BootLoader程序第4頁,共85頁,2023年,2月20日,星期一典型的嵌入式系統(tǒng)BootloaderBlob:Bootloaderobject的縮寫開源,遵循GPL,很好的Linuxloader,主要針對ARMU-Boot:universalBootloader的縮寫開源,遵循GPL,支持ARM,MIPS,X86,Nios等處理器可啟動VxWorks,QNX,Linux等多種操作系統(tǒng)vivi最初是為S3C2410編寫的,用于啟動Linux,目前版本是0.1.4第5頁,共85頁,2023年,2月20日,星期一Bootloader的概念

在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序功能:初始化硬件設備初始化內(nèi)存空間調(diào)整系統(tǒng)的軟硬件環(huán)境,以便操作系統(tǒng)內(nèi)核啟動Bootloader不通用:依賴于硬件依賴于具體的板級配置不同的CPU有不同的Bootloader有些Bootloader支持多種CPU,如U-Boot支持ARM和MIPS第6頁,共85頁,2023年,2月20日,星期一Bootloader所處的層次位置Bootloader啟動參數(shù)內(nèi)核根文件系統(tǒng)第7頁,共85頁,2023年,2月20日,星期一3.2Bootloader的啟動流程3.2.1進入Bootloader3.2.2Bootloader的輸入輸出3.2.3Bootloader的啟動過程3.2.4Bootloader的操作模式3.2.5Bootloader與主機之間的文件傳輸?shù)?頁,共85頁,2023年,2月20日,星期一3.2.1進入Bootloader系統(tǒng)第一條指令51:100h8086:FFFF:0000ARM:地址0x00000000嵌入式系統(tǒng)通常把固態(tài)存儲設備(比如:ROM、EEPROM或FLASH等)映射到這個預先安排的地址上,而Bootloader就放在這里所以,系統(tǒng)加電后,CPU將首先執(zhí)行Bootloader程序第9頁,共85頁,2023年,2月20日,星期一第10頁,共85頁,2023年,2月20日,星期一3.2.2Bootloader的輸入輸出主機和目標機之間一般可通過串口建立連接,沒有串口的機器需要通過一條USB轉(zhuǎn)串口的電纜才能完成連接Bootloader執(zhí)行時通常會通過串口進行I/O輸出打印信息到串口從串口讀取用戶控制字符等串口的參數(shù)要事先約定,如115200,n,8,1,無流控第11頁,共85頁,2023年,2月20日,星期一3.2.3Bootloader的啟動過程一般采用多階段的Bootloader,它能提供更為復雜的功能,以及更好的可移植性從固態(tài)存儲設備上啟動的Bootloader大多都是2階段的啟動過程,啟動過程分為stage1和stage2兩部分Bootloader的2部分:匯編部分執(zhí)行簡單的硬件初始化C語言部分負責復制OS數(shù)據(jù),設置OS啟動參數(shù),通過串口通信顯示信息等功能第12頁,共85頁,2023年,2月20日,星期一BOOTLOADER的生命周期:1.初始化硬件,如設置CPU主頻,設置RAM刷新頻率并檢測,設置UART(至少設置一個)等2.設置啟動參數(shù),告訴內(nèi)核硬件的信息,如用哪個啟動界面,使用的缺省串口控制臺及其波特率3.跳轉(zhuǎn)到操作系統(tǒng)的首地址4.消亡第13頁,共85頁,2023年,2月20日,星期一3.2.4Bootloader的操作模式1啟動加載模式:又叫自主(Autonomous)模式從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到RAM中運行Bootloader的正常工作模式,沒有外界輸入時的缺省模式第14頁,共85頁,2023年,2月20日,星期一2下載模式:通過串口連接或網(wǎng)絡連接等通信手段連接主機(Host),能下載文件,如下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機下載的文件通常首先被Bootloader保存到目標機的RAM中,然后再被BootLoader寫到目標機上的FLASH類固態(tài)存儲設備中。這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用,當然系統(tǒng)更新也會使用Bootloader的這種工作模式下載模式下通常都會向它的終端用戶提供一個簡單的命令行接口第15頁,共85頁,2023年,2月20日,星期一vivi、Blob或U-Boot等功能強大的Bootloader通常同時支持這兩種工作模式,允許用戶在這兩種工作模式之間進行切換如Blob、uBoot、vivi在啟動時都處于正常的啟動加載模式,但是會延時(通常為10秒左右)等待終端用戶按下任意鍵以切換到下載模式。如在這段時間內(nèi)沒有用戶按鍵,則繼續(xù)啟動操作系統(tǒng),如Linux第16頁,共85頁,2023年,2月20日,星期一3.2.5Bootloader與主機之間

的文件傳輸通常目標機上的Bootloader通過串口與主機之間進行文件傳輸串口傳輸協(xié)議(vivi的常用方式,uBoot也支持)通常是xmodem/ymodem/zmodem協(xié)議中的一種速度有限,一般傳輸文件不能太大可通過以太網(wǎng)連接并借助TFTP協(xié)議來下載文件(U-Boot的常用方式)解決了串口傳輸速度有限的問題要求主機提供TFTP服務第17頁,共85頁,2023年,2月20日,星期一3.3Bootloader的主要任務stage1

通常包括以下步驟:硬件設備初始化為加載Bootloader的stage2準備RAM空間拷貝Bootloader的stage2到RAM空間中設置好堆棧跳轉(zhuǎn)到stage2的C入口點stage2通常包括以下步驟:初始化本階段要使用到的硬件設備檢測系統(tǒng)內(nèi)存映射將kernel

映像和根文件系統(tǒng)映像從flash上讀到RAM空間中為內(nèi)核設置啟動參數(shù)調(diào)用內(nèi)核第18頁,共85頁,2023年,2月20日,星期一stage2

的代碼通常用C語言來實現(xiàn)(stage1的代碼通常用匯編語言來實現(xiàn)),下面的論述針對stage2。要注意代碼的可讀性和可移植性不能使用glibc庫中的任何支持函數(shù)沒有直接把main地址直接作為stage2的入口點1)無法傳遞函數(shù)參數(shù);2)無法處理函數(shù)返回第19頁,共85頁,2023年,2月20日,星期一trampoline(彈簧床)編程方式:用匯編語言寫一段trampoline小程序,并將這段trampoline小程序來作為stage2可執(zhí)行映象的執(zhí)行入口點在trampoline匯編小程序中用CPU跳轉(zhuǎn)指令跳入main()函數(shù)中去執(zhí)行當main()函數(shù)返回時,CPU執(zhí)行路徑顯然再次回到trampoline程序。用trampoline小程序來作為main()函數(shù)的外部包裹(externalwrapper)第20頁,共85頁,2023年,2月20日,星期一blob的trampoline程序示例:

.text .globl_trampoline _trampoline: blmain /*ifmaineverreturnswejustcallitagain*/ b_trampolinevivi的trampoline程序示例:

@getreadtocallCfunctions ldr sp,DW_STACK_START @setupstackpointer movfp,#0 @nopreviousframe,sofp=0 mova2,#0 @setargvtoNULL blmain @callmain; movpc,#FLASH_BASE @otherwise,reboot第21頁,共85頁,2023年,2月20日,星期一串口終端調(diào)試手段:打印信息到串口終端串口終端顯示亂碼或根本沒有顯示(1)Bootloader對串口的初始化設置不正確。(2)運行在host端的終端仿真程序?qū)Υ诘脑O置不正確,這包括:波特率、奇偶校驗、數(shù)據(jù)位和停止位等方面的設置第22頁,共85頁,2023年,2月20日,星期一基本的硬件初始化

目的:為stage2的執(zhí)行以及隨后的kernel的執(zhí)行準備好一些基本的硬件環(huán)境1.屏蔽所有的中斷為中斷提供服務通常是OS設備驅(qū)動程序的責任,Bootloader的執(zhí)行全過程中可以不必響應任何中斷中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器(如ARM的CPSR寄存器)來完成2.設置CPU的速度和時鐘頻率。3.RAM初始化包括正確地設置系統(tǒng)的內(nèi)存控制器的功能寄存器以及各內(nèi)存控制寄存器等。第23頁,共85頁,2023年,2月20日,星期一4.初始化

LED通過GPIO來驅(qū)動LED,其目的是表明系統(tǒng)的狀態(tài)是OK還是Error如板子上沒有LED,那么也可以通過初始化UART向串口打印Bootloader的Logo字符信息5.關閉CPU內(nèi)部指令/數(shù)據(jù)cache第24頁,共85頁,2023年,2月20日,星期一為加載stage2準備RAM空間

通常把stage2加載到RAM空間中來執(zhí)行stage2通常是C語言執(zhí)行代碼,考慮堆??臻g,空間大小最好是存儲器頁大小(通常是4KB)的倍數(shù)一般1MRAM空間已經(jīng)足夠,地址范圍可以任意安排如blob就將stage2可執(zhí)行映像從系統(tǒng)RAM起始地址開始的1M空間內(nèi)執(zhí)行將stage2安排到RAM空間的最頂1MB也是一種值得推薦的方法。stage2_end=stage2_start+stage2_size第25頁,共85頁,2023年,2月20日,星期一對所安排的地址范圍進行測試必須確保所安排的地址范圍為可讀寫的RAM空間測試方法可以采用類似于blob的方法以存儲器的頁為被測試單位,測試每個頁開始的兩個字是否是可讀寫的第26頁,共85頁,2023年,2月20日,星期一拷貝stage2到RAM中

拷貝時需要用到下列地址:stage2的可執(zhí)行映象在固態(tài)存儲設備的存放起始地址和終止地址RAM空間的起始地址。第27頁,共85頁,2023年,2月20日,星期一設置堆棧指針sp通常把sp的值設置為(stage2_end-4)1MB的RAM空間的最頂端(堆棧向下生長)在設置堆棧指針sp之前,也可以關閉led燈,以提示用戶我們準備跳轉(zhuǎn)到stage2第28頁,共85頁,2023年,2月20日,星期一跳轉(zhuǎn)到stage2的C入口點

最后跳轉(zhuǎn)到Bootloader的stage2去執(zhí)行如在ARM系統(tǒng)中,這可以通過修改PC寄存器為合適的地址來實現(xiàn)第29頁,共85頁,2023年,2月20日,星期一初始化本階段要使用到的硬件設備

初始化至少一個串口,以便終端用戶進行I/O輸出信息初始化定時器等在初始化這些設備之前,也可以重新把LED燈點亮,以表明我們已經(jīng)進入main()函數(shù)執(zhí)行設備初始化完成后,可以輸出一些打印信息,程序名字字符串、版本號等第30頁,共85頁,2023年,2月20日,星期一檢測系統(tǒng)的內(nèi)存映射確定在物理地址空間中哪些地址范圍被分配用來尋址系統(tǒng)的RAM單元如SA-1100中,從0xC0000000開始的512M空間被用作系統(tǒng)的RAM空間在S3C44B0中,從0x0c000000到0x10000000之間的64M地址空間被用作系統(tǒng)的RAM地址空間在S3C2410中,從0x3000,0000到0x4000,0000之間的256M地址空間被用作系統(tǒng)的RAM地址空間第31頁,共85頁,2023年,2月20日,星期一嵌入式系統(tǒng)往往只把CPU預留的全部RAM地址空間中的一部分映射到RAM單元上,而讓剩下的那部分預留RAM地址空間處于未使用狀態(tài)Bootloader的stage2必須檢測整個系統(tǒng)的內(nèi)存映射情況必須知道CPU預留的全部RAM地址空間中的哪些被真正映射到RAM地址單元,哪些是處于"unused"狀態(tài)的第32頁,共85頁,2023年,2月20日,星期一加載內(nèi)核映像和根文件系統(tǒng)映像

規(guī)劃內(nèi)存占用的布局內(nèi)核映像所占用的內(nèi)存范圍根文件系統(tǒng)所占用的內(nèi)存范圍從Flash上拷貝第33頁,共85頁,2023年,2月20日,星期一設置內(nèi)核的啟動參數(shù)

Linux2.4.x以后的內(nèi)核都以標記列表(taggedlist)的形式來傳遞啟動參數(shù)啟動參數(shù)標記列表以標記ATAG_CORE開始,以標記ATAG_NONE結(jié)束每個標記由標識被傳遞參數(shù)的tag_header結(jié)構(gòu)以及隨后的參數(shù)值數(shù)據(jù)結(jié)構(gòu)來組成在嵌入式Linux系統(tǒng)中,通常需要由Bootloader設置的常見啟動參數(shù):ATAG_CORE、

ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD等第34頁,共85頁,2023年,2月20日,星期一調(diào)用內(nèi)核

直接跳轉(zhuǎn)到內(nèi)核的第一條指令處在跳轉(zhuǎn)時,下列條件要滿足1.CPU寄存器的設置R0=0;@R1=機器類型ID;@R2=啟動參數(shù)標記列表在RAM中起始基地址2.CPU模式必須禁止中斷(IRQs和FIQs);CPU必須SVC模式(超級用戶模式);3.Cache和MMU的設置MMU必須關閉;指令Cache可以打開也可以關閉;數(shù)據(jù)Cache必須關第35頁,共85頁,2023年,2月20日,星期一3.4幾種Bootloader介紹3.4.1WinCE的Bootloader3.4.2Redboot3.4.3Vivi3.4.4U-Boot第36頁,共85頁,2023年,2月20日,星期一3.4.1WinCE的Bootloader有3種:ROMBootloaderBIOSBootloaderMSDOS+Loadcepc第37頁,共85頁,2023年,2月20日,星期一ROMBootloader又叫RomBoot存放在Flash/EEPROM中,原來BIOS的位置上電后CPU到固定地址執(zhí)行RomBoot的代碼對整個硬件系統(tǒng)進行初始化和檢測支持通過網(wǎng)卡從遠程機器上下載或者從本地IDE/ATA硬盤的活動分區(qū)中尋找nk.bin文件加載優(yōu)點:引導并且加載速度快,不需要BIOS、MSDOS和Loadcepc了缺點:需要CE開發(fā)者讀懂它的源碼并修改CE提供了RomBoot的所有源碼第38頁,共85頁,2023年,2月20日,星期一BIOSBootloader不需要MSDOS操作系統(tǒng),但需要BIOS和FAT文件系統(tǒng)系統(tǒng)上電后BIOS執(zhí)行完硬件初始化和配置后,BIOS檢查引導設備的啟動順序,如果引導設備是硬盤、CF卡這類的存儲設備,那么就加載這些存儲器上的主引導扇區(qū)(MasterBootSector)中的實模式代碼(MBR)到內(nèi)存,然后執(zhí)行這些代碼MBR首先在分區(qū)表(同樣位于主引導扇區(qū))中尋找活動分區(qū),如果存在,就加載位于活動分區(qū)的第一個扇區(qū)(引導扇區(qū))上的代碼到內(nèi)存,然后執(zhí)行。引導扇區(qū)上的代碼的功能是找到并且加載BIOSBootloader,BIOSBootloader再加載nk.bin。對于BIOSBootloader,CE提供了Setupdisk.144和Bootdisk.144兩個文件BIOSBootloader第39頁,共85頁,2023年,2月20日,星期一BIOSBootloader和MSDOS+Loadcepc兩種方式差不多在MSDOS啟動后再執(zhí)行l(wèi)oadcepc.exe,讓loadcepc加載nk.bin到內(nèi)存后再把CPU控制權(quán)交給CE內(nèi)核程序MSDOS+Loadcepc第40頁,共85頁,2023年,2月20日,星期一3.4.4U-Boot簡介主要功能特點主要目錄結(jié)構(gòu)調(diào)試方法移植的主要步驟主要命令第41頁,共85頁,2023年,2月20日,星期一簡介德國DENX軟件工程中心的WolfgangDenk全稱UniversalBootloader遵循GPL條款的開放源碼項目從FADSROM、8xxROM、PPCBOOT發(fā)展而來其源碼目錄、編譯形式與Linux內(nèi)核很相似源碼就是相應Linux內(nèi)核源程序的簡化,尤其是設備驅(qū)動程序支持:嵌入式Linux/NetBSD/VxWorks/QNX/LynxOS等PowerPC、MIPS、x86、ARM、XScale等對PowerPC系列處理器/對Linux的支持最完善第42頁,共85頁,2023年,2月20日,星期一主要功能系統(tǒng)引導支持NFS掛載、RAMDISK系統(tǒng)引導(壓縮或非壓縮)形式的根文件系統(tǒng)支持NFS掛載,從Flash中引導壓縮或非壓縮系統(tǒng)內(nèi)核基本輔助強大的操作系統(tǒng)接口功能,可靈活設置、傳遞多個關鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤其對Linux支持最為功能強勁支持目標板環(huán)境參數(shù)的多種存儲方式,如Flash、NVRAM、EEPROMCRC32校驗,可校驗Flash中內(nèi)核、RAMDISK鏡像文件是否完好設備驅(qū)動串口、SDRAM、Flash、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動支持上電自檢功能SDRAM、Flash大小自動檢測;SDRAM故障檢測;CPU型號特殊功能XIP內(nèi)核引導(WINCEXIPKERNEL)第43頁,共85頁,2023年,2月20日,星期一特點①開放源碼;②支持多種嵌入式操作系統(tǒng)內(nèi)核;③支持多個處理器系列;④較高的可靠性和穩(wěn)定性;⑤高度靈活的功能設置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導要求、產(chǎn)品發(fā)布等;⑥豐富的設備驅(qū)動源碼;⑦較豐富的開發(fā)調(diào)試文檔與強大的網(wǎng)絡支持。第44頁,共85頁,2023年,2月20日,星期一主要目錄結(jié)構(gòu)Board:目標板相關文件,主要包含SDRAM、FLASH驅(qū)動;Common:獨立于處理器體系結(jié)構(gòu)的通用代碼,如內(nèi)存大小探測與故障檢測;Cpu:與處理器相關的文件。如mpc8xx子目錄下含串口、網(wǎng)口、LCD驅(qū)動及中斷初始化等文件;Driver:通用設備驅(qū)動,如CFIFLASH驅(qū)動(目前對INTELFLASH支持較好)Doc:U-Boot的說明文檔;第45頁,共85頁,2023年,2月20日,星期一Include:U-Boot頭文件;尤其configs子目錄下與目標板相關的配置頭文件是移植過程中經(jīng)常要修改的文件;lib_xxx:處理器體系相關的文件,如lib_ppc,lib_arm目錄分別包含與PowerPC、ARM體系結(jié)構(gòu)相關的文件;net:與網(wǎng)絡功能相關的文件目錄,如bootp,nfs,tftp;Post:上電自檢文件目錄。尚有待于進一步完善;Tools:用于創(chuàng)建U-BootS-RECORD和BIN鏡像文件的工具;Rtc:RTC驅(qū)動程序。第46頁,共85頁,2023年,2月20日,星期一調(diào)試方法大致分為兩種:先用仿真器創(chuàng)建目標板初始運行環(huán)境,將U-Boot鏡像文件U-Boot.bin下載到目標板RAM中的指定位置,然后進行跟蹤調(diào)試好處:不用將Uboot鏡像文件燒寫到Flash中去弊端:對移植開發(fā)人員的移植調(diào)試技能要求較高,調(diào)試器的配置文件較為復雜用調(diào)試器先將U-Boot鏡像文件燒寫到Flash中去,然后用GDB調(diào)試器調(diào)試所用的調(diào)試器配置文件較為簡單,調(diào)試過程與U-Boot移植后運行過程相吻合U-Boot先從Flash中運行,再重載至RAM中相應位置,并從那里正式投入運行需要不斷燒寫Flash第47頁,共85頁,2023年,2月20日,星期一移植的主要步驟以S3C2410為例,說明U-Boot的主要移植步驟:1.修改Makefile文件

whhit2410_config

:

unconfig

@./mkconfig$(@:_config=)armarm920twhhit2410NULLs3c24x0

各項的意思如下:arm:CPU的架構(gòu)(ARCH)arm920t:CPU的類型(CPU),其對應于cpu/arm920t子目錄。whhit2410:開發(fā)板的型號(BOARD),對應于board/whhit2410目錄。NULL:開發(fā)者/或經(jīng)銷商(vender)。s3c24x0:片上系統(tǒng)(SOC)。第48頁,共85頁,2023年,2月20日,星期一2.建立board/whhit2410目錄,拷貝board/smdk2410下的文件到board/whhit2410目錄,將smdk2410.c更名為whhit2410.c3.cpinclude/configs/smdk2410.hinclude/configs/whhit2410.h4.將arm-linux-gcc的目錄加入到PATH環(huán)境變量中5.測試編譯能否成功:

makewhhit2410_config

makeallARCH=arm

生成U-Boot.bin就OK了第49頁,共85頁,2023年,2月20日,星期一6.依照你自己開發(fā)板的內(nèi)存地址分配情況修改board/whhit2410/memsetup.S文件7.在board/whhit2410加入NANDFlash讀函數(shù),建立nand_read.c。8.修改board/whhit2410/Makefile9.修改cpu/arm920t/start.S文件10.修改include/configs/whhit2410.h文件11.重新編譯U-Boot

makeallARCH=arm12.通過jtag將U-Boot燒寫到flash第50頁,共85頁,2023年,2月20日,星期一主要命令打印環(huán)境變量列表:

printenv設置tftp服務器的ip地址

setenvserverip6設置本機(開發(fā)板)的ip地址

setenvipaddr1保存前面對環(huán)境變量所做的修改

saveenv通過tftp下載內(nèi)核(串口下載命令為loady)

tftp0x30008000uImage nanderase0x800000x200000 nandwrite0x300080000x800000x200000第51頁,共85頁,2023年,2月20日,星期一3.4.2RedbootRedhat公司隨eCos發(fā)布的一個開源BOOT支持:ARM,MIPS,MN10300,PowerPC,RenesasSHx,v850,x86使用X-modem或Y-modem協(xié)議經(jīng)由串口下載,也可以經(jīng)由以太網(wǎng)口通過BOOTP/DHCP服務獲得IP參數(shù),使用TFTP方式下載程序映像文件,常用于調(diào)試支持和系統(tǒng)初始化Redboot可以通過串口和以太網(wǎng)口與GDB進行通信,調(diào)試程序,能中斷被GDB運行的應用程序Redboot提供了一個交互式命令行接口,用來從TFTP服務器或者從Flash下載映像文件、加載系統(tǒng)的引導腳本文件,它保存在Flash上第52頁,共85頁,2023年,2月20日,星期一3.4.3vivivivi是由韓國mizi公司設計為ARM處理器系列設計的一個bootloader,支持使用串口和主機通信。vivi與其它Bootloader相比,增加了對分區(qū)的命令支持vivi程序流程編譯vivivivi的使用第53頁,共85頁,2023年,2月20日,星期一系統(tǒng)復位禁止看門狗關閉中斷初始化系統(tǒng)時鐘跳到stage2入口執(zhí)行輸出vivi版本號開發(fā)板初始化內(nèi)存映射并拷貝vivi代碼到SDRAM中初始化堆棧初始化MTD設備初始化私有數(shù)據(jù)初始化內(nèi)置命令啟動vivi-boot_or_vivi第54頁,共85頁,2023年,2月20日,星期一編譯vivi首先,進入vivi源代碼目錄:#cd/vivi然后配置和編譯它,執(zhí)行:#makemenuconfig,實際上,你不需要自己手工選擇配置它,已經(jīng)配置好了,只需裝載一個缺省的配置文件即可,使用這個配置文件生成的vivi正好適合于目標板,這個配置文件在vivi/arch/def-configs目錄中,該目錄包含了一些適合于各種板的配置文件。裝載“arch/def-configs/smdk2410”后保存該設置,并執(zhí)行#make命令編譯vivi#cd/vivi#makemenuconfig將出現(xiàn)下面窗口:第55頁,共85頁,2023年,2月20日,星期一在跳出的窗口中選擇“LoadonAlternateConfigurationFile”菜單,然后輸入“arch/def-configs/smdk2410”。第56頁,共85頁,2023年,2月20日,星期一再選擇“OK”,前一個界面又會出現(xiàn)一次,這時選擇退出,然后選擇“Yes”保存剛才的配置。第57頁,共85頁,2023年,2月20日,星期一保存完畢,執(zhí)行以下命令:#make如果編譯過程順利,將會在當前目錄下生成vivi二進制映象文件第58頁,共85頁,2023年,2月20日,星期一vivi的使用Vivi的使用可以查看mizi公司的vivi使用手冊,下面會介紹其中幾個經(jīng)常使用的命令使用JTAG接口下載vivivivi的load命令參數(shù)設定命令第59頁,共85頁,2023年,2月20日,星期一使用JTAG接口下載vivi使用JTAG接口下載程序需要JTAG小板、連接電纜和燒寫程序。把JTAG小板和電纜連接S3C2410開發(fā)板和主機的并口,然后打開目標板電源開關燒寫程序有2種:PC端windows環(huán)境下的燒寫程序PC端linux環(huán)境下的燒寫程序Mizi公司提供了下載軟件,Jflash是Linux的下載程序在Linux下執(zhí)行以下命令可以查看Jflash的使用方法:

#./Jflash–s3c2410--help第60頁,共85頁,2023年,2月20日,星期一對應不同類型的Flash,Jflash程序使用不同的選項參數(shù),如使用64M三星NandFlash,則“/t=5”,可執(zhí)行以下命令開始燒寫vivi。

#./Jflash-s3c2410vivi/t=5第61頁,共85頁,2023年,2月20日,星期一當vivi燒入Flash,并能正常啟動,連接好串口,運行minicom終端程序,就會進入vivi的命令提示符下。第62頁,共85頁,2023年,2月20日,星期一第63頁,共85頁,2023年,2月20日,星期一vivi的load命令命令格式如下:

loadflashkernelx其中:load–vivi的下載命令flash–把文件下載到flash中kernel–要下載的文件是kernel類型,和分區(qū)參數(shù)同名,還可以是vivi,rootx–使用超級終端的xmdoem協(xié)議下載。使用mincom時,先按下“Ctrl”,不要松開,再按下“a”鍵,然后同時松開,再按下“s”鍵,進入下載模式,選擇xmodem協(xié)議方式下載。第64頁,共85頁,2023年,2月20日,星期一第65頁,共85頁,2023年,2月20日,星期一第66頁,共85頁,2023年,2月20日,星期一按回車,再按回車輸入要下載的文件,注意最好把要下載的文件復制到/root目錄。第67頁,共85頁,2023年,2月20日,星期一第68頁,共85頁,2023年,2月20日,星期一發(fā)送文件結(jié)束,vivi將自動保存所下載的文件到flash中此時,如果輸入“boot”命令,vivi將會啟動剛剛下載的內(nèi)核第69頁,共85頁,2023年,2月20日,星期一參數(shù)設定命令paramsetlinuxcommandlineis:"noinitrdroot=/dev/mtdblock/0init=/linuxrcconsole=ttyS0"paramsetlinuxcommandlineis:"noinitrdroot=/dev/bon/2init=/linuxrcconsole=ttyS0"paramsetlinux_cmd_line“console=ttyS0root=/dev/nfsnfsroot=:/hit/rootip=9::::localhost:eth0:off"par

溫馨提示

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

最新文檔

評論

0/150

提交評論