реклама на сайте
подробности

 
 
> NAND или как его побороть
deplen
сообщение Dec 4 2012, 19:57
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 143
Регистрация: 19-11-12
Пользователь №: 74 471



Здравствуйте!

Задача стирания NAND флешки уже несколько притомила. В большинстве примером (большинство что я увидел на просторах интернета) сводятся к такому коду:
Код
void erase (uint16_t n) // как я понял н это номер блока
{  
  uint16_t addr1;
  uint8 addr2, addr3

  addr1 = n << 6;  // вот тут в каких 6 в каких 5
  addr2 = (uint8_t) (addr1 & 0xFF);
  addr2 = (uint8_t) ((addr1 >> 8) & 0xFF);

// и дальше addr1 и addr2 передаются в команду стирания
}
кто бы доходчиво мог объяснить что делается в данном коде... я не понимаю несколько моментов.
В описание в работе с нанд памятью указано что подаается 3 команды. В которых участвуют адреса блоков, страниц. Но как связан данный код с тем что требуется передать.
Спасибо.

Сообщение отредактировал IgorKossak - Dec 5 2012, 11:34
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
subver
сообщение Dec 6 2012, 05:10
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Какой то поток сознания.
Ваш код делает следующее:

Умножает номер блока на 64, чтобы получить номер страницы начала блока.
Затем в переменные addr1 и addr2 раскладываются соответственно младший и старший байт полученного номера.
Потом они передаются как параметр команды.

И причем тут какие то итерации и увеличения?
Go to the top of the page
 
+Quote Post
deplen
сообщение Dec 11 2012, 16:36
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 143
Регистрация: 19-11-12
Пользователь №: 74 471



Цитата(subver @ Dec 6 2012, 09:10) *
Какой то поток сознания.
Ваш код делает следующее:

Умножает номер блока на 64, чтобы получить номер страницы начала блока.
Затем в переменные addr1 и addr2 раскладываются соответственно младший и старший байт полученного номера.
Потом они передаются как параметр команды.

И причем тут какие то итерации и увеличения?


Спасибо за исчерпывающий ответ. Я вобщем то к этому и пришел на работе и потом прочитал Ваш комментарий.

Задача решена. Всем отписавшимся спасибо за помощь.

После решения данной проблемы После решения данной задачи возникли следующие:
1)каким способом можно восстановить работоспособность памяти после стирания всех блоков?
2) при подключения, в параллели другого микроконтроллера к "родному" мк SD карточки, будет ли он (родной) как то мешать работе подключенного (тобишь на шину данных выставлять нули или еще какие препятствия)

Сообщение отредактировал deplen - Dec 11 2012, 16:46
Go to the top of the page
 
+Quote Post
subver
сообщение Dec 12 2012, 03:59
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Цитата(deplen @ Dec 11 2012, 23:36) *
1)каким способом можно восстановить работоспособность памяти после стирания всех блоков?

Никаким. Даташит настоятельно не рекомендует стирать блоки, помеченные как "плохие".
Память при этом будет работоспособна, но выявить сбойные блоки будет сложно.
Go to the top of the page
 
+Quote Post
deplen
сообщение Dec 12 2012, 16:20
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 143
Регистрация: 19-11-12
Пользователь №: 74 471



Цитата(subver @ Dec 12 2012, 07:59) *
Никаким. Даташит настоятельно не рекомендует стирать блоки, помеченные как "плохие".
Память при этом будет работоспособна, но выявить сбойные блоки будет сложно.


А как насчет низкоуровнего форматирования которое призвано восстановить работоспособность? Оно же как я понимаю записывают необходимую служебную информацию, после которой требуется только записать таблицу например быстрым форматированием Windows.

Сообщение отредактировал deplen - Dec 12 2012, 16:21
Go to the top of the page
 
+Quote Post
subver
сообщение Dec 13 2012, 03:31
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Цитата(deplen @ Dec 12 2012, 23:20) *
А как насчет низкоуровнего форматирования которое призвано восстановить работоспособность? Оно же как я понимаю записывают необходимую служебную информацию, после которой требуется только записать таблицу например быстрым форматированием Windows.

Низкоуровневоео форматирование призвано стереть все блоки, не более того.
Не стоит равнять SD карту и микросхему NAND памяти.
Контроллер SD карты перед какими либо манипуляциями с данными в чипе NAND памяти проверяет на "корректность" выбраный блок. И если он помечен как "плохой" - то просто игнорирует его.
Если вы стерли все подряд блоки без контроля признака "плохого" блока - остается надеятся, что в данной конкретной микросхеме все блоки вдруг были "живые" перед этим, потому что простыми тестами чтения-записи скорее всего не удастся выявить "плохой" блок быстро.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- deplen   NAND или как его побороть   Dec 4 2012, 19:57
- - SyncLair   требуется передать адрес... он и передаётся просто...   Dec 4 2012, 20:13
- - deplen   получается мы передаем в функцию номер блока, дале...   Dec 5 2012, 03:11
- - deplen   Может я не особо внятно попробовал задать вопрос.....   Dec 5 2012, 15:22
- - SyncLair   давайте по порядку, лучше плясать от исходника. 1...   Dec 5 2012, 16:46
|- - deplen   Цитата(SyncLair @ Dec 5 2012, 20:46) дава...   Dec 5 2012, 16:59
|- - aaarrr   Цитата(deplen @ Dec 5 2012, 20:59) Завтра...   Dec 5 2012, 17:16
|- - deplen   Цитата(aaarrr @ Dec 5 2012, 21:16) У NAND...   Dec 5 2012, 18:23
|- - deplen   Цитата(subver @ Dec 13 2012, 07:31) Низко...   Dec 13 2012, 04:54
- - vladimir_orl   Посмотри даташит на м/с NANDа типа MT29F4G08AAA. Т...   Dec 6 2012, 07:31
- - Flexz   Давайте сначала: что вы подразумеваете под "в...   Dec 13 2012, 06:06
|- - deplen   Цитата(Flexz @ Dec 13 2012, 10:06) Давайт...   Dec 13 2012, 09:02
- - GDI   Вроде начинали с микросхем NAND Flash, тогда о как...   Dec 13 2012, 09:35
|- - deplen   Цитата(GDI @ Dec 13 2012, 13:35) Вроде на...   Dec 13 2012, 14:40
- - Alex11   Вы бы хоть объяснили, для чего Вы это делаете. А т...   Dec 13 2012, 21:57
|- - deplen   Цитата(Alex11 @ Dec 14 2012, 01:57) Вы бы...   Dec 14 2012, 04:08
- - GDI   Правильно ли я понял, что вы хотите подключить кон...   Dec 14 2012, 07:10
|- - deplen   Цитата(GDI @ Dec 14 2012, 11:10) Правильн...   Dec 14 2012, 16:17
- - GDI   Интересно, как Вы это хотите осуществить? Я имею в...   Dec 17 2012, 09:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016