版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
移植U-Boot15U-Boot分析與移植U-Boot的移植U-Boot的常用命令使用U-Boot來執(zhí)行程序BootLoader簡介第15章移植U-Boot15.1Bootloader簡介15.1.1Bootloader的概念1.Bootloader的引入Bootloader就是一小段程序,它在系統(tǒng)上電時首先被執(zhí)行,主要功能是關(guān)閉WatchDog、配置系統(tǒng)時鐘、初始化存儲控制器、將更多的代碼復(fù)制到內(nèi)存中等。除了上述基本功能外,可以增強(qiáng)Bootloader的功能,比如增加網(wǎng)絡(luò)功能、從PC上通過串口或網(wǎng)絡(luò)下載文件、燒寫文件、將Flash上壓縮的文件解壓后再運(yùn)行等。這樣就構(gòu)成了一個功能更為強(qiáng)大的Bootloader。2.Bootloader的啟動方式Bootloader可以分為兩種操作模式:啟動加載(Bootloading)模式。上電后,Bootloader從板子上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個過程并沒有用戶的介入。下載(Downloading)模式。在下載模式下,開發(fā)人員可以使用各種命令,通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件(比如內(nèi)核映像、文件系統(tǒng)映像),將它們直接放在內(nèi)存運(yùn)行或是燒入Flash類固態(tài)存儲設(shè)備中。第15章移植U-Boot15.1.2Bootloader的結(jié)構(gòu)和啟動過程1.Bootloader結(jié)構(gòu)簡介嵌入式Linux系統(tǒng)的四個層次:(1)引導(dǎo)加載程序,包括固化在固件(firmware)中的boot代碼(可選)和Bootloader兩大部分。(2)
Linux內(nèi)核中,為特定嵌入式板子定制的內(nèi)核以及內(nèi)核的啟動參數(shù)。內(nèi)核的啟動參數(shù)可以是內(nèi)核默認(rèn)的,也可能是由Bootloader傳遞給它的。第15章移植U-Boot(3)文件系統(tǒng),包括根文件系統(tǒng)和建立在Flash內(nèi)存設(shè)備之上的文件系統(tǒng),里面包含了Linux系統(tǒng)能夠運(yùn)行所必需的應(yīng)用程序、庫等,比如可以給用戶提供操作Linux的控制界面的shell程序、動態(tài)鏈接程序運(yùn)行時需要的glibc或uClibc庫等。(4)面向用戶的應(yīng)用程序,它們也存儲在文件系統(tǒng)中。有時在用戶應(yīng)用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有Qtopia和MiniGUI等。第15章移植U-Boot圖15.1嵌入式Linux系統(tǒng)的典型分區(qū)結(jié)構(gòu)第15章移植U-Boot2.Bootloader的兩個階段Bootloader的啟動過程可以分為單階段(SingleStage)、多階段(Multi-Stage)兩種。通常多階段的Bootloader能提供更為復(fù)雜的功能以及更好的可移植性。從固態(tài)存儲設(shè)備上啟動的Bootloader大多都是兩階段的啟動過程。第一階段使用匯編語言程序來實(shí)現(xiàn),它完成一些依賴于CPU體系結(jié)構(gòu)的初始化,并調(diào)用第二階段的代碼;第二階段則通常使用C語言程序來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)更復(fù)雜的功能,而且代碼會有更好的可讀性和可移植性。第15章移植U-Boot(1)
Bootloader第一階段的功能:●硬件設(shè)備初始化。●為加載Bootloader的第二階段代碼準(zhǔn)備RAM空間。●復(fù)制Bootloader的第二階段代碼到RAM空間中。●設(shè)置好棧。●跳轉(zhuǎn)到第二階段代碼的C入口點(diǎn)。第15章移植U-Boot(2)?Bootloader第二階段的功能:●初始化本階段要使用到的硬件設(shè)備?!駲z測系統(tǒng)內(nèi)存映射(MemoryMap)?!駥?nèi)核映像和根文件系統(tǒng)映像從Flash上讀到RAM?!駷閮?nèi)核設(shè)置啟動參數(shù)?!裾{(diào)用內(nèi)核。第15章移植U-Boot調(diào)用內(nèi)核之前,需滿足的條件有:(1)
CPU寄存器的設(shè)置:●?R0?=?0?!馬1?=?機(jī)器類型ID;對于ARM結(jié)構(gòu)的CPU,其機(jī)器類型ID可以參見linux/arch/arm/tools/mach-types。比如,smdk4412的機(jī)器類型ID為3765?!?R2?=?啟動參數(shù)標(biāo)記列表在RAM中的起始基地址。第15章移植U-Boot(2)
CPU工作模式:●必須禁止中斷(IRQ和FIQ)。●?CPU必須為SVC模式。(3)
Cache和MMU的設(shè)置:●?MMU必須關(guān)閉?!裰噶頒ache可以打開也可以關(guān)閉?!駭?shù)據(jù)Cache必須關(guān)閉。第15章移植U-Boot3.Bootloader與內(nèi)核的交互Bootloader與內(nèi)核的交互是單向的,Bootloader將各類參數(shù)傳給內(nèi)核。由于它們不能同時運(yùn)行,傳遞辦法只有一個:Bootloader將參數(shù)放在某個約定的地方之后,再啟動內(nèi)核,內(nèi)核啟動后從這個地方獲得參數(shù)。
除了約定好參數(shù)存放的地址外,還要規(guī)定參數(shù)的結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)tag和tag_header定義在Linux內(nèi)核源碼的/arch/arm/include/asm/?setup.h頭文件中,如下所示:第15章移植U-Bootstructtag{
structtag_headerhdr; union{ structtag_corecore; structtag_mem32mem;
structtag_videotextvideotext; structtag_ramdiskramdisk; structtag_initrdinitrd; structtag_serialnrserialnr; structtag_revisionrevision; structtag_videolfbvideolfb; structtag_cmdlinecmdline; /*Acornspecific*/ structtag_acornacorn; /*DC21285specific*/ structtag_memclkmemclk; }u;};structtag_header{ u32size;
u32tag; };第15章移植U-Boot15.2U-Boot分析與移植15.2.1U-Boot簡介
現(xiàn)在的Bootloader種類繁多,比如x86上有LILO、GRUB等。對于ARM架構(gòu)的CPU,Bootloader有U-Boot、Vivi等。U-Boot支持大多CPU,可以燒寫EXT2、JFFS2文件系統(tǒng)映像,支持串口下載、網(wǎng)絡(luò)下載,并提供了大量的命令。U-Boot(UniversalBootLoader),即通用Bootloader,是遵循GPL條款的開放源代碼項(xiàng)目。它的名字“通用”有兩層含義:可以引導(dǎo)多種操作系統(tǒng)和支持多種架構(gòu)的CPU。它支持Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等操作系統(tǒng),支持PowerPC、MIPS、x86、ARM、NIOS、XScale等架構(gòu)的CPU。第15章移植U-BootU-Boot的特點(diǎn):開放源碼。支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS。支持多個處理器系列,如PowerPC、ARM、x86、MIPS、XScale。較高的可靠性和穩(wěn)定性。高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求、產(chǎn)品發(fā)布等。豐富的設(shè)備驅(qū)動源碼。較為豐富的開發(fā)調(diào)試文檔與強(qiáng)大的網(wǎng)絡(luò)技術(shù)支持。第15章移植U-Boot支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統(tǒng)。支持NFS掛載、從Flash中引導(dǎo)壓縮或非壓縮系統(tǒng)內(nèi)核??伸`活設(shè)置、傳遞多個關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤對Linux支持最為強(qiáng)勁。支持目標(biāo)板環(huán)境變量多種存儲方式。CRC32校驗(yàn),可校驗(yàn)Flash中內(nèi)核、RAMDISK鏡像文件是否完好。上電自檢功能。第15章移植U-Boot15.2.2U-Boot源碼結(jié)構(gòu)由于U-Boot源碼是開源的,因此可以在網(wǎng)站上ftp://ftp.denx.de/pub/u-boot/進(jìn)行下載。本例中所使用的是u-boot-2015.07.tar.bz2后解壓即得到全部源碼。u-boot-2015.07根目錄下共有19個子目錄,可以分為四類。(1)平臺相關(guān)的或開發(fā)板相關(guān)的;(2)通用的函數(shù);(3)通用的設(shè)備驅(qū)動程序;(4)
U-Boot工具、示例程序、文檔。第15章移植U-BootU-Boot源碼中的常用目錄及其作用:表15.1U-Boot頂層目錄說明第15章移植U-Boot表15.1U-Boot頂層目錄說明(續(xù)表)第15章移植U-Boot15.2.3Exynos4412啟動過程重要名詞:
iROM指Exynos4412的iROM(InternalROM,大小為64KB)中固化的啟動代碼,其作用是初始化系統(tǒng)時鐘、初始化堆和棧。(2)
BL1是與芯片相關(guān)的代碼,存儲在外部存儲設(shè)備中,其作用是用來初始化系統(tǒng)時鐘和DRAM控制器。(3)?BL2是與平臺相關(guān)的代碼,存儲在外部存儲設(shè)備中。第15章移植U-Boot圖15.2Exynos4412啟動流程圖第15章移植U-BootCPU啟動流程:
iROM是存儲在內(nèi)部的64KBROM中的,主要進(jìn)行CPU的時鐘、堆棧等基本初始化工作。?iROM啟動外設(shè)并加載BL1到內(nèi)部256KB的SRAM中。啟動外設(shè)是由OM來決定的。BL1初始化內(nèi)部系統(tǒng)時鐘和DRAM控制器。在初始化完成DRAM控制器后,開始加載OS鏡像文件。等待啟動完成后,BL1就跳轉(zhuǎn)到操作系統(tǒng)進(jìn)行執(zhí)行。第15章移植U-BootOM決定不同的啟動模式:表15.2啟動模式及引腳設(shè)置第15章移植U-BootCPU在啟動的過程中,U-Boot將執(zhí)行三段代碼:第一段:在iROM中,由三星公司事先寫好,放在芯片的內(nèi)部。即BL0。第二段:即BL1。第三段:即BL2。其中,第二段與第三段成為片外Bootloader。第15章移植U-Boot(1)BL1該階段代碼在arch/arm/cpu/armv7/start.S文件中,主要完成如下工作:①設(shè)置異常向量地址。②設(shè)置SVC32模式(ARM工作模式)。③cpu_init_crit(?)。④清TLB(頁面緩存)、關(guān)MMU及Cache等。⑤轉(zhuǎn)入低級初始化lowlevel_init。主要是對時鐘、片外內(nèi)存(DDR3)、串口、NANDFlash等進(jìn)行初始化。⑥判斷啟動開關(guān)進(jìn)行自動代碼搬移,注意這里與OM設(shè)置有關(guān)系。第15章移植U-Boot(2)BL2該階段代碼在?/board/samsung/tiny4412/lowlevel_init.S文件中,主要完成如下工作:①修改board_init_f(?)函數(shù),完成gd_t數(shù)據(jù)結(jié)構(gòu)空間分配。②完成使能Cache;板子初始化;串口初始化;外存初始化;環(huán)境變量初始化;控制臺初始化;中斷使能;以太網(wǎng)初始化;進(jìn)入main_loop(?),等待命令或自動加載內(nèi)核。第15章移植U-Boot15.3U-Boot的移植15.3.1U-Boot移植準(zhǔn)備1.解壓裁剪U-Boot源碼中有很多東西是我們不需要的,可以適當(dāng)進(jìn)行裁剪,把不要的代碼都刪除??梢园匆韵虏襟E,從各個文件夾中裁剪掉多余的文件:刪除?/arch/目錄下與arm無關(guān)的代碼文件夾(2)進(jìn)入?/arch/arm/目錄,可以刪除dts和imx-common兩個目錄。(3)進(jìn)入?/arch/arm/cpu目錄,可以刪除與armv7無關(guān)的其他arm內(nèi)核版本的文件夾。第15章移植U-Boot(4)進(jìn)入?/arch/arm/cpu/armv7/目錄,留下exynos和s5p-common文件夾及該目錄下的文件,其他文件夾可以刪除。(5)進(jìn)入?/arch/arm/include/asm目錄下,留下arch-armv7、arch-exynos和proc-armv文件夾及此文件夾下的文件,其他文件夾可以刪除。(6)進(jìn)入?/board/目錄下,刪除samsung以外的所有目錄。(7)進(jìn)入?/board/samsung/目錄下,建議留下smdkv310和common文件夾。(8)進(jìn)入到?/include/configs/目錄下,保留smdkv310.h。第15章移植U-Boot2.創(chuàng)建平臺
進(jìn)入/board/samsung/目錄下,復(fù)制smdkv310為tiny4412文件夾。進(jìn)入tiny4412文件夾,移植或添加如下文件:(1)移植lowlevel_init_tiny4412.S、clock_init_tiny4412.S、mem_init_smdk4412.S、tiny4412.c、tiny4412_val.h、tiny4412_val.h到該文件夾下。(2)修改tiny4412文件夾下的makefile,第33~37行修改為 COBJS-y:=tiny4412.o COBJS-y+=pmic.o SOBJS :=lowlevel_init.o SOBJS +=mem_init_tiny4412.o SOBJS +=clock_init_tiny4412.o第15章移植U-Boot(3)修改u-boot.lds,把該文件的第40行修改為 board/samsung/tiny4412/libtiny4412.o(.text)(4)復(fù)制include/configs/smdk4412.h,并重新命名為tiny4412.h。(5)修改主目錄下的makefile,定位到第24行,修改為 VERSION=2015 PATCHLEVEL=01(6)修改根目錄下的/boards.cfg的文件,增加自己板子的設(shè)置后,刪除其他設(shè)置。第15章移植U-Boot(7)編譯。進(jìn)入Linux進(jìn)行編譯。 cp-R/media/u-boot_tiny4412/
chmod-R777/u-boot_tiny4412/ cd/u-boot_tiny4412/ maketiny4412_config make編譯結(jié)果顯示已經(jīng)產(chǎn)生了u-boot.bin文件,表明我們移植搭建的平臺已經(jīng)成功。第15章移植U-Boot15.3.2U-Boot的源碼移植及分析下面以建立的tiny4412平臺為例,來說明U-Boot代碼的移植和修改過程。tiny4412的U-Boot其實(shí)屬于三階段的Bootloader,片內(nèi)第一階段為芯片公司內(nèi)置的。片外第一階段的文件為?/arch/arm/cpu/armv7/start.S,是與芯片架構(gòu)相關(guān)的。片外第二階段的文件為?/board/samsung/tiny4412/lowlevel_init.S,是與開發(fā)板相關(guān)的。第15章移植U-BootU-Boot片外第一階段代碼的移植、修改和分析
該部分代碼主要完成硬件設(shè)備初始化,依次完成如下設(shè)置:將CPU的工作模式設(shè)為管理模式(svc),關(guān)閉WatchDog,設(shè)置時鐘,關(guān)閉MMU、CACHE。
從/arch/arm/cpu/armv7/start.S開始,對其中代碼進(jìn)行修改和分析。第15章移植U-Boot(1)設(shè)置異常向量表:.globl_start_start:breset @uboot啟動從_start開始,跳轉(zhuǎn)到reset
ldr
pc,
_undefined_instruction
@未定義指令向量
ldr
pc,
_software_interrupt
@軟件中斷向量
ldr
pc,
_prefetch_abort@預(yù)取指令異常向量
ldr
pc,
_data_abort
@數(shù)據(jù)操作異常向量
ldr
pc,
_not_used
@未使用
ldr
pc,
_irq
@irq中斷向量
ldr
pc,
_fiq
@fiq中斷向量第15章移植U-Boot_undefined_instruction:.wordundefined_instruction_software_interrupt: .wordsoftware_interrupt_prefetch_abort: .wordprefetch_abort_data_abort: .worddata_abort_not_used: .wordnot_used_irq: .wordirq_fiq: .wordfiq_pad: .word0x12345678.global_end_vect_end_vect: .balignl16,0xdeadbeef第15章移植U-Boot(2)
U-Boot的存儲映射:.globl_TEXT_BASE_TEXT_BASE:.word CONFIG_SYS_TEXT_BASE…………(3)硬件設(shè)備的初始化:@系統(tǒng)啟動后直接跳轉(zhuǎn)到resetreset:
mrs
r0,
cpsr
@讀出cpsr的值并放入r0
bic
r0,
r0,
#0x1f@cpsr的低五位被清零
orr
r0,
r0,
#0xd3@關(guān)中斷,并進(jìn)入SVC32模式
msr
cpsr,r0@存r0的值到cpsr
bl
cpu_init_crit@跳轉(zhuǎn)到cpu_init_crit,初始化內(nèi)存、時鐘等關(guān)鍵寄存器…………第15章移植U-Boot2.U-Boot片外第二階段代碼的移植、修改和分析
通過在start.S中調(diào)用lowlevel_init函數(shù)來設(shè)置存儲控制器,使得外接的SDRAM可用。lowlevel_init是lowlevel_init.S下定義的全局函數(shù),用來配置啟動必需的硬件。通過初始化內(nèi)存芯片,準(zhǔn)備為加載Bootloader的第二階段代碼準(zhǔn)備RAM空間。
該階段代碼在/board/samsung/tiny4412/lowlevel_init.S中。注意lowlevel_init.S文件是開發(fā)板相關(guān)的。如果外接的設(shè)備不一樣,可以修改lowlevel_init.S文件中的相關(guān)宏。第15章移植U-Boot15.3.3移植/配置系統(tǒng)時鐘U-Boot在啟動的過程中,需要配置系統(tǒng)時鐘。系統(tǒng)時鐘配置不正確,CPU就不能正常工作。配置系統(tǒng)時鐘可通過以下幾個步驟進(jìn)行:(1)設(shè)置系統(tǒng)PLL鎖定時間;(2)配置PLL;(3)配置各模塊分頻系數(shù);(4)切換到PLL時鐘。第15章移植U-Boot移植過程:1.輸入源和分頻比
設(shè)置時鐘模塊的時鐘輸入源和分頻比,包括CPU、DMC、TOP、LEFTBUS、RIGHTBUS五大模塊。
CPUMUX/DIV的時鐘源和分頻比的設(shè)置。
首先檢查和修改如下代碼: #ifdefCONFIG_EXYNOS4412 #include"tiny4412_val.h" #else #include"tiny4412_val.h" #endif …………第15章移植U-Boot(2)
CMU_DMCMUX/DIV的設(shè)置。 @CLK_DIV_DMC0 和CLK_DIV_DMC1*/ #defineDMCP_RATIO 0x1 #defineDMCD_RATIO 0x1 #ifdefined(CONFIG_CLK_BUS_DMC_100_200) #defineDMC_RATIO 0x3 #else #defineDMC_RATIO 0x1 #endif …………第15章移植U-Boot(3)?CMU_TOPMUX/DIV的設(shè)置。 @CMU_TOPMUX/DIV @CLK_SRC_TOP0_VAL=0x00000110
ldrr1,=CLK_SRC_TOP0_VAL ldrr2,=CLK_SRC_TOP0_OFFSET
strr1,[r0,r2] ldrr2,=CLK_MUX_STAT_TOP_OFFSET
@ldrr3,=0x11111111 ldrr3,=CLK_MUX_STAT_TOP_VAL @0x11111221 blwait_mux_state …………第15章移植U-Boot(4)
CMU_LEFTBUSMUX/DIV的設(shè)置。ldrr1,=CLK_SRC_LEFTBUS_VALldrr2,=CLK_SRC_LEFTBUS_OFFSETstrr1,[r0,r2]ldrr2,=CLK_MUX_STAT_LEFTBUS_OFFSET@ldrr3,=0x00000021ldrr3,=CLK_MUX_STAT_LEFTBUS_VAL
…………
第15章移植U-Boot(5)?CMU_RIGHTBUSMUX/DIV的設(shè)置。@CMU_RIGHTBUSMUX/DIVldrr1,=CLK_SRC_RIGHTBUS_VALldrr2,=CLK_SRC_RIGHTBUS_OFFSET
strr1,[r0,r2]ldrr2,=CLK_MUX_STAT_RIGHTBUS_OFFSET@ldrr3,=0x00000021
……………………第15章移植U-Boot2.倍頻MPLL/EPLL/VPLL
在倍頻MPLL之前,有一小段代碼是讀取MPLL_CON0的值,來判斷其設(shè)置值是否已將MPLL設(shè)置成400MHz,如果是,就不再進(jìn)行MPLL設(shè)置,直接跳過,進(jìn)行EPLL設(shè)置。
具體代碼見課本P245。第15章移植U-Boot3.重新選擇時鐘源
選擇時鐘源的寄存器設(shè)置方法和前面介紹的一樣,只是這里需要根據(jù)新的時鐘源選擇對相應(yīng)的寄存器值進(jìn)行設(shè)置。這一次我們需要選擇倍頻后的時鐘,而不是還選擇輸入的24MHz時鐘。
例如,對于CLK_SRC_CPU寄存器的配置(以APLL以例),參考芯片手冊時鐘生成電路框圖,查找FOUTAPLL和FINPLL,由圖所知,F(xiàn)INPLL是沒有倍頻的頻率,我們要選的是倍頻后的,于是此處應(yīng)該選擇FOUTAPLL,所以寄存器CLK_SRC_CPU的第0位MUX_APLL_SEL應(yīng)設(shè)置成1。第15章移植U-Boot15.3.4移植/配置NANDFlash配置片選信號引腳NANDFlash芯片K9GAG08U0E與Exynos4412電路連接圖如圖10.7所示。由于涉及的Exynos4412各個引腳的功能都是復(fù)用的,所以需要在一些相關(guān)的寄存器中進(jìn)行設(shè)置,使其功能固定。通過查閱Exynos4412芯片手冊,該配置由GPY0CON寄存器控制。GPY0CON[3:0]位對應(yīng)著NF_CSn2的功能,應(yīng)配置為0x3。同時,對GPY0CONPDN進(jìn)行設(shè)置,禁止其內(nèi)部上/下拉功能。第15章移植U-Boot2.配置CLE/ALE/nWE/nRE/R/nB引腳
除nCE引腳,其余的幾個引腳都是復(fù)用的,需要通過寄存器GPY2CON進(jìn)行配置。其配置代碼見課本。第15章移植U-Boot15.4U-Boot的常用命令1.U-Boot常用命令的用法幫助命令help運(yùn)行help命令可以看到U-Boot中所有命令的作用??梢允褂谩?”來代替“help”。(2)下載命令U-Boot支持串口下載、網(wǎng)絡(luò)下載,相關(guān)命令有l(wèi)oadb、loads、loadx、loady和tftpboot、nfs。第15章移植U-Boot(3)內(nèi)存操作命令常用的命令有:查看內(nèi)存命令md、修改內(nèi)存命令md、填充內(nèi)存命令mw、復(fù)制命令cp。這些命令都可以帶上后綴“.b”、“.w”或“.l”,表示以字節(jié)、字(2個字節(jié))、雙字(4個字節(jié))為單位進(jìn)行操作。md命令:表示以字節(jié)、字或雙字(默認(rèn)為雙字)為單位,顯示從地址address開始的內(nèi)存數(shù)據(jù),顯示的數(shù)據(jù)個數(shù)為count。mm命令:表示以字節(jié)、字或雙字(默認(rèn)為雙字)為單位,從地址address開始修改內(nèi)存數(shù)據(jù)。第15章移植U-Bootmw命令:表示以字節(jié)、字或雙字(默認(rèn)為雙字)為單位,向開始地址為address的內(nèi)存中填充count個數(shù)據(jù),數(shù)據(jù)值為value。cp命令:表示以字節(jié)、字或雙字(默認(rèn)為雙字)為單位,從源地址source的內(nèi)存復(fù)制count個數(shù)據(jù)到目的地址的內(nèi)存。第15章移植U-Boot(4)
NANDFlash操作命令NANDFlash操作命令只有一個:NAND。它根據(jù)不同的參數(shù)進(jìn)行不同操作,比如擦除、讀取、燒寫等。比如:“NANDinfo”用于查看NANDFlash信息?!癗ANDwrite[.jffs2]addroffsize”用于把開始地址為addr的內(nèi)存中的size個字節(jié)數(shù)據(jù)寫到NANDFlash的偏移地址off處。第15章移植U-Boot(5)環(huán)境變量命令“printenv”命令用于打印全部環(huán)境變量。“printenvname1name2…”則打印名字為na
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)員工借用設(shè)備使用期限合同3篇
- 2025年度定制家具行業(yè)競業(yè)禁止模板木方買賣合同3篇
- 2025年度農(nóng)村自建房合同協(xié)議書(含智能安防監(jiān)控)
- 養(yǎng)殖場土地租賃合同(二零二五年度)農(nóng)業(yè)科技創(chuàng)新3篇
- 二零二五年度個人施工安全責(zé)任協(xié)議書范本3篇
- 2025年度農(nóng)村自建房工程承包合同
- 2025年度全新官方版二零二五年度離婚協(xié)議書與房產(chǎn)分割執(zhí)行細(xì)則3篇
- 二零二五年度特色農(nóng)業(yè)農(nóng)田承包合作協(xié)議
- 2025年度出租車位充電樁安裝工程驗(yàn)收及質(zhì)保合同
- 二零二五年度全新寫字樓轉(zhuǎn)租協(xié)議合同:商務(wù)樓租賃權(quán)轉(zhuǎn)讓專案2篇
- 《跟上兔子》繪本三年級第1季One-Day教學(xué)課件
- 家長會課件:小學(xué)三年級家長會 課件
- 孕產(chǎn)婦妊娠風(fēng)險評估表
- 農(nóng)村小學(xué)特色體育課程開發(fā)與實(shí)踐研究課題申報評審書1
- MOOC 社會保障學(xué)-江西財經(jīng)大學(xué) 中國大學(xué)慕課答案
- 城市規(guī)劃設(shè)計計費(fèi)指導(dǎo)意見(2004年)
- 制造業(yè)成本精細(xì)化管理
- 工業(yè)互聯(lián)網(wǎng)標(biāo)準(zhǔn)體系(版本3.0)
- 柴油發(fā)電機(jī)組采購施工 投標(biāo)方案(技術(shù)方案)
- 股權(quán)招募計劃書
- 創(chuàng)業(yè)之星學(xué)創(chuàng)杯經(jīng)營決策常見問題匯總
評論
0/150
提交評論