В настоящее время я реализую 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
РЕДАКТИРОВАТЬ:
Я нашел исправление для проблемы со связыванием
Ваша проблема решена изменением 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.
Других решений пока нет …