歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

pcDuino的U-Boot移植與分析

一、准備工作
 
1.獲取支持pcDuino的u-boot源碼 https://github.com/linux-sunxi/u-boot-sunxi
 
在XP下直接點ZIP即可開始下載
 
2.獲取交叉編譯鏈http://code.google.com/p/smp-on-qemu/downloads/list
 

選擇arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2並下載
 
3.開發環境
 
我全程是在Ubuntu 10.04.4系統下完成的。ubuntu安裝過程參考其它文檔。首先將上面下載的源碼、交叉編譯鏈拷到Ubuntu下。安裝交叉編譯鏈arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2直接解壓即可。接著配置環境變量
 
sudo gedit  /etc/environment
 
修改PATH,在最後再加“:/.../arm-2009q3/bin”,其中“...”是上面arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2解壓的路徑。
 
4.硬件連接
 
把pcDuino的J5 RX、TX、GND接到你的串口轉USB上即可。
 
二、u-boot移植
 
1.分析配置過程
 
上面下載的u-boot-sunxi支持多種單板,解壓按照其說明配置。經過試驗發現單板cubieboard與pcDuino接近,移植在cubieboard基礎上進行。
 
根據其配置過程make cubieboard CROSS_COMPILE=arm-none-linux-gnueabi- ,查找grep "cubieboard" * -nR
 

找到頂層目錄的boards.cfg,接著發現頂層目錄的Makefile 719:$(obj).boards.depend: boards.cfg.
 
vim boards.cfg
 # Target            ARCH        CPU        Board name          Vendor      SoC        Options
 290:cubieboard      arm        armv7      cubieboard          allwinner      sunxi      sun4i:SPL
 

2.仿照cubieboard,建立pcDuino單板
 
cd board/allwinner/
 
cp cubieboard pcDuino -rf
 
cd ../..
 
vim boards.cfg
 
在291行增加如下:
 
291:pcDuino      arm        armv7      pcDuino          allwinner      sunxi      sun4i:SPL
 

3.配置、編譯
 
make pcDuino CROSS_COMPILE=arm-none-linux-gnueabi-
 
編譯順利結束的話,會生成第一階段/spl/sunxi-spl.bin 、第二階段 /u-boot.bin
 
4燒寫、測試
 
上述生成的第一階段/spl/sunxi-spl.bin 、第二階段 /u-boot.bin,是支持sd卡啟動的,准備tf卡讀卡器,連接到PC,下面是燒寫命令
 
ls /dev/sdb  //發現剛插入的sd卡設備,我的是sdb
 
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1
 
cd spl/
 
sudo dd if=sunxi-spl.bin of=/dev/sdb bs=1024 seek=8
 
cd ..
 
sudo dd if=u-boot.bin of=/dev/sdb bs=1024 seek=32
 
取下tf卡,插到pcDuino的tf卡槽,pcDuino默認是從sd卡啟動的,上電串口輸出如下:
 
U-Boot SPL 2012.10 (Apr 11 2013 - 21:22:30)
 DRAM: 1024MB
 SUNXI SD/MMC: 0
 

U-Boot 2012.10 (Apr 11 2013 - 21:22:30) 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
 Hit any key to stop autoboot:  0
 sun4i#

Copyright © Linux教程網 All Rights Reserved