Юра (09.07.2014 20:12, просмотров: 1) ответил Petrovich на А есть ли в природе FREErtos-порт под ATmega128 или вообще под AVR c флешем больше 64К? Там, как я понимаю по сравнению с mega323 лопатить и лопатить исходники. И RAMPZ и настройки USART... А там еще новые, с 3 байтовыми PC. Короче, геморройно
У меня получилось не слишком много изменений для 128. Делал для 8 версии freeRtos так: 0) Добиться, чтобы оригинальный демо-проект для ATMega323 компилировался без ошибок.
1)В каталогах Demo и Source/Portable/<Компилятор> , то есть там, где есть подкаталоги ATMega323, создал каталоги ATMega128, и перекопировал туда файлы из соответствующих 323-х кристаллов. A у каталогов для 323 изменил имена ну например на ATMega323orig. Это чтобы затем при компиляции демо-проекта повылазили ошибки "Файл не найден", и тогда в проекте сделать Remove этих файлов, и взять их уже из наших новых каталогов от ATMega128.
2) Открыл проект. Поиском по всем файлам нашел и заменил все 323 на 128.
3) Собственно изменения в файлах:
в serial.c, в дифайне serUCSRC_SELECT поставил 0 вместо 0x80.
в port.c в функции pxPortInitialiseStack после сохранения R31 поставил: пару строк pxTopOfStack--; и *pxTopOfStack = ( portSTACK_TYPE ) 0x3B; /* RAMPZ */
в portmacro.s90 в макросе portSAVE_CONTEXT после сохранения R31 поставил пару строк in r0, RAMPZ и st -y, r0
и чуть ниже в макросе portRESTORE_CONTEXT ПЕРЕД возвращением на свое место R31 поставил пару строк ld r0,y+ и out RAMPZ,r0
4) Ну после этого компильнуть, (как сказано в п.1) удалить из проекта те файлы, которые "не найдены" и добавить их же из правильного каталога для меги 128. Ну, и исправить несколько ошибочек в serial.c - там к USART регистрам подставить 0, т.е. UDR будет UDR0, UCSRC будет UСSR0C...
Как-то так. Может, еще кто что добавит.