2015-06-16 116 views
1

我試圖將openwrt移植到BBB。正如標題所示,我無法在BeagleBone Black上啓動openwrt。 如果有人試圖在BeagleBone Black(BBB)上做某些事情,則必須知道其閃存或SD卡中有兩個分區。 第一個分區是FAT32作爲引導分區,第二個分區是Ext4作爲Linux根文件系統。無法啓動openwrt爲beagle骨黑色(BB-黑色)

當我使用Angstrom的原始文件和BIN作爲BBB時,我可以啓動系統。 我的工作是關係到http://wiki.openwrt.org/toh/beaglebone/black#installation

我已經做了很多的實驗:

  1. 使用槽和其他文件,根文件系統等上的OpenWrt的snapshot全部更換爲原來的文件。當我打開BBB電源時,我看不到來自UART的任何日誌。我認爲快照上的文件MLO錯誤

  2. 我只修改了uEvn.txt。我可以看到如下所示的日誌。

    GPIO:銷53(GPIO 53)值是1個
    MMC0是當前設備
    微型SD卡發現
    MMC0是當前設備
    GPIO:銷54(GPIO 54)值是1
    SD/MMC上設備0
    讀取uEnv.txt
    438字節發現在3毫秒(142.6 KIB /秒)
    從uEnv.txt
    加載環境從MMC導入環境讀...
    運行uenvcmd ...
    閱讀的zImage
    2051400字節在238毫秒(8.2 MIB /秒)
    讀讀書am335x-boneblack.dtb
    **無法讀取文件am335x-boneblack.dtb **
    ERROR :沒有找到一個CMDLINE平板設備樹
    找不到有效的設備樹
    GPIO:引腳55(GPIO 55)值是1
    **找不到文件的/ boot/**的uImage

  3. 我只將快照中的zImage替換爲我的flas H。 從UART的日誌顯示,開機流程停在

    啓動內核...,如下圖所示

日誌。

U-Boot SPL 2014.01-rc1-00172-ge7e17b0 (Dec 12 2013 - 15:20:09) 
reading args 
spl: error reading image args, err - -1 
reading u-boot.img 
reading u-boot.img 


U-Boot 2014.01-rc1-00172-ge7e17b0 (Dec 12 2013 - 15:20:09) 

I2C: ready 
DRAM: 512 MiB 
WARNING: Caches not enabled 
NAND: 0 MiB 
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 
*** Warning - readenv() failed, using default environment 

Net: <ethaddr> not set. Validating first E-fuse MAC 
cpsw, usb_ether 
Hit any key to stop autoboot: 0 
mmc0 is current device 
SD/MMC found on device 0 
reading uEnv.txt 
494 bytes read in 5 ms (95.7 KiB/s) 
Loaded environment from uEnv.txt 
Importing environment from mmc ... 
Running uenvcmd ... 
reading zImage 
2187584 bytes read in 214 ms (9.7 MiB/s) 
reading am335x-boneblack.dtb 
25172 bytes read in 11 ms (2.2 MiB/s) 
Kernel image @ 0x80200000 [ 0x000000 - 0x216140 ] 

Starting kernel ... 

對於這一步,我發現snapshot上的文件可能不適合BBB。 然後,我爲BBB編譯我自己的openwrt版本。並替換zImage。啓動內核時問題仍然存在。

那麼有沒有人有將openwrt移植到BBB的經驗? 你能告訴我我應該怎麼做移植。還是我做錯了什麼?

如果有人爲BBB編譯了自己的openwrt版本,可否請將您的配置文件分享給我?

非常感謝。

後我uEvn.txtx第一:

cat /mnt/p1/uEnv.txt 
kernel_file=zImage 
fdtfile=am335x-boneblack.dtb 

loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${kernel_file} 
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${fdtfile} 

console=ttyO0,115200n8 
mmcroot=/dev/mmcblk0p2 ro 
mmcrootfstype=ext4 rootwait 

mmcargs=setenv bootargs console=${console} root=${mmcroot} rootfstype=${mmcrootfstype} ${optargs} 

uenvcmd=run loadzimage; run loadfdt; run mmcargs; bootz ${loadaddr} - ${fdtaddr} 

optargs="debug init=/etc/preinit" 

從printenv OUTPUT:

arch=arm 
baudrate=115200 
board=am335x 
board_name=A335BNLT 
board_rev=00A5 
boot_fdt=try 
bootcmd=i2c mw 0x24 1 0x3e; run findfdt; run mmcboot;setenv mmcdev 1; setenv bootpart 1:2; run mmcboot;run nandboot; 
bootcount=1 
bootdelay=1 
bootdir=/boot 
bootenv=uEnv.txt 
bootfile=zImage 
bootpart=0:2 
console=ttyO0,115200n8 
cpu=armv7 
dfu_alt_info_emmc=rawemmc mmc 0 3751936 
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw mmc 100 100;u-boot.img.raw mmc 300 400;spl-os-args.raw mmc 80 80;spl-os-image.raw mmc 900 2000;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1 
dfu_alt_info_nand=SPL part 0 1;SPL.backup1 part 0 2;SPL.backup2 part 0 3;SPL.backup3 part 0 4;u-boot part 0 5;u-boot-spl-os part 0 6;kernel part 0 8;rootfs part 0 9 
dfu_alt_info_ram=kernel ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000 
ethact=cpsw 
ethaddr=7c:66:9d:53:6f:07 
fdt_high=0xffffffff 
fdtaddr=0x80F80000 
fdtfile=am335x-boneblack.dtb 
filesize=1f8 
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; fi; if test $board_name = A335BNLT; then setenv fdtfile am335x-boneblack.dtb; fi; if test $board_name = A33515BB; then setenv fdtfile am335x-evm.dtb; fi; if test $board_name = A335X_SK; then setenv fdtfile am335x-evmsk.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi; 
importbootenv=echo Importing environment from mmc ...; env import -t $loadaddr $filesize 
kernel_file=zImage 
loadaddr=0x80200000 
loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv} 
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${fdtfile} 
loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile} 
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz 
loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${kernel_file} 
mmcargs=setenv bootargs console=${console} root=${mmcroot} 
mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;if run loadimage; then run mmcloados;fi;fi; 
mmcdev=0 
mmcloados=run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi; 
mmcroot=/dev/mmcblk0p2 ro 
mmcrootfstype=ext4 rootwait 
mtdids=nand0=omap2-nand.0 
mtdparts=mtdparts=omap2-nand.0:128k(SPL),128k(SPL.backup1),128k(SPL.backup2),128k(SPL.backup3),1792k(u-boot),128k(u-boot-spl-os),128k(u-boot-env),5m(kernel),-(rootfs) 
nandargs=setenv bootargs console=${console} ${optargs} root=${nandroot} rootfstype=${nandrootfstype} 
nandboot=echo Booting from nand ...; run nandargs; nand read ${fdtaddr} u-boot-spl-os; nand read ${loadaddr} kernel; bootz ${loadaddr} - ${fdtaddr} 
nandroot=ubi0:rootfs rw ubi.mtd=7,2048 
nandrootfstype=ubifs rootwait=1 
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp 
netboot=echo Booting from network ...; setenv autoload no; dhcp; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} ${fdtfile}; run netargs; bootz ${loadaddr} - ${fdtaddr} 
nfsopts=nolock 
optargs="debug init=/etc/preinit" 
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype} 
ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr} 
ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr},64M 
ramrootfstype=ext2 
rdaddr=0x81000000 
rootfstype=${mmcrootfstype} ${optargs} 
rootpath=/export/rootfs 
soc=am33xx 
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype} 
spiboot=echo Booting from spi ...; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr} 
spibusno=0 
spiimgsize=0x362000 
spiroot=/dev/mtdblock4 rw 
spirootfstype=jffs2 
spisrcaddr=0xe0000 
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off 
stderr=serial 
stdin=serial 
stdout=serial 
uenvcmd=printenv; run loadzimage; run loadfdt; run mmcargs; bootz ${loadaddr} - 
usbnet_devaddr=7c:66:9d:53:6f:07 
vendor=ti 
ver=U-Boot 2014.01-rc1-00172-ge7e17b0 (Dec 12 2013 - 15:20:09) 

Environment size: 4451/131068 bytes 
+0

請將U-Boot'printenv'命令(根據日誌應該是默認環境)以及SDcard上的文件** uEnv.txt **文件的內容輸出。 – sawdust

+0

@sawdust,謝謝你的建議。 – sunnyleevip

+0

環境變量不會在U-Boot端指出任何明顯的負載問題。下一步通常是啓用'earlyprintk';例如看到這篇文章.http://stackoverflow.com/questions/30488942/how-to-boot-linux-kernel-from-u-boot但是你的情況似乎很複雜,因爲你不確定你是否有適當的內核圖像爲您的硬件。另一個複雜的問題是,一些zImage文件是爲了不輸出*「Uncompressing Linux ... done」*消息來幫助跟蹤進度並指出內核是否真的開始執行。 – sawdust

回答

0

你的輸出清楚地表明,UBOOT無法讀取設備樹二進制(am335x-boneblack.dtb) 。確保你的FAT分區的根目錄中也有該文件。在構建OpenWRT之後,可以在構建輸出中找到它:openwrt/bin/omap/dtbs。