Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NAND с u-boot для LPC1788
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Novichok1
Здравствуйте!
Продолжается инициализация u-boot (lpc177x8x-u-boot-port) для своей платы на основе LPC1788. Уже запарился - неработает NAND флэш (Samsung K9F5608U0D-PCBO). Различались некоторые ноги, но это я учел в инициализации. Тестирую так: записываю 512 байт, затем читаю 512 байт. Сперва читались только FF (значения после Erase), выяснилось, что нога P4.31 (Chip Enable1) не была настроена как GPIO, исправил это (не пойму, как с такой ошибкой у создателей порта работала NAND у u-boot, разве что они не тестировали эту фичу). После этого что-то стало записываться и читаться, но далеко не все, где-то первые 100 байт из 512 записываются или читаются не правильно, скорее всего записываются, потому что после ерэйза читаются только FF, а если попробовать записать массив FF, то первые байты после чтения не равны FF! Оставил такой вопрос на lpcWare (http://www.lpcware.com/content/forum/problem-nand), также отправлял запрос в службу техподдержку http://emcraft.com/, там посоветовали увеличить тайминги - не помогло. Буду рад любой помощи!
GDI
U-Boot вначале определяет параметры NAND-Flash и выводит их в терминал при загрузке, у Вас там правильные параметры определились?
Novichok1
Да, правильно, и еще, после прочтения возникает ошибка -74 (-EBADMSG):

Цитата
NAND: NAND device: Manufacturer ID: 0xec, Chip ID: 0x75 (Samsung NAND 32MiB 3,3V 8-bit)
32 MiB
Bad block table found at page 65504, version 0x01
Bad block table found at page 65472, version 0x01
nand_isbad_bbt(): bbt info for offs 0x00040000: (block 0) 0x10
nand_isbad_bbt(): bbt info for offs 0x00040000: (block 0) 0x10
NAND read from offset 40000 failed -74
*** Warning - readenv() failed, using default environment


Эта ошибка возникает в файле nand_base.c, в функции static int nand_do_read_ops(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops):

Код
    if (mtd->ecc_stats.failed - stats.failed)
        return -EBADMSG;
GDI
Не знаю как там в LPC это сделано, но для AT91SAM9263 и для iMX356 сообщение выглядит так:
Код
NAND device: Manufacturer ID: 0xec, Chip ID: 0xd7 (Samsung NAND 4GiB 3,3V 8-bit)
Manufacturer      : Samsung (0xec)
Device Code       : 0xd7
Cell Technology   : MLC
Chip Size         : 4 GiB
Pages per Block   : 128
Page Geometry     : 4096+218
ECC Strength      : 8 bits
ECC Size          : 512 B
Data Setup Time   : 20 ns
Data Hold Time    : 10 ns
Address Setup Time: 25 ns
GPMI Sample Delay : 6 ns
tREA              : Unknown
tRLOH             : Unknown
tRHOH             : Unknown
Description       : K9LBG08U0D

Могу предположить что NAND у Вас все-таки не определился, т.е. ID считался, но соответствие остальных параметров в базе флешей найдено не было, потому и не работает. Выхода два: либо за хардкодить нужную Вам НАНД, либо попытаться разобраться почему не происходит автоопределение типа памяти.
Novichok1
К сожелению, NAND определился. больше он ничего не хотел выдавать, на плате LPC2478 от EmbeddedArtists такой же вывод, плюс в массиве чипов nand_flash_ids (в nand_ids.c) есть элемент с этим чипом:

Код
...
{"NAND 32MiB 3,3V 8-bit",    0x75, 512, 32, 0x4000, 0},
...


Еще, код выполняется из внешней рамки, а часть шины адреса и данных разделена между внешней SDRAM и NAND, причем NAND Chip Enable (P4.31) мы дергаем как GPIO, не могут проблемы возникнуть из-за этого?
GDI
К сожалению, тут я помочь не смогу, потому что с LPC не работал. Глянул мельком даташит, там даже нет контролера NAND-flash, т.е. Вы всё делаете "руками"?
Novichok1
Ну, не все, есть контроллер внешней памяти, он вкупе с драйвером nand всем и рулит. Могу сказать, что руками рулится ChipSelect, и R/B, остальное через адресные ноги и ноги данных. Жаль, что не сможете помочь, но все равно спасибо за ответы!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.