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!