<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于3c2410的linux2.6.22移植(1)

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

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();