U-Boot support for Dragonboard410c?

How do you “disable key press check” ?

@qwertry
See my branch https://github.com/rickyzhang82/u-boot4dragon/commits/dragonboard-dev-usb-boot

There should be commits for that. I have to say it is a dirty fix. Because from time to time my RX pin in dragonboard always has signal to stop uboot keep moving.

The branch dragonboard-dev-usb-boot can boot from external USB hard drive assuming rootfs in /dev/sda1 and your kernel image and device tree binary stored in /boot. No initial ramfile system is required.

Thank you Ricky,
That worked!

Booting u-boot from an sdcard

Hi

Apologies if this has already been answered. I’ve been struggling to boot my u-boot from an sdcard so wanted to ask the forum for any pointers?

What I’ve done so far:

  1. flipped the dip switch and booted the debian image from the sdcard
  2. Used buildroot to build my uboot and kernel/OS
  3. Tried dd’ing my u-boot image into the first sectors of the sd card
  4. Tried running “mkbootimg” in my u-boot binary to convert it to a bootable image using the following:
    /opt/skales/mkbootimg --kernel=u-boot.bin --output=./u-boot.img --dt=./apq8016-sbc.dtb --pagesize 2048 --base 0x80000000 --ramdisk=“disk” --cmdline=""

I think my confusion stems from a lack of knowledge about Fastboot. Does Fastboot read the boot sectors of the sdcard …or does it look for a partition which contains a kernel image?

Any advice would be much appreciated.

Thanks
Bruce

Hi,

As far as I remember (I haven’t wiped my board for some time now) - to boot for both NAND an SD you’re supposed to have GPT partition table with plenty of partitions. Most of them are required because of Qualcomm firmware.

U-Boot resides on partition that is used for kernel (for latest debian sd image that would be “boot”).

You can either burn u-boot yourself or should be able to use USB and fastboot (“fastboot flash boot uboot.img”) - as long as fastboot will use SD not mmc it should be good enough.

As for build instructions

  1. You may want to use mainline u-boot
  2. you have to build it and then make u-boot.img (like you did in #4)

Hope that helps

@ndec, thanks a lot for the information you provided, that’s very helpful indeed. I was looking for exactly that in some sort of document provided by Qualcomm, but couldn’t find any. May I ask where you got these details from, can you point me to some sort of documentation?

@Daniel, it is in a QC document, and its reference is 80-NL239-1.

This uboot version support SPI/I2C peripherals? If not any link helps adding the support to the UBoot?

I would like to start using U-Boot since LK lacks flexibility
Right now I am working from the EMMC

flashing LK: sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn
preparing kernel for flash:
mkbootimg --kernel …/KERNEL_OBJ/arch/arm64/boot/Image
–ramdisk initrd.img-4.4.9-linaro-lt-qcom
–output boot-410c.img
–dt dt.img
–pagesize 2048
–base 0x80000000
–cmdline “root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8”
flashing kernel: sudo fastboot flash boot boot-410c.img

if I will flash Uboot at boot section, how can I make Uboot call kernel?

thank you

furthermore, in the u-boot instructions:

run img.sh to wrap u-boot into fastboot compatible img

where do I get img.sh from ?

Hi @deadpoolcode

img.sh is a script at the root of the hallor git repository (here: https://github.com/hallor/u-boot/tree/dragonboard)

it just calls mkbootimg with the appropriate command line options to get uBoot running:

#!/bin/sh
mkbootimg --kernel=u-boot.bin --output=u-boot.img --dt=fake_dt  --pagesize 2048 --base 0x80000000 --ramdisk=fake_ramdisk --cmdline=""

Full Disclosure: I am an employee of Qualcomm Canada, any opinions I may have expressed in this or any other post may not reflect the opinions of my employer.

Hi have you being able to call the kernel from the Uboot ?. I flashed the roots via fastboot but the u-boot is not jumping to kernel int the internal eMMC and from SD card as well ?

Are you using ext4load for kernel loading ?
Maybe something like this:
$ ext4load mmc 1:9 0x90000000 /boot/uImage
$ ext4load mmc 1:9 0x89000000 /boot/apq8016-sbc.dtb
$ setenv bootargs root=/dev/mmcblk1p9 rw rootwait console=tty0 console=ttyMSM0,115200n8 rootfs=ext4 noinitrd selinux=0
$ bootm 0x90000000 - 0x89000000

note that your config (mmc id/parts) can be different.

Hello,

Please take a look at the below guide, it has instructions for booting Linux from SD card using Uboot.
https://github.com/96boards/documentation/blob/master/ConsumerEdition/DragonBoard-410c/Guides/uboot-linux-sd.md

Hope this helps!

Thanks,
Mani

1 Like

Hi , thanks for the instruction . Actually I tried to do two things :
1.Build rootfs using yocto (rpb)
2.Place it the internal eMMC using fastboot(fastboot flash roots…) and place u-boot in the boot partition.
So this works for me but u-boot cannot read the mmc 0 (mmc_init: -70, time 10623
** Bad device mmc 0 ** ) . Anyway the procedure which you have described for the sd would also apply for starting the kernel from eMMC 0 ?

1 Like

Yes, the same procedure should work for booting from eMMC also. But you need to change the uEnv.txt file as below:

bootargs=root=/dev/mmcblk0p9 rw rootwait console=tty0 console=ttyMSM0,115200n8 rootfs=ext4 noinitrd 
selinux=0 bootcmd=ext4load mmc 0:7 ${kernel_addr_r} uImage; ext4load mmc 0:7 ${fdt_addr_r} 
apq8016-sbc.dtb; bootm ${kernel_addr_r} - ${fdt_addr_r} uenvcmd=run bootcmd

Note: I haven’t tested the above env variables/booting from eMMC. But if you find any issues, then it should be with the partition or the file names. The above variables assumes, that your uImage and apq8016-sbc.dtb are in partition 7 and rootfs is in partition 9 of eMMC.

1 Like

Hi , actually the problem which I have is that the uboot is not able to run eMMC0 ( internal eMMC ) . I tried to run gpt verify mmc 0 $partitions and for that I got : mmc_init: -70, time 10623
do_gpt: mmc dev 0 NOT available any ideas ??

I will be looking into this problem next week once I have recent hardware. What revision of the board are you running?

Hi so I actually work on the dart410c which i binary compatible with the dragonboard410c. I was able to run the uImage so the kernel is loaded ( also for the yocto build there is no problem with internal eMMC ) , so it looks that only the u-boot has problem with it . Next think is does the u-boot can load the Image or only the uImage ?

You should be able to boot generic Linux Image with booti instead of bootm (uImage).