This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Unable to start kernel on BBB with AM335x SDK 2.0.

I have 2 boards that I'm working with that use Wilink8. One being a Beaglebone black and the other being a custom board That integrates the two in away that I can use the emmc.

I'm able to get the prebuilt images from the sdk to work. Now I'm trying to get WiLink8 support. I followed the following link:

http://processors.wiki.ti.com/index.php/WL18xx_First_Time_Getting_Started_Guide_%28Beaglebone%29


so that I can get the beaglebone to work. From there I was going to substitute the device tree with a custom one that moves the mmc around so that emmc is available. I've had this working with SDK 7. Now when I try with then new sdk, I get stuck on "Starting kernel...". I'd like to get help on figure out what I have to do.


Also, if it's important, but when running uBoot, I see "Unable to read uEnv.txt" and "Unable to read boot.src"

  • I will forward this to the Linux team.
  • Hi,

    Can you share the modified dts?

    Regarding the message: "Unable to read uEnv.txt" and "Unable to read boot.src" this is normal if you don't have boot.scr or uEnv.txt in the boot directory it. The u-boot will use its default environment defined in am335x_evm.h.

    Also can you share the output of printenv in u-boot?

    Best Regards,
    Yordan
  • Hi,

    I don't have the source for the dts. I just used the dtb that we've had on previous sdk. The beaglebone dtb that you find on the wiki doesn't work for me either. Do I have you use a different configuration? Currently tried the ti evm one.

    The following is the result from printenv

    arch=arm
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    baudrate=115200
    board=am335x
    board_name=A335BNLT
    board_rev=000B
    boot_fdt=try
    bootcmd=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
    bootm_size=0x10000000
    bootpart=0:2
    bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
    console=ttyO0,115200n8
    cpu=armv7
    dfu_alt_info_emmc=rawemmc raw 0 3751936
    dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x400;spl-os-args.raw raw 0x80 0x80;spl-os-image.raw raw 0x900 0x2000;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_ram=kernel ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
    eth1addr=1c:ba:8c:95:88:47
    ethact=cpsw
    ethaddr=1c:ba:8c:95:88:45
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtfile=undefined
    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;
    finduuid=part uuid mmc 0:2 uuid
    importbootenv=echo Importing environment from mmc ...; env import -t -r $loadaddr $filesize
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}
    loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
    loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
    loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
    loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
    mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else 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 ;fi;
    mmcdev=0
    mmcloados=run args_mmc; 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;
    mmcrootfstype=ext4 rootwait
    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; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
    netloadfdt=tftp ${fdtaddr} ${fdtfile}
    netloadimage=tftp ${loadaddr} ${bootfile}
    nfsopts=nolock
    partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
    ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
    ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
    ramdisk_addr_r=0x88080000
    ramroot=/dev/ram0 rw
    ramrootfstype=ext2
    rdaddr=0x88080000
    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_omap
    stdin=serial_omap
    stdout=serial_omap
    usbnet_devaddr=1c:ba:8c:95:88:47
    vendor=ti
    ver=U-Boot 2015.07-00114-gf5078ef-dirty (Oct 23 2015 - 12:09:28 -0500)

    Environment size: 3988/131067 bytes
    U-Boot#
    arch=arm
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    baudrate=115200
    board=am335x
    board_name=A335BNLT
    board_rev=000B
    boot_fdt=try
    bootcmd=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
    bootm_size=0x10000000
    bootpart=0:2
    bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
    console=ttyO0,115200n8
    cpu=armv7
    dfu_alt_info_emmc=rawemmc raw 0 3751936
    dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x400;spl-os-args.raw raw 0x80 0x80;spl-os-image.raw raw 0x900 0x2000;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_ram=kernel ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
    eth1addr=1c:ba:8c:95:88:47
    ethact=cpsw
    ethaddr=1c:ba:8c:95:88:45
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtfile=undefined
    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;
    finduuid=part uuid mmc 0:2 uuid
    importbootenv=echo Importing environment from mmc ...; env import -t -r $loadaddr $filesize
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}
    loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
    loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
    loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
    loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
    mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else 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 ;fi;
    mmcdev=0
    mmcloados=run args_mmc; 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;
    mmcrootfstype=ext4 rootwait
    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; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
    netloadfdt=tftp ${fdtaddr} ${fdtfile}
    netloadimage=tftp ${loadaddr} ${bootfile}
    nfsopts=nolock
    partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
    ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
    ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
    ramdisk_addr_r=0x88080000
    ramroot=/dev/ram0 rw
    ramrootfstype=ext2
    rdaddr=0x88080000
    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_omap
    stdin=serial_omap
    stdout=serial_omap
    usbnet_devaddr=1c:ba:8c:95:88:47
    vendor=ti
    ver=U-Boot 2015.07-00114-gf5078ef-dirty (Oct 23 2015 - 12:09:28 -0500)

    Environment size: 3988/131067 bytes

  • Ronald,

    Since the kernel version changed (3.14 to 4.1) between the two SDKs, you'll have to rebuild the DTS file (if it came with a previous kernel). In fact, you may have to make some changes to the DTS file as well. So, I'm not surprised to hear that the kernel is not starting properly with "bad" dts files (for that kernel).
  • So does that mean the the BBB dtb provided by the wiki for WiLink support is wrong?

  • Unfortunately, the page doesn't provide any specific details. Given that it was last edited in September, and Processor SDK 2.0 came out in this month, I'm guessing that it is provided against the previous SDK and Linux Kernel (3.14). You could try Processor SDK 1.0.0.3 to see if that works better for you. Unfortunately, since you don't have the source for the .dtb (.dts), I don't see any other options until the .dtb is updated to work with Processor SDK 2.0.
  • I can dig up my notes for getting this to work with Beaglebone-White on ProcessorSDK1.03 if that helps. I believe there was a slight modification of the device tree source necessary (BBB and BBW use some common .dtsi files). But I have not tried on SDK2.0 (yet).

    Also I noticed the SDK link here changes dynamically "images"):
    processors.wiki.ti.com/.../WL18xx_First_Time_Getting_Started_Guide_(Beaglebone)

    Since software-dl.ti.com/.../index_FDS.html changes dynamically causing some of the confusion. Pretty sure the original Wiki was written for ProcessorSDK1.03.
  • FYI, I got BBB + WL8 up and running on Processor SDK 2.00 over in this post in the WiLink forum:

    e2e.ti.com/.../1670128

    My patch as well as dtb are included there.
  • Great thanks. I do see my device able to start the kernel, but when I try to use the wifi or bluetooth, it does not find the devices. I built the kernel modules and installed. Is there something I'm failing to do?

  • If you want to do a quick test to see that it's working, try the following:

    ifconfig wlan0 up
    iw wlan0 scan | grep SSID
  • Yup, that's what I tried. At least the first one. I get "ifconfig: SIOCGIFFLAGS: No such device". Perhaps there is a problem with the actual hardware I have. I can try a different device.
  • One other sanity check would be to run "uname -a" from the command line to make sure you're truly using the right kernel. It's hard to hold the button down to boot from SD card with the cape attached, so it's good to double check. You might also look for any SDIO issues by doing "dmesg | grep mmc".
  • Tried that. I'm seeing that there is no such device unfortunately.