2014-01-23 3 views
2

В настоящее время я реализую программу на платформе Arduino на основе FreeRTOS.Портирование FreeRTOS на Arduino MEGA 2560 Rev3 (ATmega2560)

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

Не могли бы вы поделиться рабочим портом.c?

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

Спасибо.

EDIT:

Я наткнулся 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 

EDIT:

Я нашел исправление проблемы связующей

ответ

3

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

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

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

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

Для получения дополнительной информации я сделал Arduino Library, который может быть включен в Arduino, чтобы получить опыт работы с freeRTOS на любом устройстве AVR.

+0

Спасибо за ответ feilipu :) Я хотел использовать порт freeRTOS800, но я, кажется, не нашел файлы проекта eclipse в 'freeRTOS800_All_Files/freeRTOS800'. Кроме того, поскольку я использую WinAVR, у меня нет доступа к последним avrbinutils или avrlibc (я не нашел никаких последних AVR toolchain на windows или ubuntu), поэтому я должен буду придерживаться 7.5.0 на данный момент , – 865719

+0

Если у вас все в порядке, я хотел бы задать вам 2 последних вопроса: 1. Нужно ли включать все части 'lib_ *' при компиляции AVRfreeRTOS (я хотел бы иметь «минимальный» freeRTOS в моем проекте , только с задачами, функциями времени/задержки, очередями и sem/mutexes)? 2. Можно ли извлекать только файлы, зависящие от порта (например, 'port.c' и' portmacro.h') и использовать их с официальной версией FreeRTOS?И если да, то как я продолжу? (Я уже пытался использовать предоставленные вами файлы, но у них были зависимости от «time.h») – 865719

+0

Да, все файлы lib_ * можно удалить. Они добавлены. Материал time.h относится к восходящей версии avrlibc, которая еще не выпущена. Я втянул его в порт.c, потому что хочу иметь системные часы (галочки), отсчитывающие секунды, и, следовательно, мог бы делать небольшие расчеты времени для таймеров и т. Д. – feilipu