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

 
 
> 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
Ответов
SyncLair
сообщение Dec 5 2012, 16:46
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



давайте по порядку, лучше плясать от исходника.

1. наверное в последней строке addr3 иначе предыдущая строка не имеет смысла

а. номер блока умножается на 64 (значит в одном блоке 64 страницы)

б) номер блока распределяется в две однобайтные переменные

г) они куда то там передаются (вы уверены что передаются addr1 и addr2 )

тогда зачем addr3?????

вы бы глубоко вздохнули и ещё раз написали пример поподробнее


--------------------
Go to the top of the page
 
+Quote Post
deplen
сообщение Dec 5 2012, 16:59
Сообщение #3


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

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



Цитата(SyncLair @ Dec 5 2012, 20:46) *
давайте по порядку, лучше плясать от исходника.

1. наверное в последней строке addr3 иначе предыдущая строка не имеет смысла

а. номер блока умножается на 64 (значит в одном блоке 64 страницы)

б) номер блока распределяется в две однобайтные переменные

г) они куда то там передаются (вы уверены что передаются addr1 и addr2 )

тогда зачем addr3?????

вы бы глубоко вздохнули и ещё раз написали пример поподробнее


Код
void Erase(uint16 block)
{
    uint32 pageNum
    uint8_t addr1,addr2;
    num = block << 6;
    addr1 = (uint8_t)( num & 0xff );
    addr2 = (uint8_t)( ( num >> 8 ) & 0xff );

    Далее команда на стирание 60h
    Передаем адрес addr1
    Передаем адрес add2
    Вторая команда стирания d0h

    Ожидаем ответ Ready/Bysy пина
}

Вот пример как он выглядит в программе к микроконтроллеру и на большинстве примеров из сети. Прошу прощения что назвал переменные не совсем коректно в прошлом примере..просто пытался объяснить и не вдавался в смысл названий.

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

Сообщение отредактировал IgorKossak - Dec 5 2012, 17:05
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 5 2012, 17:16
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(deplen @ Dec 5 2012, 20:59) *
Завтра уже нада что то показывать начальнику, а я в простой адресации не могу разобраться.

У NAND флеш есть понятия страниц и блоков. Стирание ведется только блоками. Один блок в вашем примере содержит 64 страницы.
Так в чем, собственно, вопрос?
Go to the top of the page
 
+Quote Post
deplen
сообщение Dec 5 2012, 18:23
Сообщение #5


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

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



Цитата(aaarrr @ Dec 5 2012, 21:16) *
У NAND флеш есть понятия страниц и блоков. Стирание ведется только блоками. Один блок в вашем примере содержит 64 страницы.
Так в чем, собственно, вопрос?


да вопрос вобщем то, что делается в данном коде, что я представил выше)
что такое num? что такое addr1, addr2. Примеры того что в отладке при входных данных 1 и 2 приведены.
Я не могу понять что означают данные перменные.
Почему addr1 всегда имеет значения 00h, 40h, 80h, C0h. A addr2 через 4 итерации увеличивается на единицу.

да вопрос вобщем то, что делается в данном коде, что я представил выше)
что такое num? что такое addr1, addr2. Примеры того что в отладке при входных данных 1 и 2 приведены.
Я не могу понять что означают данные перменные.
Почему addr1 всегда имеет значения 00h, 40h, 80h, C0h. A addr2 увеличивается на единицу, после того как addr1 станет снова 00h.

В моем понимании адресация это 0x00010000-0x0001ffff
0x00020000... и так далее...

а как в представленном коде нанд понимает что ему подсвоевывают мне не понятно.

Сообщение отредактировал deplen - Dec 5 2012, 18:23
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
- - subver   Какой то поток сознания. Ваш код делает следующее:...   Dec 6 2012, 05:10
|- - deplen   Цитата(subver @ Dec 6 2012, 09:10) Какой ...   Dec 11 2012, 16:36
|- - subver   Цитата(deplen @ Dec 11 2012, 23:36) 1)как...   Dec 12 2012, 03:59
|- - deplen   Цитата(subver @ Dec 12 2012, 07:59) Никак...   Dec 12 2012, 16:20
|- - subver   Цитата(deplen @ Dec 12 2012, 23:20) А как...   Dec 13 2012, 03:31
|- - 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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