|
|
 |
Ответов
(1 - 11)
|
Aug 29 2012, 08:14
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 3-04-12
Пользователь №: 71 154

|
Цитата(AlexandrY @ Aug 29 2012, 11:05)  Что за Flash - NAND, NOR ...? Алгоритм сильно зависит от платформы на которой стоит микроконтроллер и IDE , поэтому постановка вопроса некорректна. Сорри, flash типа NAND Samsung K1F9G08U0B как я понимаю это память с Large Page а в mVision 4.54 есть алгоритмы только с Small Page, работаю с отдладочным модулем DevKit3250.
|
|
|
|
|
Aug 29 2012, 09:33
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 3-04-12
Пользователь №: 71 154

|
Цитата(AlexandrY @ Aug 29 2012, 11:31)  Есть для MT29F2G08ABAEAH4:E TR под Keil 4.22A правильно я понимаю что это название микросхемы или это алгоритм так назваеться у меня в Keil 4.54 такого нет. и еще вопрос если мне все таки придется пределывать алгоритм програмирования можно ли его отлаживать и через jtag?
|
|
|
|
|
Aug 29 2012, 10:04
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(deeper_79 @ Aug 29 2012, 12:33)  правильно я понимаю что это название микросхемы или это алгоритм так назваеться у меня в Keil 4.54 такого нет.
и еще вопрос если мне все таки придется пределывать алгоритм програмирования можно ли его отлаживать и через jtag? Да, это название микросхемы. Вроде как функциональный аналог K9F1G08U0B Алгоритм через JTAG отлаживать не удастся, так как в тоже самое время JTAG используется для взаимодействия с ядром в процессе программирования. Я при отладке программирования использовал вывод в UART. Да, и еще у меня программирует не загрузочный образ, а собственный формат (контроль ECC другой). Поэтому встроенный в uC bootloader прямо из NAND программу не запустит.
|
|
|
|
|
Aug 29 2012, 10:19
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 3-04-12
Пользователь №: 71 154

|
Цитата(AlexandrY @ Aug 29 2012, 13:04)  Да, это название микросхемы. Вроде как функциональный аналог K9F1G08U0B Алгоритм через JTAG отлаживать не удастся, так как в тоже самое время JTAG используется для взаимодействия с ядром в процессе программирования. Я при отладке программирования использовал вывод в UART. Да, и еще у меня программирует не загрузочный образ, а собственный формат (контроль ECC другой). Поэтому встроенный в uC bootloader прямо из NAND программу не запустит. а где этот алгоритм взять что то я его найти не могу, может Вы мне его скинете попробую на его основе свой написать
|
|
|
|
|
Aug 30 2012, 07:10
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 3-04-12
Пользователь №: 71 154

|
Цитата(AlexandrY @ Aug 29 2012, 17:55)  Это не алгоритм, а проект. Но там есть алгоритм KeilLoader_NANDСпасибо буду ковырять!!!! Если будут вопросы надеюсь можно спросить?
|
|
|
|
|
Aug 31 2012, 09:13
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 3-04-12
Пользователь №: 71 154

|
Цитата(deeper_79 @ Aug 30 2012, 10:10)  Спасибо буду ковырять!!!! Если будут вопросы надеюсь можно спросить? Еще один вопросик MLC SLC контоллеры, какой включать? Как я понял это разные типы Flash, но в datasheet на микросхему я ничего не нашел(или плохо искал)
|
|
|
|
|
Sep 10 2012, 07:26
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 3-04-12
Пользователь №: 71 154

|
Цитата(AlexandrY @ Aug 31 2012, 14:19)  NAND у вас SLC. Но с ней можно работать и через MLC контроллер, так делает встроенный bootloader. В моем проекте используется SLC контроллер. MLC контроллер имеет более сложный алгоритм исправления ошибок памяти и требует больше памяти на контрольные коды , так как MLC NAND более глючная. Добрый день! Начал работать с MLC контроллером и наткунался на такую проблему код имеет вид: CODE int NAND_read_page(unsigned int blocknum, unsigned int pagenum, unsigned char *databuff ); unsigned char buffer1[518]; int main (void) { P3_OUTP_CLR=(0x01<<20);//низкий уровень на GPO20 выключаем пищалку P3_OUTP_SET=(0x01<<19);//Выской уровень на ноге для снатия Read Only FLASHCLK_CTRL=0x02;//включаем MLC контроллер и подаем тактовую частоту MLC_CMD=Reset; MLC_LOCK_PR=0xA25E; //Разблокируем регистры настройки MLC_ICR=0x04;// Выбор LP устройства MLC_LOCK_PR=0xA25E; //Разблокируем регистры настройки еще раз byte=FLASHCLK_CTRL; MLC_TIME_REG=(0x01<<24)+(0x0B<<19)+(0x03<<16)+(0x09<<12)+(0x02<<2)+(0x02<<4)+(0x01<<1); NAND_read_page(10,1,buffer1); while(1){}; }
вроде все дожно быть просто, делаю инит контроллера, но когда смотрю значения регистров MLC_CMD и всех других относящихся к MLC котроллеру там всегда значение 0х07. Со всеми остальными все ок что пишу то и вижу. Может кто скажет в чем проблема? Может я чего забыл? на всякий случай проект
test_nand_MLC.rar ( 1.39 мегабайт )
Кол-во скачиваний: 67
Сообщение отредактировал IgorKossak - Sep 10 2012, 07:59
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|