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

 
 
 
Reply to this topicStart new topic
> Заполнение памяти программ определенным значением, Как реализовать в IAR?
KSN
сообщение Jan 18 2007, 12:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Как с помощью IAR (использую IAR 3.10C) заполнить всю свободную память программ определенным числом? Например, во все свободные ячейки поместить код jmp 0x00(0xC000).
Go to the top of the page
 
+Quote Post
vmp
сообщение Jan 18 2007, 14:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Цитата(KSN @ Jan 18 2007, 12:16) *
Как с помощью IAR (использую IAR 3.10C) заполнить всю свободную память программ определенным числом? Например, во все свободные ячейки поместить код jmp 0x00(0xC000).


Прочитать в xlink.pdf про ключи -H и -h.

Поставить в проекте (Options | Linker | Processing) галочку напротив Fill unused memory и нужный код.
Go to the top of the page
 
+Quote Post
KSN
сообщение Jan 18 2007, 14:46
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Пробовал, линек прекращает работу с фатальной ошибкой:
"Fatal Error[e38]: Option -H must not be defined more than once: -H1895"
Что я не доделал?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jan 18 2007, 15:37
Сообщение #4


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(KSN @ Jan 18 2007, 14:46) *
Пробовал, линек прекращает работу с фатальной ошибкой:
"Fatal Error[e38]: Option -H must not be defined more than once: -H1895"
Что я не доделал?

Скорее всего "переделали". В параметрах линкеру эта опция указана более одного раза. Посмотрите что линкеру идет в параметрах.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 19 2007, 11:40
Сообщение #5


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Очевидно линкеру дано задание заполнять неиспользуемые вектора прерываний инструкциями возврата из прерываний. Это уже заполнитель.
Определение заполнителя может быть только одно на проект.
Если хотите использовать другой заполнитель, то отключите опцию заполнения неиспользуемых векторов.
Если всё таки нужны и возвраты из неиспользуемых прерываний, то пропишите эти функции явно, например:
Код
__interrupt void SPI_STC_interrupt() {}
Go to the top of the page
 
+Quote Post
plombir
сообщение Jan 20 2007, 10:06
Сообщение #6


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

Группа: Участник
Сообщений: 99
Регистрация: 14-12-05
Пользователь №: 12 191



Добавлю к выше сказанному:
это определение находится в файлах lnk-----.xcl , которые подключаются при линковании
Цитата
/* Fill unused interrupt vector's with RETI */
-H1895
-h(CODE)0-_..X_INTVEC_SIZE

Выход: запретить все подключения и самому создать свой файл .XCL с прописанными настройками линка, и подключить его в свой проект.

Пример моего XCL для меги8
Прикрепленный файл  config_m8.zip ( 877 байт ) Кол-во скачиваний: 216
Go to the top of the page
 
+Quote Post
KSN
сообщение Jan 22 2007, 07:14
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Всем спасибо, заработало.
Go to the top of the page
 
+Quote Post
Panych
сообщение Feb 4 2008, 12:50
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 335
Регистрация: 17-06-04
Из: Москва
Пользователь №: 35



Цитата(IgorKossak @ Jan 19 2007, 14:40) *
Если хотите использовать другой заполнитель, то отключите опцию заполнения неиспользуемых векторов.

А как это сделать?
Опции не нашел, а в используемых файлах cfgtiny26.xcl и cfg0t.xcl опции "-H" нет...


ответил IgorKossak:
Эта опция неявно присутствует если установлена галочка General Options->System->Initialize unused interrupt vectors with RETI instructions (-H1895).
Уберите эту галочку и вставьте в файл линкера свою опцию заполнения.
При этом, если надо, команды возврата из незадействованых прерываний нужно обеспечить вручную написав обработчики прерываний с пустыми телами.

Источник тут:
http://electronix.ru/forum/index.php?showt...mp;#entry359789


--------------------
Всегда не хватает времени, чтобы выполнить работу как надо, но на то, чтобы ее переделать, время находится. (Закон Мескимена.)
Go to the top of the page
 
+Quote Post
Runner
сообщение Jul 7 2009, 18:42
Сообщение #9


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

Группа: Свой
Сообщений: 107
Регистрация: 18-06-05
Пользователь №: 6 117



IAR AVR 5.11b, tiny24, поставил опцию заполнить неиспользованную память нулями, но почему-то генерятся hex файлы (intel-standard), в которых неиспользованные байты в области прерываний просто пропущены (память "порвана"). В проекте также генерится EEPROM hex файл с помощью -О опции в дополнительных командах. Ошибок, предупреждений при компиляции нет. В чем может быть дело?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:05
Рейтинг@Mail.ru


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