BBB won't boot with custom Yocto (Poky) Build

Step 1.) I followed this post to build Poky for the BBB:
https://gist.github.com/errordeveloper/4056193

Step 2.) I followed this to setup the SD card:
https://pixhawk.ethz.ch/tutorials/omap/boot_from_sd_sdhc

Step 3.) I followed this for deploying my artifacts (MLO, u-boot, uImage & file system)
https://pixhawk.ethz.ch/tutorials/omap/copy_sd_card

I have also tried to swap out Step 2 above for the mkcard.txt script found here:
http://downloads.angstrom-distribution.org/demo/beaglebone/

In all cases, I attempt to boot the BBB and I do not get anything over the HDMI display and nothing hits my routers DHCP server to receive an IP address.

I do not have an FTDI Cable but can buy one if that is the logical next step in debugging.

Any advice? Without an FTDI Cable, is there anyway to watch the boot process?

Is the new Boot partition necessary (uImage, u-boot, MLO) or can I simply deploy the file system to the SD card?

Sorry for the Newbie question!

~ Sayguh

Get a Cable..

Regards,

Update:

Got the cable and booted. Here’s how things progressed from there:

1.) MLO was loading correctly, so was u-boot but the first issue was it wasn’t finding the uImage. It was looking in /boot of the ext3 partition rather than next to the MLO & u-boot file in the Fat32 partition. I copied my uImage into /boot and continued

The u-boot output is below but as I understand it, the current issue is that it cannot find the cmdline flattened device tree dtb file. One is not generated by my Poky build.

Hit any key to stop autoboot: 0
gpio: pin 53 (gpio 53) value is 1
mmc0 is current device
micro SD card found
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 0
reading uEnv.txt
** Unable to read file uEnv.txt **
gpio: pin 55 (gpio 55) value is 1
4382696 bytes read in 742 ms (5.6 MiB/s)
gpio: pin 56 (gpio 56) value is 1
** File not found /boot/am335x-boneblack.dtb **
Booting from mmc …

Booting kernel from Legacy Image at 80007fc0 …

Image Name: Linux-3.12.0-rc3
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4382632 Bytes = 4.2 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum … OK
ERROR: Did not find a cmdline Flattened Device Tree

After this, I searched around and found an am335x-boneblack.dtb file in the Angstrom build output and copied that into my SD Card (felt wrong doing it as it wasn’t an output of my specific Poky build process). This allowed the kernel to boot however it hung during the boot process as shown below:

Hit any key to stop autoboot: 0
gpio: pin 53 (gpio 53) value is 1
mmc0 is current device
micro SD card found
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 0
reading uEnv.txt
** Unable to read file uEnv.txt **
gpio: pin 55 (gpio 55) value is 1
4382696 bytes read in 742 ms (5.6 MiB/s)
gpio: pin 56 (gpio 56) value is 1
24884 bytes read in 28 ms (867.2 KiB/s)
Booting from mmc …

Booting kernel from Legacy Image at 80007fc0 …

Image Name: Linux-3.12.0-rc3
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4382632 Bytes = 4.2 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum … OK

Flattened Device Tree blob at 80f80000

Booting using the fdt blob at 0x80f80000
XIP Kernel Image … OK
OK
Using Device Tree in place at 80f80000, end 80f89133

Starting kernel …

Anyone have any advice on how to get it to boot up correctly?

~ Sayguh

Got it working however it’s not exactly clear to me why it wasn’t working prior and I’m unsure if I’ll have issues in the future. Any advice would be appreciated.

I replaced the /boot/uImage with the /boot/uImage from the standard Angstrom image and used the dtb file from there as well. The kernel version that I had built from source that was failing to load was 3.12.0-rc3 and the kernel that loads and runs with the dtb file is 3.8.13. So I feel like it’s one of these options:

1.) The kernel I built was bad and won’t work with anything
2.) The kernel I built is not compatible with BBB for whatever reason
3.) The kernel I built is not compatible with the version of the dtb binary file I used and I need to find an updated dtb file or build one from a dts file.

I’ll begin testing my application on the board at this point but I’d feel more comfortable if I could get a better understanding of the build process and why I have to borrow portions (kernel & dtb) from Angstrom builds to get it to boot.

Thanks!

~ Sayguh

This is interesting as I also built from Yocto and didn’t managed to make the BBB starting.

I’ll change the Yocto uImage to the Angstrom one + .dtb and tell if you tell which version you get them from

i'd like an OE/yocto recipe that builds working BBB parts right out
of the box. nothing fancy, a booting core-image-minimal would be just
ducky.

  anyone have something like that?

rday

@rday, that’s what I was attempting to do as well. I was able to via the method I mentioned above. Yocto File system but an Angstrom built kernel + dtb file. I don’t like it, and I’m sure there are problems so if others don’t know of a good way you or I might try to poke around in the Angstrom build and see exactly what is different about their kernel build process vs Yocto’s.

Angstrom uses Yocto I believe, and the Dylan version as opposed to Poky so there should be some similarity in recipe files. I’ll give it a look later this month.

~ Sayguh

It’s pretty simple. You do something along the lines of:

BBLAYERS ?= "
${TOPDIR}/…/meta
${TOPDIR}/…/meta-yocto
${TOPDIR}/…/meta-beagleboard/common-bsp
"

in your bblayers.conf and it will build BeagleBone image sets. Of course, I’ve also added some meta-openembedded stuff in, but past that it should be peachy for you.

You can’t just build from Yocto. Angstrom kind of wires in some of the stuff in meta-beagleboard, but you need it in there as well to make it build right with Yocto/Poky.

Don’t use the meta-ti layer. It’s got…issues… It sort-of works with BeagleBone- but the meta-beaglebone one is the one they’re using to make the official images with from my current understanding. Works correctly with Poky or Angstrom.

Just got back to this.

Frank! That did it! Using the meta-beaglebone repository instead of the meta-ti repo fixed my issues. I still had to copy the device tree over but that’s understandable.

Thanks for all the help!

Hi!

Can you post what versions of each layer you used? I’m trying to get the process going as well. Thanks!

./m

Everything I’m using is the dylan checkout. I have poky checked out:

git clone git://git.yoctoproject.org/poky.git -b dylan

And with in there I have:

The meta-beaglebone:
git clone https://github.com/beagleboard/meta-beagleboard.git -b dylan

& The meta-oe:
git clone https://github.com/openembedded/meta-oe -b dylan

I believe that’s all I have. Let me know if you have any other issues.

~ Sayguh