<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è) > 嵌入式系統 > 設計應用 > 基于3c2410的linux2.6.22移植(1)

基于3c2410的linux2.6.22移植(1)

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
經(jīng)歷近2周的時(shí)間,查閱大量的參考資料和貼子,終于成功將linux2.6.22移植到ARM2410上。中間走了不少彎路,不過(guò)走彎路也是一種收獲,因為可以碰到和解決許多問(wèn)題,增長(cháng)知識。因為linux版本問(wèn)題以及開(kāi)發(fā)平臺的不同,網(wǎng)上的很多文章并不完全適合自己的板子,需要自己摸索和修改。寫(xiě)這點(diǎn)東西算是對前一階段工作的總結,以免將來(lái)忘記。
移植大體的步驟主要有:
(1) 交叉編譯環(huán)境的建立(我的主機系統是ubuntu7.04);
(2) 開(kāi)發(fā)板(我用的是博創(chuàng )的2410)NAND flash 分區管理;
(3) LCD、網(wǎng)卡驅動(dòng)的移植;
(4) linux內核配置和編譯;
(5) rootfs的制作;
(6) 完成linux的啟動(dòng)和文件系統的掛載。
下面我會(huì )按照步驟逐一介紹。
一、 交叉編譯環(huán)境的建立
建立交叉編譯環(huán)境就是在宿主機(也就是pc機)的系統上建立一個(gè)模擬ARM的工作環(huán)境,使得在這個(gè)環(huán)境下編譯產(chǎn)生的程序能夠順利的在A(yíng)RM上的系統內運行。主要工作包括binutils、gcc以及glibc的編譯生成,還有一些環(huán)境變量的設置。
(1) 準備工作:
下載源代碼包: binutils-2.18.tar.bz2,gcc-4.2.1.tar.bz2,glibc-2.6.1.tar.bz2,glibc-ports-2.6.1.tar.gz,linux-2.6.22.tar.bz2
補丁包: binutils-2.18-genscripts_multilib-1.patch
binutils-2.18-posix-1.patch
gcc-4.2.1-cross_search_paths-1.patch
gcc-4.2.1-posix-1.patch
gcc-4.2.1-specs-1.patch
glibc-2.6.1-cross_hacks-1.patch
glibc-2.6.1-hppa_nptl-1.patch
glibc-2.6.1-libgcc_eh-1.patch
glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
glibc-2.6.1-sysdep_cancel-1.patch
glibc-csu.patch
注:Binutils 是一組開(kāi)發(fā)工具,包括連接器,匯編器和其他用于目標文件和檔案的工具;
GCC是C編譯器,用來(lái)將C代碼編譯成匯編代碼;
Glibc就是gcc編譯時(shí)需要的庫了,glibc-ports是提供glibc對ARM的支持;
Linux-2.6.22.tar.bz2是內核源代碼包。
需要注意的是gcc和glibc以及l(fā)inux內核版本需要保持對應。如果用比較老的編譯器去編譯新的內核,或者用新的編譯器編譯老版本的內核,會(huì )出現一些莫名其妙的錯誤。另外補丁包也是必備的,否則編譯過(guò)程中也會(huì )出錯。剛開(kāi)始我就深受其害。
(2) 工作目錄的建立:
目錄的結構可以參考《Building.Embedded.Linux.Systems》。推薦整個(gè)目錄放到/usr/local下,這樣所有的用戶(hù)都有訪(fǎng)問(wèn)權限。我當初沒(méi)經(jīng)驗,直接放到home下了,后來(lái)會(huì )有些用戶(hù)權限的小麻煩。這里給出我的目錄結構:
$root@host:/home# ls
arm host
其中host是我的普通登陸用戶(hù)帳號目錄,arm就是工作目錄了。為了方便,我平時(shí)用root登陸。
$root@host:/home# cd arm
$root@host:/home/arm# mkdir build-tools kernel rootfs tmp tools
其中編譯交叉工具時(shí)的主要工作都在build-tools目錄下完成,kernel目錄用來(lái)存放內核源代碼,rootfs目錄是用來(lái)建立啟動(dòng)根文件系統的(后面會(huì )詳細介紹),tmp是臨時(shí)文件存放目錄,tools目錄就是最終生成的編譯器gcc和glibc存放的地方。
(3) 設置環(huán)境變量:
$root@host:/home/arm# export PRJROOT=/home/arm
$root@host:/home/arm# TARGET=arm-linux
$root@host:/home/arm# PREFIX=${PRJROOT}/tools
$root@host:/home/arm# TARGET_PREFIX=${PREFIX}/${TARGET}
$root@host:/home/arm# PATH=${PREFIX}/bin:${PATH}
其中TARGET定義了交叉工具的工作平臺類(lèi)型,PREFIX指定交叉工具的最終安裝目錄,PATH指定系統尋找交叉工具可執行文件所在的路徑。
(4) 編譯前的準備:
$root@host:/home/arm# cd ${PRJROOT}/build-tools
$root@host:/home/arm/build-tools# mkdir build-binutils build-boot-gcc build-glibc build-gcc build-glibc-headers patch
將源碼包放到這個(gè)目錄下
$root@host:/home/arm/build-tools# ls
build-boot-gcc build-glibc build-binutils build-gcc build-glibc-headers patch
binutils-2.18.tar.bz2 gcc-4.2.1.tar.bz2 glibc-2.6.1.tar.bz2 glibc-ports-2.6.1.tar.gz
將補丁放到patch目錄下:
$root@host:/home/arm/build-tools# cd patch
$root@host:/home/arm/build-tools/patch# ls
binutils-2.18-genscripts_multilib-1.patch binutils-2.18-posix-1.patch
gcc-4.2.1-cross_search_paths-1.patch gcc-4.2.1-posix-1.patch
glibc-2.6.1-cross_hacks-1.patch
glibc-2.6.1-hppa_nptl-1.patch glibc-2.6.1-libgcc_eh-1.patch
glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
glibc-2.6.1-sysdep_cancel-1.patch glibc-csu.patch
將內核源碼包放到${PRJROOT}/kernel目錄下
$root@host:/home/arm# cd kernel
$root@host:/home/arm/kernel# ls
linux-2.6.22.tar.bz2


關(guān)鍵詞: 3c2410linux2.6.22移

評論


相關(guān)推薦

技術(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>