<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > S5PV210(TQ210)學(xué)習筆記——內核移植與文件系統構建

S5PV210(TQ210)學(xué)習筆記——內核移植與文件系統構建

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏
由于之前做過(guò)2440和6410,鑒于時(shí)間原因,這里暫時(shí)跨過(guò)其他模塊的裸機驅動(dòng)和uboot移植,直接進(jìn)入內核移植及驅動(dòng)開(kāi)發(fā)方面的學(xué)習。

內核移植其實(shí)很簡(jiǎn)單,因為內核是linus率領(lǐng)的linux內核開(kāi)發(fā)團隊開(kāi)發(fā)并維護的,我們只需要跟我們的平臺交叉編譯一下即可使用,但是,內核移植也不簡(jiǎn)單,因為內核移植起見(jiàn)出現任何問(wèn)題都可能會(huì )被卡住,因為內核代碼非常龐大,我們無(wú)法通讀內核代碼,下面是我移植期間遇到的各種悲催的問(wèn)題和解決方案,首先是必備的開(kāi)發(fā)環(huán)境:

本文引用地址:http://dyxdggzs.com/article/201611/322806.htm

a) Linux內核代碼,版本3.8.3

b) S5PV210開(kāi)發(fā)板(我的是TQ210)

c) HOST環(huán)境是WIN7(64位)下安裝的Ubuntu虛擬機(12.10)

一 內核編譯

從Linux內核網(wǎng)站(kernel.org)下載內核代碼、解壓并進(jìn)入內核目錄

(1)修改Makefile,將195行和196行改為:

  1. ARCH=arm
  2. CROSS_COMPILE?=arm-linux-
(2)進(jìn)行默認配置,進(jìn)入arch/arm/configs目錄,可以發(fā)現最接近我們開(kāi)發(fā)板的配置文件是s5pv210_defconfig,故
  1. makes5pv210_defconfig
(3)編譯內核,如果需要生成zImage則執行
  1. makezImage
如果需要生成uImage則執行
  1. makeuImage
(4)用uboot下載并嘗試運行,結果是悲劇的,在uboot打印”Starting kernel...“之后就看不到任何輸出了,顯然,有兩種原因:

a. 編譯的內核類(lèi)型錯誤,比如您的uboot使用的是uImage,而您編譯的是zImage。

b. 移植的uboot存在問(wèn)題,沒(méi)能正確的拷貝內核到正確的內存地址并啟動(dòng)。

c. 內核存在某些配置,我們沒(méi)有配置。

經(jīng)過(guò)查看內核配置項知道,內核默認采用的UART1打印調試信息,因此,執行:

  1. makemenuconfig
在出來(lái)的對話(huà)中依次選擇System type =>(1) S3C UART to use for low-level messages,在編輯框中將1改為0,然后保存配置并再次編譯內核,直接執行make即可,無(wú)需make clean。如果是首次執行make menuconfig會(huì )遇到錯誤,這是因為make menuconfig依賴(lài)一個(gè)庫,這里我忘記名字了,如果是ubuntu可以直接用指令安裝的,網(wǎng)上搜一下就可以搞定。

編譯完內核之后再次下載并嘗試運行,這時(shí),可以看到內核打印的信息了,如果您不幸只看到“Uncompressing Linux... done, booting the kernel.”就沒(méi)有任何輸出了,那么請檢查uboot傳入的機器碼跟內核機器碼是否匹配,如果不匹配請修正,然后重新編譯運行內核或者uboot,如果修正之后仍然看不到其他輸出,那么請檢查uboot的bootargs參數,bootargs中必須配置console=ttySAC0,否則也看不到打印信息。

如果沒(méi)有出現上面的錯誤,那么您的內核已經(jīng)可以打印出很多信息,但是由于內核默認沒(méi)有提供對Nand或網(wǎng)卡的支持,無(wú)法掛接文件系統,所以仍然無(wú)法正常運行。為了能使內核進(jìn)入控制臺,為后面的驅動(dòng)開(kāi)發(fā)提供環(huán)境,我們先制作文件系統,然后來(lái)移植網(wǎng)卡驅動(dòng),讓內核NFS方式掛接文件系統,然后我們就可以開(kāi)發(fā)其他驅動(dòng)了,如Nand、LCD、聲卡等等。

二 構建文件系統

其實(shí)構建文件系統還是比較簡(jiǎn)單的,注意幾個(gè)地方,然后按部就班的來(lái)就可以了。

(1)創(chuàng )建根文件系統目錄結構,可以使用如下腳本:

  1. #!/bin/sh
  2. echo"------Createrootfsdirectonsstart...--------"
  3. mkdirrootfs
  4. cdrootfs
  5. echo"--------Createroot,dev....----------"
  6. mkdirrootdevetcboottmpvarsysproclibmnthomeusr
  7. mkdiretc/init.detc/rc.detc/sysconfig
  8. mkdirusr/sbinusr/binusr/libusr/modules
  9. echo"makenodeindev/consoledev/null"
  10. sudomknod-m600dev/consolec51
  11. sudomknod-m600dev/nullc13
  12. mkdirmnt/etcmnt/jffs2mnt/yaffsmnt/datamnt/temp
  13. mkdirvar/libvar/lockvar/runvar/tmp
  14. chmod1777tmp
  15. chmod1777var/tmp
  16. echo"-------makedirectiondone---------"

在這里我將腳本命名為mkrootfs.sh,接下來(lái)給腳本加可執行權限(即chmod a+x mkrootfs)并運行腳本。我的腳本是在/nfsroot目錄下運行的,所以我的根文件系統的根目錄為/nfsroot/rootfs,后面均以該目錄為例闡述。

(2)編譯Busybox

到Busybox下載最新版的Busybox源碼,我是用的是1.21.0版本,下載完后解壓并進(jìn)入busybox目錄,首先是配置busybox

  1. makemenuconfig

配置菜單跟配置內核時(shí)的差不多,依次進(jìn)入Busybox Settings =>Build Options =>Cross Compiler prefix (NEW),設置為編譯器的前綴,我的是arm-linux-。網(wǎng)上有些朋友還推薦選擇Busybox Settings => Build Options =>Build BusyBox as a static binary (no shared libs),但是如果我們正確拷貝編譯器了運行庫的話(huà),不設置也可以?,F在可以編譯Busybox了,執行
  1. make

編譯過(guò)程很順利,我這里沒(méi)有遇到任何錯誤,接下來(lái)將編譯好的Busybox安裝到/nfsroot/rootfs就可以了,執行
  1. makeCONFIG_PREFIX=/nfsroot/rootfsinstall

(3)拷貝編譯器運行庫

我的編譯器是4.5.1版本的,拷貝arm-none-linux-gnueabi/sys-root/lib的所有動(dòng)態(tài)庫到/nfsroot/rootfs/lib下,為了不拷貝連接,應該加上”-d"選項,執行

  1. cp*so*/nfsroot/rootfs/lib-d

同樣拷貝arm-none-linux-gnueabi/sys-root/usr/lib下的所有動(dòng)態(tài)庫到/nfsroot/rootfs/usr/lib下,執行
  1. cp*so*/nfsroot/rootfs/usr/lib-d

(4)構建etc目錄


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: S5PV210內核移植文件系

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>