




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
armlinux系統(tǒng)開(kāi)發(fā)流程1、開(kāi)發(fā)目標(biāo)硬件系統(tǒng)2、建立交叉編譯工具3、開(kāi)發(fā)bootloader4、移植linux內(nèi)核5、開(kāi)發(fā)一個(gè)文件系統(tǒng)6、開(kāi)發(fā)相關(guān)硬件驅(qū)動(dòng)程序7、開(kāi)發(fā)上層應(yīng)用程序8、燒寫(xiě)bootloader、內(nèi)核、文件系統(tǒng)等。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第1頁(yè)嵌入式交叉編譯環(huán)境介紹交叉編譯就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上可執(zhí)行代碼。這里說(shuō)平臺(tái)分別指是主機(jī)平臺(tái)Host和目標(biāo)平臺(tái)Target。就我們?cè)贏RM平臺(tái)上移植Linux來(lái)說(shuō),Host是一臺(tái)普通PC機(jī),它經(jīng)過(guò)串口或網(wǎng)絡(luò)接口與Target通信;Target是arm-linux平臺(tái)(這里說(shuō)arm指是平臺(tái)所使用CPU是ARM9處理器,linux指是運(yùn)行操作系統(tǒng)是Linux)。我們?cè)贖ost上開(kāi)發(fā)程序,并在這個(gè)平臺(tái)上運(yùn)行交叉編譯器CrossComplier,編譯我們程序,而由CrossComplier生成程序?qū)⒃赥arget上運(yùn)行嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第2頁(yè)
需要交叉編譯原因:首先,在項(xiàng)目標(biāo)起始階段,目標(biāo)平臺(tái)還未建立,所以需要做交叉編譯,以生成我們所需要Bootloader以及kernel(因?yàn)锽ootloader和kernel源碼需要經(jīng)過(guò)交叉編譯后才能夠在目標(biāo)平臺(tái)上運(yùn)行);其次,當(dāng)目標(biāo)平臺(tái)能開(kāi)啟之后,因?yàn)槟繕?biāo)平臺(tái)上資源限制,當(dāng)我們編譯大型程序時(shí),依然可能需要用到交叉編譯。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第3頁(yè)怎樣建立交叉編譯工具鏈構(gòu)建交叉工具鏈通常有以下3種方法:1.分步驟手工編譯分步編譯和安裝交叉編譯工具鏈所需要庫(kù)和源代碼,最終生成交叉編譯工具鏈。2.經(jīng)過(guò)腳本編譯經(jīng)過(guò)crosstool腳本工具來(lái)實(shí)現(xiàn)一次編譯生成交叉編譯工具鏈3.直接獲取交叉編譯工具鏈直接經(jīng)過(guò)網(wǎng)上下載已經(jīng)制作好交叉編譯工具鏈。ftp:.ukftp:ftp:Linux內(nèi)核代碼linux-2.6.10.tar.gzglibc庫(kù)glibc-2.3.2.tar.gz工具程序binutils-2.15.tar.bz2內(nèi)核線(xiàn)程包glibc-linuxthreads-2.3.2.tar.gz編譯器gcc-3.3.6.tar.gz嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第4頁(yè)配置開(kāi)發(fā)板PXA270嵌入式系統(tǒng)宿主機(jī)交叉編譯環(huán)境arm-linux.tar.gz提供ARM系統(tǒng)開(kāi)發(fā)交叉編譯器/usr/local/arm-linux/binvi/etc/profilepathmunge/usr/local/arm-linux/bincparm-linux.tar.gz/usr/localcd/usr/localtar-xzfarm-linux.tar.gz嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第5頁(yè)目標(biāo)機(jī)與主機(jī)通訊方式嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第6頁(yè)1、minicomminicom很像Windows下面超級(jí)終端,我們利用minicom作為目標(biāo)板終端顯示視窗;經(jīng)過(guò)串口控制目標(biāo)板嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第7頁(yè)2、從菜單中選擇SerialPortSetup配置minicom1、#minicom-s嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第8頁(yè)3、“A”以設(shè)置“SerialDevice”。假如使用串口1,則輸入/dev/ttyS0。假如使用串口2,則輸入/dev/ttyS1。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第9頁(yè)4、“E”鍵進(jìn)入設(shè)置“bps/par/Bits”(波特率)界面,再按“I”以設(shè)置波特率為115200嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第10頁(yè)設(shè)置被保留到“/etc/minirc.dfl”嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第11頁(yè)目標(biāo)板上電后,目標(biāo)板開(kāi)啟過(guò)程顯示在minicom;CTR+A+s---zmodern嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第12頁(yè)2NFS服務(wù)NFS服務(wù)能夠使網(wǎng)絡(luò)上同為L(zhǎng)inux或Unix系統(tǒng)主機(jī)共享文件系統(tǒng)。NFS能夠?qū)⑦h(yuǎn)程文件系統(tǒng)載入在當(dāng)?shù)匚募到y(tǒng)下。遠(yuǎn)程硬盤(pán)、目錄和光驅(qū)都能夠變成當(dāng)?shù)刂鳈C(jī)目錄樹(shù)中一個(gè)子目錄。載入后與處理自己文件系統(tǒng)一樣使用即可。不只方便,也節(jié)約了重復(fù)保留文件空間、傳輸文件時(shí)間及網(wǎng)絡(luò)帶寬。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第13頁(yè)NFS特點(diǎn)NFS系統(tǒng)也是使用C/S體系結(jié)構(gòu),就是有服務(wù)器端與客戶(hù)端服務(wù)器端提供共享文件系統(tǒng),必須把文件系統(tǒng)輸出(export)出去客戶(hù)端則要把文件系統(tǒng)載入到自己系統(tǒng)下使用NFS,需要在服務(wù)器端設(shè)置輸出,在客戶(hù)端設(shè)置載入嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第14頁(yè)NFS服務(wù)器端配置(1)關(guān)閉防火墻(2)配置共享目錄----客戶(hù)端主機(jī)IP范圍(3)主機(jī)IP(4)開(kāi)啟NFS服務(wù)NFS客戶(hù)端(1)設(shè)置客戶(hù)端IP地址(2)掛載共享目錄mount-tnfs主機(jī)ip:共享目錄掛載點(diǎn)注意事項(xiàng):關(guān)閉防火墻,主機(jī)與客戶(hù)端在同一ip段嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第15頁(yè)詳細(xì)配置步驟服務(wù)器端1)關(guān)閉防火墻嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第16頁(yè)詳細(xì)配置步驟2)配置NFS服務(wù)器嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第17頁(yè)詳細(xì)配置步驟2-1)設(shè)置共享目錄和主機(jī)范圍嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第18頁(yè)詳細(xì)配置步驟2-2)設(shè)置其它選項(xiàng)嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第19頁(yè)詳細(xì)配置步驟2-3)設(shè)置其它選項(xiàng)嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第20頁(yè)詳細(xì)配置步驟3)設(shè)置NFS服務(wù)器IP嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第21頁(yè)詳細(xì)配置步驟4)開(kāi)啟NFS服務(wù)嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第22頁(yè)詳細(xì)配置步驟客戶(hù)端1)配置ip嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第23頁(yè)詳細(xì)配置步驟2)掛載NFS嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第24頁(yè)/etc/exports它基本格式是Directoryhost(權(quán)限選項(xiàng)、用戶(hù)映像、)Directory:表示打算共享目錄名稱(chēng);Host:共享這個(gè)目錄主機(jī)名稱(chēng);權(quán)限選項(xiàng):定義安全選項(xiàng);嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第25頁(yè)權(quán)限選項(xiàng)1)ro:只讀,只允許客戶(hù)機(jī)掛載這個(gè)文件系統(tǒng)為只讀模式。2)rw:明確指定共享目錄為讀/寫(xiě)權(quán)限。用戶(hù)映像來(lái)限定一些用戶(hù)對(duì)NFS共享文件使用權(quán)限no_root_squash:其它安全選項(xiàng)1)Insecure:以非安全端口方式訪(fǎng)問(wèn),即默認(rèn)用戶(hù)端口是1024或者更高,而NFS服務(wù)器默認(rèn)安全服務(wù)器端口應(yīng)該是低于1024。2)Sync:依據(jù)請(qǐng)求進(jìn)行同時(shí)。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第26頁(yè)例:vi/etc/exports/home/ls0(rw,insecure,no_root_squash)表示共享目錄為/home/ls,允許訪(fǎng)問(wèn)客戶(hù)機(jī)地址為0主機(jī),權(quán)限為可讀可寫(xiě)(rw),非安全方式訪(fǎng)問(wèn)(insecure),讓客戶(hù)機(jī)根用戶(hù)在服務(wù)器上擁有根權(quán)限。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第27頁(yè)例:vi/etc/exports/home/ls*(rw)表示共享目錄為/home/ls,允許任意主機(jī)訪(fǎng)問(wèn),權(quán)限可讀可寫(xiě)嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第28頁(yè)
Bootloader是什么?Bootloader,為引導(dǎo)加載程序,是嵌入式系統(tǒng)加電后運(yùn)行第一段代碼,相當(dāng)于PC機(jī)BIOS。Bootloader位置:通常固化在硬件上某個(gè)固態(tài)存放設(shè)備上,加電后自開(kāi)啟。基于ARM處理器核CPU在復(fù)位時(shí)通常都從地址0x00000000取它第一條指令。在這個(gè)地址處安排就是Bootloader。Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行一段小程序。經(jīng)過(guò)這段小程序,我們能夠初始化硬件設(shè)備、建立內(nèi)存空間映像表,從而建立適當(dāng)系統(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備。
3BootloaderBootloader參數(shù)系統(tǒng)內(nèi)核根文件系統(tǒng)從低地址到高地址方向Flash嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第29頁(yè)
幾個(gè)公布BootloaderBootloader是嚴(yán)重地依賴(lài)于硬件而實(shí)現(xiàn)。每種不一樣體系結(jié)構(gòu)處理器都有不一樣Bootloader。不過(guò)Bootloader發(fā)展也趨于支持各種體系結(jié)構(gòu),如現(xiàn)在比較成熟vivi、RedBoot和U-Boot等。ftp://ftp.denx.de/pub/u-boot/嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第30頁(yè)Bootloader操作模式大多數(shù)Bootloader都有兩種不一樣操作模式:“開(kāi)啟加載”模式和“下載”模式。其區(qū)分對(duì)于開(kāi)發(fā)人員才有意義。從最終用戶(hù)角度看,Bootloader作用就是用來(lái)加載操作系統(tǒng),而并不存在所謂開(kāi)啟加載模式與下載模式區(qū)分。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第31頁(yè)1、開(kāi)啟加載(Bootloading)模式 即Bootloader從目標(biāo)機(jī)上某個(gè)固態(tài)存放設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶(hù)介入。 開(kāi)啟加載模式是Bootloader正常工作模式,在嵌入式產(chǎn)品公布時(shí)侯,Bootloader必須工作在這種模式下。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第32頁(yè)2、下載(Downloading)模式
下載方式:在這種模式下,目標(biāo)機(jī)上Bootloader將經(jīng)過(guò)串口連接或網(wǎng)絡(luò)連接等通信伎倆從主機(jī)下載文件。
下載內(nèi)容及存放:主要是下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載文件通常首先被Bootloader保留到目標(biāo)機(jī)RAM中,然后再被Bootloader寫(xiě)到目標(biāo)機(jī)上FLASH類(lèi)固態(tài)存放設(shè)備中。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第33頁(yè)下載模式應(yīng)用場(chǎng)所:Bootloader這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;另外,以后系統(tǒng)更新也會(huì)使用到這種工作模式。用戶(hù)應(yīng)用接口:工作于這種模式下Bootloader通常都會(huì)向它終端用戶(hù)提供一個(gè)簡(jiǎn)單命令行接口。如在U-BOOT下,將出現(xiàn)“#”提醒符;在vivi下出現(xiàn)“vivi>”提醒符。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第34頁(yè)下載(Downloading)模式示例嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第35頁(yè)Bootloader開(kāi)啟過(guò)程大多數(shù)BootLoader開(kāi)啟都分為stage1和stage2兩大部分。依賴(lài)于處理器體系結(jié)構(gòu)和板級(jí)初始化代碼,通常都放在stage1中,用匯編語(yǔ)言實(shí)現(xiàn)而stage2則通慣用C語(yǔ)言來(lái)實(shí)現(xiàn),這么能夠?qū)崿F(xiàn)更復(fù)雜功效,而且代碼會(huì)含有更加好可讀性和可移植性。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第36頁(yè)BootLoaderstage1通常包含以下步驟(以執(zhí)行先后次序):硬件設(shè)備初始化。為加載BootLoaderstage2準(zhǔn)備RAM空間。拷貝BootLoaderstage2到RAM空間中。設(shè)置好堆棧跳轉(zhuǎn)到stage2C入口點(diǎn)。
Stage1主要工作是硬件初始化,并準(zhǔn)備第二階段C語(yǔ)言運(yùn)行環(huán)境關(guān)閉處理器內(nèi)部指令/數(shù)據(jù)cache等設(shè)置CPU速度和時(shí)鐘頻率RAM初始化初始化led等為了取得更加快執(zhí)行速度,通常把階段2代碼加載到RAM空間中來(lái)執(zhí)行。準(zhǔn)備RAM空間考慮原因:階段2代碼大小、堆棧、頁(yè)大小(4KB倍數(shù))、安排位置等。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第37頁(yè)BootLoaderstage2通常包含以下步驟(以執(zhí)行先后次序):初始化本階段要使用到硬件設(shè)備。檢測(cè)系統(tǒng)內(nèi)存映射(memorymap)。將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM空間中。為內(nèi)核設(shè)置開(kāi)啟參數(shù)。調(diào)用內(nèi)核。stage2代碼通慣用C語(yǔ)言來(lái)實(shí)現(xiàn),方便于實(shí)現(xiàn)更復(fù)雜功效和取得更加好代碼可讀性和可移植性。與普通C語(yǔ)言應(yīng)用程序不一樣是,在編譯和鏈接bootloader這么程序時(shí),我們不能使用glibc庫(kù)中任何支持函數(shù)。Stage2主要目標(biāo)是運(yùn)行Linux內(nèi)核,在此之前需要完成硬件和內(nèi)存初始化工作。Bootloader調(diào)用Linuxkernel方法是直接跳轉(zhuǎn)到內(nèi)核第一條指令處。在跳轉(zhuǎn)時(shí)必須滿(mǎn)足以下條件:1)、CPU存放器設(shè)置:R0為0;R1為機(jī)器類(lèi)型ID;R2為開(kāi)啟參數(shù),標(biāo)識(shí)列表在RAM中起始基地址。2)、CPU模式:CPU必須設(shè)置為SVC模式,必須禁止中止(IRQs和FIQs)。3)、MMU和Cache設(shè)置:MMU必須關(guān)閉;指令Cache能夠打開(kāi)也能夠關(guān)閉;數(shù)據(jù)Cache必須關(guān)閉。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第38頁(yè)viviBootloader源碼分析vivi是韓國(guó)Mizi企業(yè)開(kāi)發(fā)Bootloader,適合用于ARM9處理器。vivi有兩種工作模式,在開(kāi)啟時(shí)能夠選擇。在vivi開(kāi)啟時(shí),經(jīng)過(guò)串行口發(fā)出以下信息:PressReturntostarttheLinuxnow,anyotherkeyforvivi按回車(chē)鍵開(kāi)啟LinuxOS,按其它鍵進(jìn)入vivi命令接口模式,能夠使用vivi提供命令進(jìn)行一些操作。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第39頁(yè)vivi源代碼目錄結(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è)備讀寫(xiě)控制文件和串行口操作文件,對(duì)串行口支持xmodem和ymodem協(xié)議。4、include目錄存放全部頭文件,包含S3C2410微處理器和S3C2410開(kāi)發(fā)板頭文件。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第40頁(yè)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目錄,存放是該目錄路徑和它子目錄。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第41頁(yè)vivi源代碼文件與功效結(jié)構(gòu)vivi源代碼文件:1、vivi/arch/s3c2410/head.s2、一段過(guò)渡,實(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.c嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第42頁(yè)viviBootloader接口命令命令功能Load下載flash或RAM命令PartMTD分區(qū)操作命令param設(shè)置、查看參數(shù)命令Boot開(kāi)啟系統(tǒng)命令flashFlash管理命令vivi>loadflashkernelxvivi>bootnand0x80000flasherase0x800000xc0000嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第43頁(yè)vivi源碼修改移植 vivi移植方法步驟: 對(duì)vivi進(jìn)行修改移植 對(duì)vivi進(jìn)行配置 對(duì)vivi進(jìn)行編譯 下載、運(yùn)行vivi嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第44頁(yè)1、修改vivi/Makefile(1)修改交叉編譯庫(kù)和頭文件
1)修改編譯器路徑 CROSS_COMPILE=2)修改編譯器庫(kù)文件路徑: ARM_GCC_LIBS=3)增加交叉編譯時(shí)頭文件搜索路徑:LIBC_INCLUDE_DIR=(2)Linux內(nèi)核包含文件LINUX_INCLUDE_DIR=編譯vivi用到交叉編譯工具版本是cross-2.95.3.tar.bz2
嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第45頁(yè)
2、修改Flash分區(qū)信息(vivi/arch/s3c2410/smdk.c)
#ifdefCONFIG_S3C2410_AMD_BOOTmtd_partition_tdefault_mtd_partitions[]={ { name: "vivi", offset: 0, size: 0x0000, flag: 0 },
{ name: "param", offset: 0x0000, size: 0x00010000, flag: 0 },{ name: "kernel", offset: 0x00030000, size: 0x000C0000, flag: 0 },{ name: "root", offset: 0x00100000, size: 0x00140000, flag: MF_BONFS }};#endif嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第46頁(yè)
二、對(duì)vivi進(jìn)行配置 運(yùn)行vivi配置程序menuconfig: make menuconfig 開(kāi)啟對(duì)vivi配置主菜單,依據(jù)自己目標(biāo)系統(tǒng)逐項(xiàng)進(jìn)行設(shè)置,設(shè)置完后退出保留即可。 嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第47頁(yè)
三、對(duì)vivi進(jìn)行編譯 在vivi目錄下執(zhí)行以下命令:
make clean make
makeclean是去除以前編譯時(shí)生成全部目標(biāo)文件和暫時(shí)文件。 假如沒(méi)有錯(cuò)誤,編譯后會(huì)生成vivi目標(biāo)文件vivi.bin。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第48頁(yè) 四、對(duì)vivi進(jìn)行下載 利用JTAG口將vivi下載到目標(biāo)板flash空間(0x00000---0x0)。 然后對(duì)目標(biāo)板加電,使vivi開(kāi)啟運(yùn)行,觀察運(yùn)行情況。Jflash-s3c2410<vivi文件名>/t=<flash_type>其中,F(xiàn)lash類(lèi)型有以下選項(xiàng):1:SMDK2410:K9S32084MB2:SMDK2410:K9S64088MB3:SMDK2410:K9S280816MB4:SMDK2410:K9S560832MB5:SMDK2410:K9S120864MB6:SMDK2410:AM29LV800BB嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第49頁(yè)在燒寫(xiě)過(guò)程中,有3次提醒,要求用戶(hù)選擇:(1)在“Selectthefunctiontotest:”后面輸入“0”,表示對(duì)型號(hào)為K9S1208Flash芯片進(jìn)行燒寫(xiě),燒寫(xiě)類(lèi)型為程序。(2)在“Inputtargetblocknumber:”后面輸入“0”,表示從偏移地址0處開(kāi)始燒寫(xiě)。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第50頁(yè)經(jīng)過(guò)數(shù)分鐘燒寫(xiě)之后,將vivi燒寫(xiě)到Flash之中。再次出現(xiàn)提醒:嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第51頁(yè)在“Selectthefunctiontotest:”后面輸入“2”,退出vivi燒寫(xiě)。并關(guān)閉開(kāi)發(fā)板電源,拔下JTAG連接線(xiàn)。在完成vivi燒寫(xiě)之后,使用串口線(xiàn),經(jīng)過(guò)串口將宿主機(jī)與開(kāi)發(fā)板連接起來(lái)。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第52頁(yè)在宿主機(jī)上打開(kāi)超級(jí)終端minicom窗口,再按下“Backspace”(回格)鍵不放,接通開(kāi)發(fā)板電源。這時(shí)我們經(jīng)過(guò)超級(jí)終端minicom窗口能夠觀察到嵌入式系統(tǒng)開(kāi)發(fā)板上Linux系統(tǒng)開(kāi)啟過(guò)程,并在出現(xiàn)提醒符“vivi>”時(shí)停住(假如Linux系統(tǒng)有開(kāi)啟,但沒(méi)有“vivi>”提醒符出現(xiàn),則需要再一次按住鍵盤(pán)上“Backspace”(回格)鍵不放,對(duì)開(kāi)發(fā)板“Reset”重啟)。進(jìn)入vivi提醒狀態(tài)嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第53頁(yè)(1)對(duì)Flash分區(qū)在“vivi>”提醒符下用命令“bonpart”對(duì)Flash進(jìn)行分區(qū):Bonpart0192k1M其中,從地址0處開(kāi)始為vivi,地址192k(192*1024=196608)處開(kāi)始為內(nèi)核,地址1M(1*1024*1024=1048576)處開(kāi)始為文件系統(tǒng)。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第54頁(yè)因?yàn)閷?duì)Flash進(jìn)行了重新分區(qū),原來(lái)燒寫(xiě)在Flash中從地址0處開(kāi)始引導(dǎo)加載程序vivi亦被擦除了,所以,這時(shí)不能掉電,也不能重啟開(kāi)發(fā)板,必須緊接著重新燒寫(xiě)vivi程序。(2)vivi>loadflashvivix當(dāng)出現(xiàn):Readyfordownloadingusingxmodem...Waiting...然后,按下Ctrl+A+S,彈出一個(gè)對(duì)話(huà)框嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第55頁(yè)(3)燒寫(xiě)內(nèi)核當(dāng)vivi燒寫(xiě)完成后,需要重新開(kāi)啟開(kāi)發(fā)板,使剛才分區(qū)及引導(dǎo)程序生效。重新開(kāi)啟開(kāi)發(fā)板時(shí),操作過(guò)程如前所述,按下“Backspace”(回格)鍵不放同時(shí),重新開(kāi)啟開(kāi)發(fā)板系統(tǒng),出現(xiàn)提醒符“vivi>”。vivi>loadflashkernelx4)燒寫(xiě)文件系統(tǒng)緊接著上面操作,在提醒符“vivi>”下,輸入命令:vivi>loadflashrootx嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第56頁(yè)Linux內(nèi)核Linux內(nèi)核主要功效進(jìn)程管理內(nèi)存管理文件管理設(shè)備管理網(wǎng)絡(luò)管理嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第57頁(yè)Linux內(nèi)核結(jié)構(gòu)嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第58頁(yè)Linux配置與編譯編譯內(nèi)核步驟:下載內(nèi)核源碼修改內(nèi)核目錄樹(shù)根下Makefile,指明交叉編譯器設(shè)置環(huán)境變量配置內(nèi)核產(chǎn)生.config文件輸入內(nèi)核配置命令(makemenuconfig),進(jìn)行內(nèi)核選項(xiàng)選擇編譯內(nèi)核下載Linux內(nèi)核嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第59頁(yè)1、確定處理器類(lèi)型Linux內(nèi)核源代碼支持20各種微處理器類(lèi)型,在編譯之前要先確定微處理器類(lèi)型。ARCH:=armCROSS_COMPILE=arm-linux-Linux2.4內(nèi)核還沒(méi)有包含S3C2410處理器Linux2.6內(nèi)核已經(jīng)支持。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第60頁(yè)2、確定配置方法內(nèi)核支持4種不一樣配置方法,每種方法是讀取一個(gè)根目錄下隱藏配置文件“.config”。這4種方式以下。makeconfig:基于文本最為傳統(tǒng)配置界面,不推薦使用。makemenuconfig:基于文本選單配置界面,字符終端下推薦使用。makexconfig:基于圖形窗口模式配置界面,Xwindow下推薦使用。makeoldconfig:自動(dòng)讀入“.config”配置文件,而且只要求用戶(hù)設(shè)定前次沒(méi)有設(shè)定過(guò)選項(xiàng)。
嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第61頁(yè)【例】以makemenuconfig為例進(jìn)行S3C2410系統(tǒng)內(nèi)裁剪核配置。#makemenuconfig彈出內(nèi)核裁剪配置窗口嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第62頁(yè)“SystemType---→”子項(xiàng)界面嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第63頁(yè)在完成配置之后,就能夠保留退出,如圖所表示。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第64頁(yè)內(nèi)核編譯makezImagearch/$(ARCH)/boot”目錄中。
嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第65頁(yè)文件系統(tǒng)文件系統(tǒng)是嵌入式Linux系統(tǒng)必備一個(gè)組成部分,是系統(tǒng)文件和應(yīng)用文件存放地方。嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的建立第66頁(yè)文件目錄/bin 目錄下需要包含慣用用戶(hù)命令,如sh等。/sbin 目錄要包含全部系統(tǒng)命令,如reboot等。/etc 目錄下是系統(tǒng)配置文件。/boot 目錄下是內(nèi)核映像/dev 目錄含有系統(tǒng)全部特殊設(shè)備文件/lib 目錄包含系統(tǒng)全部庫(kù)文件/mnt 目錄只用于掛接,能夠是空目錄/
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 防震知識(shí)安全教育主題班會(huì)
- 2024年秋新人教版八年級(jí)上冊(cè)道德與法治教學(xué)課件 13.1 在勞動(dòng)中創(chuàng)造人生價(jià)值
- 我為秋游出主意(教學(xué)設(shè)計(jì))-2023-2024學(xué)年四年級(jí)上冊(cè)綜合實(shí)踐活動(dòng)蒙滬版
- 骨折病人術(shù)后的護(hù)理查房
- 農(nóng)村安裝電梯合同范本
- 船舶結(jié)構(gòu)設(shè)計(jì)重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 視頻抖音廣告合同范例
- 旅游團(tuán)包車(chē)協(xié)議二零二五年
- 墳地補(bǔ)償協(xié)議書(shū)
- 場(chǎng)地及房屋出租協(xié)議書(shū)二零二五年
- 工程設(shè)計(jì)費(fèi)收費(fèi)標(biāo)準(zhǔn)
- 海姆立克急救(生命的擁抱)課件
- 土方回填試驗(yàn)報(bào)告
- 越南語(yǔ)基礎(chǔ)實(shí)踐教程1第二版完整版ppt全套教學(xué)教程最全電子課件整本書(shū)ppt
- 大數(shù)據(jù)與會(huì)計(jì)-說(shuō)專(zhuān)業(yè)
- 工程項(xiàng)目樣板引路施工方案
- 必備空調(diào)安裝免責(zé)協(xié)議書(shū)范文優(yōu)選七篇
- (自考)財(cái)務(wù)管理學(xué)完整版課件全套ppt教程(最新)
- 校服評(píng)標(biāo)方法及打分表
- 繪本教學(xué)The hug 課件
- 建設(shè)項(xiàng)目對(duì)海洋生物資源影響評(píng)價(jià)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論