
On 2019-09-21 8:29 a.m., Matwey V. Kornilov wrote:
Could you try to load dtb (and check that dtb is valid) into the other memory location?
Same result: With the U-Boot TPL this fails (the FDT header is corrupt); with the Rockchip TPL this works fine. See below.
I notice though it always seems to be only that one single bit (bit 7 of the first 32-bit word loaded) that differs between the two runs. Everything else in memory looks fine. And with the U-Boot TPL in use I can manually set a new value for that word, and it seems to stick:
=> md ${kernel_addr_r} 2 02080000: edfe0d50 09d10000 P....... => fdt addr ${kernel_addr_r} libfdt fdt_check_header(): FDT_ERR_BADMAGIC => nm ${kernel_addr_r} 02080000: edfe0d50 ? edfe0dd0 02080000: edfe0dd0 ? q => md ${kernel_addr_r} 2 02080000: edfe0dd0 09d10000 ........ => fdt addr ${kernel_addr_r} =>
I wonder if this is a clue as to what's going on.
----------
U-Boot TPL:
Hit any key to stop autoboot: 0 => print kernel_addr_r kernel_addr_r=0x02080000 => md ${kernel_addr_r} 20 02080000: adaaaa8a ea22286a baa0aeae aa7aa1aa ....j(".......z. 02080010: a8b200ab abaa000a a8a2aa08 aa88aaea ................ 02080020: e92a00a3 2aacf8aa eaaaa8fa aaaaab88 ..*....*........ 02080030: aaa8a0aa 2aa8888a 22a5e2ba 8aea4a3c .......*..."<J.. 02080040: 23b188aa a28a884a 82aaaaaa 8eee8cae ...#J........... 02080050: 92aaaa4a aaa4feaa ea8a2eae eaa38b8a J............... 02080060: aee4b2a8 aaacaaba aaea8ab8 2aee982a ............*..* 02080070: aaa0aaac aaeeab9a aeae84c8 ac2e8aaa ................ => load mmc 1 ${kernel_addr_r} /dtb/rockchip/rk3328-rock64.dtb 53513 bytes read in 10 ms (5.1 MiB/s) => md ${kernel_addr_r} 20 02080000: edfe0d50 09d10000 38000000 70ba0000 P..........8...p 02080010: 28000000 11000000 10000000 00000000 ...(............ 02080020: 99120000 38ba0000 00000000 00000000 .......8........ 02080030: 00000000 00000000 01000000 00000000 ................ 02080040: 03000000 1e000000 00000000 656e6970 ............pine 02080050: 722c3436 366b636f 6f720034 68636b63 64,rock64.rockch 02080060: 722c7069 3233336b 00000038 03000000 ip,rk3328....... 02080070: 04000000 0b000000 01000000 03000000 ................ => fdt addr ${kernel_addr_r} libfdt fdt_check_header(): FDT_ERR_BADMAGIC =>
Rockchip TPL:
Hit any key to stop autoboot: 0 => print kernel_addr_r kernel_addr_r=0x02080000 => md ${kernel_addr_r} 20 02080000: adaaaa9a ea23286a baa8aeae aa7aa3aa ....j(#.......z. 02080010: aaf200ab abaa080a a8b2aa88 aa88aafa ................ 02080020: e92a4ca3 aafcf8aa eaaaa8fa aaaaab88 .L*............. 02080030: aaa8a0aa 2aea888b e2a5ebfa abea6abe .......*.....j.. 02080040: abb188aa a29aac4a 8aaaaaaa 8eee8cae ....J........... 02080050: d2aaaace aaa4feea ea8a6ebe eaa38b8a .........n...... 02080060: aee4b2a9 aaacaaba aaea8ab8 3aeeb8aa ...............: 02080070: aaa1aaae aaeeab9e aeae8ce8 ae2e8aaa ................ => load mmc 1 ${kernel_addr_r} /dtb/rockchip/rk3328-rock64.dtb 53513 bytes read in 10 ms (5.1 MiB/s) => md ${kernel_addr_r} 20 02080000: edfe0dd0 09d10000 38000000 70ba0000 ...........8...p 02080010: 28000000 11000000 10000000 00000000 ...(............ 02080020: 99120000 38ba0000 00000000 00000000 .......8........ 02080030: 00000000 00000000 01000000 00000000 ................ 02080040: 03000000 1e000000 00000000 656e6970 ............pine 02080050: 722c3436 366b636f 6f720034 68636b63 64,rock64.rockch 02080060: 722c7069 3233336b 00000038 03000000 ip,rk3328....... 02080070: 04000000 0b000000 01000000 03000000 ................ => fdt addr ${kernel_addr_r} =>