Точка опоры (28.10.2013 23:16, просмотров: 47) ответил fk0 на Как в gcc положить код в определённую секцию? Оптом и желательно без модификации исходников (дописывания __attribute__("section")).
Для непрофессиональных контроллеров семейства AVR сделал через makefile: # Загрузчик - в начале памяти сидит и "отражает" таблицу прерываний
# начиная с адреса (словного) 0x160. Также - имеется пять точек входа:
# в автомат загрузчика - waitcmd;
# в настройку программного УАПП - u_init;
# в функцию ожидания готовности передатчика (дублируется битом и прерыванием
# OCF0A) - TXcomplete;
# в функции приёма и инициации передачи байта - putc и getc.
# Оригинальная конструкция вместо 0x0160 такова (значение boot_end и пр.
# также см. в h-файле): boot_end+PAGESIZE-(boot_end%PAGESIZE)
LDFLAGS += -Ttext 0x02C0
LDFLAGS += -Wl,--defsym=IAP_call=....
LDFLAGS += -Wl,--defsym,IAP_UART_init=....
LDFLAGS += -Wl,--defsym=IAP_UART_TXcomplete=....
LDFLAGS += -Wl,--defsym=IAP_UART_put_byte=....
LDFLAGS += -Wl,--defsym=IAP_UART_get_byte=....
К началу памяти ATtiny "гвоздями прибит" загрузчик на ассемблере. Написанный на Си код размещается сразу после него (выровнен кратно PAGESIZE).
1. Изо всех сил стараюсь не кормить троллей.
2. Продаю импортные ЭК - https://shop.fulcrum.ru/buy