嵌入式系統(tǒng)開發(fā)環(huán)境的建立課件_第1頁
嵌入式系統(tǒng)開發(fā)環(huán)境的建立課件_第2頁
嵌入式系統(tǒng)開發(fā)環(huán)境的建立課件_第3頁
嵌入式系統(tǒng)開發(fā)環(huán)境的建立課件_第4頁
嵌入式系統(tǒng)開發(fā)環(huán)境的建立課件_第5頁
已閱讀5頁,還剩143頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

armlinux系統(tǒng)開發(fā)流程1、開發(fā)目標(biāo)硬件系統(tǒng)2、建立交叉編譯工具3、開發(fā)bootloader4、移植linux內(nèi)核5、開發(fā)一個(gè)文件系統(tǒng)6、開發(fā)相關(guān)硬件的驅(qū)動程序7、開發(fā)上層應(yīng)用程序8、燒寫bootloader、內(nèi)核、文件系統(tǒng)等。armlinux系統(tǒng)開發(fā)流程1、開發(fā)目標(biāo)硬件系統(tǒng)嵌入式交叉編譯環(huán)境簡介交叉編譯就是在一個(gè)平臺上生成另一個(gè)平臺上的可執(zhí)行代碼。這里說的平臺分別指的是主機(jī)平臺Host和目標(biāo)平臺Target。就我們在ARM平臺上移植Linux來說,Host是一臺一般的PC機(jī),它通過串口或網(wǎng)絡(luò)接口與Target通信;Target是arm-linux平臺(這里說的arm指的是平臺所使用的CPU是ARM9處理器,linux指的是運(yùn)行的操作系統(tǒng)是Linux)。我們在Host上開發(fā)程序,并在這個(gè)平臺上運(yùn)行交叉編譯器CrossComplier,編譯我們的程序,而由CrossComplier生成的程序?qū)⒃赥arget上運(yùn)行嵌入式交叉編譯環(huán)境簡介交叉編譯就是在一個(gè)平臺上生成另一個(gè)平臺

需要交叉編譯的原因:首先,在項(xiàng)目的起始階段,目標(biāo)平臺尚未建立,因此需要做交叉編譯,以生成我們所需要的Bootloader以及kernel(因?yàn)锽ootloader和kernel的源碼需要經(jīng)過交叉編譯后才可以在目標(biāo)平臺上運(yùn)行);其次,當(dāng)目標(biāo)平臺能啟動之后,由于目標(biāo)平臺上資源的限制,當(dāng)我們編譯大型程序時(shí),依然可能需要用到交叉編譯。需要交叉編譯的原因:如何建立交叉編譯工具鏈構(gòu)建交叉工具鏈通常有以下3種方法:1.分步驟手工編譯分步編譯和安裝交叉編譯工具鏈所需要的庫和源代碼,最終生成交叉編譯工具鏈。2.通過腳本編譯通過crosstool腳本工具來實(shí)現(xiàn)一次編譯生成交叉編譯工具鏈3.直接獲取交叉編譯工具鏈直接通過網(wǎng)上下載已經(jīng)制作好的交叉編譯工具鏈。ftp:.ukftp:ftp:Linux內(nèi)核代碼linux-2.6.10.tar.gzglibc庫glibc-2.3.2.tar.gz工具程序binutils-2.15.tar.bz2內(nèi)核線程包glibc-linuxthreads-2.3.2.tar.gz編譯器gcc-3.3.6.tar.gz如何建立交叉編譯工具鏈構(gòu)建交叉工具鏈通常有以下3種方法:ft配置開發(fā)板PXA270嵌入式系統(tǒng)的宿主機(jī)交叉編譯環(huán)境arm-linux.tar.gz提供ARM系統(tǒng)開發(fā)的交叉編譯器/usr/local/arm-linux/binvi/etc/profilepathmunge/usr/local/arm-linux/bincparm-linux.tar.gz/usr/localcd/usr/localtar-xzfarm-linux.tar.gz配置開發(fā)板PXA270嵌入式系統(tǒng)的宿主機(jī)交叉編譯環(huán)境arm-目標(biāo)機(jī)與主機(jī)的通訊方式目標(biāo)機(jī)與主機(jī)的通訊方式1、minicomminicom很像Windows下面的超級終端,我們利用minicom作為目標(biāo)板的終端顯示視窗;通過串口控制目標(biāo)板1、minicomminicom很像Windows下面的2、從菜單中選擇SerialPortSetup配置minicom1、#minicom-s2、從菜單中選擇SerialPortSetup配置min3、“A”以設(shè)置“SerialDevice”。如果使用串口1,則輸入/dev/ttyS0。如果使用串口2,則輸入/dev/ttyS1。3、“A”以設(shè)置“SerialDevice”。如果使用串口4、“E”鍵進(jìn)入設(shè)置“bps/par/Bits”(波特率)界面,再按“I”以設(shè)置波特率為1152004、“E”鍵進(jìn)入設(shè)置“bps/par/Bits”(波特率)界設(shè)置被保存到“/etc/minirc.dfl”設(shè)置被保存到“/etc/minirc.dfl”目標(biāo)板上電后,目標(biāo)板的啟動過程顯示在minicom;CTR+A+s---zmodern目標(biāo)板上電后,目標(biāo)板的啟動過程顯示在minicom;2NFS服務(wù)NFS服務(wù)可以使網(wǎng)絡(luò)上的同為Linux或Unix系統(tǒng)主機(jī)共享文件系統(tǒng)。NFS可以將遠(yuǎn)程文件系統(tǒng)載入在本地文件系統(tǒng)下。遠(yuǎn)程的硬盤、目錄和光驅(qū)都可以變成本地主機(jī)目錄樹中的一個(gè)子目錄。載入后與處理自己的文件系統(tǒng)一樣使用即可。不只方便,也節(jié)省了重復(fù)保存文件的空間、傳輸文件的時(shí)間及網(wǎng)絡(luò)帶寬。2NFS服務(wù)NFS服務(wù)可以使網(wǎng)絡(luò)上的同為Linux或UniNFS特點(diǎn)NFS系統(tǒng)也是使用C/S體系結(jié)構(gòu),就是有服務(wù)器端與客戶端服務(wù)器端提供共享的文件系統(tǒng),必須把文件系統(tǒng)輸出(export)出去客戶端則要把文件系統(tǒng)載入到自己的系統(tǒng)下使用NFS,需要在服務(wù)器端設(shè)置輸出,在客戶端設(shè)置載入NFS特點(diǎn)NFS系統(tǒng)也是使用C/S體系結(jié)構(gòu),就是有服務(wù)器端與NFS服務(wù)器端配置(1)關(guān)閉防火墻(2)配置共享目錄----客戶端主機(jī)IP范圍(3)主機(jī)IP(4)啟動NFS服務(wù)NFS客戶端(1)設(shè)置客戶端IP地址(2)掛載共享目錄mount-tnfs主機(jī)ip:共享目錄掛載點(diǎn)注意事項(xiàng):關(guān)閉防火墻,主機(jī)與客戶端在同一ip段NFS服務(wù)器端配置NFS客戶端mount-tnfs主具體配置步驟服務(wù)器端1)關(guān)閉防火墻具體配置步驟具體配置步驟2)配置NFS服務(wù)器具體配置步驟2)配置NFS服務(wù)器具體配置步驟2-1)設(shè)置共享目錄和主機(jī)范圍具體配置步驟2-1)設(shè)置共享目具體配置步驟2-2)設(shè)置其他選項(xiàng)具體配置步驟2-2)設(shè)置其他選項(xiàng)具體配置步驟2-3)設(shè)置其他選項(xiàng)具體配置步驟2-3)設(shè)置其他選項(xiàng)具體配置步驟3)設(shè)置NFS服務(wù)器的IP具體配置步驟3)設(shè)置NFS具體配置步驟4)啟動NFS服務(wù)具體配置步驟4)啟動NFS服務(wù)具體配置步驟客戶端1)配置ip具體配置步驟客戶端具體配置步驟2)掛載NFS具體配置步驟2)掛載NFS/etc/exports它的基本格式是Directoryhost(權(quán)限選項(xiàng)、用戶映像、)Directory:表示打算共享的目錄名稱;Host:共享這個(gè)目錄的主機(jī)名稱;權(quán)限選項(xiàng):定義安全選項(xiàng);/etc/exports權(quán)限選項(xiàng)1)ro:只讀,只允許客戶機(jī)掛載這個(gè)文件系統(tǒng)為只讀模式。2)rw:明確指定共享目錄為讀/寫權(quán)限。用戶映像來限定某些用戶對NFS共享文件的使用權(quán)限no_root_squash:其他安全選項(xiàng)1)Insecure:以非安全端口的方式訪問,即默認(rèn)用戶端口是1024或者更高,而NFS服務(wù)器默認(rèn)的安全的服務(wù)器端口應(yīng)該是低于1024的。2)Sync:根據(jù)請求進(jìn)行同步。權(quán)限選項(xiàng)例:vi/etc/exports/home/ls0(rw,insecure,no_root_squash)表示共享的目錄為/home/ls,允許訪問的客戶機(jī)地址為0的主機(jī),權(quán)限為可讀可寫(rw),非安全方式訪問(insecure),讓客戶機(jī)的根用戶在服務(wù)器上擁有根權(quán)限。例:例:vi/etc/exports/home/ls*(rw)表示共享的目錄為/home/ls,允許任意主機(jī)訪問,權(quán)限可讀可寫例:

Bootloader是什么?Bootloader,為引導(dǎo)加載程序,是嵌入式系統(tǒng)加電后運(yùn)行的第一段代碼,相當(dāng)于PC機(jī)的BIOS。Bootloader的位置:通常固化在硬件上的某個(gè)固態(tài)存儲設(shè)備上,加電后自啟動?;贏RM處理器核的CPU在復(fù)位時(shí)通常都從地址0x00000000取它的第一條指令。在這個(gè)地址處安排的就是Bootloader。Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。

3BootloaderBootloader參數(shù)系統(tǒng)內(nèi)核根文件系統(tǒng)從低地址到高地址方向FlashBootloader是什么?3BootloaderBoo

幾種發(fā)布的BootloaderBootloader是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的。每種不同體系結(jié)構(gòu)的處理器都有不同的Bootloader。不過Bootloader的發(fā)展也趨于支持多種體系結(jié)構(gòu),如現(xiàn)在比較成熟的vivi、RedBoot和U-Boot等。ftp://ftp.denx.de/pub/u-boot/幾種發(fā)布的BootloaderBootloader是嚴(yán)重地Bootloader操作模式大多數(shù)Bootloader都有兩種不同的操作模式:“啟動加載”模式和“下載”模式。其區(qū)別對于開發(fā)人員才有意義。從最終用戶的角度看,Bootloader的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與下載模式的區(qū)別。Bootloader操作模式大多數(shù)Bootloader都有兩1、啟動加載(Bootloading)模式 即Bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程并沒有用戶的介入。 啟動加載模式是Bootloader的正常工作模式,在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Bootloader必須工作在這種模式下。1、啟動加載(Bootloading)模式2、下載(Downloading)模式

下載方式:在這種模式下,目標(biāo)機(jī)上的Bootloader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件。

下載內(nèi)容及存儲:主要是下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被Bootloader保存到目標(biāo)機(jī)的RAM中,然后再被Bootloader寫到目標(biāo)機(jī)上的FLASH類固態(tài)存儲設(shè)備中。2、下載(Downloading)模式下載模式應(yīng)用場合:Bootloader的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會使用到這種工作模式。用戶應(yīng)用接口:工作于這種模式下的Bootloader通常都會向它的終端用戶提供一個(gè)簡單的命令行接口。如在U-BOOT下,將出現(xiàn)“#”提示符;在vivi下出現(xiàn)“vivi>”提示符。下載模式應(yīng)用場合:Bootloader的這種模式通常在第一次下載(Downloading)模式示例下載(Downloading)模式示例Bootloader啟動過程大多數(shù)BootLoader啟動都分為stage1和stage2兩大部分。依賴于處理器體系結(jié)構(gòu)和板級初始化的代碼,通常都放在stage1中,用匯編語言實(shí)現(xiàn)而stage2則通常用C語言來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)更復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。Bootloader啟動過程大多數(shù)BootLoaderBootLoader的stage1通常包括以下步驟(以執(zhí)行的先后順序):硬件設(shè)備初始化。為加載BootLoader的stage2準(zhǔn)備RAM空間。拷貝BootLoader的stage2到RAM空間中。設(shè)置好堆棧跳轉(zhuǎn)到stage2的C入口點(diǎn)。

Stage1主要工作是硬件初始化,并準(zhǔn)備第二階段的C語言運(yùn)行環(huán)境關(guān)閉處理器內(nèi)部指令/數(shù)據(jù)cache等設(shè)置CPU的速度和時(shí)鐘頻率RAM初始化初始化led等為了獲得更快的執(zhí)行速度,通常把階段2的代碼加載到RAM空間中來執(zhí)行。準(zhǔn)備RAM空間考慮的因素:階段2代碼大小、堆棧、頁大?。?KB的倍數(shù))、安排位置等。BootLoader的stage1關(guān)閉處理器內(nèi)部指令BootLoader的stage2通常包括以下步驟(以執(zhí)行的先后順序):初始化本階段要使用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射(memorymap)。將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動參數(shù)。調(diào)用內(nèi)核。stage2的代碼通常用C語言來實(shí)現(xiàn),以便于實(shí)現(xiàn)更復(fù)雜的功能和取得更好的代碼可讀性和可移植性。與普通C語言應(yīng)用程序不同的是,在編譯和鏈接bootloader這樣的程序時(shí),我們不能使用glibc庫中的任何支持函數(shù)。Stage2的主要目的是運(yùn)行Linux內(nèi)核,在此之前需要完成硬件和內(nèi)存初始化工作。Bootloader調(diào)用Linuxkernel的方法是直接跳轉(zhuǎn)到內(nèi)核的第一條指令處。在跳轉(zhuǎn)時(shí)必須滿足下列條件:1)、CPU寄存器的設(shè)置:R0為0;R1為機(jī)器類型ID;R2為啟動參數(shù),標(biāo)記列表在RAM中的起始基地址。2)、CPU模式:CPU必須設(shè)置為SVC模式,必須禁止中斷(IRQs和FIQs)。3)、MMU和Cache的設(shè)置:MMU必須關(guān)閉;指令Cache可以打開也可以關(guān)閉;數(shù)據(jù)Cache必須關(guān)閉。BootLoader的stage2BootloaderviviBootloader源碼分析vivi是韓國Mizi公司開發(fā)的Bootloader,適用于ARM9處理器。vivi有兩種工作模式,在啟動時(shí)可以選擇。在vivi啟動時(shí),通過串行口發(fā)出如下信息:PressReturntostarttheLinuxnow,anyotherkeyforvivi按回車鍵啟動LinuxOS,按其它鍵進(jìn)入vivi命令接口模式,可以使用vivi提供的命令進(jìn)行一些操作。viviBootloader源碼分析vivi是韓國Mizivivi源代碼目錄結(jié)構(gòu)vivi源代碼包含的目錄有:arch、Documentation、drivers、init、include、lib、scripts、test、util等10目錄,共300多個(gè)文件。各個(gè)目錄內(nèi)容如下:1、arch(architecture)目錄它下面的文件為與CPU硬件相關(guān)的初始化代碼,此目錄包含了所用vivi支持的CPU。一般只包含S3C2410x的文件。2、Documentation目錄其下文件為vivi使用指南。3、drivers目錄存放的為MTD(memorytechnologydevice內(nèi)存技術(shù)設(shè)備)(數(shù)據(jù)存儲媒質(zhì))設(shè)備讀寫控制文件和串行口操作文件,對串行口支持xmodem和ymodem協(xié)議。4、include目錄存放所有的頭文件,包括S3C2410微處理器的和S3C2410開發(fā)板的頭文件。vivi源代碼目錄結(jié)構(gòu)vivi源代碼包含的目錄有:arch、5、init目錄該目錄下是系統(tǒng)初始化文件main.c、version.c,后者是vivi版本信息,main.c為vivi整個(gè)初始化的結(jié)構(gòu)。6、lib目錄該目錄下是公共應(yīng)用及接口代碼,如時(shí)鐘功能文件time.c,堆棧初始化文件heap.c等文件。7、scripts目錄該目錄存放的是系統(tǒng)配置需要的腳本文件,如menuconfig和configue文件。8、CVS目錄所有的目錄下面都有一個(gè)CVS目錄,存放的是該目錄的路徑和它的子目錄。5、init目錄vivi源代碼文件與功能結(jié)構(gòu)vivi源代碼文件:1、vivi/arch/s3c2410/head.s2、一段過渡,實(shí)現(xiàn)循環(huán)調(diào)用,main返回后重新復(fù)位 LDR SP, DW_STACK_START MOV FP, #0 MOV A2, #0 BL MAIN MOV PC, #FLASH_BASE;main返回后重新復(fù)位3、vivi/init/main.cvivi源代碼文件與功能結(jié)構(gòu)vivi源代碼文件:viviBootloader接口命令命令功能Load下載flash或RAM命令PartMTD分區(qū)操作命令param設(shè)置、查看參數(shù)命令Boot啟動系統(tǒng)命令flashFlash管理命令vivi>loadflashkernelxvivi>bootnand0x80000flasherase0x800000xc0000viviBootloader接口命令命令功vivi源碼的修改移植 vivi的移植方法步驟: 對vivi進(jìn)行修改移植 對vivi進(jìn)行配置 對vivi進(jìn)行編譯 下載、運(yùn)行vivivivi源碼的修改移植 vivi的移植方法步驟:1、修改vivi/Makefile(1)修改交叉編譯庫和頭文件

1)修改編譯器路徑 CROSS_COMPILE=2)修改編譯器庫文件路徑: ARM_GCC_LIBS=3)增加交叉編譯時(shí)頭文件的搜索路徑:LIBC_INCLUDE_DIR=(2)Linux內(nèi)核包含文件LINUX_INCLUDE_DIR=編譯vivi用到的交叉編譯工具版本是cross-2.95.3.tar.bz2

1、修改vivi/Makefile編譯vivi用到的交叉編譯

2、修改Flash的分區(qū)信息(vivi/arch/s3c2410/smdk.c)

#ifdefCONFIG_S3C2410_AMD_BOOTmtd_partition_tdefault_mtd_partitions[]={ { name: "vivi", offset: 0, size: 0x00020000, flag: 0 },

{ name: "param", offset: 0x00020000, size: 0x00010000, flag: 0 },{ name: "kernel", offset: 0x00030000, size: 0x000C0000, flag: 0 },{ name: "root", offset: 0x00100000, size: 0x00140000, flag: MF_BONFS }};#endif 2、修改Flash的分區(qū)信息(vivi/arch/s3c

二、對vivi進(jìn)行配置 運(yùn)行vivi配置程序menuconfig: make menuconfig 啟動對vivi配置的主菜單,根據(jù)自己的目標(biāo)系統(tǒng)逐項(xiàng)進(jìn)行設(shè)置,設(shè)置完后退出保存即可。 二、對vivi進(jìn)行配置

三、對vivi進(jìn)行編譯 在vivi目錄下執(zhí)行以下命令:

make clean make

makeclean是清除以前編譯時(shí)生成的所有目標(biāo)文件和臨時(shí)文件。 如果沒有錯(cuò)誤,編譯后會生成vivi的目標(biāo)文件vivi.bin。 三、對vivi進(jìn)行編譯 四、對vivi進(jìn)行下載 利用JTAG口將vivi下載到目標(biāo)板的flash空間(0x00000---0x20000)。 然后對目標(biāo)板加電,使vivi啟動運(yùn)行,觀察運(yùn)行情況。Jflash-s3c2410<vivi文件名>/t=<flash_type>其中,F(xiàn)lash類型有如下選項(xiàng):1:SMDK2410:K9S32084MB2:SMDK2410:K9S64088MB3:SMDK2410:K9S280816MB4:SMDK2410:K9S560832MB5:SMDK2410:K9S120864MB6:SMDK2410:AM29LV800BBJflash-s3c2410<vivi文件名>/在燒寫過程中,有3次提示,要求用戶選擇:(1)在“Selectthefunctiontotest:”后面輸入“0”,表示對型號為K9S1208的Flash芯片進(jìn)行燒寫,燒寫類型為程序。(2)在“Inputtargetblocknumber:”后面輸入“0”,表示從偏移地址0處開始燒寫。在燒寫過程中,有3次提示,要求用戶選擇:經(jīng)過數(shù)分鐘的燒寫之后,將vivi燒寫到Flash之中。再次出現(xiàn)提示:經(jīng)過數(shù)分鐘的燒寫之后,將vivi燒寫到Flash之中。再次出在“Selectthefunctiontotest:”后面輸入“2”,退出vivi燒寫。并關(guān)閉開發(fā)板電源,拔下JTAG連接線。在完成vivi燒寫之后,使用串口線,通過串口將宿主機(jī)與開發(fā)板連接起來。在“Selectthefunctiontotest在宿主機(jī)上打開超級終端minicom窗口,再按下“Backspace”(回格)鍵不放,接通開發(fā)板電源。這時(shí)我們通過超級終端minicom窗口可以觀察到嵌入式系統(tǒng)開發(fā)板上Linux系統(tǒng)的啟動過程,并在出現(xiàn)提示符“vivi>”時(shí)停?。ㄈ绻鸏inux系統(tǒng)有啟動,但沒有“vivi>”提示符出現(xiàn),則需要再一次按住鍵盤上的“Backspace”(回格)鍵不放,對開發(fā)板“Reset”重啟)。進(jìn)入vivi提示狀態(tài)在宿主機(jī)上打開超級終端minicom窗口,再按下“Backs(1)對Flash分區(qū)在“vivi>”提示符下用命令“bonpart”對Flash進(jìn)行分區(qū):Bonpart0192k1M其中,從地址0處開始為vivi,地址192k(192*1024=196608)處開始為內(nèi)核,地址1M(1*1024*1024=1048576)處開始為文件系統(tǒng)。(1)對Flash分區(qū)由于對Flash進(jìn)行了重新分區(qū),原來燒寫在Flash中從地址0處開始的引導(dǎo)加載程序vivi亦被擦除了,因此,這時(shí)不能掉電,也不能重啟開發(fā)板,必須緊接著重新燒寫vivi程序。(2)vivi>loadflashvivix當(dāng)出現(xiàn):Readyfordownloadingusingxmodem...Waiting...然后,按下Ctrl+A+S,彈出一個(gè)對話框由于對Flash進(jìn)行了重新分區(qū),原來燒寫在Flash中從地址(3)燒寫內(nèi)核當(dāng)vivi燒寫完畢后,需要重新啟動開發(fā)板,使剛才的分區(qū)及引導(dǎo)程序生效。重新啟動開發(fā)板時(shí),操作過程如前所述,按下“Backspace”(回格)鍵不放的同時(shí),重新啟動開發(fā)板系統(tǒng),出現(xiàn)提示符“vivi>”。vivi>loadflashkernelx4)燒寫文件系統(tǒng)緊接著上面的操作,在提示符“vivi>”下,輸入命令:vivi>loadflashrootx(3)燒寫內(nèi)核Linux內(nèi)核Linux內(nèi)核主要功能進(jìn)程管理內(nèi)存管理文件管理設(shè)備管理網(wǎng)絡(luò)管理Linux內(nèi)核Linux內(nèi)核主要功能Linux內(nèi)核結(jié)構(gòu)Linux內(nèi)核結(jié)構(gòu)Linux配置與編譯編譯內(nèi)核的步驟:下載內(nèi)核源碼修改內(nèi)核目錄樹根下的的Makefile,指明交叉編譯器設(shè)置環(huán)境變量配置內(nèi)核產(chǎn)生.config文件輸入內(nèi)核配置命令(makemenuconfig),進(jìn)行內(nèi)核選項(xiàng)的選擇編譯內(nèi)核下載Linux內(nèi)核Linux配置與編譯編譯內(nèi)核的步驟:1、確定處理器類型Linux內(nèi)核源代碼支持20多種微處理器類型,在編譯之前要先確定微處理器類型。ARCH:=armCROSS_COMPILE=arm-linux-Linux2.4內(nèi)核還沒有包含S3C2410處理器Linux2.6內(nèi)核已經(jīng)支持。1、確定處理器類型ARCH:=armCROSS_COMPI2、確定配置方法內(nèi)核支持4種不同的配置方法,每種方法是讀取一個(gè)根目錄下隱藏的配置文件“.config”。這4種方式如下。makeconfig:基于文本的最為傳統(tǒng)的配置界面,不推薦使用。makemenuconfig:基于文本選單的配置界面,字符終端下推薦使用。makexconfig:基于圖形窗口模式的配置界面,Xwindow下推薦使用。makeoldconfig:自動讀入“.config”配置文件,并且只要求用戶設(shè)定前次沒有設(shè)定過的選項(xiàng)。

2、確定配置方法【例】以makemenuconfig為例進(jìn)行S3C2410系統(tǒng)的內(nèi)裁剪核配置。#makemenuconfig彈出內(nèi)核裁剪配置窗口【例】以makemenuconfig為例進(jìn)行S3C24“SystemType---→”子項(xiàng)的界面“SystemType---→”子項(xiàng)的界面在完成配置之后,就可以保存退出,如圖所示。在完成配置之后,就可以保存退出,如圖所示。內(nèi)核編譯makezImagearch/$(ARCH)/boot”目錄中。

內(nèi)核編譯文件系統(tǒng)文件系統(tǒng)是嵌入式Linux系統(tǒng)必備的一個(gè)組成部分,是系統(tǒng)文件和應(yīng)用文件存儲的地方。文件系統(tǒng)文件系統(tǒng)是嵌入式Linux系統(tǒng)必備的一個(gè)組成部分,文件目錄/bin 目錄下需要包含常用的用戶命令,如sh等。/sbin 目錄要包含所有系統(tǒng)命令,如reboot等。/etc 目錄下是系統(tǒng)配置文件。/boot 目錄下是內(nèi)核映像/dev 目錄含有系統(tǒng)所有的特殊設(shè)備文件/lib 目錄包含系統(tǒng)所有的庫文件/mnt 目錄只用于掛接,可以是空目錄/proc 目錄是/proc文件系統(tǒng)的主目錄,包含了系統(tǒng)的啟動信息/usr 目錄含有用戶選取的命令。文件目錄/bin 目錄下需要包含常用的用戶命令,如sh等。上述目錄還包含適當(dāng)?shù)奈募妥幽夸洠?)目錄/binbin中包含命令文件:date、sh、login、mount、umount、cp、ls、ftp、ping。(2)目錄/sbinsbin包含命令文件mingetty、reboot、halt、sulogin、update、init、fsck、telinit和mkfs。上述目錄還包含適當(dāng)?shù)奈募妥幽夸洠?)目錄/bin(3)目錄/etcetc包含配置文件HOSTNAME、bashrc、fstab、group、inittab、nsswitch、pam.d、passwd、pwdb.conf、rc.d、securetty、shadow、shells以及l(fā)ilo.conf。(3)目錄/etc(4)目錄/devdev包含設(shè)備文件console、hda1、hda2、hda3、kmem、mem、null、tty1和ttyS0。5)目錄/liblib包含庫文件libc.so.6、ld-linux.so.2、libcom_err.so.2、libcrypt.so.2、libpam.so.0、libpam_misc.so.2、libuuid.so.2、libnss_files.so.2、libtermcap.so.2和security。(4)目錄/dev制作文件系統(tǒng)的鏡像文件嵌入式Linux支持多種文件系統(tǒng)。這些文件系統(tǒng)的總體架構(gòu)是一樣的,都是采用目錄樹的結(jié)構(gòu)。在嵌入式中常見的文件系統(tǒng)有cramfs、romfs、jffs、yaffs等。制作文件系統(tǒng)的鏡像文件嵌入式Linux支持多種文件系統(tǒng)。制作cramfs文件系統(tǒng)cramfs文件系統(tǒng)是一種經(jīng)壓縮的、極為簡單的只讀文件系統(tǒng),因此非常適合嵌入式系統(tǒng)。不同的文件系統(tǒng)都有相應(yīng)的制作工具,制作cramfs文件系統(tǒng)需要用到的工具是mkcramfs。制作cramfs文件系統(tǒng)cramfs文件系統(tǒng)是一種經(jīng)壓假設(shè)用戶已經(jīng)設(shè)置了一個(gè)文件系統(tǒng),在目錄“/fs/root/”下,如下所示:

#lsrootbindevetclibprocsbinusr使用mkcramfs工具了,命令格式為:

mkcramfs[系統(tǒng)文件目錄名]

[生成的鏡像文件名]/projects/cramfs在嵌入式Linux中busybox是構(gòu)造文件系統(tǒng)最常用的軟件工具包/downloads假設(shè)用戶已經(jīng)設(shè)置了一個(gè)文件系統(tǒng),在目錄“/fs/root/”演講完畢,謝謝觀看!演講完畢,謝謝觀看!armlinux系統(tǒng)開發(fā)流程1、開發(fā)目標(biāo)硬件系統(tǒng)2、建立交叉編譯工具3、開發(fā)bootloader4、移植linux內(nèi)核5、開發(fā)一個(gè)文件系統(tǒng)6、開發(fā)相關(guān)硬件的驅(qū)動程序7、開發(fā)上層應(yīng)用程序8、燒寫bootloader、內(nèi)核、文件系統(tǒng)等。armlinux系統(tǒng)開發(fā)流程1、開發(fā)目標(biāo)硬件系統(tǒng)嵌入式交叉編譯環(huán)境簡介交叉編譯就是在一個(gè)平臺上生成另一個(gè)平臺上的可執(zhí)行代碼。這里說的平臺分別指的是主機(jī)平臺Host和目標(biāo)平臺Target。就我們在ARM平臺上移植Linux來說,Host是一臺一般的PC機(jī),它通過串口或網(wǎng)絡(luò)接口與Target通信;Target是arm-linux平臺(這里說的arm指的是平臺所使用的CPU是ARM9處理器,linux指的是運(yùn)行的操作系統(tǒng)是Linux)。我們在Host上開發(fā)程序,并在這個(gè)平臺上運(yùn)行交叉編譯器CrossComplier,編譯我們的程序,而由CrossComplier生成的程序?qū)⒃赥arget上運(yùn)行嵌入式交叉編譯環(huán)境簡介交叉編譯就是在一個(gè)平臺上生成另一個(gè)平臺

需要交叉編譯的原因:首先,在項(xiàng)目的起始階段,目標(biāo)平臺尚未建立,因此需要做交叉編譯,以生成我們所需要的Bootloader以及kernel(因?yàn)锽ootloader和kernel的源碼需要經(jīng)過交叉編譯后才可以在目標(biāo)平臺上運(yùn)行);其次,當(dāng)目標(biāo)平臺能啟動之后,由于目標(biāo)平臺上資源的限制,當(dāng)我們編譯大型程序時(shí),依然可能需要用到交叉編譯。需要交叉編譯的原因:如何建立交叉編譯工具鏈構(gòu)建交叉工具鏈通常有以下3種方法:1.分步驟手工編譯分步編譯和安裝交叉編譯工具鏈所需要的庫和源代碼,最終生成交叉編譯工具鏈。2.通過腳本編譯通過crosstool腳本工具來實(shí)現(xiàn)一次編譯生成交叉編譯工具鏈3.直接獲取交叉編譯工具鏈直接通過網(wǎng)上下載已經(jīng)制作好的交叉編譯工具鏈。ftp:.ukftp:ftp:Linux內(nèi)核代碼linux-2.6.10.tar.gzglibc庫glibc-2.3.2.tar.gz工具程序binutils-2.15.tar.bz2內(nèi)核線程包glibc-linuxthreads-2.3.2.tar.gz編譯器gcc-3.3.6.tar.gz如何建立交叉編譯工具鏈構(gòu)建交叉工具鏈通常有以下3種方法:ft配置開發(fā)板PXA270嵌入式系統(tǒng)的宿主機(jī)交叉編譯環(huán)境arm-linux.tar.gz提供ARM系統(tǒng)開發(fā)的交叉編譯器/usr/local/arm-linux/binvi/etc/profilepathmunge/usr/local/arm-linux/bincparm-linux.tar.gz/usr/localcd/usr/localtar-xzfarm-linux.tar.gz配置開發(fā)板PXA270嵌入式系統(tǒng)的宿主機(jī)交叉編譯環(huán)境arm-目標(biāo)機(jī)與主機(jī)的通訊方式目標(biāo)機(jī)與主機(jī)的通訊方式1、minicomminicom很像Windows下面的超級終端,我們利用minicom作為目標(biāo)板的終端顯示視窗;通過串口控制目標(biāo)板1、minicomminicom很像Windows下面的2、從菜單中選擇SerialPortSetup配置minicom1、#minicom-s2、從菜單中選擇SerialPortSetup配置min3、“A”以設(shè)置“SerialDevice”。如果使用串口1,則輸入/dev/ttyS0。如果使用串口2,則輸入/dev/ttyS1。3、“A”以設(shè)置“SerialDevice”。如果使用串口4、“E”鍵進(jìn)入設(shè)置“bps/par/Bits”(波特率)界面,再按“I”以設(shè)置波特率為1152004、“E”鍵進(jìn)入設(shè)置“bps/par/Bits”(波特率)界設(shè)置被保存到“/etc/minirc.dfl”設(shè)置被保存到“/etc/minirc.dfl”目標(biāo)板上電后,目標(biāo)板的啟動過程顯示在minicom;CTR+A+s---zmodern目標(biāo)板上電后,目標(biāo)板的啟動過程顯示在minicom;2NFS服務(wù)NFS服務(wù)可以使網(wǎng)絡(luò)上的同為Linux或Unix系統(tǒng)主機(jī)共享文件系統(tǒng)。NFS可以將遠(yuǎn)程文件系統(tǒng)載入在本地文件系統(tǒng)下。遠(yuǎn)程的硬盤、目錄和光驅(qū)都可以變成本地主機(jī)目錄樹中的一個(gè)子目錄。載入后與處理自己的文件系統(tǒng)一樣使用即可。不只方便,也節(jié)省了重復(fù)保存文件的空間、傳輸文件的時(shí)間及網(wǎng)絡(luò)帶寬。2NFS服務(wù)NFS服務(wù)可以使網(wǎng)絡(luò)上的同為Linux或UniNFS特點(diǎn)NFS系統(tǒng)也是使用C/S體系結(jié)構(gòu),就是有服務(wù)器端與客戶端服務(wù)器端提供共享的文件系統(tǒng),必須把文件系統(tǒng)輸出(export)出去客戶端則要把文件系統(tǒng)載入到自己的系統(tǒng)下使用NFS,需要在服務(wù)器端設(shè)置輸出,在客戶端設(shè)置載入NFS特點(diǎn)NFS系統(tǒng)也是使用C/S體系結(jié)構(gòu),就是有服務(wù)器端與NFS服務(wù)器端配置(1)關(guān)閉防火墻(2)配置共享目錄----客戶端主機(jī)IP范圍(3)主機(jī)IP(4)啟動NFS服務(wù)NFS客戶端(1)設(shè)置客戶端IP地址(2)掛載共享目錄mount-tnfs主機(jī)ip:共享目錄掛載點(diǎn)注意事項(xiàng):關(guān)閉防火墻,主機(jī)與客戶端在同一ip段NFS服務(wù)器端配置NFS客戶端mount-tnfs主具體配置步驟服務(wù)器端1)關(guān)閉防火墻具體配置步驟具體配置步驟2)配置NFS服務(wù)器具體配置步驟2)配置NFS服務(wù)器具體配置步驟2-1)設(shè)置共享目錄和主機(jī)范圍具體配置步驟2-1)設(shè)置共享目具體配置步驟2-2)設(shè)置其他選項(xiàng)具體配置步驟2-2)設(shè)置其他選項(xiàng)具體配置步驟2-3)設(shè)置其他選項(xiàng)具體配置步驟2-3)設(shè)置其他選項(xiàng)具體配置步驟3)設(shè)置NFS服務(wù)器的IP具體配置步驟3)設(shè)置NFS具體配置步驟4)啟動NFS服務(wù)具體配置步驟4)啟動NFS服務(wù)具體配置步驟客戶端1)配置ip具體配置步驟客戶端具體配置步驟2)掛載NFS具體配置步驟2)掛載NFS/etc/exports它的基本格式是Directoryhost(權(quán)限選項(xiàng)、用戶映像、)Directory:表示打算共享的目錄名稱;Host:共享這個(gè)目錄的主機(jī)名稱;權(quán)限選項(xiàng):定義安全選項(xiàng);/etc/exports權(quán)限選項(xiàng)1)ro:只讀,只允許客戶機(jī)掛載這個(gè)文件系統(tǒng)為只讀模式。2)rw:明確指定共享目錄為讀/寫權(quán)限。用戶映像來限定某些用戶對NFS共享文件的使用權(quán)限no_root_squash:其他安全選項(xiàng)1)Insecure:以非安全端口的方式訪問,即默認(rèn)用戶端口是1024或者更高,而NFS服務(wù)器默認(rèn)的安全的服務(wù)器端口應(yīng)該是低于1024的。2)Sync:根據(jù)請求進(jìn)行同步。權(quán)限選項(xiàng)例:vi/etc/exports/home/ls0(rw,insecure,no_root_squash)表示共享的目錄為/home/ls,允許訪問的客戶機(jī)地址為0的主機(jī),權(quán)限為可讀可寫(rw),非安全方式訪問(insecure),讓客戶機(jī)的根用戶在服務(wù)器上擁有根權(quán)限。例:例:vi/etc/exports/home/ls*(rw)表示共享的目錄為/home/ls,允許任意主機(jī)訪問,權(quán)限可讀可寫例:

Bootloader是什么?Bootloader,為引導(dǎo)加載程序,是嵌入式系統(tǒng)加電后運(yùn)行的第一段代碼,相當(dāng)于PC機(jī)的BIOS。Bootloader的位置:通常固化在硬件上的某個(gè)固態(tài)存儲設(shè)備上,加電后自啟動。基于ARM處理器核的CPU在復(fù)位時(shí)通常都從地址0x00000000取它的第一條指令。在這個(gè)地址處安排的就是Bootloader。Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。

3BootloaderBootloader參數(shù)系統(tǒng)內(nèi)核根文件系統(tǒng)從低地址到高地址方向FlashBootloader是什么?3BootloaderBoo

幾種發(fā)布的BootloaderBootloader是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的。每種不同體系結(jié)構(gòu)的處理器都有不同的Bootloader。不過Bootloader的發(fā)展也趨于支持多種體系結(jié)構(gòu),如現(xiàn)在比較成熟的vivi、RedBoot和U-Boot等。ftp://ftp.denx.de/pub/u-boot/幾種發(fā)布的BootloaderBootloader是嚴(yán)重地Bootloader操作模式大多數(shù)Bootloader都有兩種不同的操作模式:“啟動加載”模式和“下載”模式。其區(qū)別對于開發(fā)人員才有意義。從最終用戶的角度看,Bootloader的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載模式與下載模式的區(qū)別。Bootloader操作模式大多數(shù)Bootloader都有兩1、啟動加載(Bootloading)模式 即Bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程并沒有用戶的介入。 啟動加載模式是Bootloader的正常工作模式,在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Bootloader必須工作在這種模式下。1、啟動加載(Bootloading)模式2、下載(Downloading)模式

下載方式:在這種模式下,目標(biāo)機(jī)上的Bootloader將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件。

下載內(nèi)容及存儲:主要是下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被Bootloader保存到目標(biāo)機(jī)的RAM中,然后再被Bootloader寫到目標(biāo)機(jī)上的FLASH類固態(tài)存儲設(shè)備中。2、下載(Downloading)模式下載模式應(yīng)用場合:Bootloader的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會使用到這種工作模式。用戶應(yīng)用接口:工作于這種模式下的Bootloader通常都會向它的終端用戶提供一個(gè)簡單的命令行接口。如在U-BOOT下,將出現(xiàn)“#”提示符;在vivi下出現(xiàn)“vivi>”提示符。下載模式應(yīng)用場合:Bootloader的這種模式通常在第一次下載(Downloading)模式示例下載(Downloading)模式示例Bootloader啟動過程大多數(shù)BootLoader啟動都分為stage1和stage2兩大部分。依賴于處理器體系結(jié)構(gòu)和板級初始化的代碼,通常都放在stage1中,用匯編語言實(shí)現(xiàn)而stage2則通常用C語言來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)更復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。Bootloader啟動過程大多數(shù)BootLoaderBootLoader的stage1通常包括以下步驟(以執(zhí)行的先后順序):硬件設(shè)備初始化。為加載BootLoader的stage2準(zhǔn)備RAM空間??截怋ootLoader的stage2到RAM空間中。設(shè)置好堆棧跳轉(zhuǎn)到stage2的C入口點(diǎn)。

Stage1主要工作是硬件初始化,并準(zhǔn)備第二階段的C語言運(yùn)行環(huán)境關(guān)閉處理器內(nèi)部指令/數(shù)據(jù)cache等設(shè)置CPU的速度和時(shí)鐘頻率RAM初始化初始化led等為了獲得更快的執(zhí)行速度,通常把階段2的代碼加載到RAM空間中來執(zhí)行。準(zhǔn)備RAM空間考慮的因素:階段2代碼大小、堆棧、頁大?。?KB的倍數(shù))、安排位置等。BootLoader的stage1關(guān)閉處理器內(nèi)部指令BootLoader的stage2通常包括以下步驟(以執(zhí)行的先后順序):初始化本階段要使用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射(memorymap)。將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動參數(shù)。調(diào)用內(nèi)核。stage2的代碼通常用C語言來實(shí)現(xiàn),以便于實(shí)現(xiàn)更復(fù)雜的功能和取得更好的代碼可讀性和可移植性。與普通C語言應(yīng)用程序不同的是,在編譯和鏈接bootloader這樣的程序時(shí),我們不能使用glibc庫中的任何支持函數(shù)。Stage2的主要目的是運(yùn)行Linux內(nèi)核,在此之前需要完成硬件和內(nèi)存初始化工作。Bootloader調(diào)用Linuxkernel的方法是直接跳轉(zhuǎn)到內(nèi)核的第一條指令處。在跳轉(zhuǎn)時(shí)必須滿足下列條件:1)、CPU寄存器的設(shè)置:R0為0;R1為機(jī)器類型ID;R2為啟動參數(shù),標(biāo)記列表在RAM中的起始基地址。2)、CPU模式:CPU必須設(shè)置為SVC模式,必須禁止中斷(IRQs和FIQs)。3)、MMU和Cache的設(shè)置:MMU必須關(guān)閉;指令Cache可以打開也可以關(guān)閉;數(shù)據(jù)Cache必須關(guān)閉。BootLoader的stage2BootloaderviviBootloader源碼分析vivi是韓國Mizi公司開發(fā)的Bootloader,適用于ARM9處理器。vivi有兩種工作模式,在啟動時(shí)可以選擇。在vivi啟動時(shí),通過串行口發(fā)出如下信息:PressReturntostarttheLinuxnow,anyotherkeyforvivi按回車鍵啟動LinuxOS,按其它鍵進(jìn)入vivi命令接口模式,可以使用vivi提供的命令進(jìn)行一些操作。viviBootloader源碼分析vivi是韓國Mizivivi源代碼目錄結(jié)構(gòu)vivi源代碼包含的目錄有:arch、Documentation、drivers、init、include、lib、scripts、test、util等10目錄,共300多個(gè)文件。各個(gè)目錄內(nèi)容如下:1、arch(architecture)目錄它下面的文件為與CPU硬件相關(guān)的初始化代碼,此目錄包含了所用vivi支持的CPU。一般只包含S3C2410x的文件。2、Documentation目錄其下文件為vivi使用指南。3、drivers目錄存放的為MTD(memorytechnologydevice內(nèi)存技術(shù)設(shè)備)(數(shù)據(jù)存儲媒質(zhì))設(shè)備讀寫控制文件和串行口操作文件,對串行口支持xmodem和ymodem協(xié)議。4、include目錄存放所有的頭文件,包括S3C2410微處理器的和S3C2410開發(fā)板的頭文件。vivi源代碼目錄結(jié)構(gòu)vivi源代碼包含的目錄有:arch、5、init目錄該目錄下是系統(tǒng)初始化文件main.c、version.c,后者是vivi版本信息,main.c為vivi整個(gè)初始化的結(jié)構(gòu)。6、lib目錄該目錄下是公共應(yīng)用及接口代碼,如時(shí)鐘功能文件time.c,堆棧初始化文件heap.c等文件。7、scripts目錄該目錄存放的是系統(tǒng)配置需要的腳本文件,如menuconfig和configue文件。8、CVS目錄所有的目錄下面都有一個(gè)CVS目錄,存放的是該目錄的路徑和它的子目錄。5、init目錄vivi源代碼文件與功能結(jié)構(gòu)vivi源代碼文件:1、vivi/arch/s3c2410/head.s2、一段過渡,實(shí)現(xiàn)循環(huán)調(diào)用,main返回后重新復(fù)位 LDR SP, DW_STACK_START MOV FP, #0 MOV A2, #0 BL MAIN MOV PC, #FLASH_BASE;main返回后重新復(fù)位3、vivi/init/main.cvivi源代碼文件與功能結(jié)構(gòu)vivi源代碼文件:viviBootloader接口命令命令功能Load下載flash或RAM命令PartMTD分區(qū)操作命令param設(shè)置、查看參數(shù)命令Boot啟動系統(tǒng)命令flashFlash管理命令vivi>loadflashkernelxvivi>bootnand0x80000flasherase0x800000xc0000viviBootloader接口命令命令功vivi源碼的修改移植 vivi的移植方法步驟: 對vivi進(jìn)行修改移植 對vivi進(jìn)行配置 對vivi進(jìn)行編譯 下載、運(yùn)行vivivivi源碼的修改移植 vivi的移植方法步驟:1、修改vivi/Makefile(1)修改交叉編譯庫和頭文件

1)修改編譯器路徑 CROSS_COMPILE=2)修改編譯器庫文件路徑: ARM_GCC_LIBS=3)增加交叉編譯時(shí)頭文件的搜索路徑:LIBC_INCLUDE_DIR=(2)Linux內(nèi)核包含文件LINUX_INCLUDE_DIR=編譯vivi用到的交叉編譯工具版本是cross-2.95.3.tar.bz2

1、修改vivi/Makefile編譯vivi用到的交叉編譯

2、修改Flash的分區(qū)信息(vivi/arch/s3c2410/smdk.c)

#ifdefCONFIG_S3C2410_AMD_BOOTmtd_partition_tdefault_mtd_partitions[]={ { name: "vivi", offset: 0, size: 0x00020000, flag: 0 },

{ name: "param", offset: 0x00020000, size: 0x00010000, flag: 0 },{ name: "kernel", offset: 0x00030000, size: 0x000C0000, flag: 0 },{ name: "root", offset: 0x00100000, size: 0x00140000, flag: MF_BONFS }};#endif 2、修改Flash的分區(qū)信息(vivi/arch/s3c

二、對vivi進(jìn)行配置 運(yùn)行vivi配置程序menuconfig: make menuconfig 啟動對vivi配置的主菜單,根據(jù)自己的目標(biāo)系統(tǒng)逐項(xiàng)進(jìn)行設(shè)置,設(shè)置完后退出保存即可。 二、對vivi進(jìn)行配置

三、對vivi進(jìn)行編譯 在vivi目錄下執(zhí)行以下命令:

make clean make

makeclean是清除以前編譯時(shí)生成的所有目標(biāo)文件和臨時(shí)文件。 如果沒有錯(cuò)誤,編譯后會生成vivi的目標(biāo)文件vivi.bin。 三、對vivi進(jìn)行編譯 四、對vivi進(jìn)行下載 利用JTAG口將vivi下載到目標(biāo)板的flash空間(0x00000---0x20000)。 然后對目標(biāo)板加電,使vivi啟動運(yùn)行,觀察運(yùn)行情況。Jflash-s3c2410<vivi文件名>/t=<flash_type>其中,F(xiàn)lash類型有如下選項(xiàng):1:SMDK2410:K9S32084MB2:SMDK2410:K9S64088MB3:SMDK2410:K9S280816MB4:SMDK2410:K9S560832MB5:SMDK2410:K9S120864MB6:SMDK2410:AM29LV800BBJflash-s3c2410<vivi文件名>/在燒寫過程中,有3次提示,要求用戶選擇:(1)在“Selectthefunctiontotest:”后面輸入“0”,表示對型號為K9S1208的Flash芯片進(jìn)行燒寫,燒寫類型為程序。(2)在“Inputtargetblocknumber:”后面輸入“0”,表示從偏移地址0處開始燒寫。在燒寫過程中,有3次提示,要求用戶選擇:經(jīng)過數(shù)分鐘的燒寫之后,將vivi燒寫到Flash之中。再次出現(xiàn)提示:經(jīng)過數(shù)分鐘的燒寫之后,將vivi燒寫到Flash之中。再次出在“Selectthefunctiontotest:”后面輸入“2”,退出vivi燒寫。并關(guān)閉開發(fā)板電源,拔下JTAG連接線。在完成vivi燒寫之后,使用串口線,通過串口將宿主機(jī)與開發(fā)板連接起來。在“Selectthefunctiontotest在宿主機(jī)上打開超級終端minicom窗口,再按下“Backspace”(回格)鍵不放,接通開發(fā)板電源。這時(shí)我們通過超級終端minicom窗口可以觀察到嵌入式系統(tǒng)開發(fā)板上Linux系統(tǒng)的啟動過程,并在出現(xiàn)提示符“vivi>”時(shí)停住(如果Linux系統(tǒng)有啟動,但沒有“vivi>”提示符出現(xiàn),則需要再一次按住鍵盤上的“Backspace”(回格)鍵不放,對開發(fā)板“Reset”重啟)。進(jìn)入vivi提示狀態(tài)在宿主機(jī)上打開超級終端minicom窗口,再按下“Backs(1)對Flash分區(qū)在“vivi>”提示符下用命令“bonpart”對Flash進(jìn)行分區(qū):Bonpart0192k1M其中,從地址0處開始為vivi,地址192k(192*1024=196608)處開始為內(nèi)核,地址1M(1*1024*1024=1048576)處開始為文件系統(tǒng)。(1)對Flash分區(qū)由于對Flash進(jìn)行了重新分區(qū),原來燒寫在Flash中從地址0處開始的引導(dǎo)加載程序vivi亦被擦除了,因此,這時(shí)不能掉電,也不能重啟開發(fā)板,必須緊接著重新燒寫vivi程序。(2)vivi>loadflashvivix當(dāng)出現(xiàn):Readyfordownloadingusingxmodem...Waiting...然后,按下Ctrl+A+S,彈出一個(gè)對話框由于對Flash進(jìn)行了重新分區(qū),原來燒寫在Flash中從地址(3)燒寫內(nèi)核當(dāng)vivi燒寫完畢后,需要重新啟動開發(fā)板,使剛才的分區(qū)及引導(dǎo)程序生效。重新啟動開發(fā)板時(shí),操作過程如前所述,按下“Backspace”(回格)鍵不放的同時(shí),重新啟動開發(fā)板系統(tǒng),出現(xiàn)提示符“vivi>”。vivi>loadflashkernelx4)燒寫文件系統(tǒng)緊接著上面的操作,在提示符“vivi>”下,輸入命令:vivi>loadfl

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論