That problem is confirmed, it is caused by “factory setting” area(0x00040000-0x00050000).
I get the bug flash and normal flash, compare the two, get the following result.
BUG BOARD: < 00040000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 00040020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 00040030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 00040040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 00040050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 00040070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 000400D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 000400E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF < 00040120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF NORMAL BOARD: > 00040000 50 53 00 01 00 0C 43 30 50 C8 FF FF FF FF FF FF > 00040020 FF FF FF FF FF FF FF FF 00 0C 43 30 50 77 00 0C > 00040030 43 30 50 66 11 FF 24 28 FF FF 2B 01 55 77 A8 AA > 00040040 8C 88 FF FF 0C 00 00 00 00 00 00 00 00 00 FF FF > 00040050 FF FF 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B 0B > 00040070 FF FF FF FF FF FF 03 80 FF FF FF FF FF FF FF FF > 000400D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 66 66 > 000400E0 CC AA 88 66 CC AA 88 66 CC AA 88 66 CC AA 88 66 > 00040120 81 09 1C 13 4F 15 4F 15 03 1D 07 1D FF FF FF FF
I guess this data(about 512 bytes) should be same data format in EEPROM. The bug one can not load mac address because in this area it is all invalid/empty(0xFF).
I am right again:
this is EEPROM from RT5350 official SDK.(0xFF lines deleted, 512bytes)
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 00000000 50 53 00 01 00 0C 43 30 50 58 FF FF FF FF FF FF 00000020 FF FF FF FF FF FF FF FF 00 0C 43 30 50 77 00 0C 00000030 43 30 50 66 11 FF 24 28 FF FF 2B 01 55 77 A8 AA 00000040 8C 88 FF FF 0C 00 00 00 00 00 00 00 00 00 FF FF 00000050 FF FF 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B 0B 00000070 FF FF FF FF FF FF 03 80 FF FF FF FF FF FF FF FF 000000D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 66 66 000000E0 CC AA 88 66 CC AA 88 66 CC AA 88 66 CC AA 88 66 00000120 03 09 1C 13 4F 15 4F 15 03 1D 07 1D FF FF FF FF
This is another EEPROM in SDK.
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 00000000 50 53 00 01 00 0C 43 30 50 58 FF FF FF FF FF FF 00000020 FF FF FF FF FF FF FF FF 00 0C 43 30 50 77 00 0C 00000030 43 30 50 66 11 FF 24 30 FF FF 2B 01 55 77 A8 AA 00000040 8C 88 FF FF 0C 00 00 00 00 00 00 00 00 00 FF FF 00000050 FF FF 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0B 0B 00000070 FF FF FF FF FF FF 03 80 FF FF FF FF FF FF FF FF 000000D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 66 66 000000E0 CC AA 88 66 CC AA 88 66 CC AA 88 66 CC AA 88 66 00000120 03 09 1C 13 4F 15 4F 15 03 1D 07 1D FF FF FF FF
So, the factory setting is necessary and important, looks like some driver are reading that when the board boot up.
After copy 512 bytes data to its location at flash 0x00040000, everything works again. 😀