roboforum.ru

Технический форум по робототехнике.

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

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

Drunya » 28 май 2011, 15:39

Есть ли какая-то опция в WinAVR для отключения генерации таблицы векторов прерываний? В avr-libc manual не нашел ничего.

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

Michael_K » 28 май 2011, 16:55

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

Добавлено спустя 7 минут 40 секунд:
по идее нужно переписывать линкер-скрипты и возможно crt0, но в ГЦЦ там черт ногу сломит, в них ковыряться.

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

Drunya » 28 май 2011, 17:52

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

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

P.S. Кстати, в документации на GCC, в разделе "AVR Options" нашел опции -mno-tablejump и -mno-interrupts, но чето они ничего не изменяют, как были вектора так и остались :(

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

Michael_K » 28 май 2011, 21:14

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

http://caxapa.ru/210510.html

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


Rambler\'s Top100 Mail.ru counter