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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> как работать с IAP?
Сергей Борщ
сообщение Feb 24 2009, 18:32
Сообщение #31


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Denisvak @ Feb 24 2009, 18:26) *
будут ли корректно работать прерывания?
При возникновении исключения процессор переходит на адреса 0-0x3f. Куда вы положите вектора - ему все равно. Он будет переходить по заложенным в него железно адресам 0...0x3f. Один из возможных вариантов решения вашей проблемы - remap. Читайте про него в документации на ARM7 и ищите по форуму.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
TanT
сообщение Feb 26 2009, 05:05
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Вопрос в продолжении темы IAP: команда 56 - сравнение секторов. насколько быстро и надёжно всё это происходит, например, для сектора в 4кб? Вообще, в принципе какая вероятность записать с ошибкой сектор по IAP?


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
etoja
сообщение Feb 26 2009, 07:21
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(TanT @ Feb 26 2009, 08:05) *
Вопрос в продолжении темы IAP: команда 56 - сравнение секторов. насколько быстро и надёжно всё это происходит, например, для сектора в 4кб? Вообще, в принципе какая вероятность записать с ошибкой сектор по IAP?


Записывайте в конец сектора свою 32-битную контрольную сумму.
Go to the top of the page
 
+Quote Post
TanT
сообщение Feb 26 2009, 07:52
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Если сравнение гарантирует 100% выявление ошибок, то за чем лишнии действия? Однако, кто ответит что быстрее и надёжнее - вычисление 32-битной(16-битной) контрольной суммы или стандартная операция сравнения IAP?


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 26 2009, 11:05
Сообщение #35


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(TanT @ Feb 26 2009, 10:52) *
Если сравнение гарантирует 100% выявление ошибок, то за чем лишнии действия? Однако, кто ответит что быстрее и надёжнее - вычисление 32-битной(16-битной) контрольной суммы или стандартная операция сравнения IAP?

а у IAP есть операция сравнения? Сравнивать надо самим, благо весь флеш доступен на чтение.
Контрольную сумму вычислять вообще смысла нет! Потому что все равно надо будет считывать все данные, чем производить с ними операции проще сравнить с оригиналом. Да и скорость обработки данных не сопоставима со скоростью их передачи для прошивки и временем прошивки.
Go to the top of the page
 
+Quote Post
etoja
сообщение Feb 26 2009, 16:12
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Контрольная сумма нужна обязательно, поскольку в момент программирования может выключиться питание прибора.
Но это - для профессионального оборудования.
Go to the top of the page
 
+Quote Post
Denisvak
сообщение Feb 26 2009, 17:02
Сообщение #37


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

Группа: Участник
Сообщений: 141
Регистрация: 7-03-06
Из: Санкт-Петербург
Пользователь №: 15 038



Цитата(TanT @ Feb 26 2009, 10:52) *
Если сравнение гарантирует 100% выявление ошибок, то за чем лишнии действия? Однако, кто ответит что быстрее и надёжнее - вычисление 32-битной(16-битной) контрольной суммы или стандартная операция сравнения IAP?


Какая-то у вас тяга к быстрым вычислениям smile.gif Для чего?
Go to the top of the page
 
+Quote Post
TanT
сообщение Mar 2 2009, 06:16
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Цитата
Контрольная сумма нужна обязательно, поскольку в момент программирования может выключиться питание прибора.
Но это - для профессионального оборудования.

контрольная сумма будет обязательно будет, точнее она есть (16). И данные будут записываться уже достоверные, то есть требуется сличить записанные и записываемые данные. Совет KRS я считаю правильным и не пременно им воспользуюсь. Уцепился сразу за эту команду сравнения IAP, казалось что специально написанная функция должна быть оптимизированна и прочее smile.gif

Цитата
Какая-то у вас тяга к быстрым вычислениям Для чего?

Кроме записи по IAP много чего ещё должно работать, и запись далеко не приоритетная задача, и чем меньше времени она будет крутиться тем лучше. Вообще запись данных требуется проводить не заметно для остальных процессов, что сильно затрудняет обязательное требование запрета прерываний. Поэтому и стараюсь точно определить все временные рамки и по возможности их минимизировать, в частности на проверку данных. Большие трудности создаёт возможность неудачной записи (вероятность ошибки, думаю, никому неизвестна) 400 мс для стирания и повторной записи у меня нет.


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
etoja
сообщение Mar 2 2009, 08:04
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(TanT @ Mar 2 2009, 09:16) *
Большие трудности создаёт возможность неудачной записи (вероятность ошибки, думаю, никому неизвестна) 400 мс для стирания и повторной записи у меня нет.


Неудачная запись по вине процессора никогда не встречалась.
По вине пропадания питания в момент записи - возможна.
Запись во внутреннюю память процессора - монопольный процесс. Если это не устраивает - используйте внешнюю FRAM.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Mar 2 2009, 09:56
Сообщение #40


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(TanT @ Mar 2 2009, 08:16) *
Вообще запись данных требуется проводить не заметно для остальных процессов, что сильно затрудняет обязательное требование запрета прерываний.

Запрет прерываний - требование не обязательное. Обязательное требование - отсутствие доступа к Flash. Прерывания могут спокойно работать в RAM.
Цитата
The on-chip flash memory is not accessible during erase/write operations. When the user
application code starts executing the interrupt vectors from the user flash area are active.
The user should either disable interrupts, or ensure that user interrupt vectors are active in
RAM and that the interrupt handlers reside in RAM, before making a flash erase/write IAP
call. The IAP code does not use or disable interrupts.
Go to the top of the page
 
+Quote Post
TanT
сообщение Mar 2 2009, 12:23
Сообщение #41


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Цитата
Запрет прерываний - требование не обязательное. Обязательное требование - отсутствие доступа к Flash. Прерывания могут спокойно работать в RAM.
угу, читал. для меня обязательное unsure.gif


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
Denisvak
сообщение Mar 3 2009, 20:15
Сообщение #42


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

Группа: Участник
Сообщений: 141
Регистрация: 7-03-06
Из: Санкт-Петербург
Пользователь №: 15 038



Сергей Борщ и etoja
Спасибо Вам за помощь все работает smile.gif
Go to the top of the page
 
+Quote Post
vesago
сообщение Mar 15 2009, 17:31
Сообщение #43


Тутэйшы
****

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



Прошу совета по сабжу. Я использую LPC2214. C 0 по 0x1FFF расположен загрузчик, с 0x2000 приложение. Все работате отлично. Решил я написать приложение, которое будет обновлять загрузчик. То есть образ нового загрузчика расположен по адресу 0x6000. После заливки, это приложение через IAP должно стереть сектор где расположен старый загрузчик, т.е. сектор 0 и скопировать туда образ нового загрузчика с адреса 0x6000. При отладке я пробовал копировать в область с адресом 0x8000 - проблем не было. В боевом варианте после стирания сектора 0 система зависает. Если посмотреть память флэш меджиком, видно что сектор 0 стерт. Почему система отваливается, ума не приложу. Вроде все сконфигурировано правильно - в опциях кейла и стартапе задал, что прошивка начинается с адреса 0x2000. Может есть какие-то особенности IAP - типа клинит соседний сектор? JTAG смотрел - показалось, что коллапс наступает после восстановления прерываний.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Mar 15 2009, 18:02
Сообщение #44


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Ну дык если стёрли нулевой сектор, то стёрли и вектора прерываний по адресам 00-3f. Либо делайте ремап на ОЗУ (заполнив вектора 0x40000000-0x4000001f) и уже потом разрешайте прерывания, либо не разрешайте прерывания вообще до окончательной перезаписи нулевого сектора.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
vesago
сообщение Mar 15 2009, 18:10
Сообщение #45


Тутэйшы
****

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



Я думал, что если начало прошивки сконфигурировано с адреса 0x2000, то и вектора там же. А как же она работает в обычном режиме? Там же сидит загрузчик как отдельное приложение. Получается для ремапа, мне нужно в начало рамы копирнуть область векторов с 0 флеши и задать ремап?
Go to the top of the page
 
+Quote Post

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

 


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


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