2014-01-23 7 views
2

현재 Arduino 플랫폼에서 FreeRTOS 기반 프로그램을 구현 중입니다.FreeRTOS를 Arduino에 이식 MEGA 2560 Rev3 (ATmega2560)

이 프로젝트에서는 Arduino MEGA 2560 Rev3 (ATmega2560을 기반으로 함)을 사용하고 싶지만 작동하는 port.c 파일을 찾을 수 없습니다.

누구나 작동하는 port.c를 공유 할 수 있습니까?

Eclipse IDE, WinAVR, AVR Plugin, Arduino Lib, FreeRTOS 7.6.0 (결국 v8.0.0으로 전환) 및 C++를 주 프로그래밍 언어로 사용하고 있습니다.

감사합니다.

편집 :

내가 ATMEGA2560를위한 FreeRTOS 정적 라이브러리를 생성 avrfreertos 건너 온 적이 있지만 나는 그것에 대하여 내 프로젝트를 연결할 때, 나는 다음과 같은 오류 얻을 :

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 

편집 :

는 내가 연결 문제

,174에 대한 수정을 발견

답변

3

문제당신이 발견 avr6.x하기 위해 변화에 의해 해결됩니다. portmacro.h 파일에는 .task 속성이 포함되어 있습니다.이 속성은 플래시의 아래 부분에서 정의한 freeRTOS 작업을 유지하는 데 필요합니다.

좋은 소식. 최신 avrbinutils 및 avrlibc 1.8.0에는 avr6.x 파일에 추가 한 .task 속성과 유사한 기능을 가진 .lowtext 속성이 포함 된 업데이트가 있습니다.

freeRTOS800 용 포트에서 .lowtext를 가리 키도록 portmacro.h에 정의 된 속성을 변경했습니다. 즉, avr6.x 파일을 더 이상 변경할 필요가 없습니다.

freeRTOS800 포트 AVRfreeRTOS을 사용하도록 변경하거나 portmacro.h에서 직접 변경하십시오.

추가로 AVR 장치에서 freeRTOS 사용 경험을 얻으려면 Arduino에 포함될 수있는 Arduino Library을 만들었습니다.

+0

답장을 보내 주셔서 감사합니다 feilipu :) 저는 freeRTOS800 포트를 사용하고 싶었지만'freeRTOS800_All_Files/freeRTOS800'에 이클립스 프로젝트 파일을 찾지 못하는 것 같습니다. 또한 WinAVR을 사용하고 있기 때문에 최신 avrbinutils 나 avrlibc에 액세스 할 수 없습니다 (Windows 또는 우분투에서 최신 AVR 툴 체인을 찾지 못했습니다). 이제 7.5.0을 고수해야 할 것입니다. . – 865719

+0

괜찮으 시다면, 마지막 질문 2 개를 부탁드립니다. 1. AVRfreeRTOS를 컴파일 할 때 모든 lib_ * 부분을 포함해야합니까? (프로젝트에 "최소"의 freeRTOS를 갖고 싶습니다. 태스크, 시간/지연 함수, 대기열 및 sem/mutexes 만 포함)? 2. 포트 별 파일 (예 :'port.c' 및'portmacro.h') 만 추출하여 공식 FreeRTOS 릴리스에서 사용할 수 있습니까?그렇다면 어떻게 진행할 수 있습니까? (이미 제공된 파일을 사용하려고했지만 "time.h"에 종속성이 있습니다.) – 865719

+0

예 lib_ * 파일의 모든 내용을 삭제할 수 있습니다. 그것들은 부가 가치가 있습니다. time.h 항목은 아직 릴리스되지 않은 avrlibc의 업스트림 버전과 관련이 있습니다. 나는 시스템 클럭 (tick)을 초로 계산하기를 원하기 때문에 port.c에 그것을 빨아 들였다. 따라서 타이머 등을위한 멋진 시간 기반 계산을 할 수있다. – feilipu