2013年7月22日 星期一

【玩轉 Cubieboard】安裝 u-boot 到 SD Card

Standard
當你得到 Cubieboard 後,首先要做的就是學習如何啟動你的作業系統。Cubieboard 可以支援 SD Card 啟動,這通常也是最容易入門的 Embedded System 開機方法。你只要準備一張 Micro SD Card,切割出分割區,然後把 Bootloader 和作業系統放進去即可。

安裝 u-boot

Cubieboard 使用的是 u-boot 做為 bootloader,你必須先下載 Source Code 然後 Compile:
git clone https://github.com/linux-sunxi/u-boot-sunxi.git
make Cubieboard CROSS_COMPILE=arm-linux-gnueabihf-

如果你的系統 toolchain 都已經安裝完成,且都沒有問題,u-boot 會順利編譯通過,然後你會在 u-boot 的目錄裡得到兩個檔案:
  • spl/sunxi-spl.bin
  • u-boot.bin

有了這兩個檔案,安裝 u-boot 就不是什麼問題,只需要使用 dd 指令來把 bootloader 寫入 SD Card:
dd if=spl/sunxi-spl.bin of=/dev/sdb bs=1024 seek=8
dd if=u-boot.bin of=/dev/sdb bs=1024 seek=32

註:/dev/sdb 是 SD Card 的裝置路徑,請依照你系統上的實際狀況,填入正確路徑。


後記

有趣的是,很久沒有玩開發板了,自從兩年多前開始陸續投入各廠商的專案後,所碰到的 ARM Board,清一色都是客製化的產品樣板。而幫大廠商做產品,和自己玩開發板相當不一樣,同樣是驅動程式有問題,要做的是打電話罵人;如果會當機,快打電話罵人;如果缺任何東西,打電話罵人就對了!所以,在客戶的專案中,做最多的總是證明硬體廠商的問題,讓硬體廠商們心甘情願幫你把問題排除。雖然還是要熟悉 Debug 的技巧,但多半不用自己煩惱『該怎麼辦』,只需要下指導棋。因此,自己也慢慢養成很多惰性,除非是真的沒人可以幫你,才肯親自出手跳下去從底層到應用程式,深入修正問題。

但是,玩開發板可不是這麼一回事。有問題?你自己搞定吧。搞不定?問 Google 大神吧。還是不行?慢慢看官方或是社群的 Source Code,全面理解後,再把問題解決吧。玩開發板可以更全面了解開發嵌入式系統過程中的問題,而且問題五花八門,運氣不好,你更會碰到版本大亂鬥,各種系統、程式、驅動程式都有幾十種版本,但只有少數幾種組合會是沒有問題的。光是把自己想要的系統架起來,就必須先費好一番功夫,而這還只是基礎建設而已。速度快一點,幾個小時到一個晚上,慢一點,也要研究個好幾天,或是直接放棄。這還沒談到進一步客製化,從會動的組合中,修改成你要的需求,最後還得開發你想要開發的應用程式。

我想,既然我們要經營這片 Cubieboard,解決這類煩雜的問題,將會是我們的首要目標,讓開發者能更容易在上面開發程式。:-)