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-специфичные. Или я ошибаюсь? Объясните, как мне найти ответы на вопросы об устройстве моей флешки!

★★★★★

Нормальный даташит.

В софте нужно установить следующие переменные:

А ты просто поиском их искал что ли?

NAND_PAGESIZE

Page Size : (4K + 128)Byte

NAND_PAGEPERBLOCK

Block = 128 Pages

NAND_BLOCKPERCHIP

512K Pages (=4,096 Blocks)

Ну и так далее

ziemin ★★
()

Зачем дворнику понадобилась флэш?

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

Я на понимаю, почему NAND_PAGESIZE = 4096, например. Ведь написано же Page Size = (4K + 128)Byte, что можно понять как 4000+128=4128 или 4096+128=4224. Куда делось 128?

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от 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

Я думал, что написание конфига без чтения сорцов возможно.

возможно, но нужно детальное знание матчасти. И да, в одном килобайте ровно 1024 байта. «Тысячами» меряют только маркетологи, когда делают рекламу.

а вот что имел в виду погромист, обзывая переменные..

русский ИМХО. Я-бы тоже так назвал.

emulek
()
Ответ на: комментарий от 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 ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Возьми лучше кастрюлю, да отправляйся ворить щи. Программирование - не твоё.

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