3

現在、Arduino プラットフォームにFreeRTOSベースのプログラムを実装しています。

このプロジェクトにArduino MEGA 2560 Rev3 (ATmega2560 ベース)を使用したいのですが、動作するport.cファイルが見つかりませんでした。

誰かが作業中の port.c を共有してもらえますか?

Eclipse IDE、WinAVRAVR PluginArduino 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

編集:

リンクの問題の修正を見つけました

4

1 に答える 1

3

あなたの問題は、あなたが見つけた avr6.x への変更によって解決されます。portmacro.h ファイルには .task 属性が含まれています。これは、定義した freeRTOS タスクをフラッシュの下部に保持するために必要です。

朗報です。最新の avrbinutils と avrlibc 1.8.0 には、avr6.x ファイルに追加した .task 属性と同様の機能を持つ .lowtext 属性を含むいくつかの更新があります。

freeRTOS800 のポートでは、portmacro.h で定義されている属性を .lowtext を指すように変更しました。これは、avr6.x ファイルを変更する必要がなくなったことを意味します。

freeRTOS800 ポートAVRfreeRTOSを使用するように変更するか、自分で portmacro.h を変更してください。

さらに参考までに、任意の AVR デバイスで freeRTOS を体験できるように、Arduino に含めることができるArduino ライブラリを作成しました。

于 2014-01-26T01:00:55.880 に答える