Dear community,
after changing the flash in my XS1-L1-128-based design, xflash fails with "failed to recognize attached flash device". The old flash was Atmel AT25DF041A, the new one is Adesto AT25DF041B. From my point of view, the memory chips are equivalent, apart from the newer -B device having a smaller form factor and supporting larger supply voltage range and slightly higher maximum frequency.
Does anybody have an idea what might be wrong? Any feedback is appreciated.
Thanks in advance
Sebastian
Flash problem after replacing AT25DF041A with -B
-
- New User
- Posts: 2
- Joined: Tue Nov 19, 2013 10:09 am
-
- Respected Member
- Posts: 347
- Joined: Wed Jan 27, 2016 5:21 pm
Hi Sebastian,
It is worth checking in the documentation if the two flashes have the same identifier.
If not, and if it is not in the tools, you need to create a flash spec and pass it to xflash.
Cheers,
Henk
It is worth checking in the documentation if the two flashes have the same identifier.
If not, and if it is not in the tools, you need to create a flash spec and pass it to xflash.
Cheers,
Henk
-
- New User
- Posts: 2
- Joined: Tue Nov 19, 2013 10:09 am
Hi Henk,
thanks for your quick reply. Indeed, the two chips respond with different IDs. AT25DF041A uses "1F 44 01", -B returns "1F 44 02". With the modified flash definition pasted below, everything works fine.
Thank you very much for your help!
Sebastian
----------------------- 8< ---------------------------------
2, /* 1. libflash device ID */
256, /* 2. Page size */
2048, /* 3. Number of pages */
3, /* 4. Address size */
8, /* 5. Clock divider */
0x9f, /* 6. RDID cmd */
0, /* 7. RDID dummy bytes */
3, /* 8. RDID data size in bytes */
0x1f4402 /* 9. RDID manufacturer ID */
0xD8, /* 10. SE cmd */
0, /* 11. SE full sector erase */
0x06, /* 12. WREN cmd */
0x04, /* 13. WRDI cmd */
PROT_TYPE_SECS, /* 14. Protection type */
{{0,0},{0x36,0x39}}, /* 15. SR protect and unprotect cmds */
0x02, /* 16. PP cmd */
0x0b, /* 17. READ cmd */
1, /* 18. READ dummy bytes*/
SECTOR_LAYOUT_IRREGULAR, /* 19. Sector layout */
{0,{11,{8,8,8,8,8,8,8,7,5,5,6}}}, /* 20. Sector sizes */
0x05, /* 21. RDSR cmd*/
0x01, /* 22. WRSR cmd */
0x01, /* 23. WIP bit mask */
thanks for your quick reply. Indeed, the two chips respond with different IDs. AT25DF041A uses "1F 44 01", -B returns "1F 44 02". With the modified flash definition pasted below, everything works fine.
Thank you very much for your help!
Sebastian
----------------------- 8< ---------------------------------
2, /* 1. libflash device ID */
256, /* 2. Page size */
2048, /* 3. Number of pages */
3, /* 4. Address size */
8, /* 5. Clock divider */
0x9f, /* 6. RDID cmd */
0, /* 7. RDID dummy bytes */
3, /* 8. RDID data size in bytes */
0x1f4402 /* 9. RDID manufacturer ID */
0xD8, /* 10. SE cmd */
0, /* 11. SE full sector erase */
0x06, /* 12. WREN cmd */
0x04, /* 13. WRDI cmd */
PROT_TYPE_SECS, /* 14. Protection type */
{{0,0},{0x36,0x39}}, /* 15. SR protect and unprotect cmds */
0x02, /* 16. PP cmd */
0x0b, /* 17. READ cmd */
1, /* 18. READ dummy bytes*/
SECTOR_LAYOUT_IRREGULAR, /* 19. Sector layout */
{0,{11,{8,8,8,8,8,8,8,7,5,5,6}}}, /* 20. Sector sizes */
0x05, /* 21. RDSR cmd*/
0x01, /* 22. WRSR cmd */
0x01, /* 23. WIP bit mask */