Using the devicetree.dts and zynq-7000.dtsi at https://github.com/krtkl/snickerdoodle-linux-prebuilt/tree/master/snickerdoodle/boot_sources, I compiled a device tree with:
dtc -I dts -O dtb -R 8 -o devicetree.dtb devicetree.dts
The skeleton.dtsi that zynq-7000.dtsi includes wasn't in the repo, but I found several references to it that all more or less look like this:
/ {
#address-cells = <1>;
#size-cells = <1>;
chosen { };
aliases { };
memory { device_type = "memory"; reg = <0 0>; };
};
Using these 3 files to compile a DTB, Snickerdoodle won't boot with it. It hangs at the "Starting kernel..." message.
Using the devicetree.dtb from snickerdoodle-linux-prebuilt/snickerdoodle/boot_images works.
Some cursory differences between the DTB I compiled from source and the DTB in snickerdoodle-linux-prebuilt/snickerdoodle/boot_images repo:
1)
The prebuilt devicetree.dtb is 10287 bytes.
My DTB has size 10298 bytes
2)
The prebuilt DTB has bootargs: console=ttyPS0,115200n8 earlyprintk ramdisk_size=0x8F0000
My DTB has bootargs: console=ttyPS0,115200n8 root=/dev/mmcblk0p2 rw rootwait earlyprintk
3)
The prebuilt DTB has a flash@0 section with partitions defined for qspi-fsbl-uboot, qspi-linux, qspi-device-tree, qspi-rootfs, qspi-bootstream
My DTB has no such section/partitions.
4)
My DTB has gpio@41200000 and gpio@41210000 sections (as seen in devicetree.dts).
The prebuilt DTB has no such gpio sections
So it would appear the provided sources are not the ones that generate the provided DTB. Can we get the actual sources?
But regardless of the binary/source discrepancy, can anyone see why the provided DTS/DTSI sources produce a DTB that doesn't work?
Thanks for your help!