




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
UBOOT中嵌TeacherXie
1ppt課件UBOOT中嵌1ppt課件提綱理論:BootLoader介紹Uboot介紹Uboot命令Uboot工作流程Uboot移植Uboot燒寫實驗:移植UbootUboot使用2ppt課件提綱理論:2ppt課件第一節(jié)BootLoader介紹3ppt課件3ppt課件概念什么是BootLoader?4ppt課件概念4ppt課件軟件層次一個嵌入式系統(tǒng)從軟件角度來看分為三個層次:
1.引導加載程序包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。
2.Linux內(nèi)核特定于嵌入式平臺的定制內(nèi)核。
3.文件系統(tǒng)包括了系統(tǒng)命令和應用程序。
5ppt課件軟件層次一個嵌入式系統(tǒng)從軟件角度來看分為三個層次:5ppt課軟件層次
一個同時裝有BootLoader、內(nèi)核的啟動參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的固態(tài)存儲設備的典型空間分配結構圖:6ppt課件軟件層次 一個同時裝有BootLoader、內(nèi)核的啟動參數(shù)回憶PC
PC機中的引導加載程序由BIOS(其本質(zhì)是一段固件程序)和位于硬盤MBR中的引導程序(GRUB或LILO)一起組成。BIOS在完成硬件檢測和資源分配后,將硬盤中的引導程序讀到系統(tǒng)內(nèi)存中然后將控制權交給引導程序。引導程序的主要任務是將內(nèi)核從硬盤上讀到內(nèi)存中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,即啟動操作系統(tǒng)。7ppt課件回憶PC PC機中的引導加載程序由BIOS(其本質(zhì)是一段固件定義
在嵌入式系統(tǒng)中,通常沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動任務就完全由BootLoader來完成。比如在一個基于
ARM7TDMI
core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址
0x00000000開始執(zhí)行。而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。8ppt課件定義 在嵌入式系統(tǒng)中,通常沒有像BIOS那樣的固件程序,因此定義 簡單地說,BootLoader就是在操作系統(tǒng)運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設備,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)做好準備。9ppt課件定義 簡單地說,BootLoader就是在操作系統(tǒng)運行之前運功能
BootLoader的主要任務是初始化硬件(如:串口,內(nèi)存),然后將內(nèi)核映象從Flash中讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,也就是啟動操作系統(tǒng)。10ppt課件功能 BootLoader的主要任務是初始化硬件(如:串口安裝
系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先安排地址開始執(zhí)行。比如,S3C2410在復位后從地址0x00000000起開始執(zhí)行。而嵌入式系統(tǒng)則將固態(tài)存儲設備(比如:FLASH)安排在這個地址上,而bootloader程序又安排在固態(tài)存儲器的最前端,這樣就能保證在系統(tǒng)加電后,CPU首先執(zhí)行BootLoader程序。11ppt課件安裝 系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先移植Q:什么叫bootloader移植?Q:為什么需要移植?12ppt課件移植12ppt課件移植
每種不同的CPU體系結構都有不同的BootLoader。除了依賴于CPU的體系結構外,BootLoader還依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,外設芯片的類型等。這也就是說,對于兩塊不同的開發(fā)板而言,即使它們是基于同一種CPU而構建的,但如果他們的硬件資源或配置不一致的話,要想在一塊開發(fā)板上運行的BootLoader程序也能在另一塊板子上運行,還是需要作修改。13ppt課件移植
每種不同的CPU體系結構都有不同的BootLoade流程
BootLoader的啟動過程可分為單階段(Single-Stage)和多階段(Multi-Stage)兩種,通常多階段的BootLoader具有更復雜的功能,更好的可移植性。從固態(tài)存儲設備上啟動的BootLoader大多采用兩階段,即啟動過程可以分為stage1和stage2:stage1完成初始化硬件,為stage2準備內(nèi)存空間,并將stage2復制到內(nèi)存中,設置堆棧,然后跳轉(zhuǎn)到stage2。14ppt課件流程 BootLoader的啟動過程可分為單階段(Sing流程
BootLoader的stage1通常包括以下步驟:
·硬件設備初始化
·為加載BootLoader的stage2準備RAM空間
·拷貝BootLoader的stage2到RAM空間中
·設置好堆棧(why??)
·跳轉(zhuǎn)到stage2的C入口點15ppt課件流程 BootLoader的stage1通常包括以下步流程BootLoader的stage2
通常包括以下步驟:
·初始化本階段要使用到的硬件設備
·將內(nèi)核映像和根文件系統(tǒng)映像從flash上讀到RAM中
·調(diào)用內(nèi)核16ppt課件流程BootLoader的stage2通常包括以下步驟內(nèi)存分布17ppt課件內(nèi)存分布17ppt課件第二節(jié)UBOOT介紹18ppt課件18ppt課件作用
Uboot是德國DENX小組開發(fā)的用于多種嵌入式CPU(MIPS、x86、ARM、XScale等)的bootloader程序,UBoot不僅支持嵌入式Linux系統(tǒng)的引導,還支持VxWorks,QNX等多種嵌入式操作系統(tǒng)。19ppt課件作用 Uboot是德國DENX小組開發(fā)的用于多種嵌入式CPU下載
從下面地址可以下載到uboot的源代碼:/projects/uboot
20ppt課件下載 從下面地址可以下載到uboot的源代碼:http://目錄樹進入到UBOOT目錄,可以得到如下的目錄結構:|--
board|--
common|--
cpu|--
disk|--
doc|--
drivers|--
dtt|--
examples|--
fs|--
include21ppt課件目錄樹進入到UBOOT目錄,可以得到如下的目錄結構:21pp目錄樹|--
lib_arm|--
lib_generic|--
lib_i386|--
lib_m68k|--
lib_microblaze|--
lib_mips|--
lib_nios|--
lib_nios2|--
lib_ppc|--
net|--
post|--
rtc`--
tools22ppt課件目錄樹|--
lib_arm22ppt課件目錄結構(展示)Board 和開發(fā)板有關的文件。每一個開發(fā)板都以一個子目錄出現(xiàn)在當前目錄中,比如:SMDK2410,子目錄中存放與開發(fā)板相關的文件。Common 實現(xiàn)Uboot支持的命令。Cpu 與特定CPU架構相關的代碼,每一款Uboot下支持的CPU在該目錄下對應一個子目錄,比如有子目錄arm920t等。23ppt課件目錄結構(展示)Board23ppt課件Disk對磁盤的支持。Doc 文檔目錄。Uboot有非常完善的文檔,推薦大家參考閱讀。
Drivers Uboot支持的設備驅(qū)動程序都放在該目錄,比如各種網(wǎng)卡、支持CFI的Flash、串口和USB等。目錄結構(展示)24ppt課件Disk目錄結構(展示)24ppt課件目錄結構(展示)Fs文件系統(tǒng)的支持。Include Uboot使用的頭文件。該目錄下configs目錄有與開發(fā)板相關的配置頭文件,如smdk2410.h。該目錄下的asm目錄有與CPU體系結構相關的頭文件。25ppt課件目錄結構(展示)Fs25ppt課件目錄結構(展示)Net 與網(wǎng)絡協(xié)議棧相關的代碼,例如:TFTP協(xié)議、RARP協(xié)議的實現(xiàn)。Tools 生成Uboot的工具,如:mkimage,crc等等。26ppt課件目錄結構(展示)Net26ppt課件編譯
Uboot的Makefile從功能上可以分成兩個部分:1、執(zhí)行每種board相關的配置2、編譯生成uboot.bin文件27ppt課件編譯 Uboot的Makefile從功能上可以分成兩個部分:編譯(演示) Uboot.bin的生成也分為兩步,以smdk2410為例來說明,如下:1. 對于board進行配置: $makesmdk2410_config2. 進行編譯生成u-boot.bin: $makeCROSS_COMPILE=arm-linux-
28ppt課件編譯(演示) Uboot.bin的生成也分為兩步,以smdk
第三節(jié)UBOOT命令29ppt課件29ppt課件常用命令(演示)
盡管UBOOT提供了豐富的命令集,但不同的單板所支持的命令并不一定一樣(可配置,How?后面章節(jié)),help命令可用于察看當前單板所支持的命令。2410#helpautoscr-runscriptfrommemorybase-printorsetaddressoffsetbdinfo-printBoardInfostructureboot-bootdefault,i.e.,run'bootcmd'bootm-bootapplicationimagefrommemorybootp-bootimagevianetworkusingBootP/TFTPprotocol30ppt課件常用命令(演示) 盡管UBOOT提供了豐富的命令集,但不同的環(huán)境變量相關(演示)
Printenv打印環(huán)境變量usage:
printenv
-printvaluesofallenvironmentvariables
printenvname...
-printvalueofenvironmentvariable'name'Uboot>printenv
baudrate=115200
ipaddr=
ethaddr=12:34:56:78:9A:BC
serverip=31ppt課件環(huán)境變量相關(演示)Printenv打印環(huán)境變量31pp環(huán)境變量相關(演示)Setenv設置新的變量(修改已有變量)setenvnamevalue...
-setenvironmentvariable'name'to'value...‘setenvname
-deleteenvironmentvariable'name'Uboot>setenvmyboardAT91RM9200DK
Uboot>printenv
ethaddr=12:34:56:78:9A:BC
serverip=
myboard=AT91RM9200DK32ppt課件環(huán)境變量相關(演示)Setenv設置新的變量(修改已有變量環(huán)境變量相關(演示)Saveenv保存變量 將當前定義的所有變量及其值存入flash中。33ppt課件環(huán)境變量相關(演示)Saveenv保存變量33ppt課件文件下載(演示)Tftp通過網(wǎng)絡下載文件*使用tftp,需要先配置好網(wǎng)絡Uboot>setenvethaddr12:34:56:78:9A:BCUboot>setenvipaddrUboot>setenvserverip54
(tftp服務器的地址)例:Uboot>tftp32000000vmlinux
把server(IP=環(huán)境變量中設置的serverip)中服務目錄
下的vmlinux通過TFTP讀入到0x32000000處。34ppt課件文件下載(演示)Tftp通過網(wǎng)絡下載文件34ppt課件內(nèi)存操作命令(演示)Md顯示內(nèi)存區(qū)的內(nèi)容。md采用十六進制和ASCII碼兩種形式來顯示存儲單元的內(nèi)容。這條命令還可以采用長度標識符.l,.w和.b:md[.b,.w,.l]addressmd.w10000000100000:27051956505043426f6f7420312e312e'..VPPCBoot1.1.00100010:3520284d61722032312032303032202d5(Mar212002-00100020:2031393a35353a30342900000000000019:55:04)......35ppt課件內(nèi)存操作命令(演示)Md顯示內(nèi)存區(qū)的內(nèi)容。35ppt課件內(nèi)存操作命令(演示)Mm修改內(nèi)存,地址自動遞增。mm[.b,.w,.l]addressMm提供了一種互動修改存儲器內(nèi)容的方法。它會顯示地址和當前值,然后提示用戶輸入。如果你輸入了一個合法的十六進制數(shù),這個新的值將會被寫入該地址。然后提示下一個地址。如果你沒有輸入任何值,只是按了一下回車,那么該地址的內(nèi)容保持不變。如果想結束輸入,則輸入空格,然后回車。=>mm10000000100000:27051956?000100004:50504342?AABBCCDD00100008:6f6f7420?0123456736ppt課件內(nèi)存操作命令(演示)Mm修改內(nèi)存,地址自動遞增。36pptFlash操作命令(演示)Flinfo
查看Flash扇區(qū)信息Usage:Uboot>Flinfo
37ppt課件Flash操作命令(演示)Flinfo查看Flash扇區(qū)信Flash操作命令(演示)Protect
Flash寫保護
打開或關閉扇區(qū)寫保護用法:protectoffall
關閉所有扇區(qū)的寫保護protectonall打開所有扇區(qū)的寫保護protectoffstartend
關閉從start到end扇區(qū)的寫保護(start為要關閉的第1個扇區(qū)的起始地址,end為要關閉的最后一個扇區(qū)的結束地址)protectonstartend打開從start到end扇區(qū)的寫保護38ppt課件Flash操作命令(演示)ProtectFlash寫保護Flash操作命令(演示)Erase擦除flash扇區(qū)用法:erasestartend擦除從start到end的扇區(qū),start為要擦除的第1個扇區(qū)的起始地址,end為要擦除的最后一個扇區(qū)的結束地址(在使用cp命令向Nor型Flash寫入數(shù)據(jù)之前必須先使用erase命令擦除flash,因為norflash按字節(jié)寫入時,無法寫入1,所以必須通過擦除來寫入1)。例:erase300001effff。39ppt課件Flash操作命令(演示)Erase擦除flash扇區(qū)39Flash操作命令(演示)Cp數(shù)據(jù)拷貝。Cp[.b,.w,.l]saddressdaddresslenCp提供了一種內(nèi)存與內(nèi)存,內(nèi)存與Flash之間數(shù)據(jù)拷貝的方法。例:cp.b3000800020000100000
將內(nèi)存地址0x30008000處的數(shù)據(jù)(長度為0x100000)拷貝到地址0x20000處(Flash中)cp.b3080000013000070000
將內(nèi)存地址0x30800000處的數(shù)據(jù)(長度為0x70000)拷貝到地址0x130000處(Flash中)40ppt課件Flash操作命令(演示)Cp數(shù)據(jù)拷貝。40ppt課件程序執(zhí)行指令(演示)
Go執(zhí)行內(nèi)存中的二進制代碼,一個簡單的跳轉(zhuǎn)到指定地址goaddr[arg...]
-startapplicationataddress'addr‘,passing'arg'asarguments
41ppt課件程序執(zhí)行指令(演示) Go執(zhí)行內(nèi)存中的二進制代碼,一個簡程序執(zhí)行指令Bootm執(zhí)行內(nèi)存中的二進制代碼bootm[addr[arg...]]
-bootapplicationimagestoredinmemory
passingarguments'arg...';whenbootingaLinuxkernel,'arg'canbetheaddressofaninitrdimage 要求二進制代碼為制定格式的。通常為mkimage處理過的二進制文件。42ppt課件程序執(zhí)行指令Bootm執(zhí)行內(nèi)存中的二進制代碼42ppt課件信息類指令bdinfo–顯示開發(fā)板信息
bdinfo命令(簡寫為bdi)將在終端顯示諸如內(nèi)存地址和大小、時鐘頻率、MAC地址等信息。這些信息在傳遞給Linux內(nèi)核一些參數(shù)時可能會用到。43ppt課件信息類指令bdinfo–顯示開發(fā)板信息43ppt課件技巧(演示)設置自動啟動
sbc2410=>setenvbootcmdtftp30008000zImage\;go30080000sbc2410=>saveenv44ppt課件技巧(演示)設置自動啟動44ppt課件第四節(jié)Uboot工作流程45ppt課件45ppt課件工作模式 大多數(shù)BootLoader都包含兩種不同的操作模式:“啟動模式”和“下載模式”,這種區(qū)別僅對于開發(fā)人員才有意義,但從最終用戶的角度看,BootLoader的作用就是用來加載操作系統(tǒng),而不存在所謂的啟動模式與下載模式。46ppt課件工作模式 大多數(shù)BootLoader都包含兩種不同的操作模式啟動模式 這種模式也稱為“自主”模式,是指BootLoader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)自動加載到RAM中運行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時侯,BootLoader顯然必須工作在這種模式下。47ppt課件啟動模式 這種模式也稱為“自主”模式,是指BootLoa下載模式
在這種模式下,目標機上的BootLoader將通過串口或網(wǎng)絡等通信手段從主機(Host)下載文件,然后控制啟動流程。48ppt課件下載模式 在這種模式下,目標機上的BootLoader將流程參考文檔uboot啟動流程49ppt課件流程49ppt課件第五節(jié)Uboot移植50ppt課件50ppt課件單板配置Q:為什么需要對Uboot做移植?A:BootLoader依賴于具體的嵌入式板級設備的配置Q:具體的板級設備的配置在哪里?A:單板的配置文件位于include/configs/<board_name>.h
<board_name>用相應的BOARD定義代替(例:smdk2410.h)51ppt課件單板配置Q:為什么需要對Uboot做移植?51ppt課件單板配置Q:Uboot移植都需要做些什么?A:根據(jù)開發(fā)板硬件特性修改配置文件是其中最重要的一項工作Q:配置文件中都有些什么信息?A:請看下頁范例(smdk2410.h)52ppt課件單板配置Q:Uboot移植都需要做些什么?52ppt課件Smdk2410.h#defineCONFIG_ARM920T 1 /*CPU類型 */#define CONFIG_S3C24101/*MCU類型*/#defineCONFIG_SMDK2410 1 /*開發(fā)板型號*/53ppt課件Smdk2410.h#defineCONFIG_ARM92Smdk2410.h#defineUSE_920T_MMU1/*使用MMU*/#undefCONFIG_USE_IRQ /*不使用IRQ/FIQ*//*malloc池大小*/#defineCFG_MALLOC_LEN(CFG_ENV_SIZE+128*1024)#defineCFG_GBL_DATA_SIZE 128 /*數(shù)據(jù)段大小128字節(jié)*/54ppt課件Smdk2410.h#defineUSE_920T_MMUSmdk2410.h#defineCONFIG_DRIVER_CS8900 1 /*一個CS8900網(wǎng)卡*/#defineCS8900_BASE 0x19000300/*CS8900A基地址*/#defineCONFIG_SERIAL11 /*使用串口1*/#defineCONFIG_BAUDRATE 115200/*波特率*/55ppt課件Smdk2410.h#defineCONFIG_DRIVESmdk2410.h#defineCONFIG_COMMANDS\ (CONFIG_CMD_DFL |\ CFG_CMD_CACHE |\ /*CFG_CMD_NAND |*/\ /*CFG_CMD_EEPROM|*/\ /*CFG_CMD_I2C |*/\ /*CFG_CMD_USB |*/\ CFG_CMD_REGINFO|\ CFG_CMD_DATE |\ CFG_CMD_ELF)/*定義使用的命令,可添加額外命令,如PING*/56ppt課件Smdk2410.h#defineCONFIG_COMMASmdk2410.h#defineCONFIG_BOOTDELAY3/*啟動等待時間*/#defineCONFIG_BOOTARGS "root=ramfsdevfs=mountconsole=ttySA0,9600“/*內(nèi)核啟動參數(shù)*/#defineCONFIG_ETHADDR 08:00:3e:26:0a:5b#defineCONFIG_NETMASK#defineCONFIG_IPADDR10#defineCONFIG_SERVERIP 57ppt課件Smdk2410.h#defineCONFIG_BOOTDSmdk2410.h#defineCONFIG_BOOTCOMMAND "tftp;bootm"#define CFG_PROMPT "SMDK2410#" #definePHYS_SDRAM_10x30000000/*SDRAMBank#1*/#definePHYS_SDRAM_1_SIZE 0x04000000/*64MB*/#define CFG_LOAD_ADDR0x33000000/*默認的加載地址*/#defineCFG_BAUDRATE_TABLE {9600,19200,38400,57600,115200}/*可用的波特率*/58ppt課件Smdk2410.h#defineCONFIG_BOOTCSmdk2410.h#defineCONFIG_NR_DRAM_BANKS 1 /*有一片SDRAM*/#definePHYS_FLASH_1 0x00000000/*FLASH1的基地址*/#defineCFG_FLASH_BASE PHYS_FLASH_1/*FLASH的基地址*/59ppt課件Smdk2410.h#defineCONFIG_NR_DR移植Q:怎么做Uboot的移植呢?60ppt課件移植60ppt課件移植方法
移植U-Boot工作包括添加開發(fā)板硬件相關的文件、配置選項,然后配置編譯。
61ppt課件移植方法移植U-Boot工作包括添加開發(fā)板硬件相關移植方法開始移植之前,首先要分析U-Boot已經(jīng)支持的開發(fā)板,選擇出硬件配置最接近的開發(fā)板。選擇的原則是,首先處理器相同,其次處理器體系結構相同,然后是以太網(wǎng)接口等外圍接口相同。還要驗證一下這個參考開發(fā)板的U-Boot,至少能夠配置編譯通過。62ppt課件移植方法開始移植之前,首先要分析U-Boot已經(jīng)支移植范例
以SBC2410開發(fā)板為例,該開發(fā)板采用S3c2410芯片。而UBoot-1.1.4版本支持SMDK2410開發(fā)板,并且SMDK2410同樣采用S3c2410芯片,因此選取SMDK2410作為移植參考。63ppt課件移植范例 以SBC2410開發(fā)板為例,該開發(fā)板采用S3移植步驟移植U-Boot的基本步驟如下:在頂層Makefile中為開發(fā)板添加新的配置選項,使用已有的配置項目為例smdk2410_config
:
unconfig
@./mkconfig$(@:_config=)armarm920tsmdk2410NULLs3c24x0
參考上面2行,添加下面2行:sbc2410_config
:
unconfig
@./mkconfig$(@:_config=)armarm920tsbc2410NULLs3c24x064ppt課件移植步驟移植U-Boot的基本步驟如下:64ppt課件移植步驟arm:
CPU架構arm920t:
CPU類型,對應cpu/arm920t目錄sbc2410:
開發(fā)板型號,對應board/sbc2410目錄NULL:開發(fā)者s3c24x0:
片上系統(tǒng)(SOC)65ppt課件移植步驟arm:
CPU架構65ppt課件移植步驟2.創(chuàng)建一個新目錄存放開發(fā)板相關的代碼,并且添加文件(如果以上文件從其他目錄copy來的,注意修改Makefile)。board/sbc2410/config.mkboard/sbc2410/flash.cboard/sbc2410/sbc2410.cboard/sbc2410/Makefileboard/sbc2410/u-boot.lds66ppt課件移植步驟2.創(chuàng)建一個新目錄存放開發(fā)板相關的代碼,并且添加文移植步驟3.為開發(fā)板添加新的配置文件先復制參考開發(fā)板的配置文件,再修改。例如:$cpinclude/configs/smdk2410.h
include/configs/sbc2410.h4.配置開發(fā)板$makesbc2410_config5.編譯U-Boot 執(zhí)行makeCROSS_COMPILE=arm-linux-命令,編譯成功可以得到U-Boot映像。67ppt課件移植步驟3.為開發(fā)板添加新的配置文件67ppt課件移植步驟6.燒寫Uboot
參考手冊sjf2410_v4.pdf
大功告成,啟動開發(fā)板?。?!68ppt課件移植步驟6.燒寫Uboot68ppt課件常見問題編譯時出現(xiàn)“invalidoptionabi=apcs-gnu”錯誤解決辦法:make時指定CROSS_COMPILE=arm-linux-69ppt課件常見問題編譯時出現(xiàn)“invalidoptionabi=實驗一移植Uboot移植Uboot到SBC2410板具備Ping命令70ppt課件實驗一70ppt課件實驗二Uboot命令使用Uboot提供的命令71ppt課件實驗二71ppt課件UBOOT中嵌TeacherXie
72ppt課件UBOOT中嵌1ppt課件提綱理論:BootLoader介紹Uboot介紹Uboot命令Uboot工作流程Uboot移植Uboot燒寫實驗:移植UbootUboot使用73ppt課件提綱理論:2ppt課件第一節(jié)BootLoader介紹74ppt課件3ppt課件概念什么是BootLoader?75ppt課件概念4ppt課件軟件層次一個嵌入式系統(tǒng)從軟件角度來看分為三個層次:
1.引導加載程序包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。
2.Linux內(nèi)核特定于嵌入式平臺的定制內(nèi)核。
3.文件系統(tǒng)包括了系統(tǒng)命令和應用程序。
76ppt課件軟件層次一個嵌入式系統(tǒng)從軟件角度來看分為三個層次:5ppt課軟件層次
一個同時裝有BootLoader、內(nèi)核的啟動參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的固態(tài)存儲設備的典型空間分配結構圖:77ppt課件軟件層次 一個同時裝有BootLoader、內(nèi)核的啟動參數(shù)回憶PC
PC機中的引導加載程序由BIOS(其本質(zhì)是一段固件程序)和位于硬盤MBR中的引導程序(GRUB或LILO)一起組成。BIOS在完成硬件檢測和資源分配后,將硬盤中的引導程序讀到系統(tǒng)內(nèi)存中然后將控制權交給引導程序。引導程序的主要任務是將內(nèi)核從硬盤上讀到內(nèi)存中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,即啟動操作系統(tǒng)。78ppt課件回憶PC PC機中的引導加載程序由BIOS(其本質(zhì)是一段固件定義
在嵌入式系統(tǒng)中,通常沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動任務就完全由BootLoader來完成。比如在一個基于
ARM7TDMI
core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址
0x00000000開始執(zhí)行。而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。79ppt課件定義 在嵌入式系統(tǒng)中,通常沒有像BIOS那樣的固件程序,因此定義 簡單地說,BootLoader就是在操作系統(tǒng)運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設備,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)做好準備。80ppt課件定義 簡單地說,BootLoader就是在操作系統(tǒng)運行之前運功能
BootLoader的主要任務是初始化硬件(如:串口,內(nèi)存),然后將內(nèi)核映象從Flash中讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,也就是啟動操作系統(tǒng)。81ppt課件功能 BootLoader的主要任務是初始化硬件(如:串口安裝
系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先安排地址開始執(zhí)行。比如,S3C2410在復位后從地址0x00000000起開始執(zhí)行。而嵌入式系統(tǒng)則將固態(tài)存儲設備(比如:FLASH)安排在這個地址上,而bootloader程序又安排在固態(tài)存儲器的最前端,這樣就能保證在系統(tǒng)加電后,CPU首先執(zhí)行BootLoader程序。82ppt課件安裝 系統(tǒng)加電或復位后,所有的CPU通常都從CPU制造商預先移植Q:什么叫bootloader移植?Q:為什么需要移植?83ppt課件移植12ppt課件移植
每種不同的CPU體系結構都有不同的BootLoader。除了依賴于CPU的體系結構外,BootLoader還依賴于具體的嵌入式板級設備的配置,比如板卡的硬件地址分配,外設芯片的類型等。這也就是說,對于兩塊不同的開發(fā)板而言,即使它們是基于同一種CPU而構建的,但如果他們的硬件資源或配置不一致的話,要想在一塊開發(fā)板上運行的BootLoader程序也能在另一塊板子上運行,還是需要作修改。84ppt課件移植
每種不同的CPU體系結構都有不同的BootLoade流程
BootLoader的啟動過程可分為單階段(Single-Stage)和多階段(Multi-Stage)兩種,通常多階段的BootLoader具有更復雜的功能,更好的可移植性。從固態(tài)存儲設備上啟動的BootLoader大多采用兩階段,即啟動過程可以分為stage1和stage2:stage1完成初始化硬件,為stage2準備內(nèi)存空間,并將stage2復制到內(nèi)存中,設置堆棧,然后跳轉(zhuǎn)到stage2。85ppt課件流程 BootLoader的啟動過程可分為單階段(Sing流程
BootLoader的stage1通常包括以下步驟:
·硬件設備初始化
·為加載BootLoader的stage2準備RAM空間
·拷貝BootLoader的stage2到RAM空間中
·設置好堆棧(why??)
·跳轉(zhuǎn)到stage2的C入口點86ppt課件流程 BootLoader的stage1通常包括以下步流程BootLoader的stage2
通常包括以下步驟:
·初始化本階段要使用到的硬件設備
·將內(nèi)核映像和根文件系統(tǒng)映像從flash上讀到RAM中
·調(diào)用內(nèi)核87ppt課件流程BootLoader的stage2通常包括以下步驟內(nèi)存分布88ppt課件內(nèi)存分布17ppt課件第二節(jié)UBOOT介紹89ppt課件18ppt課件作用
Uboot是德國DENX小組開發(fā)的用于多種嵌入式CPU(MIPS、x86、ARM、XScale等)的bootloader程序,UBoot不僅支持嵌入式Linux系統(tǒng)的引導,還支持VxWorks,QNX等多種嵌入式操作系統(tǒng)。90ppt課件作用 Uboot是德國DENX小組開發(fā)的用于多種嵌入式CPU下載
從下面地址可以下載到uboot的源代碼:/projects/uboot
91ppt課件下載 從下面地址可以下載到uboot的源代碼:http://目錄樹進入到UBOOT目錄,可以得到如下的目錄結構:|--
board|--
common|--
cpu|--
disk|--
doc|--
drivers|--
dtt|--
examples|--
fs|--
include92ppt課件目錄樹進入到UBOOT目錄,可以得到如下的目錄結構:21pp目錄樹|--
lib_arm|--
lib_generic|--
lib_i386|--
lib_m68k|--
lib_microblaze|--
lib_mips|--
lib_nios|--
lib_nios2|--
lib_ppc|--
net|--
post|--
rtc`--
tools93ppt課件目錄樹|--
lib_arm22ppt課件目錄結構(展示)Board 和開發(fā)板有關的文件。每一個開發(fā)板都以一個子目錄出現(xiàn)在當前目錄中,比如:SMDK2410,子目錄中存放與開發(fā)板相關的文件。Common 實現(xiàn)Uboot支持的命令。Cpu 與特定CPU架構相關的代碼,每一款Uboot下支持的CPU在該目錄下對應一個子目錄,比如有子目錄arm920t等。94ppt課件目錄結構(展示)Board23ppt課件Disk對磁盤的支持。Doc 文檔目錄。Uboot有非常完善的文檔,推薦大家參考閱讀。
Drivers Uboot支持的設備驅(qū)動程序都放在該目錄,比如各種網(wǎng)卡、支持CFI的Flash、串口和USB等。目錄結構(展示)95ppt課件Disk目錄結構(展示)24ppt課件目錄結構(展示)Fs文件系統(tǒng)的支持。Include Uboot使用的頭文件。該目錄下configs目錄有與開發(fā)板相關的配置頭文件,如smdk2410.h。該目錄下的asm目錄有與CPU體系結構相關的頭文件。96ppt課件目錄結構(展示)Fs25ppt課件目錄結構(展示)Net 與網(wǎng)絡協(xié)議棧相關的代碼,例如:TFTP協(xié)議、RARP協(xié)議的實現(xiàn)。Tools 生成Uboot的工具,如:mkimage,crc等等。97ppt課件目錄結構(展示)Net26ppt課件編譯
Uboot的Makefile從功能上可以分成兩個部分:1、執(zhí)行每種board相關的配置2、編譯生成uboot.bin文件98ppt課件編譯 Uboot的Makefile從功能上可以分成兩個部分:編譯(演示) Uboot.bin的生成也分為兩步,以smdk2410為例來說明,如下:1. 對于board進行配置: $makesmdk2410_config2. 進行編譯生成u-boot.bin: $makeCROSS_COMPILE=arm-linux-
99ppt課件編譯(演示) Uboot.bin的生成也分為兩步,以smdk
第三節(jié)UBOOT命令100ppt課件29ppt課件常用命令(演示)
盡管UBOOT提供了豐富的命令集,但不同的單板所支持的命令并不一定一樣(可配置,How?后面章節(jié)),help命令可用于察看當前單板所支持的命令。2410#helpautoscr-runscriptfrommemorybase-printorsetaddressoffsetbdinfo-printBoardInfostructureboot-bootdefault,i.e.,run'bootcmd'bootm-bootapplicationimagefrommemorybootp-bootimagevianetworkusingBootP/TFTPprotocol101ppt課件常用命令(演示) 盡管UBOOT提供了豐富的命令集,但不同的環(huán)境變量相關(演示)
Printenv打印環(huán)境變量usage:
printenv
-printvaluesofallenvironmentvariables
printenvname...
-printvalueofenvironmentvariable'name'Uboot>printenv
baudrate=115200
ipaddr=
ethaddr=12:34:56:78:9A:BC
serverip=102ppt課件環(huán)境變量相關(演示)Printenv打印環(huán)境變量31pp環(huán)境變量相關(演示)Setenv設置新的變量(修改已有變量)setenvnamevalue...
-setenvironmentvariable'name'to'value...‘setenvname
-deleteenvironmentvariable'name'Uboot>setenvmyboardAT91RM9200DK
Uboot>printenv
ethaddr=12:34:56:78:9A:BC
serverip=
myboard=AT91RM9200DK103ppt課件環(huán)境變量相關(演示)Setenv設置新的變量(修改已有變量環(huán)境變量相關(演示)Saveenv保存變量 將當前定義的所有變量及其值存入flash中。104ppt課件環(huán)境變量相關(演示)Saveenv保存變量33ppt課件文件下載(演示)Tftp通過網(wǎng)絡下載文件*使用tftp,需要先配置好網(wǎng)絡Uboot>setenvethaddr12:34:56:78:9A:BCUboot>setenvipaddrUboot>setenvserverip54
(tftp服務器的地址)例:Uboot>tftp32000000vmlinux
把server(IP=環(huán)境變量中設置的serverip)中服務目錄
下的vmlinux通過TFTP讀入到0x32000000處。105ppt課件文件下載(演示)Tftp通過網(wǎng)絡下載文件34ppt課件內(nèi)存操作命令(演示)Md顯示內(nèi)存區(qū)的內(nèi)容。md采用十六進制和ASCII碼兩種形式來顯示存儲單元的內(nèi)容。這條命令還可以采用長度標識符.l,.w和.b:md[.b,.w,.l]addressmd.w10000000100000:27051956505043426f6f7420312e312e'..VPPCBoot1.1.00100010:3520284d61722032312032303032202d5(Mar212002-00100020:2031393a35353a30342900000000000019:55:04)......106ppt課件內(nèi)存操作命令(演示)Md顯示內(nèi)存區(qū)的內(nèi)容。35ppt課件內(nèi)存操作命令(演示)Mm修改內(nèi)存,地址自動遞增。mm[.b,.w,.l]addressMm提供了一種互動修改存儲器內(nèi)容的方法。它會顯示地址和當前值,然后提示用戶輸入。如果你輸入了一個合法的十六進制數(shù),這個新的值將會被寫入該地址。然后提示下一個地址。如果你沒有輸入任何值,只是按了一下回車,那么該地址的內(nèi)容保持不變。如果想結束輸入,則輸入空格,然后回車。=>mm10000000100000:27051956?000100004:50504342?AABBCCDD00100008:6f6f7420?01234567107ppt課件內(nèi)存操作命令(演示)Mm修改內(nèi)存,地址自動遞增。36pptFlash操作命令(演示)Flinfo
查看Flash扇區(qū)信息Usage:Uboot>Flinfo
108ppt課件Flash操作命令(演示)Flinfo查看Flash扇區(qū)信Flash操作命令(演示)Protect
Flash寫保護
打開或關閉扇區(qū)寫保護用法:protectoffall
關閉所有扇區(qū)的寫保護protectonall打開所有扇區(qū)的寫保護protectoffstartend
關閉從start到end扇區(qū)的寫保護(start為要關閉的第1個扇區(qū)的起始地址,end為要關閉的最后一個扇區(qū)的結束地址)protectonstartend打開從start到end扇區(qū)的寫保護109ppt課件Flash操作命令(演示)ProtectFlash寫保護Flash操作命令(演示)Erase擦除flash扇區(qū)用法:erasestartend擦除從start到end的扇區(qū),start為要擦除的第1個扇區(qū)的起始地址,end為要擦除的最后一個扇區(qū)的結束地址(在使用cp命令向Nor型Flash寫入數(shù)據(jù)之前必須先使用erase命令擦除flash,因為norflash按字節(jié)寫入時,無法寫入1,所以必須通過擦除來寫入1)。例:erase300001effff。110ppt課件Flash操作命令(演示)Erase擦除flash扇區(qū)39Flash操作命令(演示)Cp數(shù)據(jù)拷貝。Cp[.b,.w,.l]saddressdaddresslenCp提供了一種內(nèi)存與內(nèi)存,內(nèi)存與Flash之間數(shù)據(jù)拷貝的方法。例:cp.b3000800020000100000
將內(nèi)存地址0x30008000處的數(shù)據(jù)(長度為0x100000)拷貝到地址0x20000處(Flash中)cp.b3080000013000070000
將內(nèi)存地址0x30800000處的數(shù)據(jù)(長度為0x70000)拷貝到地址0x130000處(Flash中)111ppt課件Flash操作命令(演示)Cp數(shù)據(jù)拷貝。40ppt課件程序執(zhí)行指令(演示)
Go執(zhí)行內(nèi)存中的二進制代碼,一個簡單的跳轉(zhuǎn)到指定地址goaddr[arg...]
-startapplicationataddress'addr‘,passing'arg'asarguments
112ppt課件程序執(zhí)行指令(演示) Go執(zhí)行內(nèi)存中的二進制代碼,一個簡程序執(zhí)行指令Bootm執(zhí)行內(nèi)存中的二進制代碼bootm[addr[arg...]]
-bootapplicationimagestoredinmemory
passingarguments'arg...';whenbootingaLinuxkernel,'arg'canbetheaddressofaninitrdimage 要求二進制代碼為制定格式的。通常為mkimage處理過的二進制文件。113ppt課件程序執(zhí)行指令Bootm執(zhí)行內(nèi)存中的二進制代碼42ppt課件信息類指令bdinfo–顯示開發(fā)板信息
bdinfo命令(簡寫為bdi)將在終端顯示諸如內(nèi)存地址和大小、時鐘頻率、MAC地址等信息。這些信息在傳遞給Linux內(nèi)核一些參數(shù)時可能會用到。114ppt課件信息類指令bdinfo–顯示開發(fā)板信息43ppt課件技巧(演示)設置自動啟動
sbc2410=>setenvbootcmdtftp30008000zImage\;go30080000sbc2410=>saveenv115ppt課件技巧(演示)設置自動啟動44ppt課件第四節(jié)Uboot工作流程116ppt課件45ppt課件工作模式 大多數(shù)BootLoader都包含兩種不同的操作模式:“啟動模式”和“下載模式”,這種區(qū)別僅對于開發(fā)人員才有意義,但從最終用戶的角度看,BootLoader的作用就是用來加載操作系統(tǒng),而不存在所謂的啟動模式與下載模式。117ppt課件工作模式 大多數(shù)BootLoader都包含兩種不同的操作模式啟動模式 這種模式也稱為“自主”模式,是指BootLoader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)自動加載到RAM中運行,整個過程并沒有用戶的介入。這種模式是BootLoader的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時侯,BootLoader顯然必須工作在這種模式下。118ppt課件啟動模式 這種模式也稱為“自主”模式,是指BootLoa下載模式
在這種模式下,目標機上的BootLoader將通過串口或網(wǎng)絡等通信手段從主機(Host)下載文件,然后控制啟動流程。119ppt課件下載模式 在這種模式下,目標機上的BootLoader將流程參考文檔uboot啟動流程120ppt課件流程49ppt課件第五節(jié)Uboot移植121ppt課件50ppt課件單板配置Q:為什么需要對Uboot做移植?A:BootLoader依賴于具體的嵌入式板級設備的配置Q:具體的板級設備的配置在哪里?A:單板的配置文件位于include/configs/<board_name>.h
<board_name>用相應的BOARD定義代替(例:smdk2410.h)122ppt課件單板配置Q:為什么需要對Uboot做移植?51ppt課件單板配置Q:Uboot移植都需要做些什么?A:根據(jù)開發(fā)板硬件特性修改配置文件是其中最重要的一項工作Q:配置文件中都有些什么信息?A:請看下頁范例(smdk2410.h)123ppt課件單板配置Q:Uboot移植都需要做些什么?52ppt課件Smdk2410.h#defineCONFIG_ARM920T 1 /*CPU類型 */#define CONFIG_S3C24101/*MCU類型*/#defineCONFIG_SMDK2410 1 /*開發(fā)板型號*/124ppt課件Smdk2410.h#defineCONFIG_ARM92Smdk2410.h#defineUSE_920T_MMU1/*使用MMU*/#undefCONFIG_USE_IRQ /*不使用IRQ/FIQ*//*malloc池大小*/#defineCFG_MALLOC_LEN(CFG_ENV_SIZE+128*1024)#defineCFG_GBL_DATA_SIZE 128 /*數(shù)據(jù)段大小128字節(jié)*/125ppt課件Smdk2410.h#defineUSE_920T_MMUSmdk2410.h#defineCONFIG_DRIVER_CS8900 1 /*一個CS8900網(wǎng)卡*/#defineCS8900_BASE 0x19000300/*CS8900A基地址*/#defineCONFIG_SERIAL11 /*使用串口1*/#defineCONFIG_BAUDRATE 115200/*波特率*/126ppt課件Smdk2410.h#defineCONFIG_DRIVESmdk2410.h#defineCONFIG_COMMANDS\ (CONFIG_CMD_DFL |\ CFG_CMD_CACHE |\ /*CFG_CMD_NAND |*/\ /*CFG_CMD_EEPROM|*/\ /*CFG_CMD_I2C |*/\ /*CFG_CMD_USB |*/\ CFG_CMD_REGINFO|\ CFG_CMD_DATE |\ CFG_CMD_ELF)/*定義使用的命令,可添加額外命令,如PING*/127ppt課件Smdk2410.h#defineCONFIG_COMMASmdk2410.h#defineCONFIG_BOOTDELAY3/*啟動等待時間*/#defineCONFIG_BOOTARGS "root=ramfsdevfs=mountconsole=ttySA0,9
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 IEC 62148-11:2024 EN-FR Fibre optic active components and devices - Package and interface standards - Part 11: 14-pin modulator integrated laser diode modules and pump laser
- 【正版授權】 ISO 18935:2025 EN Imaging materials - Colour images - Determination of water resistance of printed colour images
- 2025年建筑安全員知識題庫及答案
- 2025-2030年中國采血器市場發(fā)展狀況及前景趨勢分析報告
- 2025-2030年中國薯片市場運行態(tài)勢與投資戰(zhàn)略研究報告
- 2025-2030年中國營養(yǎng)碘鹽市場發(fā)展狀況及營銷戰(zhàn)略研究報告
- 2025-2030年中國自動光學檢測儀(AOI)市場運營狀況及前景趨勢分析報告
- 2025-2030年中國絕熱隔音材料產(chǎn)業(yè)運行狀況與投資策略研究報告
- 2025-2030年中國電解金屬錳行業(yè)前景展望規(guī)劃研究報告
- 2025-2030年中國電站設備行業(yè)運行態(tài)勢及發(fā)展趨勢分析報告
- 《齊桓晉文之事》+課件+2023-2024學年統(tǒng)編版必修下冊+
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀課件
- 八年級美術下冊第1課文明之光省公開課一等獎新名師課獲獎課件
- 2024年全國體育單招英語考卷和答案
- 食品安全管理制度可打印【7】
- 河北省邯鄲市磁縣2024屆中考數(shù)學模試卷含解析
- 2024年四川省南充市中考物理試卷真題(含官方答案)
- 2024年學位法學習解讀課件
- 2024年江蘇農(nóng)牧科技職業(yè)學院單招職業(yè)適應性測試題庫帶答案
- 【基于PLC的停車場車位控制系統(tǒng)設計11000字(論文)】
- GB/T 43947-2024低速線控底盤通用技術要求
評論
0/150
提交評論