Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Общение
bad-блоки в NAND
encept
Добавлено 15.04.2013 12:15
0
Сообщение: 1
encept
0

Пункты: 826
Регистрация: 24.08.2011
Уважаемые форумчане! Есть несколько вопросов по bad-блокам в NAND.

1) Изначально может быть некоторое число bad-блоков, информация о них присутствует в самой микоросхеме. Если эта информация будет утеряна в дальнейшем, возможно ли как-нибудь ее восстановить, например стиранием/записью/верификацией всех блоков?

2) По мере использования могут появляться новые bad-блоки. Они появляются только при стирании/записии, или могут появиться и при чтении?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.04.2013 16:25 Сообщение: 2
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
1) Linux по умолчанию с SLC использует информацию в OOB, сканирует NAND при каждом старте и создает таблицу, потом синхронизиует ее с имеющейся таблицей в нанде (если такая имеется) или создает новую. На MLC с тем что встречался - OOB используется только для хранения ECC, при старте NAND не сканируется, BBT создается при форматировании.
2) не знаю, лучше наверно на форуме производителей NAND чипов спрашивать :)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.04.2013 19:01 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
выдержки из ближайшего самсунговского даташита на нанд:

Цитата
1) Изначально может быть некоторое число bad-блоков, информация о них присутствует в самой микоросхеме. Если эта информация будет утеряна в дальнейшем, возможно ли как-нибудь ее восстановить, например стиранием/записью/верификацией всех блоков?

Код
NAND Flash Technical Notes
Identifying Initial Invalid Block(s)
Initial Invalid Block(s)
Initial invalid blocks are defined as blocks that contain one or more initial invalid bits whose reliability is not guaranteed by Samsung.
The information regarding the initial invalid block(s) is called the initial invalid block information. Devices with initial invalid block(s)
have the same quality level as devices with all valid blocks and have the same AC and DC characteristics. An initial invalid block(s)
does not affect the performance of valid block(s) because it is isolated from the bit line and the common source line by a select transistor.
The system design must be able to mask out the initial invalid block(s) via address mapping. The 1st block, which is placed on
00h block address, is guaranteed to be a valid block up to 1K program/erase cycles with 1bit/512Byte ECC.
All device locations are erased(FFh) except locations where the initial invalid block(s) information is written prior to shipping. The initial
invalid block(s) status is defined by the 1st byte in the spare area. Samsung makes sure that either the 1st or 2nd page of every
initial invalid block has non-FFh data at the column address of 2048. Since the initial invalid block information is also erasable in
most cases, it is impossible to recover the information once it has been erased. Therefore, the system must be able to recognize the
initial invalid block(s) based on the original initial invalid block information and create the initial invalid block table via the following
suggested flow chart(Figure 3). Any intentional erasure of the original initial invalid block information is prohibited.

Цитата
2) По мере использования могут появляться новые bad-блоки. Они появляются только при стирании/записии, или могут появиться и при чтении?

Код
Error in write or read operation
Within its life time, additional invalid blocks may develop with NAND Flash memory. Refer to the qualification report for the actual
data.The following possible failure modes should be considered to implement a highly reliable system. In the case of status read failure
after erase or program, block replacement should be done. Because program status fail during a page program does not affect
the data of the other pages in the same block, block replacement can be executed with a page-sized buffer by finding an erased
empty block and reprogramming the current target data and copying the rest of the replaced block. In case of Read, ECC must be
employed. To improve the efficiency of memory space, it is recommended that the read or verification failure due to single bit error be
reclaimed by ECC without any block replacement. The said additional block failure rate does not include those reclaimed blocks

по последнему вопросу, считаю, что при чтение бедблоки не возникают, а только в процессе стирания/записи..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
encept
Добавлено 16.04.2013 12:31 Сообщение: 4
encept
0

Пункты: 826
Регистрация: 24.08.2011
sasamy, Jury093, спасибо!

Тогда вопрос по хранению кода в NAND от Samsung:

Они обещают для первого блока 1К стираний/записей. Значит, туда можно поместить начальный загрузчик, и даже будет гарантированный маневр для его обновления.
Основной бинарник (будь то ядро линукса или standalone) можно разместить в любой части NAND. Допустим, что при обновлении прошивки один из этих блоков портится так, что ECC уже недостаточно. Тогда мы должны переписать бинарник в другие блоки и заодно еще поменять начальный загрузчик, чтобы он знал и умел работать с новым местоположением бинарника.
Правильно понимаю механизм хранения и обновления прошивок?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 16.04.2013 12:56 Сообщение: 5
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

Основной бинарник (будь то ядро линукса или standalone)


Вы мух от котлет отделяйте :) в стандалонах скорей всего ничего хорошего вы не сделаете а вот в u-boot Linux можно и с фс читать, а там логическая структура с bad eraseblocks handling и wear-leveling имеются. От процессора тоже зависит - насколько там "умный" встроенный начальный загрузчик.
Спуститься к концу Подняться к началу
Персональная информация
encept
Добавлено 16.04.2013 14:09 Сообщение: 6
encept
0

Пункты: 826
Регистрация: 24.08.2011
Согласен, в случае с linux можно воспользоваться u-boot и хранить ядро в ФС.
А в моем случае будет i.mx287 и приложение под ECOS (статически линкуется в единый бинарник). Критично время старта и жесткий реал-тайм, поэтому приходится отказываться от linux.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 16.04.2013 15:44 Сообщение: 7
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
А в моем случае будет i.mx287 и приложение под ECOS (статически линкуется в единый бинарник). Критично время старта и жесткий реал-тайм, поэтому приходится отказываться от linux.

я бы поступил для оптимизации и упрощения так:
- оставить Uboot в качестве вторичного загрузчика, выключив весь функционал и оставив три компоненты
-- ветка загрузки стендалоне
-- ветка поиска обновления с указанного источника
-- ветка перезаписи фирмваре(стендалоне)

вариант сложнее - повторить подвиг по написанию своего аналога юбута, с вышеперечисленными поддержками, разумеется подсматривая в сорцы юбута..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 18.04.2013 16:09 Сообщение: 8
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
<<<<Критично время старта и жесткий реал-тайм

На сколько критично время старта ?
Люди на ОMAP3 (если не ошибаюсь) 300 мс старт делали. Включая ядро и bysubox.

Жеский реал тайм ядра есть RT. Никак совсем не катит ?
Спуститься к концу Подняться к началу
Персональная информация
encept
Добавлено 18.04.2013 22:31 Сообщение: 9
encept
0

Пункты: 826
Регистрация: 24.08.2011
Jury093, пожалуй воспользоваться вторичным загрузчиком, понимающим ФС для nand - хорошая идея.

lexx666, 300 мс это здорово! Не могли бы вы дать ссылку, где можно об этом почитать подробнее?
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 19.04.2013 08:48 Сообщение: 10
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
http://www.makelinux.com/emb/fastboot/

гуглиться по linux fast boot
на самом деле 300мс это достаточно сложно на мой взгляд... ядро очень ужато должно быть, вырезано всё лишнее, но тем не менее... какое время максимально возможно уделить загрузке в вашем случае?

вот ещё темка я там давал основной подход

http://starterkit.ru/html/index.php?name=forum&op=view&id=19414

для быстрой загрузки u-boot наоборот выкидывается.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Общение