Hello!
One of our custom boards did not started as expected when first turned on.
When jtag was connected, it was found that some CPU instructions were not working correctly.
Here is the result of the simplest test performed on the operating and non-working boards
(in u-boot, start.S, after save_boot_params ).
good imx6 | bad imx6 | |||
instruction | reg | value | reg | value |
r0 | 0x4 (Hex) | r0 | 0x4 (Hex) | |
r1 | 0xd500 (Hex) | r1 | 0xd500 (Hex) | |
r2 | 0x900000 (Hex) | r2 | 0x900000 (Hex) | |
r3 | 0x800 (Hex) | r3 | 0x800 (Hex) | |
r4 | 0x0 (Hex) | r4 | 0x0 (Hex) | |
mov r0, #0 | r0 | 0x0 (Hex) | r0 | 0x0 (Hex) |
r1 | 0xd500 (Hex) | r1 | 0xd500 (Hex) | |
r2 | 0x900000 (Hex) | r2 | 0x900000 (Hex) | |
r3 | 0x800 (Hex) | r3 | 0x800 (Hex) | |
r4 | 0x0 (Hex) | r4 | 0x0 (Hex) | |
ldr r4, =0xFFFFFFFF | r0 | 0x0 (Hex) | r0 | 0x0 (Hex) |
r1 | 0xd500 (Hex) | r1 | 0xd500 (Hex) | |
r2 | 0x900000 (Hex) | r2 | 0x900000 (Hex) | |
r3 | 0x800 (Hex) | r3 | 0x800 (Hex) | |
r4 | 0xffffffff (Hex) | r4 | 0xffffffff (Hex) | |
ldr r1, =0x55555555 | r0 | 0x0 (Hex) | r0 | 0xe1810400 (Hex) |
r1 | 0x55555555 (Hex) | r1 | 0xd500 (Hex) | |
r2 | 0x900000 (Hex) | r2 | 0x900000 (Hex) | |
r3 | 0x800 (Hex) | r3 | 0x800 (Hex) | |
r4 | 0xffffffff (Hex) | r4 | 0xffffffff (Hex) | |
ldr r2, =0xAAAAAAAA | r0 | 0x0 (Hex) | r0 | 0xe1810400 (Hex) |
r1 | 0x55555555 (Hex) | r1 | 0xd500 (Hex) | |
r2 | 0xaaaaaaaa (Hex) | r2 | 0xaaaaaaaa (Hex) | |
r3 | 0x800 (Hex) | r3 | 0x800 (Hex) | |
r4 | 0xffffffff (Hex) | r4 | 0xffffffff (Hex) | |
orr r3, r1, r2 | r0 | 0x0 (Hex) | r0 | 0x8104d500 (Hex) |
r1 | 0x55555555 (Hex) | r1 | 0xd500 (Hex) | |
r2 | 0xaaaaaaaa (Hex) | r2 | 0xaaaaaaaa (Hex) | |
r3 | 0xffffffff (Hex) | r3 | 0x800 (Hex) | |
r4 | 0xffffffff (Hex) | r4 | 0xffffffff (Hex) | |
and r4, r1, r2 | r0 | 0x0 (Hex) | r0 | 0x8104d500 (Hex) |
r1 | 0x55555555 (Hex) | r1 | 0xd500 (Hex) | |
r2 | 0xaaaaaaaa (Hex) | r2 | 0xaaaaaaaa (Hex) | |
r3 | 0xffffffff (Hex) | r3 | 0x800 (Hex) | |
r4 | 0x0 (Hex) | r4 | 0x8000 (Hex) |
Tell me, can such behavior be related to
1. CPU failure
2. Board defects
3. something else
?
Thank You!
Hi Vladimir
one can check if processor power supplies are within allowable range using datasheet
i.MX 6Quad Applications Processors | Quad Arm® Cortex®-A9 |NXP
and i.MX6 System Development User’s Guide
https://www.nxp.com/docs/en/user-guide/IMX6DQ6SDLHDG.pdf
Try with other jatg debugger or script.
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------