We have been upgrading from L4T 32.2 to 32.4.4 by writing images to the APP and kernel-dtb partitions. When upgraded to 32.5.2 from either 32.2 or 32.4.4 the result is the same.
If we only write the APP partition, the device boots up, but the network card is not present. If we then write kernel-dtb with the signed dtb file, the device hangs at boot. Everything works fine when the board is flashed.
If we leave the old L4T (32.2 or 34.4.4) on the APP partition but load the new dtb, the device boots.
And just in case you don’t know the cause of that post.
If you see any dmesg say “eqos 2490000.ether_qos: invalid settings : rx-frames must be enabled along with use_riwt in DT”, it means your dtb and your kernel are not compatible. From the beginning, dtb is designed for kernel to read. Thus, if kernel changes, then dtb needs to change too. These two + kernel modules are a set.
As for your issue that “cannot boot”, it is something else and need log to check.
32.2to32.5.2_APPandDTB.txt (39.8 KB)
Here is the log after upgrading both APP and kernel-dtb. In this case we are getting these errors and a watchdog triggered tracedump: [ 3.141431] CPU3: SError detected, daif=1c0, spsr=0x400000c5, mpidr=80000101, esr=bf40c000 [ 3.141439] CPU5: SError detected, daif=1c0, spsr=0x400000c5, mpidr=80000103, esr=bf40c000 [ 3.141443] CPU0: SError detected, daif=1c0, spsr=0x400000c5, mpidr=80000100, esr=bf40c000 [ 3.141454] CPU4: SError detected, daif=1c0, spsr=0x80000045, mpidr=80000102, esr=bf40c000
A full flash works fine. And just to make sure, I have written the signed DTB to kernel-dtb after flashing and the device boots up and functions. This problem only occurs when updating the APP and dtb to L4T 32.5.2 on a board that was originally flashed with an older version of L4T.
I would like to know if its possible to get around this problem without needing to do a full flash. Also, any help in understanding the mechanism behind this failure would be greatly appreciated.