Cubieboard開發環境與Uboot的SD啓動卡製做

 原文在我博客:http://blog.csdn.net/andy_wsj/article/details/8515197php


拿到Cubieboard已經蠻久了,平時上班比較忙,只能晚上玩一會,年關將近,週末都要加班呀....
所謂U-boot 移植,其實別人都作好了,我只不過是作了一個啓動卡

系統環境:電腦二臺,臺式機XP;筆記本RHEL5,平時就用這個,懶得整ubuntu
代碼工具:XP上:          Source Insight 3.5
                 RHEL5上:    Vim,編譯工具鏈arm-2009q3,這個應該有更高版本;串口工具minicom,個人版本是2.1

資源:      支持Cubieboard的U-boot下載網址:https://github.com/linux-sunxi/u-boot-sunxi ,
                 我直接從網頁按zip格式下載到XP下
                 製做方法參考網站:https://github.com/linux-sunxi/u-boot-sunxi/wiki

硬件:      串口線,淘寶Cubieboard自帶USB串口線,RHEL5下不用裝驅動就能使用,XP下能夠用驅動精靈自動安裝
                 microSD卡一枚,2G,讀卡器一隻,華強北出品,竟然比淘寶貴...
開工:

         首先觀察Cubiebord預裝的U-Boot,設置好minicom(具體方法請本身百度),鏈接串口(使用淘寶配的線),連線順序:
         黑色 ---- GND
         綠色 ---- RX
         白色 ---- TX
         紅色不接

        將串口USB端插入筆記本,打開終端輸入命令「minicom」,啓動minicom以後,再將電源線插入筆記本USB,啓動過程當中按鍵盤任意鍵,進入U-boot,能夠看到:

HELLO! BOOT0 is starting!                                                  
boot0 version : 1.5.1                                                      
dram size =1024                                                            
Succeed in opening nand flash.                                             
Succeed in reading Boot1 file head.
The size of Boot1 is 0x0003c000.
The file stored in 0X00000000 of block 2 is perfect.
Check is correct.
Ready to disable icache.
Succeed in loading Boot1.                                          //第1階段bootloader
Jump to Boot1.
[       0.133] boot1 version : 1.4.0
[       0.133] pmu type = 3
[       0.135] bat vol = 0
[       0.161] axi:ahb:apb=3:2:2
[       0.161] set dcdc2=1400, clock=1008 successed
[       0.163] key
[       0.175] no key found
[       0.175] flash init start
[       0.227] flash init finish
[       0.228] fs init ok
[       0.229] fattype FAT16
[       0.229] fs mount ok
[       0.236] script finish
[       0.238] power finish
[       0.245] BootMain start
[       0.245] 0
[       0.264] key value = 0
[       0.264] recovery key high 6, low 4
[       0.265] unable to find fastboot_key key_max value
[       0.274] test for multi os boot with display
[       0.275] show pic finish
[       0.278] load kernel start
[       0.302] load kernel successed
[       0.302] start address = 0x4a00000

U-Boot 2011.09-rc1 (Nov 26 2012 - 14:01:52) Allwinner Technology     //第2階段bootloader

CPU:   SUNXI Family
Board: A10-EVB
DRAM:  512 MiB
NAND:  3776 MiB
In:    serial
Out:   serial
Err:   serial
--------fastboot partitions--------
-total partitions:11-
-name-        -start-       -size-      
bootloader  : 1000000       1000000     
env         : 2000000       1000000     
boot        : 3000000       2000000     
system      : 5000000       14000000    
data        : 19000000      20000000    
misc        : 39000000      1000000     
recovery    : 3a000000      2000000     
cache       : 3c000000      8000000     
private     : 44000000      1000000     
sysrecovery : 45000000      14000000    
UDISK       : 59000000      93000000    
-----------------------------------
Hit any key to stop autoboot:  0 
sunxi#



輸入命令 version,能夠看到:

sunxi#version

U-Boot 2011.09-rc1 (Nov 26 2012 - 14:01:52) Allwinner Technology 
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2010.09-50) 4.5.1
GNU ld (Sourcery G++ Lite 2010.09-50) 2.20.51.20100809
sunxi#

      使用的編譯器是arm-none-linux-gnueabi-gcc,版本4.5.1,可是俺的是4.3.2版本,爲此我費了了老大勁,換成4.4.1時才編譯成功
      有了上面的基本狀況,開始編譯製做,在XP下解壓下載的u-boot-sunxi-sunxi.zip,刪除board文件夾下除了allwinner文件的其餘文件,board/allwinner文件夾內只須要保留common和Cubieboard兩個文件夾,其餘不須要;刪除arch文件夾內除了arm文件的其餘文件,arch/arm/cpu文件夾下只保留armv7和u-boot.lds,arch/arm/cpu/armv7內文件和sunxi文件夾保留,其餘文件夾刪除。這樣作能夠在Source Insight關聯時減小關聯項目,便於查閱,若還想更進一步,將include目錄下與A10無關的頭文件一併刪除,關聯時更加清晰。使用Source Insight 3.5創建一個工程,添加文件時選擇u-boot解壓文件夾,選擇「add tree」,將所有文件加入工程,再選Project->Rebuilt Project...,如此一來,XP下的代碼查閱工程就創建啦。

      linux下解壓U-boot到本身工做目錄,不須要刪除操做。

      安裝arm-2009q3.tar.bz2,在arm-2009q3.tar.bz2目錄下輸入命令:tar   -jxvf    arm-2009q3.tar.bz2   -C   /usr/local/arm/

     將編譯器設置爲默認arm編譯器: vim   /etc/profile

                                在末尾增長一行: export=$PATH:/usr/local/arm/arm-2009q3/bin

                               保存退出以後執行:source    /etc/profile

      或者重啓,或者logoout一下,使設置生效。以上設置適合RHEL5,其餘linux系統請百度解決。

      

      編譯U-boot:   make cubieboard CROSS_COMPILE=arm-none-linux-gnueabi-

      等待.........

      生成三個.bin文件,分別是u-boot.bin和spl目錄下的sunxi-spl.bin、u-boot-spl.bin

     第1階段bootloader:sunxi-spl.bin

     第2階段bootloader:u-boot.bin

     u-boot-spl.bin我沒試過,應該也是第一階段的bootloader



     SD卡準備(我機器上是/dev/sdb),linux下操做:

     前面1M給bootloader使用(爲何?要仔細查查資料,目前我還不明白,望高人指點),先清零:

     dd   if=/dev/zero  of=/dev/sdb   bs=1M   count=1

     後面剩餘的能夠無論,也可分區,具體作法請百度



     將u-boot寫入,只寫入第1階段bootloader,在u-boot目錄操做:

                 dd  if=spl/sunxi-spl.bin  of=/dev/sdb   bs=1024    seek=8

     取下SD卡,插到板子上,上電,minicom有輸出以下:

     

U-Boot SPL 2012.10 (Jan 23 2013 - 21:18:42)                                
DRAM: 1024MB                                                               
SUNXI SD/MMC : 0                                                 

U-Boot SPL 2012.10 (Jan 23 2013 - 21:18:42)

      而後就死掉了,那是由於沒有寫入第2階段,即u-boot.bin。

     將u-boot寫入,寫入第2階段bootloader,在u-boot目錄操做:
                 dd  if=u-boot.bin  of=/dev/sdb   bs=1024    seek=32
     取下SD卡插到板子上,上電,minicom有輸出以下:

U-Boot SPL 2012.10 (Jan 24 2013 - 21:42:50)                                
DRAM: 1024MB                                                               
SUNXI SD/MMC: 0                                                 


U-Boot 2012.10 (Jan 24 2013 - 21:42:50) Allwinner Technology 

CPU:   SUNXI Family
Board: Cubieboard
I2C:   ready
DRAM:  1 GiB
MMC:   SUNXI SD/MMC : 0
*** Warning - bad CRC, using default environment  //沒作參數文件,使用默認參數

In:    serial
Out:   serial
Err:   serial
start main_loop...Hit any key to stop autoboot:  0 
sun4i#

輸入ersion命令:
sun4i#version

U-Boot 2012.10 (Jan 24 2013 - 21:42:50) Allwinner Technology 
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q3-67) 4.4.1
GNU ld (Sourcery G++ Lite 2009q3-67) 2.19.51.20090709
sun4i#


能夠看到我使用的編譯器是4.4.1版本的,低於原來板子自帶u-boot編譯器的版本
至此,U-boot的啓動SD卡基本製做完成linux


原文做者:andygit

原文連接:http://forum.cubietech.com/forum.php?mod=viewthread&tid=110&extra=page%3D2github

相關文章
相關標籤/搜索