Спасибо за bootstrap'ы, но действительно он не работает с NandFlash на моем контроллере. С DataFlash работает замечательно.
Попутно теме возник вопрос о IMG_ADDRESS для DataFlash - почему он установлен в 0x8400 ?
По документации на AT45DB321 размер страницы = 528 (512 + 16) байт. А так как bootstrap занимает первые 4 Кбайта DataFlash, то нично не мешает установить IMG_ADDRESS = 0x1000.
В документации на AT91SAM9260 есть Errata
44.2.2.1 NAND Flash Boot Does Not Work Correctly
The SMC_SETUP register for the NAND Flash Chip Select (NCS3) is not initialized correctly in
the ROM code.
NRD_SETUP is initialized to “0” which leads to a violation of parameters tAR and tCLR.
The following commands are concerned; READ ID (0x90), READ STATUS (0x70), PAGE READ
(0x00, 0x30) and RANDOM DATA READ (0x05, 0xE0).
Problem Fix/Workaround
Use DataFlash Boot or external memory on EBI_NCS0.
Другие признаки у меня тоже есть - Ethernet MAC TX Underrun
Мой чип выпущен в 2007 году на 11 неделе. То, что у других работает на ревизии А - это счастливый случай.
u-boot хранит переменные оружения в датафлэш и для них тоже нужно отвести место и потом 0x1000 не кратно 0х210 - это автоматом отключит запись на разделы mtd так как они будут не выровнены по границе страниц памяти.
Я так понимаю, что не все из 528 байт используется для данных, так как общая емкость 4 Мбайта - это 512 байт * 8192 страниц.
Выравнивать, наверное, надо по границе 512 байт.
"Лишние" байты, наверное, используются для CRC или как запасные.