NAND RAW доступ - PullRequest
       37

NAND RAW доступ

1 голос
/ 08 марта 2011

Я работаю с приложением C ++ во встроенных системах под управлением Linux. Это устройство получает сообщения (небольшой фрагмент из нескольких байтов) и должно храниться в энергонезависимой памяти в случае сбоя питания. Это хорошо работало с другой платформой, потому что было доступно статическое ОЗУ.

Проблема на этой платформе в том, что для этого у нас есть только NAND Flash, и мы хотели бы добавить другое сообщение в один и тот же блок, не стирая весь блок перед обновлением его новым сообщением! Написание файла для сообщений не является хорошим решением, потому что их может быть много! Кроме того, это должно быть эффективно и должно быть спасительным для вспышки, избегая слишком большого количества стираний! То, что я хотел бы сделать, это записывать байты за байтами во флэш-память, не беспокоясь о плохих блоках.

Я нашел " Petit FAT File System ", и мне интересно, подойдет ли это моим потребностям ...?

Может ли кто-нибудь сказать мне, возможно ли это с помощью "Petit FAT File System", или дать мне какое-нибудь предложение о том, как с этим справиться?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 09 марта 2011

Я не изучал файловую систему Petit, но ваше реальное ограничение - флэш-память NAND.Производственный паспорт, скорее всего, укажет, сколько записей вы можете успешно выполнить в каждом блоке, прежде чем потребуется удаление.Возможно, что нет жесткого ограничения, но целостность данных не будет гарантирована после максимального числа записей.

Ответ зависит от технологии процесса и конструкции флэш-ячейки.Например, это SLC или MLC NAND?SLC сможет лучше обрабатывать записи нескольких блоков.

Еще один вопрос - какой тип контроллера флэш-памяти установлен в вашей системе?Если он использует аппаратный ECC, то вы можете быть ограничены контроллером, так как 2-я запись сделает недействительным значение ECC 1-й записи данных.Если возможно, что вы можете выполнять вычисления ECC в программном обеспечении, то это возвращает ограничение NAND.

Поддержка небольших записей может быть рассмотрена в технических данных через специальную область памяти, которая может быть предоставлена.,Итак, еще раз, проверьте данные.

Если вы разместите ссылку или укажете, какое оборудование вы используете, я могу попытаться дать вам более определенный ответ.

1 голос
/ 09 марта 2011

Если вы имеете дело с флэш-памятью, вы не сможете удалить ее перед записью.Вся флэш-память работает таким образом.В зависимости от ваших требований в реальном времени и размера данных, это может быть или не быть проблемой.Но так как вы используете встроенный Linux, в любом случае, в реальном времени, вероятно, не главное беспокойство о приложении.

Не понимаю, зачем вам нужна полная файловая система для хранения нескольких байтов ?!Зачем вам для этого в первую очередь внешняя память, не можете ли вы записать на внутреннюю флешку MCU?Если вам просто нужно сохранить несколько байтов, MCU с встроенным чипом EEPROM / флэш-памятью, скорее всего, подойдет вам лучше всего.

Кроме того, эта схема вспышки выглядит не слишком многообещающе.Во-первых, мне показалось странным, что они не печатают ни количество циклов, ни сохранение данных, а ссылаются на «квалификационный отчет».Это может указывать на то, что память имеет плохое качество.И в техпаспорте написано 2009 год и Samsung.Если я могу быть циничным, это, вероятно, означает, что чип уже устарел.У Samsung точно не лучшая долговременная репутация.

0 голосов
/ 10 марта 2011

Мне любопытно, почему вы хотите использовать необработанную вспышку. Почему бы не использовать что-то вроде JFFS2 или UBIFS поверх диска MTD? Пусть драйвер MTD управляет ECC, а JFFS2 или UBIFS управляет выравниванием износа. Затем просто откройте один файл и пишите в него всякий раз, когда вам нужно.

...