2015年5月11日 星期一

[Linux] 編譯Openwrt for Beaglebone Black Rev B.

首先,我們先查詢openwrt的wiki發現下圖:
可以發現我們要選用Trunk版本的Openwrt而不是barrier breaker版本。
接下來編譯好menuconfig且make之後,將產生的rootfs丟進SD卡裡面,並插入Beaglebone上並開機。
透過COM port可以發現下圖情況:


原來是U-boot找不到uEnv.txt所以使用預設的環境變數,而且產生了Invalid partition錯誤!
接下來輸入下列指令看看預設的環境是什麼:
U-Boot# pr
輸入後會跳出下列資訊:
我們從結果看到:
(1) bootfile預設是uImage,而openwrt產生的Img檔名叫做openwrt-omap-zImage-initramfs
(2) fdtfile = am335x-boneblack.dtb,從這行發現需要am335x-boneblack.dtb這個檔案
要解決的方法就是修改預設的環境變數,所以我們要先建立一個uEnv.txt的檔案,讓U-boot修改環境變數。
uEnv.txt內容如下:
bootdir= bootfile=openwrt-omap-zImage-initramfs fdtfile=am335x-boneblack.dtb loadaddr=0x80007fc0 fdtaddr=0x80F80000 loadfdt=fatload mmc 0:1 ${fdtaddr} ${fdtfile} loaduimage=fatload mmc 0:1 ${loadaddr} ${bootfile} uenvcmd=mmc rescan; run loaduimage; run loadfdt; run fdtboot fdtboot=run mmc_args; run mmcargs; bootz ${loadaddr} - ${fdtaddr} mmc_args=setenv bootargs console=${console} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype}
※註:要把開機檔案歸類的話可以放在自定義的資料夾裡面,並修改bootdir的value。
目前SD卡裡面就有三個檔案:
(1) openwrt-omap-zImage-initramfs
(2) am335x-boneblack.dtb
(3) uEnv.txt
接著將SD卡插入Beaglebone,並插入電源後可以看到u-boot成功出現下圖訊息:
kernel成功啟動啦!按個enter就可以開啟console囉!
※註:如果把SD卡拔掉,會使用預設的kernel,username:root ; password:(blank),看到banner是Angstrom就是了。

沒有留言:

張貼留言