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

 
 
> операции IAP и АРМ2388, Не удается запрограммировать flash-память методом IAP
M0HAX
сообщение Mar 28 2012, 07:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 22-09-08
Пользователь №: 40 378



Привет всем!
Возникла проблема. Почему-то не программируется flash-память с помощью оперции IAP.
Использую стандартный код
Код
#define IAP_LOCATION 0x7ffffff1

unsigned long iap_command[5];
unsigned long iap_result[3];
...........
iap_entry(iap_command, iap_result); // и др.команды


Чтение версии загрузчика с помощью дает нужный результат,т.е. операция срабатывает.
Например, хочу запрограммировать один 7-й сектор:
Код
  iap_command[0] = 50;
  iap_command[1] = 7;
  iap_command[2] = 7;
  iap_entry(iap_command, iap_result);

  iap_command[0] = 51;
  iap_command[1] = 0x7000;
  iap_command[2] = (unsigned long)RAMbuffer;
  iap_command[3] = 4096;                                                                                                
  iap_command[4] = SYS_GetFsclk()/1000;
  iap_entry(iap_command, iap_result);


Перед выполнением этих операций считываю содержимое сектора 7 и выбрасываю через com-порт на терминал
После выполнения каждой операции на комп отправляется результат операции. Получаю код CMD_SUCCESS = 0,т.е. все хорошо, а
затем считываю вновь содержимое сектора 0x7000. Получаю те же самые нули, что и были до программирования,т.е. сектор не запрограммировался...

Не понимаю, что не так...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
M0HAX
сообщение Mar 28 2012, 11:49
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 22-09-08
Пользователь №: 40 378



1. Как я понял, стирать (командой 52) предварительно нет необходимости(но счас попробую), по крайней мере, написано в даташите, что
Цитата
The affected sectors should be prepared first by calling "Prepare Sector for Write Operation" command. The
affected sectors are automatically protected again once the copy command is successfully executed.
Это цитата к команде "IAP Copy RAM to flash command". Т.е. как и показано в начальном посте,сначала выполняю команду 50, потом команду 51.

2. Прерывания запрещал тоже - эффекта не было.

3. "Разрешить запись" - это через CRP? Опять же,возможно, я неправильно понял, но написано,что CRP не влияет на IAP команды.
Код
IAP commands are not affected by the code read protection


-------------------------------
Да,так и есть - после команды 52 запись сработала. Спасибо! Странно,что в даташите не написали,что для записи надо последовательно выполнить 4 команды: 50,52,50,51...

Сообщение отредактировал M0HAX - Mar 28 2012, 12:00
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 29 2012, 01:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(M0HAX @ Mar 28 2012, 17:49) *
Да,так и есть - после команды 52 запись сработала. Спасибо! Странно,что в даташите не написали,что для записи надо последовательно выполнить 4 команды: 50,52,50,51...

По-моему - это очевидно, что перед записью флешку надо предварительно стереть.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 15:27
Рейтинг@Mail.ru


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