版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式Linux交叉編譯環(huán)境的搭建
嵌入式Linux交叉編譯環(huán)境的搭建
嵌入式Linux交叉編譯環(huán)境的構(gòu)建
嵌入式開(kāi)發(fā)環(huán)境的搭建Bootloader介紹思考題本章課程:2嵌入式Linux交叉編譯環(huán)境的構(gòu)建本章課程:2本地開(kāi)發(fā)vs交叉平臺(tái)開(kāi)發(fā)本地開(kāi)發(fā):
一般軟件的開(kāi)發(fā)屬于本地開(kāi)發(fā),也就是說(shuō)開(kāi)發(fā)軟件的系統(tǒng)與運(yùn)行軟件的系統(tǒng)是相同的。交叉平臺(tái)開(kāi)發(fā):
本課程所涉及到的嵌入式系統(tǒng)開(kāi)發(fā)屬于交叉平臺(tái)開(kāi)發(fā),也就是說(shuō)開(kāi)發(fā)軟件的系統(tǒng)與運(yùn)行軟件的系統(tǒng)不同。3本地開(kāi)發(fā)vs交叉平臺(tái)開(kāi)發(fā)本地開(kāi)發(fā):
一般軟件的開(kāi)發(fā)屬于本交叉開(kāi)發(fā)平臺(tái)主機(jī):
開(kāi)發(fā)軟件的平臺(tái),稱(chēng)為主機(jī),往往是通用電腦;目標(biāo)機(jī):
運(yùn)行軟件的平臺(tái),稱(chēng)為目標(biāo)機(jī),在這里是嵌入式系統(tǒng)。4交叉開(kāi)發(fā)平臺(tái)主機(jī):
開(kāi)發(fā)軟件的平臺(tái),稱(chēng)為主機(jī),往往是通用電腦(嵌入式)交叉開(kāi)發(fā)工具掌握嵌入式開(kāi)發(fā)工具的使用是進(jìn)行嵌入式開(kāi)發(fā)的前提條件之一與主流開(kāi)發(fā)工具類(lèi)似,嵌入式交叉開(kāi)發(fā)工具也包括編譯器,即能夠把一個(gè)源程序編譯生成一個(gè)可執(zhí)行程序的軟件調(diào)試工具,即能夠?qū)?zhí)行程序進(jìn)行源碼或匯編級(jí)調(diào)試的軟件軟件工程工具,用于協(xié)助多人開(kāi)發(fā)或大型軟件項(xiàng)目的管理的軟件5(嵌入式)交叉開(kāi)發(fā)工具掌握嵌入式開(kāi)發(fā)工具的使用是進(jìn)行嵌入式開(kāi)嵌入式開(kāi)發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器二、使用通訊工具使用串口超級(jí)終端的使用Minicom的使用使用通訊工具TFTP方式NFS方式6嵌入式開(kāi)發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器6一、安裝交叉編譯器---安裝crosstool安裝cross-tool安裝EABI工具(其中即包含交叉編譯器等多種工具)以上二者皆可7一、安裝交叉編譯器---安裝crosstool安裝cros一、安裝交叉編譯器---
方法一---安裝EABI工具交叉編譯器的安裝搭建交叉編譯環(huán)境是嵌入式開(kāi)發(fā)的第一步,也是必備一步。交叉編譯器完整的安裝一般涉及到多個(gè)軟件的安裝(/pub/),包括binutils、gcc、glibc等binutils主要用于生成一些輔助工具,如objdump、as、ld等;gcc是用來(lái)生成交叉編譯器,主要生成arm-linux-gcc交叉編譯工具glibc主要是提供用戶(hù)程序所使用的一些基本的函數(shù)庫(kù)。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í)行文件解壓出來(lái),如圖:(注意對(duì)比書(shū)本P58的圖)將編譯好的執(zhí)行文件的路徑添加到系統(tǒng)路徑中9解壓EABI工具包,就可以將已經(jīng)編譯好的交叉編譯工具包的執(zhí)行方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作配置腳本生成交叉編譯工具鏈測(cè)試10方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作1準(zhǔn)備工作:?jiǎn)为?dú)創(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ù)庫(kù))Linux-libc-headers..tar.gz(頭文件庫(kù))Glibc-linuxthreaders-2.3.2.tar.gz(POSIX線(xiàn)程庫(kù))Binutils-2.15.tar.gz(輔助工具庫(kù))11準(zhǔn)備工作:11配置腳本所謂腳本:腳本(script)是使用一種特定的描述性語(yǔ)言,依據(jù)一定的格式編寫(xiě)的可執(zhí)行文件,又稱(chēng)作宏或批處理文件。在這里,就是把編譯移植過(guò)程中要執(zhí)行的命令以及系統(tǒng)環(huán)境變量的設(shè)置等操作寫(xiě)在相應(yīng)的文本中批量執(zhí)行。12配置腳本12生成交叉編譯工具Cd/home/ljd/downloads/crosstool-0.43
#進(jìn)入到解壓后的cross包./ljd-arm.sh#運(yùn)行安裝腳本程序,批量執(zhí)行安裝過(guò)程所需要的所有命令。若生成成功則出現(xiàn)以下執(zhí)行文件:參考書(shū)本P57到此,就已經(jīng)借用crosstool這個(gè)輔助工具將交叉編譯工具的源代碼編譯成了執(zhí)行文件,隨后的操作與EABI4.3.3類(lèi)似。13生成交叉編譯工具13二、通訊工具的使用---串口超級(jí)終端和Minicom配置及使用1.超級(jí)終端
打開(kāi)Windows下的“開(kāi)始”→“附件”→“通訊”→“超級(jí)終端”設(shè)置串口連接參數(shù):波特率:115200,數(shù)據(jù)為8位,無(wú)奇偶校驗(yàn)位,停止位1,無(wú)硬件流把開(kāi)發(fā)板的串口線(xiàn)和PC機(jī)相連,在超級(jí)終端的窗口里應(yīng)能顯示相關(guān)的串口信息。14二、通訊工具的使用---串口超級(jí)終端和Minicom配置及使通訊工具的使用---串口超級(jí)終端和Minicom配置及使用2.Minicom首先在命令行中鍵入“minicom”,這就啟動(dòng)了minicom軟件。Minicom在啟動(dòng)時(shí)默認(rèn)會(huì)進(jìn)行初始化配置CTRL+AZ,來(lái)查看minicom的幫助CTRL-AO配置minicom的串口參數(shù),選擇“Serialportsetup”子項(xiàng),上面列出的配置是minicom啟動(dòng)是的默認(rèn)配置,用戶(hù)可以通過(guò)鍵入每一項(xiàng)前的大寫(xiě)字母,分別對(duì)每一項(xiàng)進(jìn)行更改。要對(duì)波特率、數(shù)據(jù)位和停止位進(jìn)行配置,鍵入“E”,在該配置界面中,可以鍵入相應(yīng)波特率、停止位等對(duì)應(yīng)的字母,即可實(shí)現(xiàn)配置,配置完成后按回車(chē)鍵就退出了該配置界面。在確認(rèn)配置正確后,可鍵入回車(chē)返回上級(jí)配置界面,并將其保存為默認(rèn)配置??芍匦聠?dòng)minicom使剛才配置生效,在連上開(kāi)發(fā)板的串口線(xiàn)之后,就可在minicom中打印出正確的串口信息15通訊工具的使用---串口超級(jí)終端和Minicom配置及使用1通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用安裝nfs服務(wù)程序:運(yùn)行命令:sudoapt-getinstallnfs-kernel-server(在線(xiàn)安裝)啟動(dòng)nfs服務(wù)
sudoinit.d/nfs-kernel-serverstart進(jìn)行nfs配置
打開(kāi)/etc/exports
寫(xiě)入/home/用戶(hù)名/共享目錄*(rw,no_root_squash,sync)重啟nfs服務(wù)sudoinit.d/nfs-kernel-serverrestart測(cè)試自己掛載自己,查看是否成功
mountnfs本機(jī)IP:/home/用戶(hù)名/共享目錄/mnt16通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用16
通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡(jiǎn)單文件傳輸協(xié)議(1)Linux下tftp服務(wù)配置,Linux下tftp的服務(wù)器服務(wù)是由xinetd所設(shè)定的,默認(rèn)情況下是處于關(guān)閉狀態(tài)。首先,要修改tftp的配置文件,開(kāi)啟tftp服務(wù)vi/etc/xinetd.d/tftp#主要要將“disable=yes”改為“no”重啟xinetd服務(wù),使剛才的更改生效servicexinetdrestart使用命令“netstat-au”以確認(rèn)tftp服務(wù)是否已經(jīng)開(kāi)啟這時(shí),用戶(hù)就可以把所需要的傳輸文件放到“/tftpboot”目錄下,這樣,主機(jī)上的tftp服務(wù)就可以建立起來(lái)了。用直連線(xiàn)(注意:不可以使用網(wǎng)線(xiàn))把目標(biāo)板和宿主機(jī)連起來(lái),并且將其配置成一個(gè)網(wǎng)段的地址,再在目標(biāo)板上啟動(dòng)tftp客戶(hù)端程序。17通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡(jiǎn)單文件傳輸通訊工具---網(wǎng)絡(luò)(2)Windows下tftp服務(wù)配置單擊tftpd32下方的設(shè)置按鈕,進(jìn)入設(shè)置界面,主要配置tftp服務(wù)器端地址,也就是本機(jī)的地址。重新啟動(dòng)tftpd32軟件使剛才的配置生效,服務(wù)器端的配置完成了可以用直連線(xiàn)連接目標(biāo)機(jī)和宿主機(jī),在目標(biāo)機(jī)上開(kāi)啟tftp服務(wù)進(jìn)行文件傳輸。18通訊工具---網(wǎng)絡(luò)182、Bootloader介紹1.概念Bootloader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序,它類(lèi)似于PC機(jī)中的BIOS程序(1)Bootloader所支持的CPU和嵌入式開(kāi)發(fā)板(2)Bootloader的安裝媒介(3)Bootloader的啟動(dòng)過(guò)程分為單階段和多階段兩種(4)Bootloader的操作模式:“啟動(dòng)加載”和“下載”(5)Bootloader與主機(jī)之間進(jìn)行文件傳輸所用的通信設(shè)備及協(xié)議192、Bootloader介紹1.概念19
Bootloader是什么?
Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。
Bootloader20 Bootloader是什么?Bootloader2.Bootloader啟動(dòng)流程(1)Bootloader的stage1基本的硬件初始化,包括屏蔽所有的中斷、設(shè)置CPU的速度和時(shí)鐘頻率、RAM初始化、初始化LED、關(guān)閉CPU內(nèi)部指令和數(shù)據(jù)cache燈。為加載stage2準(zhǔn)備RAM空間,通常為了獲得更快的執(zhí)行速度,通常把stage2加載到RAM空間中來(lái)執(zhí)行,因此必須為加載Bootloader的stage2準(zhǔn)備好一段可用的RAM空間范圍。拷貝stage2到RAM中,在這里要確定兩點(diǎn):①stage2的可執(zhí)行映像在固態(tài)存儲(chǔ)設(shè)備的存放起始地址和終止地址;②RAM空間的起始地址。設(shè)置堆棧指針sp,這是為執(zhí)行stage2的C語(yǔ)言代碼做好準(zhǔn)備。(2)Bootloader的stage2用匯編語(yǔ)言跳轉(zhuǎn)到main入口函數(shù)初始化本階段要使用到的硬件設(shè)備,包括初始化串口、初始化計(jì)時(shí)器等。在初始化這些設(shè)備之前、可以輸出一些打印信息。檢測(cè)系統(tǒng)的內(nèi)存映射,所謂內(nèi)存映射就是指在整個(gè)4GB物理地址空間中有指出哪些地址范圍被分配用來(lái)尋址系統(tǒng)的RAM單元。加載內(nèi)核映像和根文件系統(tǒng)映像,這里包括規(guī)劃內(nèi)存占用的布局和從Flash上拷貝數(shù)據(jù)。設(shè)置內(nèi)核的啟動(dòng)參數(shù)。212.Bootloader啟動(dòng)流程(1)BootloaderBootloader的種類(lèi)開(kāi)放源碼的Linux引導(dǎo)程序22Bootloader的種類(lèi)22Bootloader介紹---U-Boot概述1.U-Boot簡(jiǎn)介U-Boot(UniversalBootloader),是遵循GPL條款的開(kāi)放源碼項(xiàng)目2.U-Boot特點(diǎn)開(kāi)放源碼;支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS、XScale;較高的可靠性和穩(wěn)定性;高度靈活的功能設(shè)置,適合U-Boot調(diào)試,操作系統(tǒng)不同引導(dǎo)要求,產(chǎn)品發(fā)布等;豐富的設(shè)備驅(qū)動(dòng)源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤(pán)等;較為豐富的開(kāi)發(fā)調(diào)試文檔與強(qiáng)大的網(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)核。基本輔助功能:強(qiáng)大的操作系統(tǒng)接口功能;可靈活設(shè)置、傳遞多個(gè)關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開(kāi)發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤其對(duì)Linux支持最為強(qiáng)勁;支持目標(biāo)板環(huán)境參數(shù)多種存儲(chǔ)方式,如FLASH、NVRAM、EEPROM;CRC32校驗(yàn),可校驗(yàn)FLASH中內(nèi)核、RAMDISK鏡像文件是否完好。設(shè)備驅(qū)動(dòng):串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤(pán)、USB、PCMCIA、PCI、RTC等驅(qū)動(dòng)支持。上電自檢功能:SDRAM、FLASH大小自動(dòng)檢測(cè);SDRAM故障檢測(cè);CPU型號(hào)。特殊功能:XIP內(nèi)核引導(dǎo)。24Bootloader介紹---U-Boot概述3.U-BooBootloader介紹---U-Boot概述4U-Boot的燒寫(xiě)JTAG接口需要專(zhuān)用的硬件工具來(lái)連接。最簡(jiǎn)單的方式就是通過(guò)JTAG電纜,轉(zhuǎn)接到計(jì)算機(jī)并口連接。開(kāi)發(fā)板加電(或者復(fù)位)時(shí),燒寫(xiě)程序探測(cè)到處理器是否存在,并開(kāi)始通信,然后把Bootloader下載并燒寫(xiě)到Flash中。這種方式速率很慢,平均每秒鐘可以燒寫(xiě)100~200個(gè)字節(jié),不過(guò)價(jià)格卻非常便宜。燒寫(xiě)完成后,復(fù)位實(shí)驗(yàn)板,串口終端應(yīng)該顯示U-Boot的啟動(dòng)信息。25Bootloader介紹---U-Boot概述4U-BoBootloader介紹---U-Boot概述11.2.2U-Boot的常用命令0. help命令bootm命令可以引導(dǎo)啟動(dòng)存儲(chǔ)在內(nèi)存中的程序映像bootp命令通過(guò)bootp請(qǐng)求,要求DHCP服務(wù)器分配IP地址,然后通過(guò)TFTP協(xié)議下載指定的文件到內(nèi)存。cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長(zhǎng)字為單位。cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對(duì)Flash的讀寫(xiě)操作。crc32命令可以計(jì)算存儲(chǔ)數(shù)據(jù)的校驗(yàn)和。echo命令回顯參數(shù)。erase命令可以擦除Flash。參數(shù)必須指定Flash擦除的范圍。nand命令可通過(guò)不同的參數(shù)實(shí)現(xiàn)對(duì)NandFlash的擦除、讀、寫(xiě)操作flinfo命令打印全部Flash組的信息,也可以只打印其中某個(gè)組。
26Bootloader介紹---U-Boot概述11.2.2Bootloader介紹---U-Boot概述11.2.2U-Boot的常用命令go命令可以執(zhí)行應(yīng)用程序。iminfo可以打印程序映像的開(kāi)頭信息,包含了映像內(nèi)容的校驗(yàn)(序列號(hào)、頭和校驗(yàn)和)。loadb命令可以通過(guò)串口線(xiàn)下載二進(jìn)制格式文件。loads命令可以通過(guò)串口線(xiàn)下載S-Record格式文件。mw命令可以按照字節(jié)、字、長(zhǎng)字寫(xiě)內(nèi)存,.b、.w、.l的用法與cp命令相同。nm命令可以修改內(nèi)存,可以按照字節(jié)、字、長(zhǎng)字操作。printenv命令打印環(huán)境變量。protect命令是對(duì)Flash寫(xiě)保護(hù)的操作,可以使能和解除寫(xiě)保護(hù)。rarpboot命令把指定的文件下載到指定地址,然后執(zhí)行。run命令執(zhí)行環(huán)境變量中的命令,后面參數(shù)可以跟幾個(gè)環(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工程,并且不斷添加處理器的支持。后來(lái),SysgoGmbh把PPCBOOT移植到ARM平臺(tái)上,創(chuàng)建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程為基礎(chǔ),創(chuàng)建了U-Boot工程。
28U-Boot的編譯和使用什么是U-Boot28U-Boot的編譯和使用U-Boot編譯
U-Boot目錄可以分為三類(lèi):與處理器體系結(jié)構(gòu)或者開(kāi)發(fā)板硬件直接相關(guān)。一些通用的函數(shù)或驅(qū)動(dòng)。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的源碼是通過(guò)gcc和Makefile組織編譯的。頂層目錄下的Makefile首先可以設(shè)置開(kāi)發(fā)板的定義,然后遞歸地調(diào)用各級(jí)子目錄下的Makefile,最后把編譯過(guò)的程序鏈接成U-Boot映像。頂層目錄下的Makefile它負(fù)責(zé)u-boot整體配置編譯。每一種開(kāi)發(fā)板在Makefile都需要有板子配置的定義。配置u-boot:makesmdk2410_config編譯:make31U-Boot的編譯和使用U-Boot的源碼是通過(guò)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)啟動(dòng)存儲(chǔ)在內(nèi)存中的程序映像。這些內(nèi)存包括RAM和可以永久保存的Flash。第1個(gè)參數(shù)addr是程序映像的地址,這個(gè)程序映像必須轉(zhuǎn)換成U-Boot的格式。第2個(gè)參數(shù)對(duì)于引導(dǎo)Linux內(nèi)核有用,通常作為U-Boot格式的RAMDISK映像存儲(chǔ)地址;也可以是傳遞給Linux內(nèi)核的參數(shù)(默認(rèn)情況下傳遞bootargs環(huán)境變量給內(nèi)核)。34U-Boot的編譯和使用U-Boot命令介紹34U-Boot的編譯和使用U-Boot命令介紹bootp命令bootp命令通過(guò)bootp請(qǐng)求,要求DHCP服務(wù)器分配IP地址,然后通過(guò)TFTP協(xié)議下載指定的文件到內(nèi)存。第1個(gè)參數(shù)是下載文件存放的內(nèi)存地址。第2個(gè)參數(shù)是要下載的文件名稱(chēng),這個(gè)文件應(yīng)該在開(kāi)發(fā)主機(jī)上準(zhǔn)備好。35U-Boot的編譯和使用U-Boot命令介紹35U-Boot的編譯和使用U-Boot命令介紹cmp命令cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長(zhǎng)字為單位。注意:cmp.b中間不能保留空格,需要連續(xù)輸入命令。第1個(gè)參數(shù)addr1是第一塊內(nèi)存的起始地址。第2個(gè)參數(shù)addr2是第二塊內(nèi)存的起始地址。第3個(gè)參數(shù)count是要比較的數(shù)目,單位是字節(jié)、字或者長(zhǎng)字。36U-Boot的編譯和使用U-Boot命令介紹36U-Boot的編譯和使用U-Boot命令介紹cp命令cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對(duì)Flash的讀寫(xiě)操作。第1個(gè)參數(shù)source是要復(fù)制的數(shù)據(jù)塊起始地址。第2個(gè)參數(shù)target是數(shù)據(jù)塊要復(fù)制到的地址。這個(gè)地址如果在Flash中,那么會(huì)直接調(diào)用寫(xiě)Flash的函數(shù)操作。所以U-Boot寫(xiě)Flash就使用這個(gè)命令,當(dāng)然需要先把對(duì)應(yīng)Flash區(qū)域擦干凈。第3個(gè)參數(shù)count是要復(fù)制的數(shù)目,根據(jù)cp.b、cp.w、cp.l分別以字節(jié)、字、長(zhǎng)字為單位。37U-Boot的編譯和使用U-Boot命令介紹37U-Boot的編譯和使用U-Boot命令介紹crc32命令crc32命令可以計(jì)算存儲(chǔ)數(shù)據(jù)的校驗(yàn)和。第1個(gè)參數(shù)address是需要校驗(yàn)的數(shù)據(jù)起始地址。第2個(gè)參數(shù)count是要校驗(yàn)的數(shù)據(jù)字節(jié)數(shù)。第3個(gè)參數(shù)addr用來(lái)指定保存結(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命令可以通過(guò)不同的參數(shù)實(shí)現(xiàn)對(duì)NandFlash的擦除、讀、寫(xiě)操作。常見(jiàn)的幾種命令的含義如下(具體格式見(jiàn)helpnand)。nanderase:擦除NandFlash。nandread:讀取NandFlash,遇到flash壞塊時(shí)會(huì)出錯(cuò)。nandread.jffs2:讀取NandFlash,遇到壞塊時(shí)會(huì)把壞塊部分對(duì)應(yīng)的內(nèi)容填充為0xff,不會(huì)出錯(cuò)。nandread.jffs2s:讀取NandFlash,遇到壞塊時(shí)自動(dòng)跳過(guò)(建議使用)。nandwrite:寫(xiě)NandFlash,nandwrite命令遇到flash壞塊時(shí)會(huì)出錯(cuò)。nandwrite.jffs2:寫(xiě)NandFlash,可自動(dòng)跳過(guò)壞塊(建議使用)。41U-Boot的編譯和使用U-Boot命令介紹41U-Boot的編譯和使用U-Boot命令介紹flinfo命令nand命令可以通過(guò)不同的參數(shù)實(shí)現(xiàn)對(duì)NandFlash的擦除、讀、寫(xiě)flinfo命令打印全部Flash組的信息,也可以只打印其中某個(gè)組。一般嵌入式系統(tǒng)的Flash只有一個(gè)組。42U-Boot的編譯和使用U-Boot命令介紹42U-Boot的編譯和使用U-Boot命令介紹go命令go命令可以執(zhí)行應(yīng)用程序。第1個(gè)參數(shù)是要執(zhí)行程序的入口地址。第2個(gè)可選參數(shù)是傳遞給程序的參數(shù),可以不用。43U-Boot的編譯和使用U-Boot命令介紹43U-Boot的編譯和使用U-Boot命令介紹iminfo命令iminfo可以打印程序映像的開(kāi)頭信息,包含了映像內(nèi)容的校驗(yàn)(序列號(hào)、頭和校驗(yàn)和)。第1個(gè)參數(shù)指定映像的起始地址??蛇x的參數(shù)是指定更多的映像地址。44U-Boot的編譯和使用U-Boot命令介紹44U-Boot的編譯和使用U-Boot命令介紹loadb命令loadb命令可以通過(guò)串口線(xiàn)下載二進(jìn)制格式文件。45U-Boot的編譯和使用U-Boot命令介紹45U-Boot的編譯和使用U-Boot命令介紹loads命令loads命令可以通過(guò)串口線(xiàn)下載S-Record格式文件。46U-Boot的編譯和使用U-Boot命令介紹46U-Boot的編譯和使用U-Boot命令介紹mw命令mw命令可以按照字節(jié)、字、長(zhǎng)字寫(xiě)內(nèi)存,.b、.w、.l的用法與cp命令相同。第1個(gè)參數(shù)address是要寫(xiě)的內(nèi)存地址。第2個(gè)參數(shù)value是要寫(xiě)的值。第3個(gè)可選參數(shù)count是要寫(xiě)單位值的數(shù)目。47U-Boot的編譯和使用U-Boot命令介紹47U-Boot的編譯和使用U-Boot命令介紹nfs命令nfs命令可以使用NFS網(wǎng)絡(luò)協(xié)議通過(guò)網(wǎng)絡(luò)啟動(dòng)映像。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命令是對(duì)Flash寫(xiě)保護(hù)的操作,可以使能和解除寫(xiě)保護(hù)。第1個(gè)參數(shù)on代表使能寫(xiě)保護(hù);off代表解除寫(xiě)保護(hù)。第2、第3個(gè)參數(shù)是指定Flash寫(xiě)保護(hù)操作范圍,跟擦除的方式相同。50U-Boot的編譯和使用U-Boot命令介紹50U-Boot的編譯和使用U-Boot命令介紹rarpboot命令rarpboot命令可以使用TFTP協(xié)議通過(guò)網(wǎng)絡(luò)啟動(dòng)映像。也就是把指定的文件下載到指定地址,然后執(zhí)行。第1個(gè)參數(shù)是映像文件下載到的內(nèi)存地址。第2個(gè)參數(shù)是要下載執(zhí)行的鏡像文件。51U-Boot的編譯和使用U-Boot命令介紹51U-Boot的編譯和使用U-Boot命令介紹run命令run命令可以執(zhí)行環(huán)境變量中的命令,后面參數(shù)可以跟幾個(gè)環(huán)境變量名。52U-Boot的編譯和使用U-Boot命令介紹52U-Boot的編譯和使用U-Boot命令介紹setenv命令setenv命令可以設(shè)置環(huán)境變量。第1個(gè)參數(shù)是環(huán)境變量的名稱(chēng)。第2個(gè)參數(shù)是要設(shè)置的值,如果沒(méi)有第2個(gè)參數(shù),表示刪除這個(gè)環(huán)境變量。53U-Boot的編譯和使用U-Boot命令介紹53U-Boot的編譯和使用U-Boot命令介紹sleep命令tftpboot命令可以使用TFTP協(xié)議通過(guò)網(wǎng)絡(luò)下載文件。按照二進(jìn)制文件格式下載。另外使用這個(gè)命令,必須配置好相關(guān)的環(huán)境變量。例如serverip和ipaddr。第1個(gè)參數(shù)loadAddress是下載到的內(nèi)存地址。第2個(gè)參數(shù)是要下載的文件名稱(chēng),必須放在TFTP服務(wù)器相應(yīng)的目錄下。54U-Boot的編譯和使用U-Boot命令介紹54U-Boot移植在頂層Makefile中為開(kāi)發(fā)板添加新的配置選項(xiàng)創(chuàng)建一個(gè)新目錄存放開(kāi)發(fā)板相關(guān)的代碼,并且添加新文件為開(kāi)發(fā)板添加新的配置文件配置開(kāi)發(fā)板編譯U-Boot添加驅(qū)動(dòng)或者功能選項(xiàng)調(diào)試U-Boot源代碼,直到U-Boot在開(kāi)發(fā)板上能夠正常啟動(dòng)55U-Boot移植在頂層Makefile中為開(kāi)發(fā)板添加新的配置思考題什么是交叉工具鏈?如何創(chuàng)建?超級(jí)終端在嵌入式開(kāi)發(fā)中起到的作用是什么?如何配置?什么是Bootloader?什么是U-Boot?簡(jiǎn)述其主要的目錄結(jié)構(gòu)。如何編譯U-Boot?56思考題什么是交叉工具鏈?如何創(chuàng)建?56小結(jié)本章主要講解搭建嵌入式Linux開(kāi)發(fā)的環(huán)境的整個(gè)流程。本章首先講解如何搭建嵌入式交叉開(kāi)發(fā)環(huán)境,包括交叉編譯環(huán)境、各種服務(wù)程序和應(yīng)用程序的安裝、配置和使用。為了驅(qū)動(dòng)目標(biāo)板,我們必須要先做好Bootloader、操作系統(tǒng)內(nèi)核以及文件系統(tǒng)。本章介紹Bootloader的概念以及U-Boot的編譯和移植的方法;接下來(lái)講解Linux內(nèi)核的相關(guān)知識(shí),主要講解了內(nèi)核編譯和移植的方法;本章最后還介紹了Linux根文件系統(tǒng)的構(gòu)建。因?yàn)榍度胧较到y(tǒng)的特點(diǎn),它的開(kāi)發(fā)與PC機(jī)上開(kāi)發(fā)相比有很多復(fù)雜的前提工作,這正是嵌入式開(kāi)發(fā)的難點(diǎn)之一,希望讀者熟悉開(kāi)發(fā)環(huán)境搭建的每個(gè)環(huán)節(jié)。57小結(jié)本章主要講解搭建嵌入式Linux開(kāi)發(fā)的環(huán)境的整個(gè)流程。本思考與練習(xí)在讀者的主機(jī)上搭建交叉編譯環(huán)境,并用交叉編譯器編譯hello.c程序。移植與編譯FS2410目標(biāo)板平臺(tái)的U-Boot、內(nèi)核。在主機(jī)上安裝和配置minicom、tftp、nfs等應(yīng)用程序和服務(wù)器,并通過(guò)這些軟件進(jìn)行嵌入式系統(tǒng)的應(yīng)用程序開(kāi)發(fā)。58思考與練習(xí)在讀者的主機(jī)上搭建交叉編譯環(huán)境,并用交叉編譯器編譯演講完畢,謝謝觀看!演講完畢,謝謝觀看!嵌入式Linux交叉編譯環(huán)境的搭建
嵌入式Linux交叉編譯環(huán)境的搭建
嵌入式Linux交叉編譯環(huán)境的構(gòu)建
嵌入式開(kāi)發(fā)環(huán)境的搭建Bootloader介紹思考題本章課程:61嵌入式Linux交叉編譯環(huán)境的構(gòu)建本章課程:2本地開(kāi)發(fā)vs交叉平臺(tái)開(kāi)發(fā)本地開(kāi)發(fā):
一般軟件的開(kāi)發(fā)屬于本地開(kāi)發(fā),也就是說(shuō)開(kāi)發(fā)軟件的系統(tǒng)與運(yùn)行軟件的系統(tǒng)是相同的。交叉平臺(tái)開(kāi)發(fā):
本課程所涉及到的嵌入式系統(tǒng)開(kāi)發(fā)屬于交叉平臺(tái)開(kāi)發(fā),也就是說(shuō)開(kāi)發(fā)軟件的系統(tǒng)與運(yùn)行軟件的系統(tǒng)不同。62本地開(kāi)發(fā)vs交叉平臺(tái)開(kāi)發(fā)本地開(kāi)發(fā):
一般軟件的開(kāi)發(fā)屬于本交叉開(kāi)發(fā)平臺(tái)主機(jī):
開(kāi)發(fā)軟件的平臺(tái),稱(chēng)為主機(jī),往往是通用電腦;目標(biāo)機(jī):
運(yùn)行軟件的平臺(tái),稱(chēng)為目標(biāo)機(jī),在這里是嵌入式系統(tǒng)。63交叉開(kāi)發(fā)平臺(tái)主機(jī):
開(kāi)發(fā)軟件的平臺(tái),稱(chēng)為主機(jī),往往是通用電腦(嵌入式)交叉開(kāi)發(fā)工具掌握嵌入式開(kāi)發(fā)工具的使用是進(jìn)行嵌入式開(kāi)發(fā)的前提條件之一與主流開(kāi)發(fā)工具類(lèi)似,嵌入式交叉開(kāi)發(fā)工具也包括編譯器,即能夠把一個(gè)源程序編譯生成一個(gè)可執(zhí)行程序的軟件調(diào)試工具,即能夠?qū)?zhí)行程序進(jìn)行源碼或匯編級(jí)調(diào)試的軟件軟件工程工具,用于協(xié)助多人開(kāi)發(fā)或大型軟件項(xiàng)目的管理的軟件64(嵌入式)交叉開(kāi)發(fā)工具掌握嵌入式開(kāi)發(fā)工具的使用是進(jìn)行嵌入式開(kāi)嵌入式開(kāi)發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器二、使用通訊工具使用串口超級(jí)終端的使用Minicom的使用使用通訊工具TFTP方式NFS方式65嵌入式開(kāi)發(fā)環(huán)境搭建的內(nèi)容一、安裝交叉編譯器6一、安裝交叉編譯器---安裝crosstool安裝cross-tool安裝EABI工具(其中即包含交叉編譯器等多種工具)以上二者皆可66一、安裝交叉編譯器---安裝crosstool安裝cros一、安裝交叉編譯器---
方法一---安裝EABI工具交叉編譯器的安裝搭建交叉編譯環(huán)境是嵌入式開(kāi)發(fā)的第一步,也是必備一步。交叉編譯器完整的安裝一般涉及到多個(gè)軟件的安裝(/pub/),包括binutils、gcc、glibc等binutils主要用于生成一些輔助工具,如objdump、as、ld等;gcc是用來(lái)生成交叉編譯器,主要生成arm-linux-gcc交叉編譯工具glibc主要是提供用戶(hù)程序所使用的一些基本的函數(shù)庫(kù)。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í)行文件解壓出來(lái),如圖:(注意對(duì)比書(shū)本P58的圖)將編譯好的執(zhí)行文件的路徑添加到系統(tǒng)路徑中68解壓EABI工具包,就可以將已經(jīng)編譯好的交叉編譯工具包的執(zhí)行方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作配置腳本生成交叉編譯工具鏈測(cè)試69方法二---用CROSSTOOL構(gòu)建交叉編譯工具鏈準(zhǔn)備工作1準(zhǔn)備工作:?jiǎn)为?dú)創(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ù)庫(kù))Linux-libc-headers..tar.gz(頭文件庫(kù))Glibc-linuxthreaders-2.3.2.tar.gz(POSIX線(xiàn)程庫(kù))Binutils-2.15.tar.gz(輔助工具庫(kù))70準(zhǔn)備工作:11配置腳本所謂腳本:腳本(script)是使用一種特定的描述性語(yǔ)言,依據(jù)一定的格式編寫(xiě)的可執(zhí)行文件,又稱(chēng)作宏或批處理文件。在這里,就是把編譯移植過(guò)程中要執(zhí)行的命令以及系統(tǒng)環(huán)境變量的設(shè)置等操作寫(xiě)在相應(yīng)的文本中批量執(zhí)行。71配置腳本12生成交叉編譯工具Cd/home/ljd/downloads/crosstool-0.43
#進(jìn)入到解壓后的cross包./ljd-arm.sh#運(yùn)行安裝腳本程序,批量執(zhí)行安裝過(guò)程所需要的所有命令。若生成成功則出現(xiàn)以下執(zhí)行文件:參考書(shū)本P57到此,就已經(jīng)借用crosstool這個(gè)輔助工具將交叉編譯工具的源代碼編譯成了執(zhí)行文件,隨后的操作與EABI4.3.3類(lèi)似。72生成交叉編譯工具13二、通訊工具的使用---串口超級(jí)終端和Minicom配置及使用1.超級(jí)終端
打開(kāi)Windows下的“開(kāi)始”→“附件”→“通訊”→“超級(jí)終端”設(shè)置串口連接參數(shù):波特率:115200,數(shù)據(jù)為8位,無(wú)奇偶校驗(yàn)位,停止位1,無(wú)硬件流把開(kāi)發(fā)板的串口線(xiàn)和PC機(jī)相連,在超級(jí)終端的窗口里應(yīng)能顯示相關(guān)的串口信息。73二、通訊工具的使用---串口超級(jí)終端和Minicom配置及使通訊工具的使用---串口超級(jí)終端和Minicom配置及使用2.Minicom首先在命令行中鍵入“minicom”,這就啟動(dòng)了minicom軟件。Minicom在啟動(dòng)時(shí)默認(rèn)會(huì)進(jìn)行初始化配置CTRL+AZ,來(lái)查看minicom的幫助CTRL-AO配置minicom的串口參數(shù),選擇“Serialportsetup”子項(xiàng),上面列出的配置是minicom啟動(dòng)是的默認(rèn)配置,用戶(hù)可以通過(guò)鍵入每一項(xiàng)前的大寫(xiě)字母,分別對(duì)每一項(xiàng)進(jìn)行更改。要對(duì)波特率、數(shù)據(jù)位和停止位進(jìn)行配置,鍵入“E”,在該配置界面中,可以鍵入相應(yīng)波特率、停止位等對(duì)應(yīng)的字母,即可實(shí)現(xiàn)配置,配置完成后按回車(chē)鍵就退出了該配置界面。在確認(rèn)配置正確后,可鍵入回車(chē)返回上級(jí)配置界面,并將其保存為默認(rèn)配置??芍匦聠?dòng)minicom使剛才配置生效,在連上開(kāi)發(fā)板的串口線(xiàn)之后,就可在minicom中打印出正確的串口信息74通訊工具的使用---串口超級(jí)終端和Minicom配置及使用1通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用安裝nfs服務(wù)程序:運(yùn)行命令:sudoapt-getinstallnfs-kernel-server(在線(xiàn)安裝)啟動(dòng)nfs服務(wù)
sudoinit.d/nfs-kernel-serverstart進(jìn)行nfs配置
打開(kāi)/etc/exports
寫(xiě)入/home/用戶(hù)名/共享目錄*(rw,no_root_squash,sync)重啟nfs服務(wù)sudoinit.d/nfs-kernel-serverrestart測(cè)試自己掛載自己,查看是否成功
mountnfs本機(jī)IP:/home/用戶(hù)名/共享目錄/mnt75通訊工具---網(wǎng)絡(luò)1、nfs方式的配置及使用16
通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡(jiǎn)單文件傳輸協(xié)議(1)Linux下tftp服務(wù)配置,Linux下tftp的服務(wù)器服務(wù)是由xinetd所設(shè)定的,默認(rèn)情況下是處于關(guān)閉狀態(tài)。首先,要修改tftp的配置文件,開(kāi)啟tftp服務(wù)vi/etc/xinetd.d/tftp#主要要將“disable=yes”改為“no”重啟xinetd服務(wù),使剛才的更改生效servicexinetdrestart使用命令“netstat-au”以確認(rèn)tftp服務(wù)是否已經(jīng)開(kāi)啟這時(shí),用戶(hù)就可以把所需要的傳輸文件放到“/tftpboot”目錄下,這樣,主機(jī)上的tftp服務(wù)就可以建立起來(lái)了。用直連線(xiàn)(注意:不可以使用網(wǎng)線(xiàn))把目標(biāo)板和宿主機(jī)連起來(lái),并且將其配置成一個(gè)網(wǎng)段的地址,再在目標(biāo)板上啟動(dòng)tftp客戶(hù)端程序。76通訊工具---網(wǎng)絡(luò)2.tftp,tftp協(xié)議是簡(jiǎn)單文件傳輸通訊工具---網(wǎng)絡(luò)(2)Windows下tftp服務(wù)配置單擊tftpd32下方的設(shè)置按鈕,進(jìn)入設(shè)置界面,主要配置tftp服務(wù)器端地址,也就是本機(jī)的地址。重新啟動(dòng)tftpd32軟件使剛才的配置生效,服務(wù)器端的配置完成了可以用直連線(xiàn)連接目標(biāo)機(jī)和宿主機(jī),在目標(biāo)機(jī)上開(kāi)啟tftp服務(wù)進(jìn)行文件傳輸。77通訊工具---網(wǎng)絡(luò)182、Bootloader介紹1.概念Bootloader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序,它類(lèi)似于PC機(jī)中的BIOS程序(1)Bootloader所支持的CPU和嵌入式開(kāi)發(fā)板(2)Bootloader的安裝媒介(3)Bootloader的啟動(dòng)過(guò)程分為單階段和多階段兩種(4)Bootloader的操作模式:“啟動(dòng)加載”和“下載”(5)Bootloader與主機(jī)之間進(jìn)行文件傳輸所用的通信設(shè)備及協(xié)議782、Bootloader介紹1.概念19
Bootloader是什么?
Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。
Bootloader79 Bootloader是什么?Bootloader2.Bootloader啟動(dòng)流程(1)Bootloader的stage1基本的硬件初始化,包括屏蔽所有的中斷、設(shè)置CPU的速度和時(shí)鐘頻率、RAM初始化、初始化LED、關(guān)閉CPU內(nèi)部指令和數(shù)據(jù)cache燈。為加載stage2準(zhǔn)備RAM空間,通常為了獲得更快的執(zhí)行速度,通常把stage2加載到RAM空間中來(lái)執(zhí)行,因此必須為加載Bootloader的stage2準(zhǔn)備好一段可用的RAM空間范圍??截恠tage2到RAM中,在這里要確定兩點(diǎn):①stage2的可執(zhí)行映像在固態(tài)存儲(chǔ)設(shè)備的存放起始地址和終止地址;②RAM空間的起始地址。設(shè)置堆棧指針sp,這是為執(zhí)行stage2的C語(yǔ)言代碼做好準(zhǔn)備。(2)Bootloader的stage2用匯編語(yǔ)言跳轉(zhuǎn)到main入口函數(shù)初始化本階段要使用到的硬件設(shè)備,包括初始化串口、初始化計(jì)時(shí)器等。在初始化這些設(shè)備之前、可以輸出一些打印信息。檢測(cè)系統(tǒng)的內(nèi)存映射,所謂內(nèi)存映射就是指在整個(gè)4GB物理地址空間中有指出哪些地址范圍被分配用來(lái)尋址系統(tǒng)的RAM單元。加載內(nèi)核映像和根文件系統(tǒng)映像,這里包括規(guī)劃內(nèi)存占用的布局和從Flash上拷貝數(shù)據(jù)。設(shè)置內(nèi)核的啟動(dòng)參數(shù)。802.Bootloader啟動(dòng)流程(1)BootloaderBootloader的種類(lèi)開(kāi)放源碼的Linux引導(dǎo)程序81Bootloader的種類(lèi)22Bootloader介紹---U-Boot概述1.U-Boot簡(jiǎn)介U-Boot(UniversalBootloader),是遵循GPL條款的開(kāi)放源碼項(xiàng)目2.U-Boot特點(diǎn)開(kāi)放源碼;支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS、XScale;較高的可靠性和穩(wěn)定性;高度靈活的功能設(shè)置,適合U-Boot調(diào)試,操作系統(tǒng)不同引導(dǎo)要求,產(chǎn)品發(fā)布等;豐富的設(shè)備驅(qū)動(dòng)源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤(pán)等;較為豐富的開(kāi)發(fā)調(diào)試文檔與強(qiáng)大的網(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助功能:強(qiáng)大的操作系統(tǒng)接口功能;可靈活設(shè)置、傳遞多個(gè)關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開(kāi)發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤其對(duì)Linux支持最為強(qiáng)勁;支持目標(biāo)板環(huán)境參數(shù)多種存儲(chǔ)方式,如FLASH、NVRAM、EEPROM;CRC32校驗(yàn),可校驗(yàn)FLASH中內(nèi)核、RAMDISK鏡像文件是否完好。設(shè)備驅(qū)動(dòng):串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤(pán)、USB、PCMCIA、PCI、RTC等驅(qū)動(dòng)支持。上電自檢功能:SDRAM、FLASH大小自動(dòng)檢測(cè);SDRAM故障檢測(cè);CPU型號(hào)。特殊功能:XIP內(nèi)核引導(dǎo)。83Bootloader介紹---U-Boot概述3.U-BooBootloader介紹---U-Boot概述4U-Boot的燒寫(xiě)JTAG接口需要專(zhuān)用的硬件工具來(lái)連接。最簡(jiǎn)單的方式就是通過(guò)JTAG電纜,轉(zhuǎn)接到計(jì)算機(jī)并口連接。開(kāi)發(fā)板加電(或者復(fù)位)時(shí),燒寫(xiě)程序探測(cè)到處理器是否存在,并開(kāi)始通信,然后把Bootloader下載并燒寫(xiě)到Flash中。這種方式速率很慢,平均每秒鐘可以燒寫(xiě)100~200個(gè)字節(jié),不過(guò)價(jià)格卻非常便宜。燒寫(xiě)完成后,復(fù)位實(shí)驗(yàn)板,串口終端應(yīng)該顯示U-Boot的啟動(dòng)信息。84Bootloader介紹---U-Boot概述4U-BoBootloader介紹---U-Boot概述11.2.2U-Boot的常用命令0. help命令bootm命令可以引導(dǎo)啟動(dòng)存儲(chǔ)在內(nèi)存中的程序映像bootp命令通過(guò)bootp請(qǐng)求,要求DHCP服務(wù)器分配IP地址,然后通過(guò)TFTP協(xié)議下載指定的文件到內(nèi)存。cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長(zhǎng)字為單位。cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對(duì)Flash的讀寫(xiě)操作。crc32命令可以計(jì)算存儲(chǔ)數(shù)據(jù)的校驗(yàn)和。echo命令回顯參數(shù)。erase命令可以擦除Flash。參數(shù)必須指定Flash擦除的范圍。nand命令可通過(guò)不同的參數(shù)實(shí)現(xiàn)對(duì)NandFlash的擦除、讀、寫(xiě)操作flinfo命令打印全部Flash組的信息,也可以只打印其中某個(gè)組。
85Bootloader介紹---U-Boot概述11.2.2Bootloader介紹---U-Boot概述11.2.2U-Boot的常用命令go命令可以執(zhí)行應(yīng)用程序。iminfo可以打印程序映像的開(kāi)頭信息,包含了映像內(nèi)容的校驗(yàn)(序列號(hào)、頭和校驗(yàn)和)。loadb命令可以通過(guò)串口線(xiàn)下載二進(jìn)制格式文件。loads命令可以通過(guò)串口線(xiàn)下載S-Record格式文件。mw命令可以按照字節(jié)、字、長(zhǎng)字寫(xiě)內(nèi)存,.b、.w、.l的用法與cp命令相同。nm命令可以修改內(nèi)存,可以按照字節(jié)、字、長(zhǎng)字操作。printenv命令打印環(huán)境變量。protect命令是對(duì)Flash寫(xiě)保護(hù)的操作,可以使能和解除寫(xiě)保護(hù)。rarpboot命令把指定的文件下載到指定地址,然后執(zhí)行。run命令執(zhí)行環(huán)境變量中的命令,后面參數(shù)可以跟幾個(gè)環(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工程,并且不斷添加處理器的支持。后來(lái),SysgoGmbh把PPCBOOT移植到ARM平臺(tái)上,創(chuàng)建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程為基礎(chǔ),創(chuàng)建了U-Boot工程。
87U-Boot的編譯和使用什么是U-Boot28U-Boot的編譯和使用U-Boot編譯
U-Boot目錄可以分為三類(lèi):與處理器體系結(jié)構(gòu)或者開(kāi)發(fā)板硬件直接相關(guān)。一些通用的函數(shù)或驅(qū)動(dòng)。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的源碼是通過(guò)gcc和Makefile組織編譯的。頂層目錄下的Makefile首先可以設(shè)置開(kāi)發(fā)板的定義,然后遞歸地調(diào)用各級(jí)子目錄下的Makefile,最后把編譯過(guò)的程序鏈接成U-Boot映像。頂層目錄下的Makefile它負(fù)責(zé)u-boot整體配置編譯。每一種開(kāi)發(fā)板在Makefile都需要有板子配置的定義。配置u-boot:makesmdk2410_config編譯:make90U-Boot的編譯和使用U-Boot的源碼是通過(guò)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)啟動(dòng)存儲(chǔ)在內(nèi)存中的程序映像。這些內(nèi)存包括RAM和可以永久保存的Flash。第1個(gè)參數(shù)addr是程序映像的地址,這個(gè)程序映像必須轉(zhuǎn)換成U-Boot的格式。第2個(gè)參數(shù)對(duì)于引導(dǎo)Linux內(nèi)核有用,通常作為U-Boot格式的RAMDISK映像存儲(chǔ)地址;也可以是傳遞給Linux內(nèi)核的參數(shù)(默認(rèn)情況下傳遞bootargs環(huán)境變量給內(nèi)核)。93U-Boot的編譯和使用U-Boot命令介紹34U-Boot的編譯和使用U-Boot命令介紹bootp命令bootp命令通過(guò)bootp請(qǐng)求,要求DHCP服務(wù)器分配IP地址,然后通過(guò)TFTP協(xié)議下載指定的文件到內(nèi)存。第1個(gè)參數(shù)是下載文件存放的內(nèi)存地址。第2個(gè)參數(shù)是要下載的文件名稱(chēng),這個(gè)文件應(yīng)該在開(kāi)發(fā)主機(jī)上準(zhǔn)備好。94U-Boot的編譯和使用U-Boot命令介紹35U-Boot的編譯和使用U-Boot命令介紹cmp命令cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長(zhǎng)字為單位。注意:cmp.b中間不能保留空格,需要連續(xù)輸入命令。第1個(gè)參數(shù)addr1是第一塊內(nèi)存的起始地址。第2個(gè)參數(shù)addr2是第二塊內(nèi)存的起始地址。第3個(gè)參數(shù)count是要比較的數(shù)目,單位是字節(jié)、字或者長(zhǎng)字。95U-Boot的編譯和使用U-Boot命令介紹36U-Boot的編譯和使用U-Boot命令介紹cp命令cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對(duì)Flash的讀寫(xiě)操作。第1個(gè)參數(shù)source是要復(fù)制的數(shù)據(jù)塊起始地址。第2個(gè)參數(shù)target是數(shù)據(jù)塊要復(fù)制到的地址。這個(gè)地址如果在Flash中,那么會(huì)直接調(diào)用寫(xiě)Flash的函數(shù)操作。所以U-Boot寫(xiě)Flash就使用這個(gè)命令,當(dāng)然需要先把對(duì)應(yīng)Flash區(qū)域擦干凈。第3個(gè)參數(shù)count是要復(fù)制的數(shù)目,根據(jù)cp.b、cp.w、cp.l分別以字節(jié)、字、長(zhǎng)字為單位。96U-Boot的編譯和使用U-Boot命令介紹37U-Boot的編譯和使用U-Boot命令介紹crc32命令crc32命令可以計(jì)算存儲(chǔ)數(shù)據(jù)的校驗(yàn)和。第1個(gè)參數(shù)address是需要校驗(yàn)的數(shù)據(jù)起始地址。第2個(gè)參數(shù)count是要校驗(yàn)的數(shù)據(jù)字節(jié)數(shù)。第3個(gè)參數(shù)addr用來(lái)指定保存結(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命令可以通過(guò)不同的參數(shù)實(shí)現(xiàn)對(duì)NandFlash的擦除、讀、寫(xiě)操作。常見(jiàn)的幾種命令的含義如下(具體格式見(jiàn)helpnand)。nanderase:擦除NandFlash。nandread:讀取NandFlash,遇到flash壞塊時(shí)會(huì)出錯(cuò)。nandread.jffs2:讀取NandFlash,遇到壞塊時(shí)會(huì)把壞塊部分對(duì)應(yīng)的內(nèi)容填充為0xff,不會(huì)出錯(cuò)。nandread.jffs2s:讀取NandFlash,遇到壞塊時(shí)自動(dòng)跳過(guò)(建議使用)。nandwrite:寫(xiě)NandFlash,nandwrite命令遇到flash壞塊時(shí)會(huì)出錯(cuò)。nandwrite.jffs2:寫(xiě)NandFlash,可自動(dòng)跳過(guò)壞塊(建議使用)。100U-Boot的編譯和使用U-Boot命令介紹41U-Boot的編譯和使用U-Boot命令介紹flinfo命令nand命令可以通過(guò)不同的參數(shù)實(shí)現(xiàn)對(duì)NandFlash的擦除、讀、寫(xiě)flinfo命令打印全部Flash組的信息,也可以只打印其中某個(gè)組。一般嵌入式系統(tǒng)的Flash只有一個(gè)組。101U-Boot的編譯和使用U-Boot命令介紹42U-Boot的編譯和使用U-Boot命令介紹go
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年銷(xiāo)售經(jīng)理區(qū)域市場(chǎng)拓展聘用合同模板2篇
- 2025年項(xiàng)目工程中介協(xié)議書(shū)模板(含設(shè)計(jì)、施工、驗(yàn)收)3篇
- 2025年私人房產(chǎn)買(mǎi)賣(mài)合同文本與合同解除條件3篇
- 民政局2025版離婚協(xié)議書(shū)婚姻糾紛調(diào)解服務(wù)協(xié)議2篇
- 二零二五版美容院美容院連鎖加盟管理合同4篇
- 墻面裝飾板施工方案
- 窮人續(xù)寫(xiě)200字6篇
- 2024年中級(jí)經(jīng)濟(jì)師考試題庫(kù)(典型題)
- 2025年消防系統(tǒng)智能化改造與安全評(píng)估合同協(xié)議3篇
- 2024年園區(qū)綠化管理制度
- 二零二五年度無(wú)人駕駛車(chē)輛測(cè)試合同免責(zé)協(xié)議書(shū)
- 北京市海淀區(qū)2024-2025學(xué)年高一上學(xué)期期末考試歷史試題(含答案)
- 常用口服藥品的正確使用方法
- 2025年湖北華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員52名歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年鉆探工程勞務(wù)協(xié)作協(xié)議樣式版B版
- 《心肺復(fù)蘇機(jī)救治院內(nèi)心搏驟?;颊咦o(hù)理專(zhuān)家共識(shí)》解讀
- 計(jì)算機(jī)二級(jí)WPS考試試題
- 智聯(lián)招聘行測(cè)題庫(kù)及答案
- 前程無(wú)憂(yōu)測(cè)評(píng)題庫(kù)及答案
- 2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- 超潔凈管道(CL-PVC)施工技術(shù)
評(píng)論
0/150
提交評(píng)論