Портирование FreeRTOS на Arduino MEGA 2560 Rev3 (ATmega2560)

В настоящее время я реализую FreeRTOS-основанная программа на платформе Arduino.

Я хотел бы использовать Arduino MEGA 2560 Rev3 (который основан на ATmega2560) для этого проекта, но я не смог найти рабочий файл port.c.

Может ли кто-нибудь поделиться, пожалуйста, рабочим port.c?

Я использую Eclipse IDE, WinAVR, Плагин AVR, Arduino Lib, FreeRTOS 7.6.0 (я со временем переключусь на v8.0.0) и C ++ в качестве основного языка программирования.

Благодарю.

РЕДАКТИРОВАТЬ:

Я сталкивался avrfreertos которая генерирует статическую библиотеку FreeRTOS для ATmega2560, но когда я связываю свой проект с ней, я получаю следующую ошибку:

c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: section .task [00003282 -> 0000328f] overlaps section .data [00003282 -> 0000339d]
make: *** [MY_PROJECT_NAME.elf] Error 1

РЕДАКТИРОВАТЬ:

Я нашел исправление для проблемы со связыванием

2

Решение

Ваша проблема решена изменением avr6.x, как вы нашли. В файл portmacro.h включен атрибут .task, который необходим для сохранения заданной вами задачи freeRTOS в нижней части флэш-памяти.

Хорошие новости. В последних версиях avrbinutils и avrlibc 1.8.0 есть некоторые обновления, включающие атрибут .lowtext, который имеет функциональность, аналогичную атрибуту .task, который я добавил в файл avr6.x.

В порте для freeRTOS800 я изменил атрибут, определенный в portmacro.h, чтобы он указывал на .lowtext. Это означает, что больше нет необходимости изменять файл avr6.x.

Либо измените использование порта freeRTOS800 AVRfreeRTOS или просто внесите изменения в portmacro.h самостоятельно.

Для дальнейшего использования я сделал Библиотека Ардуино это может быть включено в Arduino, чтобы получить опыт работы с freeRTOS на любом устройстве AVR.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]