Jump to content

Recommended Posts

Posted

I am coming from a yocto build for a dev board. I had to make u-boot patches, kernel config changes, and custom DTS tree.


I'm trying to adapt this to Armbian, one step at a time. I started with building am image for sk-am62b.conf.   I did not expect u-boot to boot from correctly.
I was glad to see console messages, but expectedly, u-boot didn't continue.

I made a new board config for this, duplicating sk-am62b.conf, but changing a critical line I made to get this to work previously.
 

TIBOOT3_FILE="tiboot3-am62x-gp-evm.bin"

 

Now, the boot process gets through u-boot and loads the Linux kernel.
However, the kernel halts because it cannot find the root file system.

Waiting for root device PARTUUID=26aa2b10-02...

 

I confirmed the device in u-boot, and it seems to agree.

Environment size: 5112/126972 bytes
=> echo load mmc ${bootpart} ${fdtaddr} ${bootdir}/dtb/${fdtfile}
load mmc 1:2 0x88000000 /boot/dtb/ti/k3-am625-sk.dtb
=> run finduuid
=> echo part uuid ${boot} ${bootpart} uuid
part uuid mmc 1:2 uuid
=> part uuid mmc 1:2
26aa2b10-02

 

I then modified my board config:
 

BOOT_FDT_FILE="myir-6254-am62x/myir-6254-am62x.dts"

 

But after booting, u-boot didn't acknowledge this:
(From the u-boot environment)
 

fdtfile=ti/k3-am625-sk.dtb

 

So, I finished applying my u-boot patches that I made under the Yocto build.
Some of these changes may be redundant:

edited: am62x_evm_a53_defconfig
+

CONFIG_DEFAULT_FDT_FILE="myir-6254-am62x.dts"
+CONFIG_TI_FDT_FOLDER_PATH="myir-6254-am62x"

After booting into u-boot, now I see the change made:
 

fdtfile=myir-6254-am62x.dts

Then I see this:
 

Running uenvcmd ...
14857759 bytes read in 983 ms (14.4 MiB/s)
36805120 bytes read in 1549 ms (22.7 MiB/s)
Failed to load '/dtb/myir-6254-am62x.dts'
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
No FDT memory address configured. Please configure
the FDT address via "fdt addr <address>" command.
Aborting!
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
Scanning for bootflows in all bootdevs


This is not unexpected either - since the files are not the image yet. When u-boot can't find the device tree, it loads a grub interface.
And when I 'e'dit that I see the line

linux /Image root=PARTUUID=076c4a2a-02 rootwait rootfstype=ext4


and change it to:
 

linux /Image root=/dev/mmcblk1p2 rootwait rootfstype=ext4

The kernel sees the rootfs, and proceeds to boot.

If I change it to using the PARTUUID, as above, it also boots.

 

If I manually place the DTB file where u-boot reported it is is looking (copied from my running yocto system) (in /dtb/)
The kernel boots, without the grub interface.
However,  the same situation occurs, where it is waiting for the root device.

Waiting for root device PARTUUID=26aa2b10-02...

 

I have a few things going on here.

 

I think in order to boot to an OS I need:
1) Solve why the kernel does not see the root partition when booting from u-boot (but does when I can get into the grub interface)
2) How to properly implement a custom device tree structure.   I know there are overlays, but I'd prefer to just drop in my whole custom tree.

 

Once I get there, I can proceed to implement some of the kernel modification I did within the yocto build environment, but this first.

 

Thanks for the assistance.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines