このデモはFreeRTOSv10.0.1をRenesas RX64Mマイコン用に移植したものです。2つのポートに接続されたLEDをそれぞれタスクで動作させる簡単なサンプルです。
使用しているハードウェアはメカトロ工房様で販売されている「ルネサスRX64M小型マイコンボード」を使用しています。 E1エミュレータを使用したサンプルですが、JTAGインターフェース基板を自作しています。
なお、ド素人の学生が趣味で作成しています。もしご利用の際はくれぐれも自己責任でお願いします。
参考にさせていただいたもの
https://blog.goo.ne.jp/lm324/e/99f735aef942ce6b965cd2f985acdf73
http://be-con.jp/shiryo/renesas-rx62-freertos-csprj.html
https://www.freertos.org/RX64M_RTOS_Renesas_GCC_e2studio.html
大変参考になりました。ありがとうございました。
文字コードは UTF-8 を使用しています。
- FreeRTOS:v10.0.1 (RX600 RXv2)
- 開発環境:CS+forCC V6.01.00
- コンパイラ:CC-RX V2.08.00 (C99)
- CPUボード:メカトロ工房様 ルネサスRX64M小型マイコンボード
- 搭載CPU:R5F564MLDDFP (100-pin LFQFP,120MHz,RAM 512KB,ROM 4MB+32KB)
- E1エミュレータを使用し、E1インターフェース基板は自作
PORTDのB6を1Hz、B7を5Hzで点滅させる2つのタスクをそれぞれ動かします。
クロック発生回路とポート初期化をスマートコンフィグレータで設定しています。 FreeRTOSではカーネルタイマにコンペアマッチタイマ0(CMT0),コンテキストスイッチにソフトウェア割込み(SWINT)を使用しているので、その周辺機能は使用しないでください。カーネルタイマなどはソース改変すればCMT0以外のタイマも使えるはずです。
自力でFreeRTOSプロジェクトを作るためのメモになります。サンプルコードのmain.c
とApplicationHook.c
は公式サンプルコードを参考に作成しました。
- CS+でプロジェクト新規作成します。ここで自分はビルド設定(CC-RXのプロパティ)で文字コードをUTF-8に変更してしまいますが、SHIFT-JISのままでいけるかどうかは未検証です。ちなみにUTF-8の変更箇所はコンパイル・オプションで2か所、アセンブル・オプションで1か所です。
- スマートコンフィグレータで周辺機能の設定を必要があれば設定してください。ただし、コンペアマッチタイマ(CMT0)、ソフトウェア割込み(SWINT)はFreeRTOS側が使うので何もせずほっといてください。
- サンプルコードのFreeRTOSフォルダ以下をそのままプロジェクトフォルダにコピーしてプロジェクトに登録してください。
- サンプルコードの
ApplicationHook.c
の中身はフック関数類を定義してあります。FreeRTOSConfig.h
でフック関数の有無を設定できますが、取りあえず最小限のものだけ定義してあります。取りあえずこれもファイルごとコピーしてプロジェクトに登録してください。また、必要に応じて自力で関数の追加記述をしてください。 - サンプルコードのmain.cにある
vApplicationSetupTimerInterrupt()
はカーネルタイマの初期設定で必ず必要です。関数を新規のmain.c
にコピーするなり新たにソースファイル作るなり自由に定義してください。 /FreeRTOS/FreeRTOSConfig.h
を目的に合わせて設定してください。- 各ユーザソースファイルで
FreeRTOS.h, task.h, queue.h
など適切なヘッダをインクルードしてください。 - ビルドします。おそらく通る(はず?)。
- 任意でデバッグなどなど楽しんでください。
- ソースコードの文字エンコードに UTF-8 を使用するため、ビルド設定をShift-JISからUTF-8に変更してあります。
- FreeRTOSのメモリ管理ファイルは「heap_1.c」を使用しています。目的に応じて変更してください。
/FreeRTOS/portable/heap_1.c
に置いてあります。