C++ 将FreeRTOS移植到Arduino MEGA 2560 Rev3(ATmega2560)

C++ 将FreeRTOS移植到Arduino MEGA 2560 Rev3(ATmega2560),c++,c,arduino,atmega,freertos,C++,C,Arduino,Atmega,Freertos,我目前正在Arduino平台上实施一个基于Web的程序 我想在此项目中使用(基于),但找不到工作端口.c文件 有人能共用一个工作端口吗 我使用Eclipse IDE,FRIERTOS 7.7.0(我最终切换到V0.0.0)和C++作为主要编程语言。 谢谢 编辑: 我遇到了一个为ATmega2560生成FreeRTOS静态库的程序,但是当我将我的项目与它链接时,我得到了以下错误: c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr

我目前正在Arduino平台上实施一个基于Web的程序

我想在此项目中使用(基于),但找不到工作端口.c文件

有人能共用一个工作端口吗

我使用Eclipse IDE,FRIERTOS 7.7.0(我最终切换到V0.0.0)和C++作为主要编程语言。 谢谢

编辑:

我遇到了一个为ATmega2560生成FreeRTOS静态库的程序,但是当我将我的项目与它链接时,我得到了以下错误:

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属性,该属性用于保存您在flash下部定义的freeRTOS任务

好消息。最新的avrbinutils和avrlibc 1.8.0中有一些更新,其中包括一个.lowtext属性,该属性的功能与我添加到avr6.x文件中的.task属性类似

在freeRTOS800的端口中,我将portmacro.h中定义的属性更改为指向.lowtext。这意味着不再需要更改avr6.x文件

或者,更改为使用freeRTOS800端口,或者自己在portmacro.h中进行更改


为了进一步参考,我做了一个可以包含在Arduino中的示例,以获得在任何AVR设备上使用freeRTOS的经验

感谢您回复feilipu:)我想使用freeRTOS800端口,但在
freeRTOS800\u All\u files/freeRTOS800
中似乎找不到eclipse项目文件。另外,因为我使用的是WinAVR,所以我无法访问最新的avrbinutils和avrlibc(我在windows或ubuntu上没有找到任何最新的AVR工具链),所以我现在只能使用7.5.0。如果你同意的话,我想问你最后两个问题:1。编译AVRfreeRTOS时是否需要包含所有
lib.*
部分(我希望在我的项目中有一个“最小”的freeRTOS,只包含任务、时间/延迟函数、队列和sem/互斥体)?2.是否可以仅提取特定于端口的文件(即
port.c
portmacro.h
),并将其与FreeRTOS官方版本一起使用?如果是这样,我将如何进行?(我已经尝试使用您提供的文件,但它们依赖于“time.h”)是的,可以删除lib_*文件中的所有内容。它们是附加值。h内容与尚未发布的avrlibc上游版本相关。我把它吸进了端口.c,因为我想让系统时钟(滴答声)以秒为单位,因此可以对计时器等进行一些基于时间的计算。如果你想回到时间,从sourceforge获得freeRTOS730_All_Files.zip,我想这是在时间.h之前的东西。只需对剩余的文件进行一次区分,查看要从port.c和portmacro.h中删除什么。freeRTOS实际上只是您注意到的几个文件。我添加的只是一些扩展,它们使我的生活更容易处理不同的硬件。您只需要您提到的文件、文件的包含、文件头、内存管理(每次只有一个文件处于活动状态)以及可移植文件port.c和portmacro.h到工具链。如果您使用Ubuntu作为开发平台,那么就有可能对debian Sid存储库进行raid以获取好的东西。目前所有这些都在Ubuntu LTS上运行良好。