KSN 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба Как с помощью IAR (использую IAR 3.10C) заполнить всю свободную память программ определенным числом? Например, во все свободные ячейки поместить код jmp 0x00(0xC000). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vmp 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба Как с помощью IAR (использую IAR 3.10C) заполнить всю свободную память программ определенным числом? Например, во все свободные ячейки поместить код jmp 0x00(0xC000). Прочитать в xlink.pdf про ключи -H и -h. Поставить в проекте (Options | Linker | Processing) галочку напротив Fill unused memory и нужный код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSN 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба Пробовал, линек прекращает работу с фатальной ошибкой: "Fatal Error[e38]: Option -H must not be defined more than once: -H1895" Что я не доделал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба Пробовал, линек прекращает работу с фатальной ошибкой: "Fatal Error[e38]: Option -H must not be defined more than once: -H1895" Что я не доделал? Скорее всего "переделали". В параметрах линкеру эта опция указана более одного раза. Посмотрите что линкеру идет в параметрах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 19 января, 2007 Опубликовано 19 января, 2007 · Жалоба Очевидно линкеру дано задание заполнять неиспользуемые вектора прерываний инструкциями возврата из прерываний. Это уже заполнитель. Определение заполнителя может быть только одно на проект. Если хотите использовать другой заполнитель, то отключите опцию заполнения неиспользуемых векторов. Если всё таки нужны и возвраты из неиспользуемых прерываний, то пропишите эти функции явно, например: __interrupt void SPI_STC_interrupt() {} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
plombir 0 20 января, 2007 Опубликовано 20 января, 2007 · Жалоба Добавлю к выше сказанному: это определение находится в файлах lnk-----.xcl , которые подключаются при линковании /* Fill unused interrupt vector's with RETI */ -H1895 -h(CODE)0-_..X_INTVEC_SIZE Выход: запретить все подключения и самому создать свой файл .XCL с прописанными настройками линка, и подключить его в свой проект. Пример моего XCL для меги8 config_m8.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSN 0 22 января, 2007 Опубликовано 22 января, 2007 · Жалоба Всем спасибо, заработало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Panych 0 4 февраля, 2008 Опубликовано 4 февраля, 2008 · Жалоба Если хотите использовать другой заполнитель, то отключите опцию заполнения неиспользуемых векторов. А как это сделать? Опции не нашел, а в используемых файлах 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Runner 0 7 июля, 2009 Опубликовано 7 июля, 2009 · Жалоба IAR AVR 5.11b, tiny24, поставил опцию заполнить неиспользованную память нулями, но почему-то генерятся hex файлы (intel-standard), в которых неиспользованные байты в области прерываний просто пропущены (память "порвана"). В проекте также генерится EEPROM hex файл с помощью -О опции в дополнительных командах. Ошибок, предупреждений при компиляции нет. В чем может быть дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться