嵌入式Linux的交叉編譯環(huán)境的搭建課件_第1頁
嵌入式Linux的交叉編譯環(huán)境的搭建課件_第2頁
嵌入式Linux的交叉編譯環(huán)境的搭建課件_第3頁
嵌入式Linux的交叉編譯環(huán)境的搭建課件_第4頁
嵌入式Linux的交叉編譯環(huán)境的搭建課件_第5頁
已閱讀5頁,還剩113頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式Linux交叉編譯環(huán)境的搭建

嵌入式Linux交叉編譯環(huán)境的搭建

嵌入式Linux交叉編譯環(huán)境的構(gòu)建

嵌入式開發(fā)環(huán)境的搭建Bootloader介紹思考題本章課程:2嵌入式Linux交叉編譯環(huán)境的構(gòu)建本章課程:2本地開發(fā)vs交叉平臺開發(fā)本地開發(fā):

一般軟件的開發(fā)屬于本地開發(fā),也就是說開發(fā)軟件的系統(tǒng)與運行軟件的系統(tǒng)是相同的。交叉平臺開發(fā):

本課程所涉及到的嵌入式系統(tǒng)開發(fā)屬于交叉平臺開發(fā),也就是說開發(fā)軟件的系統(tǒng)與運行軟件的系統(tǒng)不同。3本地開發(fā)vs交叉平臺開發(fā)本地開發(fā):

一般軟件的開發(fā)屬于本交叉開發(fā)平臺主機:

開發(fā)軟件的平臺,稱為主機,往往是通用電腦;目標(biāo)機:

運行軟件的平臺,稱為目標(biāo)機,在這里是嵌入式系統(tǒng)。4交叉開發(fā)平臺主機:

開發(fā)軟件的平臺,稱為主機,往往是通用電腦(嵌入式)交叉開發(fā)工具掌握嵌入式開發(fā)工具的使用是進(jìn)行嵌入式開發(fā)的前提條件之一與主流開發(fā)工具類似,嵌入式交叉開發(fā)工具也包括編譯器,即能夠把一個源程序編譯生成一個可執(zhí)行程序的軟件調(diào)試工具,即能夠?qū)?zhí)行程序進(jìn)行源碼或匯編級調(diào)試的軟件軟件工程工具,用于協(xié)助多人開發(fā)或大型軟件項目的管理的軟件5(嵌入式)交叉開發(fā)工具掌握嵌入式開發(fā)工具的使用是進(jìn)行嵌入式開嵌入式開發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器二、使用通訊工具使用串口超級終端的使用Minicom的使用使用通訊工具TFTP方式NFS方式6嵌入式開發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器6一、安裝交叉編譯器---安裝crosstool安裝cross-tool安裝EABI工具(其中即包含交叉編譯器等多種工具)以上二者皆可7一、安裝交叉編譯器---安裝crosstool安裝cros一、安裝交叉編譯器---

方法一---安裝EABI工具交叉編譯器的安裝搭建交叉編譯環(huán)境是嵌入式開發(fā)的第一步,也是必備一步。交叉編譯器完整的安裝一般涉及到多個軟件的安裝(/pub/),包括binutils、gcc、glibc等binutils主要用于生成一些輔助工具,如objdump、as、ld等;gcc是用來生成交叉編譯器,主要生成arm-linux-gcc交叉編譯工具glibc主要是提供用戶程序所使用的一些基本的函數(shù)庫。EABI4.3.3---包含以上所需要的工具,安裝步驟:解壓EABI4.3.3.tar.gz將解壓后的工具包路徑添加到系統(tǒng)路徑,即如果將EABI4.3.3解壓到/下,那么路徑就是:PATH=$PATH:/opt/EmbedSky/4.3.3/bin8一、安裝交叉編譯器---

方法一---安裝EABI工解壓EABI工具包,就可以將已經(jīng)編譯好的交叉編譯工具包的執(zhí)行文件解壓出來,如圖:(注意對比書本P58的圖)將編譯好的執(zhí)行文件的路徑添加到系統(tǒng)路徑中9解壓EABI工具包,就可以將已經(jīng)編譯好的交叉編譯工具包的執(zhí)行方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作配置腳本生成交叉編譯工具鏈測試10方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作1準(zhǔn)備工作:單獨創(chuàng)建一工作目錄下載所需要的軟件包:Crosstool:crosstool-0.43.tar.gz(用于構(gòu)建交叉編譯工具)Linux源碼:linux2.6.8.tar.gz(linux內(nèi)核)Gcc.3.4.5.tar.gz(交叉編譯器源代碼)Glibc.2.3.2.tar.gz(交叉編譯函數(shù)庫)Linux-libc-headers..tar.gz(頭文件庫)Glibc-linuxthreaders-2.3.2.tar.gz(POSIX線程庫)Binutils-2.15.tar.gz(輔助工具庫)11準(zhǔn)備工作:11配置腳本所謂腳本:腳本(script)是使用一種特定的描述性語言,依據(jù)一定的格式編寫的可執(zhí)行文件,又稱作宏或批處理文件。在這里,就是把編譯移植過程中要執(zhí)行的命令以及系統(tǒng)環(huán)境變量的設(shè)置等操作寫在相應(yīng)的文本中批量執(zhí)行。12配置腳本12生成交叉編譯工具Cd/home/ljd/downloads/crosstool-0.43

#進(jìn)入到解壓后的cross包./ljd-arm.sh#運行安裝腳本程序,批量執(zhí)行安裝過程所需要的所有命令。若生成成功則出現(xiàn)以下執(zhí)行文件:參考書本P57到此,就已經(jīng)借用crosstool這個輔助工具將交叉編譯工具的源代碼編譯成了執(zhí)行文件,隨后的操作與EABI4.3.3類似。13生成交叉編譯工具13二、通訊工具的使用---串口超級終端和Minicom配置及使用1.超級終端

打開Windows下的“開始”→“附件”→“通訊”→“超級終端”設(shè)置串口連接參數(shù):波特率:115200,數(shù)據(jù)為8位,無奇偶校驗位,停止位1,無硬件流把開發(fā)板的串口線和PC機相連,在超級終端的窗口里應(yīng)能顯示相關(guān)的串口信息。14二、通訊工具的使用---串口超級終端和Minicom配置及使通訊工具的使用---串口超級終端和Minicom配置及使用2.Minicom首先在命令行中鍵入“minicom”,這就啟動了minicom軟件。Minicom在啟動時默認(rèn)會進(jìn)行初始化配置CTRL+AZ,來查看minicom的幫助CTRL-AO配置minicom的串口參數(shù),選擇“Serialportsetup”子項,上面列出的配置是minicom啟動是的默認(rèn)配置,用戶可以通過鍵入每一項前的大寫字母,分別對每一項進(jìn)行更改。要對波特率、數(shù)據(jù)位和停止位進(jìn)行配置,鍵入“E”,在該配置界面中,可以鍵入相應(yīng)波特率、停止位等對應(yīng)的字母,即可實現(xiàn)配置,配置完成后按回車鍵就退出了該配置界面。在確認(rèn)配置正確后,可鍵入回車返回上級配置界面,并將其保存為默認(rèn)配置??芍匦聠觤inicom使剛才配置生效,在連上開發(fā)板的串口線之后,就可在minicom中打印出正確的串口信息15通訊工具的使用---串口超級終端和Minicom配置及使用1通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用安裝nfs服務(wù)程序:運行命令:sudoapt-getinstallnfs-kernel-server(在線安裝)啟動nfs服務(wù)

sudoinit.d/nfs-kernel-serverstart進(jìn)行nfs配置

打開/etc/exports

寫入/home/用戶名/共享目錄*(rw,no_root_squash,sync)重啟nfs服務(wù)sudoinit.d/nfs-kernel-serverrestart測試自己掛載自己,查看是否成功

mountnfs本機IP:/home/用戶名/共享目錄/mnt16通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用16

通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡單文件傳輸協(xié)議(1)Linux下tftp服務(wù)配置,Linux下tftp的服務(wù)器服務(wù)是由xinetd所設(shè)定的,默認(rèn)情況下是處于關(guān)閉狀態(tài)。首先,要修改tftp的配置文件,開啟tftp服務(wù)vi/etc/xinetd.d/tftp#主要要將“disable=yes”改為“no”重啟xinetd服務(wù),使剛才的更改生效servicexinetdrestart使用命令“netstat-au”以確認(rèn)tftp服務(wù)是否已經(jīng)開啟這時,用戶就可以把所需要的傳輸文件放到“/tftpboot”目錄下,這樣,主機上的tftp服務(wù)就可以建立起來了。用直連線(注意:不可以使用網(wǎng)線)把目標(biāo)板和宿主機連起來,并且將其配置成一個網(wǎng)段的地址,再在目標(biāo)板上啟動tftp客戶端程序。17通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡單文件傳輸通訊工具---網(wǎng)絡(luò)(2)Windows下tftp服務(wù)配置單擊tftpd32下方的設(shè)置按鈕,進(jìn)入設(shè)置界面,主要配置tftp服務(wù)器端地址,也就是本機的地址。重新啟動tftpd32軟件使剛才的配置生效,服務(wù)器端的配置完成了可以用直連線連接目標(biāo)機和宿主機,在目標(biāo)機上開啟tftp服務(wù)進(jìn)行文件傳輸。18通訊工具---網(wǎng)絡(luò)182、Bootloader介紹1.概念Bootloader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段程序,它類似于PC機中的BIOS程序(1)Bootloader所支持的CPU和嵌入式開發(fā)板(2)Bootloader的安裝媒介(3)Bootloader的啟動過程分為單階段和多階段兩種(4)Bootloader的操作模式:“啟動加載”和“下載”(5)Bootloader與主機之間進(jìn)行文件傳輸所用的通信設(shè)備及協(xié)議192、Bootloader介紹1.概念19

Bootloader是什么?

Bootloader是在操作系統(tǒng)運行之前執(zhí)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。

Bootloader20 Bootloader是什么?Bootloader2.Bootloader啟動流程(1)Bootloader的stage1基本的硬件初始化,包括屏蔽所有的中斷、設(shè)置CPU的速度和時鐘頻率、RAM初始化、初始化LED、關(guān)閉CPU內(nèi)部指令和數(shù)據(jù)cache燈。為加載stage2準(zhǔn)備RAM空間,通常為了獲得更快的執(zhí)行速度,通常把stage2加載到RAM空間中來執(zhí)行,因此必須為加載Bootloader的stage2準(zhǔn)備好一段可用的RAM空間范圍??截恠tage2到RAM中,在這里要確定兩點:①stage2的可執(zhí)行映像在固態(tài)存儲設(shè)備的存放起始地址和終止地址;②RAM空間的起始地址。設(shè)置堆棧指針sp,這是為執(zhí)行stage2的C語言代碼做好準(zhǔn)備。(2)Bootloader的stage2用匯編語言跳轉(zhuǎn)到main入口函數(shù)初始化本階段要使用到的硬件設(shè)備,包括初始化串口、初始化計時器等。在初始化這些設(shè)備之前、可以輸出一些打印信息。檢測系統(tǒng)的內(nèi)存映射,所謂內(nèi)存映射就是指在整個4GB物理地址空間中有指出哪些地址范圍被分配用來尋址系統(tǒng)的RAM單元。加載內(nèi)核映像和根文件系統(tǒng)映像,這里包括規(guī)劃內(nèi)存占用的布局和從Flash上拷貝數(shù)據(jù)。設(shè)置內(nèi)核的啟動參數(shù)。212.Bootloader啟動流程(1)BootloaderBootloader的種類開放源碼的Linux引導(dǎo)程序22Bootloader的種類22Bootloader介紹---U-Boot概述1.U-Boot簡介U-Boot(UniversalBootloader),是遵循GPL條款的開放源碼項目2.U-Boot特點開放源碼;支持多種嵌入式操作系統(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ū)動源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;較為豐富的開發(fā)調(diào)試文檔與強大的網(wǎng)絡(luò)技術(shù)支持。23Bootloader介紹---U-Boot概述1.U-BooBootloader介紹---U-Boot概述3.U-Boot主要功能系統(tǒng)引導(dǎo):支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統(tǒng)。支持NFS掛載,并從FLASH中引導(dǎo)壓縮或非壓縮系統(tǒng)內(nèi)核?;据o助功能:強大的操作系統(tǒng)接口功能;可靈活設(shè)置、傳遞多個關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤其對Linux支持最為強勁;支持目標(biāo)板環(huán)境參數(shù)多種存儲方式,如FLASH、NVRAM、EEPROM;CRC32校驗,可校驗FLASH中內(nèi)核、RAMDISK鏡像文件是否完好。設(shè)備驅(qū)動:串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動支持。上電自檢功能:SDRAM、FLASH大小自動檢測;SDRAM故障檢測;CPU型號。特殊功能:XIP內(nèi)核引導(dǎo)。24Bootloader介紹---U-Boot概述3.U-BooBootloader介紹---U-Boot概述4U-Boot的燒寫JTAG接口需要專用的硬件工具來連接。最簡單的方式就是通過JTAG電纜,轉(zhuǎn)接到計算機并口連接。開發(fā)板加電(或者復(fù)位)時,燒寫程序探測到處理器是否存在,并開始通信,然后把Bootloader下載并燒寫到Flash中。這種方式速率很慢,平均每秒鐘可以燒寫100~200個字節(jié),不過價格卻非常便宜。燒寫完成后,復(fù)位實驗板,串口終端應(yīng)該顯示U-Boot的啟動信息。25Bootloader介紹---U-Boot概述4U-BoBootloader介紹---U-Boot概述11.2.2U-Boot的常用命令0. help命令bootm命令可以引導(dǎo)啟動存儲在內(nèi)存中的程序映像bootp命令通過bootp請求,要求DHCP服務(wù)器分配IP地址,然后通過TFTP協(xié)議下載指定的文件到內(nèi)存。cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長字為單位。cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對Flash的讀寫操作。crc32命令可以計算存儲數(shù)據(jù)的校驗和。echo命令回顯參數(shù)。erase命令可以擦除Flash。參數(shù)必須指定Flash擦除的范圍。nand命令可通過不同的參數(shù)實現(xiàn)對NandFlash的擦除、讀、寫操作flinfo命令打印全部Flash組的信息,也可以只打印其中某個組。

26Bootloader介紹---U-Boot概述11.2.2Bootloader介紹---U-Boot概述11.2.2U-Boot的常用命令go命令可以執(zhí)行應(yīng)用程序。iminfo可以打印程序映像的開頭信息,包含了映像內(nèi)容的校驗(序列號、頭和校驗和)。loadb命令可以通過串口線下載二進(jìn)制格式文件。loads命令可以通過串口線下載S-Record格式文件。mw命令可以按照字節(jié)、字、長字寫內(nèi)存,.b、.w、.l的用法與cp命令相同。nm命令可以修改內(nèi)存,可以按照字節(jié)、字、長字操作。printenv命令打印環(huán)境變量。protect命令是對Flash寫保護的操作,可以使能和解除寫保護。rarpboot命令把指定的文件下載到指定地址,然后執(zhí)行。run命令執(zhí)行環(huán)境變量中的命令,后面參數(shù)可以跟幾個環(huán)境變量名。setenv命令可以設(shè)置環(huán)境變量。sleep命令可以延遲N秒鐘執(zhí)行,N為十進(jìn)制數(shù)。27Bootloader介紹---U-Boot概述11.2.2U-Boot的編譯和使用什么是U-Boot最早,DENX軟件工程中心的WolfgangDenk基于8xxrom的源碼創(chuàng)建了PPCBOOT工程,并且不斷添加處理器的支持。后來,SysgoGmbh把PPCBOOT移植到ARM平臺上,創(chuàng)建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程為基礎(chǔ),創(chuàng)建了U-Boot工程。

28U-Boot的編譯和使用什么是U-Boot28U-Boot的編譯和使用U-Boot編譯

U-Boot目錄可以分為三類:與處理器體系結(jié)構(gòu)或者開發(fā)板硬件直接相關(guān)。一些通用的函數(shù)或驅(qū)動。U-Boot的應(yīng)用程序、工具或者文件。29U-Boot的編譯和使用U-Boot編譯29U-Boot的編譯和使用U-Boot目錄結(jié)構(gòu)

30U-Boot的編譯和使用U-Boot目錄結(jié)構(gòu)30U-Boot的編譯和使用

U-Boot的源碼是通過gcc和Makefile組織編譯的。頂層目錄下的Makefile首先可以設(shè)置開發(fā)板的定義,然后遞歸地調(diào)用各級子目錄下的Makefile,最后把編譯過的程序鏈接成U-Boot映像。頂層目錄下的Makefile它負(fù)責(zé)u-boot整體配置編譯。每一種開發(fā)板在Makefile都需要有板子配置的定義。配置u-boot:makesmdk2410_config編譯:make31U-Boot的編譯和使用U-Boot的源碼是通過gcc和MU-Boot的編譯和使用U-Boot生成鏡像文件

32U-Boot的編譯和使用U-Boot生成鏡像文件32U-Boot的編譯和使用U-Boot工具

33U-Boot的編譯和使用U-Boot工具33U-Boot的編譯和使用U-Boot命令介紹bootm命令

bootm命令可以引導(dǎo)啟動存儲在內(nèi)存中的程序映像。這些內(nèi)存包括RAM和可以永久保存的Flash。第1個參數(shù)addr是程序映像的地址,這個程序映像必須轉(zhuǎn)換成U-Boot的格式。第2個參數(shù)對于引導(dǎo)Linux內(nèi)核有用,通常作為U-Boot格式的RAMDISK映像存儲地址;也可以是傳遞給Linux內(nèi)核的參數(shù)(默認(rèn)情況下傳遞bootargs環(huán)境變量給內(nèi)核)。34U-Boot的編譯和使用U-Boot命令介紹34U-Boot的編譯和使用U-Boot命令介紹bootp命令bootp命令通過bootp請求,要求DHCP服務(wù)器分配IP地址,然后通過TFTP協(xié)議下載指定的文件到內(nèi)存。第1個參數(shù)是下載文件存放的內(nèi)存地址。第2個參數(shù)是要下載的文件名稱,這個文件應(yīng)該在開發(fā)主機上準(zhǔn)備好。35U-Boot的編譯和使用U-Boot命令介紹35U-Boot的編譯和使用U-Boot命令介紹cmp命令cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長字為單位。注意:cmp.b中間不能保留空格,需要連續(xù)輸入命令。第1個參數(shù)addr1是第一塊內(nèi)存的起始地址。第2個參數(shù)addr2是第二塊內(nèi)存的起始地址。第3個參數(shù)count是要比較的數(shù)目,單位是字節(jié)、字或者長字。36U-Boot的編譯和使用U-Boot命令介紹36U-Boot的編譯和使用U-Boot命令介紹cp命令cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對Flash的讀寫操作。第1個參數(shù)source是要復(fù)制的數(shù)據(jù)塊起始地址。第2個參數(shù)target是數(shù)據(jù)塊要復(fù)制到的地址。這個地址如果在Flash中,那么會直接調(diào)用寫Flash的函數(shù)操作。所以U-Boot寫Flash就使用這個命令,當(dāng)然需要先把對應(yīng)Flash區(qū)域擦干凈。第3個參數(shù)count是要復(fù)制的數(shù)目,根據(jù)cp.b、cp.w、cp.l分別以字節(jié)、字、長字為單位。37U-Boot的編譯和使用U-Boot命令介紹37U-Boot的編譯和使用U-Boot命令介紹crc32命令crc32命令可以計算存儲數(shù)據(jù)的校驗和。第1個參數(shù)address是需要校驗的數(shù)據(jù)起始地址。第2個參數(shù)count是要校驗的數(shù)據(jù)字節(jié)數(shù)。第3個參數(shù)addr用來指定保存結(jié)果的地址。38U-Boot的編譯和使用U-Boot命令介紹38U-Boot的編譯和使用U-Boot命令介紹echo命令echo命令回顯參數(shù)39U-Boot的編譯和使用U-Boot命令介紹39U-Boot的編譯和使用U-Boot命令介紹erse命令erase命令可以擦除Flash。參數(shù)必須指定Flash擦除的范圍。按照起始地址和結(jié)束地址,start必須是擦除塊的起始地址;end必須是擦除末尾塊的結(jié)束地址。這種方式最常用。40U-Boot的編譯和使用U-Boot命令介紹40U-Boot的編譯和使用U-Boot命令介紹nand命令nand命令可以通過不同的參數(shù)實現(xiàn)對NandFlash的擦除、讀、寫操作。常見的幾種命令的含義如下(具體格式見helpnand)。nanderase:擦除NandFlash。nandread:讀取NandFlash,遇到flash壞塊時會出錯。nandread.jffs2:讀取NandFlash,遇到壞塊時會把壞塊部分對應(yīng)的內(nèi)容填充為0xff,不會出錯。nandread.jffs2s:讀取NandFlash,遇到壞塊時自動跳過(建議使用)。nandwrite:寫NandFlash,nandwrite命令遇到flash壞塊時會出錯。nandwrite.jffs2:寫NandFlash,可自動跳過壞塊(建議使用)。41U-Boot的編譯和使用U-Boot命令介紹41U-Boot的編譯和使用U-Boot命令介紹flinfo命令nand命令可以通過不同的參數(shù)實現(xiàn)對NandFlash的擦除、讀、寫flinfo命令打印全部Flash組的信息,也可以只打印其中某個組。一般嵌入式系統(tǒng)的Flash只有一個組。42U-Boot的編譯和使用U-Boot命令介紹42U-Boot的編譯和使用U-Boot命令介紹go命令go命令可以執(zhí)行應(yīng)用程序。第1個參數(shù)是要執(zhí)行程序的入口地址。第2個可選參數(shù)是傳遞給程序的參數(shù),可以不用。43U-Boot的編譯和使用U-Boot命令介紹43U-Boot的編譯和使用U-Boot命令介紹iminfo命令iminfo可以打印程序映像的開頭信息,包含了映像內(nèi)容的校驗(序列號、頭和校驗和)。第1個參數(shù)指定映像的起始地址??蛇x的參數(shù)是指定更多的映像地址。44U-Boot的編譯和使用U-Boot命令介紹44U-Boot的編譯和使用U-Boot命令介紹loadb命令loadb命令可以通過串口線下載二進(jìn)制格式文件。45U-Boot的編譯和使用U-Boot命令介紹45U-Boot的編譯和使用U-Boot命令介紹loads命令loads命令可以通過串口線下載S-Record格式文件。46U-Boot的編譯和使用U-Boot命令介紹46U-Boot的編譯和使用U-Boot命令介紹mw命令mw命令可以按照字節(jié)、字、長字寫內(nèi)存,.b、.w、.l的用法與cp命令相同。第1個參數(shù)address是要寫的內(nèi)存地址。第2個參數(shù)value是要寫的值。第3個可選參數(shù)count是要寫單位值的數(shù)目。47U-Boot的編譯和使用U-Boot命令介紹47U-Boot的編譯和使用U-Boot命令介紹nfs命令nfs命令可以使用NFS網(wǎng)絡(luò)協(xié)議通過網(wǎng)絡(luò)啟動映像。48U-Boot的編譯和使用U-Boot命令介紹48U-Boot的編譯和使用U-Boot命令介紹printenv命令printenv命令打印環(huán)境變量??梢源蛴∪凯h(huán)境變量,也可以只打印參數(shù)中列出的環(huán)境變量。49U-Boot的編譯和使用U-Boot命令介紹49U-Boot的編譯和使用U-Boot命令介紹protect命令protect命令是對Flash寫保護的操作,可以使能和解除寫保護。第1個參數(shù)on代表使能寫保護;off代表解除寫保護。第2、第3個參數(shù)是指定Flash寫保護操作范圍,跟擦除的方式相同。50U-Boot的編譯和使用U-Boot命令介紹50U-Boot的編譯和使用U-Boot命令介紹rarpboot命令rarpboot命令可以使用TFTP協(xié)議通過網(wǎng)絡(luò)啟動映像。也就是把指定的文件下載到指定地址,然后執(zhí)行。第1個參數(shù)是映像文件下載到的內(nèi)存地址。第2個參數(shù)是要下載執(zhí)行的鏡像文件。51U-Boot的編譯和使用U-Boot命令介紹51U-Boot的編譯和使用U-Boot命令介紹run命令run命令可以執(zhí)行環(huán)境變量中的命令,后面參數(shù)可以跟幾個環(huán)境變量名。52U-Boot的編譯和使用U-Boot命令介紹52U-Boot的編譯和使用U-Boot命令介紹setenv命令setenv命令可以設(shè)置環(huán)境變量。第1個參數(shù)是環(huán)境變量的名稱。第2個參數(shù)是要設(shè)置的值,如果沒有第2個參數(shù),表示刪除這個環(huán)境變量。53U-Boot的編譯和使用U-Boot命令介紹53U-Boot的編譯和使用U-Boot命令介紹sleep命令tftpboot命令可以使用TFTP協(xié)議通過網(wǎng)絡(luò)下載文件。按照二進(jìn)制文件格式下載。另外使用這個命令,必須配置好相關(guān)的環(huán)境變量。例如serverip和ipaddr。第1個參數(shù)loadAddress是下載到的內(nèi)存地址。第2個參數(shù)是要下載的文件名稱,必須放在TFTP服務(wù)器相應(yīng)的目錄下。54U-Boot的編譯和使用U-Boot命令介紹54U-Boot移植在頂層Makefile中為開發(fā)板添加新的配置選項創(chuàng)建一個新目錄存放開發(fā)板相關(guān)的代碼,并且添加新文件為開發(fā)板添加新的配置文件配置開發(fā)板編譯U-Boot添加驅(qū)動或者功能選項調(diào)試U-Boot源代碼,直到U-Boot在開發(fā)板上能夠正常啟動55U-Boot移植在頂層Makefile中為開發(fā)板添加新的配置思考題什么是交叉工具鏈?如何創(chuàng)建?超級終端在嵌入式開發(fā)中起到的作用是什么?如何配置?什么是Bootloader?什么是U-Boot?簡述其主要的目錄結(jié)構(gòu)。如何編譯U-Boot?56思考題什么是交叉工具鏈?如何創(chuàng)建?56小結(jié)本章主要講解搭建嵌入式Linux開發(fā)的環(huán)境的整個流程。本章首先講解如何搭建嵌入式交叉開發(fā)環(huán)境,包括交叉編譯環(huán)境、各種服務(wù)程序和應(yīng)用程序的安裝、配置和使用。為了驅(qū)動目標(biāo)板,我們必須要先做好Bootloader、操作系統(tǒng)內(nèi)核以及文件系統(tǒng)。本章介紹Bootloader的概念以及U-Boot的編譯和移植的方法;接下來講解Linux內(nèi)核的相關(guān)知識,主要講解了內(nèi)核編譯和移植的方法;本章最后還介紹了Linux根文件系統(tǒng)的構(gòu)建。因為嵌入式系統(tǒng)的特點,它的開發(fā)與PC機上開發(fā)相比有很多復(fù)雜的前提工作,這正是嵌入式開發(fā)的難點之一,希望讀者熟悉開發(fā)環(huán)境搭建的每個環(huán)節(jié)。57小結(jié)本章主要講解搭建嵌入式Linux開發(fā)的環(huán)境的整個流程。本思考與練習(xí)在讀者的主機上搭建交叉編譯環(huán)境,并用交叉編譯器編譯hello.c程序。移植與編譯FS2410目標(biāo)板平臺的U-Boot、內(nèi)核。在主機上安裝和配置minicom、tftp、nfs等應(yīng)用程序和服務(wù)器,并通過這些軟件進(jìn)行嵌入式系統(tǒng)的應(yīng)用程序開發(fā)。58思考與練習(xí)在讀者的主機上搭建交叉編譯環(huán)境,并用交叉編譯器編譯演講完畢,謝謝觀看!演講完畢,謝謝觀看!嵌入式Linux交叉編譯環(huán)境的搭建

嵌入式Linux交叉編譯環(huán)境的搭建

嵌入式Linux交叉編譯環(huán)境的構(gòu)建

嵌入式開發(fā)環(huán)境的搭建Bootloader介紹思考題本章課程:61嵌入式Linux交叉編譯環(huán)境的構(gòu)建本章課程:2本地開發(fā)vs交叉平臺開發(fā)本地開發(fā):

一般軟件的開發(fā)屬于本地開發(fā),也就是說開發(fā)軟件的系統(tǒng)與運行軟件的系統(tǒng)是相同的。交叉平臺開發(fā):

本課程所涉及到的嵌入式系統(tǒng)開發(fā)屬于交叉平臺開發(fā),也就是說開發(fā)軟件的系統(tǒng)與運行軟件的系統(tǒng)不同。62本地開發(fā)vs交叉平臺開發(fā)本地開發(fā):

一般軟件的開發(fā)屬于本交叉開發(fā)平臺主機:

開發(fā)軟件的平臺,稱為主機,往往是通用電腦;目標(biāo)機:

運行軟件的平臺,稱為目標(biāo)機,在這里是嵌入式系統(tǒng)。63交叉開發(fā)平臺主機:

開發(fā)軟件的平臺,稱為主機,往往是通用電腦(嵌入式)交叉開發(fā)工具掌握嵌入式開發(fā)工具的使用是進(jìn)行嵌入式開發(fā)的前提條件之一與主流開發(fā)工具類似,嵌入式交叉開發(fā)工具也包括編譯器,即能夠把一個源程序編譯生成一個可執(zhí)行程序的軟件調(diào)試工具,即能夠?qū)?zhí)行程序進(jìn)行源碼或匯編級調(diào)試的軟件軟件工程工具,用于協(xié)助多人開發(fā)或大型軟件項目的管理的軟件64(嵌入式)交叉開發(fā)工具掌握嵌入式開發(fā)工具的使用是進(jìn)行嵌入式開嵌入式開發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器二、使用通訊工具使用串口超級終端的使用Minicom的使用使用通訊工具TFTP方式NFS方式65嵌入式開發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器6一、安裝交叉編譯器---安裝crosstool安裝cross-tool安裝EABI工具(其中即包含交叉編譯器等多種工具)以上二者皆可66一、安裝交叉編譯器---安裝crosstool安裝cros一、安裝交叉編譯器---

方法一---安裝EABI工具交叉編譯器的安裝搭建交叉編譯環(huán)境是嵌入式開發(fā)的第一步,也是必備一步。交叉編譯器完整的安裝一般涉及到多個軟件的安裝(/pub/),包括binutils、gcc、glibc等binutils主要用于生成一些輔助工具,如objdump、as、ld等;gcc是用來生成交叉編譯器,主要生成arm-linux-gcc交叉編譯工具glibc主要是提供用戶程序所使用的一些基本的函數(shù)庫。EABI4.3.3---包含以上所需要的工具,安裝步驟:解壓EABI4.3.3.tar.gz將解壓后的工具包路徑添加到系統(tǒng)路徑,即如果將EABI4.3.3解壓到/下,那么路徑就是:PATH=$PATH:/opt/EmbedSky/4.3.3/bin67一、安裝交叉編譯器---

方法一---安裝EABI工解壓EABI工具包,就可以將已經(jīng)編譯好的交叉編譯工具包的執(zhí)行文件解壓出來,如圖:(注意對比書本P58的圖)將編譯好的執(zhí)行文件的路徑添加到系統(tǒng)路徑中68解壓EABI工具包,就可以將已經(jīng)編譯好的交叉編譯工具包的執(zhí)行方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作配置腳本生成交叉編譯工具鏈測試69方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作1準(zhǔn)備工作:單獨創(chuàng)建一工作目錄下載所需要的軟件包:Crosstool:crosstool-0.43.tar.gz(用于構(gòu)建交叉編譯工具)Linux源碼:linux2.6.8.tar.gz(linux內(nèi)核)Gcc.3.4.5.tar.gz(交叉編譯器源代碼)Glibc.2.3.2.tar.gz(交叉編譯函數(shù)庫)Linux-libc-headers..tar.gz(頭文件庫)Glibc-linuxthreaders-2.3.2.tar.gz(POSIX線程庫)Binutils-2.15.tar.gz(輔助工具庫)70準(zhǔn)備工作:11配置腳本所謂腳本:腳本(script)是使用一種特定的描述性語言,依據(jù)一定的格式編寫的可執(zhí)行文件,又稱作宏或批處理文件。在這里,就是把編譯移植過程中要執(zhí)行的命令以及系統(tǒng)環(huán)境變量的設(shè)置等操作寫在相應(yīng)的文本中批量執(zhí)行。71配置腳本12生成交叉編譯工具Cd/home/ljd/downloads/crosstool-0.43

#進(jìn)入到解壓后的cross包./ljd-arm.sh#運行安裝腳本程序,批量執(zhí)行安裝過程所需要的所有命令。若生成成功則出現(xiàn)以下執(zhí)行文件:參考書本P57到此,就已經(jīng)借用crosstool這個輔助工具將交叉編譯工具的源代碼編譯成了執(zhí)行文件,隨后的操作與EABI4.3.3類似。72生成交叉編譯工具13二、通訊工具的使用---串口超級終端和Minicom配置及使用1.超級終端

打開Windows下的“開始”→“附件”→“通訊”→“超級終端”設(shè)置串口連接參數(shù):波特率:115200,數(shù)據(jù)為8位,無奇偶校驗位,停止位1,無硬件流把開發(fā)板的串口線和PC機相連,在超級終端的窗口里應(yīng)能顯示相關(guān)的串口信息。73二、通訊工具的使用---串口超級終端和Minicom配置及使通訊工具的使用---串口超級終端和Minicom配置及使用2.Minicom首先在命令行中鍵入“minicom”,這就啟動了minicom軟件。Minicom在啟動時默認(rèn)會進(jìn)行初始化配置CTRL+AZ,來查看minicom的幫助CTRL-AO配置minicom的串口參數(shù),選擇“Serialportsetup”子項,上面列出的配置是minicom啟動是的默認(rèn)配置,用戶可以通過鍵入每一項前的大寫字母,分別對每一項進(jìn)行更改。要對波特率、數(shù)據(jù)位和停止位進(jìn)行配置,鍵入“E”,在該配置界面中,可以鍵入相應(yīng)波特率、停止位等對應(yīng)的字母,即可實現(xiàn)配置,配置完成后按回車鍵就退出了該配置界面。在確認(rèn)配置正確后,可鍵入回車返回上級配置界面,并將其保存為默認(rèn)配置??芍匦聠觤inicom使剛才配置生效,在連上開發(fā)板的串口線之后,就可在minicom中打印出正確的串口信息74通訊工具的使用---串口超級終端和Minicom配置及使用1通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用安裝nfs服務(wù)程序:運行命令:sudoapt-getinstallnfs-kernel-server(在線安裝)啟動nfs服務(wù)

sudoinit.d/nfs-kernel-serverstart進(jìn)行nfs配置

打開/etc/exports

寫入/home/用戶名/共享目錄*(rw,no_root_squash,sync)重啟nfs服務(wù)sudoinit.d/nfs-kernel-serverrestart測試自己掛載自己,查看是否成功

mountnfs本機IP:/home/用戶名/共享目錄/mnt75通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用16

通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡單文件傳輸協(xié)議(1)Linux下tftp服務(wù)配置,Linux下tftp的服務(wù)器服務(wù)是由xinetd所設(shè)定的,默認(rèn)情況下是處于關(guān)閉狀態(tài)。首先,要修改tftp的配置文件,開啟tftp服務(wù)vi/etc/xinetd.d/tftp#主要要將“disable=yes”改為“no”重啟xinetd服務(wù),使剛才的更改生效servicexinetdrestart使用命令“netstat-au”以確認(rèn)tftp服務(wù)是否已經(jīng)開啟這時,用戶就可以把所需要的傳輸文件放到“/tftpboot”目錄下,這樣,主機上的tftp服務(wù)就可以建立起來了。用直連線(注意:不可以使用網(wǎng)線)把目標(biāo)板和宿主機連起來,并且將其配置成一個網(wǎng)段的地址,再在目標(biāo)板上啟動tftp客戶端程序。76通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡單文件傳輸通訊工具---網(wǎng)絡(luò)(2)Windows下tftp服務(wù)配置單擊tftpd32下方的設(shè)置按鈕,進(jìn)入設(shè)置界面,主要配置tftp服務(wù)器端地址,也就是本機的地址。重新啟動tftpd32軟件使剛才的配置生效,服務(wù)器端的配置完成了可以用直連線連接目標(biāo)機和宿主機,在目標(biāo)機上開啟tftp服務(wù)進(jìn)行文件傳輸。77通訊工具---網(wǎng)絡(luò)182、Bootloader介紹1.概念Bootloader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段程序,它類似于PC機中的BIOS程序(1)Bootloader所支持的CPU和嵌入式開發(fā)板(2)Bootloader的安裝媒介(3)Bootloader的啟動過程分為單階段和多階段兩種(4)Bootloader的操作模式:“啟動加載”和“下載”(5)Bootloader與主機之間進(jìn)行文件傳輸所用的通信設(shè)備及協(xié)議782、Bootloader介紹1.概念19

Bootloader是什么?

Bootloader是在操作系統(tǒng)運行之前執(zhí)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。

Bootloader79 Bootloader是什么?Bootloader2.Bootloader啟動流程(1)Bootloader的stage1基本的硬件初始化,包括屏蔽所有的中斷、設(shè)置CPU的速度和時鐘頻率、RAM初始化、初始化LED、關(guān)閉CPU內(nèi)部指令和數(shù)據(jù)cache燈。為加載stage2準(zhǔn)備RAM空間,通常為了獲得更快的執(zhí)行速度,通常把stage2加載到RAM空間中來執(zhí)行,因此必須為加載Bootloader的stage2準(zhǔn)備好一段可用的RAM空間范圍。拷貝stage2到RAM中,在這里要確定兩點:①stage2的可執(zhí)行映像在固態(tài)存儲設(shè)備的存放起始地址和終止地址;②RAM空間的起始地址。設(shè)置堆棧指針sp,這是為執(zhí)行stage2的C語言代碼做好準(zhǔn)備。(2)Bootloader的stage2用匯編語言跳轉(zhuǎn)到main入口函數(shù)初始化本階段要使用到的硬件設(shè)備,包括初始化串口、初始化計時器等。在初始化這些設(shè)備之前、可以輸出一些打印信息。檢測系統(tǒng)的內(nèi)存映射,所謂內(nèi)存映射就是指在整個4GB物理地址空間中有指出哪些地址范圍被分配用來尋址系統(tǒng)的RAM單元。加載內(nèi)核映像和根文件系統(tǒng)映像,這里包括規(guī)劃內(nèi)存占用的布局和從Flash上拷貝數(shù)據(jù)。設(shè)置內(nèi)核的啟動參數(shù)。802.Bootloader啟動流程(1)BootloaderBootloader的種類開放源碼的Linux引導(dǎo)程序81Bootloader的種類22Bootloader介紹---U-Boot概述1.U-Boot簡介U-Boot(UniversalBootloader),是遵循GPL條款的開放源碼項目2.U-Boot特點開放源碼;支持多種嵌入式操作系統(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ū)動源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;較為豐富的開發(fā)調(diào)試文檔與強大的網(wǎng)絡(luò)技術(shù)支持。82Bootloader介紹---U-Boot概述1.U-BooBootloader介紹---U-Boot概述3.U-Boot主要功能系統(tǒng)引導(dǎo):支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統(tǒng)。支持NFS掛載,并從FLASH中引導(dǎo)壓縮或非壓縮系統(tǒng)內(nèi)核?;据o助功能:強大的操作系統(tǒng)接口功能;可靈活設(shè)置、傳遞多個關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤其對Linux支持最為強勁;支持目標(biāo)板環(huán)境參數(shù)多種存儲方式,如FLASH、NVRAM、EEPROM;CRC32校驗,可校驗FLASH中內(nèi)核、RAMDISK鏡像文件是否完好。設(shè)備驅(qū)動:串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動支持。上電自檢功能:SDRAM、FLASH大小自動檢測;SDRAM故障檢測;CPU型號。特殊功能:XIP內(nèi)核引導(dǎo)。83Bootloader介紹---U-Boot概述3.U-BooBootloader介紹---U-Boot概述4U-Boot的燒寫JTAG接口需要專用的硬件工具來連接。最簡單的方式就是通過JTAG電纜,轉(zhuǎn)接到計算機并口連接。開發(fā)板加電(或者復(fù)位)時,燒寫程序探測到處理器是否存在,并開始通信,然后把Bootloader下載并燒寫到Flash中。這種方式速率很慢,平均每秒鐘可以燒寫100~200個字節(jié),不過價格卻非常便宜。燒寫完成后,復(fù)位實驗板,串口終端應(yīng)該顯示U-Boot的啟動信息。84Bootloader介紹---U-Boot概述4U-BoBootloader介紹---U-Boot概述11.2.2U-Boot的常用命令0. help命令bootm命令可以引導(dǎo)啟動存儲在內(nèi)存中的程序映像bootp命令通過bootp請求,要求DHCP服務(wù)器分配IP地址,然后通過TFTP協(xié)議下載指定的文件到內(nèi)存。cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長字為單位。cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對Flash的讀寫操作。crc32命令可以計算存儲數(shù)據(jù)的校驗和。echo命令回顯參數(shù)。erase命令可以擦除Flash。參數(shù)必須指定Flash擦除的范圍。nand命令可通過不同的參數(shù)實現(xiàn)對NandFlash的擦除、讀、寫操作flinfo命令打印全部Flash組的信息,也可以只打印其中某個組。

85Bootloader介紹---U-Boot概述11.2.2Bootloader介紹---U-Boot概述11.2.2U-Boot的常用命令go命令可以執(zhí)行應(yīng)用程序。iminfo可以打印程序映像的開頭信息,包含了映像內(nèi)容的校驗(序列號、頭和校驗和)。loadb命令可以通過串口線下載二進(jìn)制格式文件。loads命令可以通過串口線下載S-Record格式文件。mw命令可以按照字節(jié)、字、長字寫內(nèi)存,.b、.w、.l的用法與cp命令相同。nm命令可以修改內(nèi)存,可以按照字節(jié)、字、長字操作。printenv命令打印環(huán)境變量。protect命令是對Flash寫保護的操作,可以使能和解除寫保護。rarpboot命令把指定的文件下載到指定地址,然后執(zhí)行。run命令執(zhí)行環(huán)境變量中的命令,后面參數(shù)可以跟幾個環(huán)境變量名。setenv命令可以設(shè)置環(huán)境變量。sleep命令可以延遲N秒鐘執(zhí)行,N為十進(jìn)制數(shù)。86Bootloader介紹---U-Boot概述11.2.2U-Boot的編譯和使用什么是U-Boot最早,DENX軟件工程中心的WolfgangDenk基于8xxrom的源碼創(chuàng)建了PPCBOOT工程,并且不斷添加處理器的支持。后來,SysgoGmbh把PPCBOOT移植到ARM平臺上,創(chuàng)建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程為基礎(chǔ),創(chuàng)建了U-Boot工程。

87U-Boot的編譯和使用什么是U-Boot28U-Boot的編譯和使用U-Boot編譯

U-Boot目錄可以分為三類:與處理器體系結(jié)構(gòu)或者開發(fā)板硬件直接相關(guān)。一些通用的函數(shù)或驅(qū)動。U-Boot的應(yīng)用程序、工具或者文件。88U-Boot的編譯和使用U-Boot編譯29U-Boot的編譯和使用U-Boot目錄結(jié)構(gòu)

89U-Boot的編譯和使用U-Boot目錄結(jié)構(gòu)30U-Boot的編譯和使用

U-Boot的源碼是通過gcc和Makefile組織編譯的。頂層目錄下的Makefile首先可以設(shè)置開發(fā)板的定義,然后遞歸地調(diào)用各級子目錄下的Makefile,最后把編譯過的程序鏈接成U-Boot映像。頂層目錄下的Makefile它負(fù)責(zé)u-boot整體配置編譯。每一種開發(fā)板在Makefile都需要有板子配置的定義。配置u-boot:makesmdk2410_config編譯:make90U-Boot的編譯和使用U-Boot的源碼是通過gcc和MU-Boot的編譯和使用U-Boot生成鏡像文件

91U-Boot的編譯和使用U-Boot生成鏡像文件32U-Boot的編譯和使用U-Boot工具

92U-Boot的編譯和使用U-Boot工具33U-Boot的編譯和使用U-Boot命令介紹bootm命令

bootm命令可以引導(dǎo)啟動存儲在內(nèi)存中的程序映像。這些內(nèi)存包括RAM和可以永久保存的Flash。第1個參數(shù)addr是程序映像的地址,這個程序映像必須轉(zhuǎn)換成U-Boot的格式。第2個參數(shù)對于引導(dǎo)Linux內(nèi)核有用,通常作為U-Boot格式的RAMDISK映像存儲地址;也可以是傳遞給Linux內(nèi)核的參數(shù)(默認(rèn)情況下傳遞bootargs環(huán)境變量給內(nèi)核)。93U-Boot的編譯和使用U-Boot命令介紹34U-Boot的編譯和使用U-Boot命令介紹bootp命令bootp命令通過bootp請求,要求DHCP服務(wù)器分配IP地址,然后通過TFTP協(xié)議下載指定的文件到內(nèi)存。第1個參數(shù)是下載文件存放的內(nèi)存地址。第2個參數(shù)是要下載的文件名稱,這個文件應(yīng)該在開發(fā)主機上準(zhǔn)備好。94U-Boot的編譯和使用U-Boot命令介紹35U-Boot的編譯和使用U-Boot命令介紹cmp命令cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長字為單位。注意:cmp.b中間不能保留空格,需要連續(xù)輸入命令。第1個參數(shù)addr1是第一塊內(nèi)存的起始地址。第2個參數(shù)addr2是第二塊內(nèi)存的起始地址。第3個參數(shù)count是要比較的數(shù)目,單位是字節(jié)、字或者長字。95U-Boot的編譯和使用U-Boot命令介紹36U-Boot的編譯和使用U-Boot命令介紹cp命令cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對Flash的讀寫操作。第1個參數(shù)source是要復(fù)制的數(shù)據(jù)塊起始地址。第2個參數(shù)target是數(shù)據(jù)塊要復(fù)制到的地址。這個地址如果在Flash中,那么會直接調(diào)用寫Flash的函數(shù)操作。所以U-Boot寫Flash就使用這個命令,當(dāng)然需要先把對應(yīng)Flash區(qū)域擦干凈。第3個參數(shù)count是要復(fù)制的數(shù)目,根據(jù)cp.b、cp.w、cp.l分別以字節(jié)、字、長字為單位。96U-Boot的編譯和使用U-Boot命令介紹37U-Boot的編譯和使用U-Boot命令介紹crc32命令crc32命令可以計算存儲數(shù)據(jù)的校驗和。第1個參數(shù)address是需要校驗的數(shù)據(jù)起始地址。第2個參數(shù)count是要校驗的數(shù)據(jù)字節(jié)數(shù)。第3個參數(shù)addr用來指定保存結(jié)果的地址。97U-Boot的編譯和使用U-Boot命令介紹38U-Boot的編譯和使用U-Boot命令介紹echo命令echo命令回顯參數(shù)98U-Boot的編譯和使用U-Boot命令介紹39U-Boot的編譯和使用U-Boot命令介紹erse命令erase命令可以擦除Flash。參數(shù)必須指定Flash擦除的范圍。按照起始地址和結(jié)束地址,start必須是擦除塊的起始地址;end必須是擦除末尾塊的結(jié)束地址。這種方式最常用。99U-Boot的編譯和使用U-Boot命令介紹40U-Boot的編譯和使用U-Boot命令介紹nand命令nand命令可以通過不同的參數(shù)實現(xiàn)對NandFlash的擦除、讀、寫操作。常見的幾種命令的含義如下(具體格式見helpnand)。nanderase:擦除NandFlash。nandread:讀取NandFlash,遇到flash壞塊時會出錯。nandread.jffs2:讀取NandFlash,遇到壞塊時會把壞塊部分對應(yīng)的內(nèi)容填充為0xff,不會出錯。nandread.jffs2s:讀取NandFlash,遇到壞塊時自動跳過(建議使用)。nandwrite:寫NandFlash,nandwrite命令遇到flash壞塊時會出錯。nandwrite.jffs2:寫NandFlash,可自動跳過壞塊(建議使用)。100U-Boot的編譯和使用U-Boot命令介紹41U-Boot的編譯和使用U-Boot命令介紹flinfo命令nand命令可以通過不同的參數(shù)實現(xiàn)對NandFlash的擦除、讀、寫flinfo命令打印全部Flash組的信息,也可以只打印其中某個組。一般嵌入式系統(tǒng)的Flash只有一個組。101U-Boot的編譯和使用U-Boot命令介紹42U-Boot的編譯和使用U-Boot命令介紹go

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論