Как добавить архитектуру, доступную в новой версии gcc, к старой версии gcc? - PullRequest
0 голосов
/ 19 марта 2019

Я хочу добавить архитектуру Atmega1281 в мою текущую версию gcc, которую я использую, т.е. v3.3. Atmega1281 не поддерживается в v3.3, а его поддержка добавлена ​​в v4.2.1.

Я не могу обновить gcc до 4.2.1, поэтому мне нужно добавить поддержку моего существующего компилятора.

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Чтобы добавить архитектуру, три вещи должны быть обновлены,

  1. gcc - НКУ \ Config \ АРН \ avr.c, НКУ \ Config \ АРН \ avr.h, gcc \ config \ avr \ t-avr,

  2. Binutils - газ \ дц-avr.c

  3. avr-libc - АРН \ io.h, настроить, configure.in, И файл заголовка изменяется.

0 голосов
/ 22 марта 2019

Вам не нужно обновлять GCC (я предполагаю, что вы фактически используете AVR-GCC для генерации машинного кода, специфичного для AVR ...). Все чипы AVR используют одинаковое ядро ​​AVR и набор команд. Единственное, что меняется от одного чипа к другому, - это размеры памяти, адреса регистров и доступность периферийных устройств.

Вам может необходимо обновить AVRlibc , если вы используете эти основные библиотеки, и вам нужно будет добавить конфигурации устройств для такой утилиты программирования, как avrdude .

Вы должны обновить заголовки ядра, которые определяют местоположения регистров, если только вы не определяете свои собственные указатели на необработанные адреса памяти (например, босс). Это можно найти в пакетах Atmel , в частности в поддержке устройств Atmega.


Когда вы включаете io.h в свой проект, он вытягивает специфичные для устройства определения с хорошо определенными указателями в память для доступа к конфигурации периферийных устройств и регистрам данных. Это работает, только если вы передаете используемое устройство в качестве специального определения в вашей команде компиляции. Если вы используете стандартный шаблон Makefile, устройство - это одна из вещей, которую вы редактируете, и она обрабатывает эти команды. Аналогично, IDE, например Atmel Studio, спросит, какое устройство вы используете, и сгенерирует Makefile для вас.


Но не принимайте это от меня, вот соответствующая информация из AVR-GCC wiki в разделе, озаглавленном Поддержка "неподдерживаемых" устройств .

Когда вы вводите код в компилятор и компилируете для определенного устройство, компилятор будет заботиться только о соответствующем ядре; это не будет заботиться о точном устройстве. Для компилятора не имеет значения, сколько Выводы ввода / вывода устройства, при каком напряжении оно работает, сколько оперативной памяти представьте, сколько таймеров или UART на кремнии или в каком пакет отправлен. Единственное, что делает компилятор -mmcu = устройство для встроенного определения определенного макроса и для вызова компоновщика определенным образом, то есть драйвер компилятора ведет себя немного иначе, но подинструменты, такие как собственно компилятор и ассемблер генерировать точно такой же код.

Таким образом, вы можете поддержать свое устройство, установив эти параметры вручную.

Итак, если по какой-либо причине вы не можете обновить AVR-GCC, вы все равно можете скомпилировать устройство, указав компоновщику вручную, где искать материал и указав правильные включения из дерева io.h.

В вики также даны дополнительные инструкции о том, как это сделать.

...