一、準備工作
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#