LINUX.ORG.RU

Распарсить даташит для NAND

 , , , ,


1

1

Есть NAND-флешка K9GAG08U0M. Есть даташит к ней. Есть некоторый софт, который должен работать с этой флешкой.
Даташит большой, но реально полезной информации немного. Думаю, что мне в первую очередь понадобится это:

* Memory Cell Array = (2G + 64M) x 8bit
* Data Register = (4K + 128) x 8bit
* Page Program = (4K + 128)Byte
* Block Erase = (512K + 16K)Byte
* Page Size = (4K + 128)Byte
* Memory Cell = 2bit / Memory Cell
Но что это? Как это вообще читать? Из всего даташита я смог записать только то, что ширина шины — 8 бит. Остальное я не распарсил.
В софте нужно установить следующие переменные:
  NAND_BUSWIDTH 8
- NAND_ROWCYCLES
- NAND_PAGESIZE
- NAND_PAGEPERBLOCK
- NAND_OOBSIZE
- NAND_ECCPOS
- NAND_BADBLOCKPOS
- NAND_BADBLOCKPAGE
- NAND_PLANENUM
- NAND_BCHBIT
- NAND_WPPIN
- NAND_BLOCKPERCHIP
Я так подозреваю, что большинство значений всё-таки содержатся в даташите. А значения ECC и BADBLOCK, вероятно, linux-специфичные. Или я ошибаюсь? Объясните, как мне найти ответы на вопросы об устройстве моей флешки!

★★★★★
Ответ на: комментарий от registrant

Переменные нормальные, даташит нормальный. Тебе же не зря пишут 4096 + 128, потому как 128 это и есть OOB.

slapin ★★★★★
()
Ответ на: комментарий от slapin

Почему 4К равно 4096, а не 4000? У меня в этом месте возникли трудности.
Кстати, я нашёл формулу, по которой считают размер OOB: (PAGE_SIZE/32), всё сходится пока.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Кстати, я нашёл формулу, по которой считают размер OOB: (PAGE_SIZE/32), всё сходится пока.

Вот именно что пока :) OOB может быть разной - зависит от производителя. А вообще я не понял - чего за херомантия у тебя - всю информацию о NAND можно получить из MTD. Или у тебя какое-то стандалоне приложение без ОС ? А то я смотрю там и BBT и схема ECC и BCH настраиваемые - это все вендор специфичное за исключением BBT и зависит как производитель контроллера NAND пожелал сделать/что поддерживает контроллер. В Linux драйвер контроллера этим рулит.

anonymous
()
Ответ на: комментарий от CYB3R

Это загрузчик, он и должен загрузить Linux.

Эээ, а загрузчик кто загрузить должен с NAND ? Или это какой-то глупый процессор что ему SPL нужен ?

anonymous
()
Ответ на: комментарий от CYB3R

Кстати, я нашёл формулу, по которой считают размер OOB: (PAGE_SIZE/32), всё сходится пока.

facepalm...

emulek
()
Ответ на: комментарий от CYB3R

вот, нагуглил, раз забанили: http://openocd.sourceforge.net/doc/html/NAND-Flash-Commands.html

NAND chips consist of a number of “erase blocks” of a given size (such as 128 KBytes), each of which is divided into a number of pages (of perhaps 512 or 2048 bytes each). Each page of a NAND flash has an “out of band” (OOB) area to hold Error Correcting Code (ECC) and other metadata, usually 16 bytes of OOB for every 512 bytes of page data.

emulek
()
Ответ на: комментарий от anonymous

Или это какой-то глупый процессор что ему SPL нужен ?

Да, IPL зашит в чипе, SPL загружается с первых 8Kb NAND.

CYB3R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.