Как в WinAVR не создавать таблицу векторов прерываний?

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Как в WinAVR не создавать таблицу векторов прерываний?

Сообщение Drunya » 28 май 2011, 15:39

Есть ли какая-то опция в WinAVR для отключения генерации таблицы векторов прерываний? В avr-libc manual не нашел ничего.
Глюк по-немецки означает "счастье"...
Аватара пользователя
Drunya
 
Сообщения: 196
Зарегистрирован: 05 июн 2007, 12:20
Откуда: Киев
прог. языки: C/C++, ASSEMBLER

Re: Как в WinAVR не создавать таблицу векторов прерываний?

Сообщение Michael_K » 28 май 2011, 16:55

А с чем связана такая странная задача?

Добавлено спустя 7 минут 40 секунд:
по идее нужно переписывать линкер-скрипты и возможно crt0, но в ГЦЦ там черт ногу сломит, в них ковыряться.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Как в WinAVR не создавать таблицу векторов прерываний?

Сообщение Drunya » 28 май 2011, 17:52

Michael_K писал(а):А с чем связана такая странная задача?

С тем, что прерывания не использую и захотелось высвободить лишних 3 десятка байт, которые в тиньке с 1К слов лишними не будут :)

P.S. Кстати, в документации на GCC, в разделе "AVR Options" нашел опции -mno-tablejump и -mno-interrupts, но чето они ничего не изменяют, как были вектора так и остались :(
Глюк по-немецки означает "счастье"...
Аватара пользователя
Drunya
 
Сообщения: 196
Зарегистрирован: 05 июн 2007, 12:20
Откуда: Киев
прог. языки: C/C++, ASSEMBLER

Re: Как в WinAVR не создавать таблицу векторов прерываний?

Сообщение Michael_K » 28 май 2011, 21:14

три десятка байт проще высвободить ручной оптимизацией
-mno-interrupts судя по описанию это оно, но...

http://caxapa.ru/210510.html
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Как в WinAVR не создавать таблицу векторов прерываний?

Сообщение Drunya » 29 май 2011, 11:33

Решилось таким образом:
1) отключаем компиляцию стандартных файлов в опциях линкера -nostartfiles
2) правим файл gcrt1.S из исходников avr-libc: убираем все, что связано с__vector_X и __bad_interrupt
3) исправленный gcrt1.S вместе с macros.inc и sectionname.h добавляем в свой проект
4) говорят, для уменьшения кода можно добавить -mno-interrupts
Глюк по-немецки означает "счастье"...
Аватара пользователя
Drunya
 
Сообщения: 196
Зарегистрирован: 05 июн 2007, 12:20
Откуда: Киев
прог. языки: C/C++, ASSEMBLER


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18