【嵌入式】FS2410移植U-Boot-1.1.6

移植環境


   硬件平臺:FS2410

   U-Boot版本:u-boot-1.1.6

   編譯器:arm-linux-gcc version 3.4.1



U-Boot主要目錄結構




   U-Boot的 stage1代碼通常放在 cpu/……/start.S文件中,它用彙編語言寫成;

   U-Boot的 stage2代碼通常放在 lib/……/board.c文件中,它用 C語言寫成。



步驟


   1、下載並解壓U-Boot源碼

tar xvf u-boot-1.1.6.tar.bz2


   2、編譯開發板項目

   目前U-Boot對很多CPU直接支持,可以查看 board目錄的一些子目錄


mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board$ ls
a3000         cu824          icecube       mpc8266ads   pn62         snmc
adder         dave           icu862        mpc8349emds  ppmc7xx      sorcery
adsvix        dbau1x00       ids8247       mpc8540ads   ppmc8260     spc1920
alaska        delta          impa7         mpc8540eval  prodrive     spd8xx
altera        dnp1110        incaip        mpc8560ads   psyent       ssv
amcc          eltec          inka4x0       mpc8641hpcn  purple       stamp
amirix        emk            innokom       mpl          pxa255_idp   stxgp3
armadillo     ep7312         integratorap  musenki      quantum      stxxtc
assabet       ep8248         integratorcp  mvblue       r360mpi      svm_sc8xx
at91rm9200dk  ep8260         ip860         mvs1         r5200        sx1
atc           ep82xxm        iphase4539    mx1ads       rattler      tb0229
AtmarkTechno  ep88x          ispan         mx1fs2       rbc823       total5200
atmel         eric           ivm           nc650        rmu          tqm5200
barco         esd            ixdp425       netphone     RPXClassic   tqm8260
bc3450        esteem192e     jse           netstar      RPXlite      tqm834x
bmw           etin           kb9202        netta        RPXlite_dw   tqm85xx
BuS           etx094         kup           netta2       rpxsuper     tqm8xx
c2mon         evb4510        lantec        netvia       RRvision     trab
canmb         evb64260       lart          ns9750dev    rsdproto     uc100
cds           eXalion        LEOX          nx823        sacsng       utx8245
cerf250       exbitgen       logodl        o2dnt        sandburst    v37
cm4008        ezkit533       lpd7a40x      omap1510inn  sandpoint    v38b
cm41xx        fads           lubbock       omap1610inn  sbc2410x     versatile
cmc_pu2       flagadm        lwmon         omap2420h4   sbc405       voiceblue
cmi           funkwerk       m5271evb      omap5912osk  sbc8240      w7o
cobra5272     g2000          m5272c3       omap730p2    sbc8260      wepep250
cogent        gcplus         m5282evb      oxc          sbc8560      westel
cpc45         gen860t        MAI           pb1x00       sc520_cdp    xaeniax
cpu86         genietv        Marvell       pcippc2      sc520_spunk  xilinx
cpu87         gth            mbx8xx        pcs440ep     scb9328      xm250
cradle        gth2           mcc200        pleb2        shannon      xpedite1k
cray          gw8260         ml2           pm520        siemens      xsengine
csb226        hermes         modnet50      pm826        sixnet       zpc1900
csb272        hidden_dragon  mousse        pm828        sl8245       zylonite
csb472        hmi1001        mp2usb        pm854        smdk2400
csb637        hymod          mpc8260ads    pm856        smdk2410


   在最下面可以看到已經有 smdk2410目錄了,看看目錄下面有什麼東西

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board/smdk2410$ ls
config.mk  flash.c  lowlevel_init.S  Makefile  smdk2410.c  u-boot.lds
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board/smdk2410$


   OK,都是編譯要用到的源文件,現在回到 U-Boot根目錄

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board/smdk2410$ cd ../..
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$ ls
arm_config.mk                  fs              MAKEALL
avr32_config.mk                i386_config.mk  Makefile
blackfin_config.mk             include         microblaze_config.mk
board                          lib_arm         mips_config.mk
CHANGELOG                      lib_avr32       mkconfig
CHANGELOG-before-U-Boot-1.1.5  lib_blackfin    nand_spl
common                         lib_generic     net
config.mk                      lib_i386        nios2_config.mk
COPYING                        lib_m68k        nios_config.mk
cpu                            lib_microblaze  post
CREDITS                        lib_mips        ppc_config.mk
disk                           lib_nios        README
doc                            lib_nios2       rtc
drivers                        lib_ppc         rules.mk
dtt                            m68k_config.mk  tools
examples                       MAINTAINERS
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$


   查看 U-Boot根目錄下的Makefile

   我們的目標平臺是三星的2410,所以找到裏面的 smdk2410_config


   這就是默認的配置選項了,由於 U-Boot裏面已經給2410配置好了,所以這裏直接編譯項目

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$ make smdk2410_config
Configuring for smdk2410 board...
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$


   OK,出現Configuring for smdk2410 board...,就說明項目編譯成功了


   下面編譯 U-Boot.bin文件

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$make


   看着滿屏幕的命令不停的閃,總覺得會出問題,果然


   然後百度,說是 gcc庫使用是硬浮點,而 uboot指定了使用軟浮點,但是都未提供解決辦法,只提到註釋掉 Makefile裏面的-msoft-float參數,但是在Makefile裏面,根本就沒有這個參數,囧


   但是我在另外一個文件中找到了這個參數

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$ cd cpu/arm920t/
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/cpu/arm920t$ ls
at91rm9200  cpu.c  imx           interrupts.o  libarm920t.a  s3c24x0  start.S
config.mk   cpu.o  interrupts.c  ks8695        Makefile      start.o
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/cpu/arm920t$ more config.mk


   看看這個 config.mk 文件


   我把其中的 -msoft-float刪除了,但是還是編譯到這裏就出錯了,囧……

   然後我又換了u-boot-2009.08.tar.bz2,但是編譯到這裏時仍然是這個錯誤……

   所以,改這個是不對滴!



解決方案


   我們需要修改兩個文件:lib_arm/_umodsi3.Slib_arm/_udivsi3.S
bl __div0 (PLT) 改爲 bl __div0


   然後再進行編譯


OK,成功!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章