Tool/software: Linux
Hello, I've been working on booting Linux on our custom board, and I have a couple questions regarding device trees for the Linux kernel. For reference, I am using PSDK 4 and the 4.9.28 kernel included with it. I have been modifying the existing dts files for our firmware rather than making my own at present.
In the Linux Kernel Users Guide in the PSDK wiki: it states that the device tree to compile would be the am57xx-evm-reva3.dts file for the AM572x EVM. That makes sense, and decompiling the dtb that is produced by that process yields a full device tree for the EVM. But when I copy just the am57xx-evm-reva3.dtb file over to /boot on the device memory card, my device hangs at:
Updating property '/ocp/ethernet@48484000/slave@48480300/mac-address' = d4 36 39 fc 4b 3f Updating property '/ocp/ethernet@48484000/slave@48480300/local-mac-address' = d4 36 39 fc 4b 3f ## Transferring control to Linux (at address 82000000)... Starting kernel ...
After searching E2E, I believe it's simply a device tree misconfiguration.
With that in mind I made my edits and placed my own version of the device tree in the /boot directory, as the only .dtb file in the directory, along with the zImage. When I tried booting, I was greeted by this:
iterate >zImage< ** File not found /boot/am57xx-beagle-x15.dtb ** Command failed, result=1 Command failed, result=1
This brings up a question that I have thus far been unable to answer: if the compiled device tree blob am57xx-evm-reva3.dtb contains a full device tree for the device, then why does the zImage request other dtb's?
Secondly, what do those other device trees on disk do? Are they simply fragments for peripherals such as the LCD screen and the various compatible cameras for the EVM?
Thirdly, does this mean that the device tree compilation process in the wiki is incorrect for not stating that multiple device tree blobs must be created?
Full boot logs are attached.g3_linux1.logg3_linux_only_one_dtb.log
EDIT: I've found that the only device tree binary required by zImage appears to be the am57xx-beagle-x15.dtb file. If only that one is included in /boot, U-Boot will move to Starting Kernel... However it still hangs.
EDIT Sept 19 2017: After ensuring that the U-Boot and Linux UART configurations for the custom board are identical, minus the u-boot specific u-boot,dm-pre-reloc tag, which does nothing in Linux (not that it matters, as it is not present in the EVM's device tree configuration). As well, the EVM and custom board UART configurations are identical. The circuit for UART3 on the custom board is the same as the one for the EVM, and the .config file is also the same.
What else could be causing this kernel hang??? According to all of the sources I have found, the cause for not receiving any messages after 'Starting Kernel' is due to a misconfigured UART line, but to the best of my knowledge, it is identical.