kern-gt / Demo_FreeRTOS_v10.1.1_for_Renesas_RX65N_with_CSplus_CC-RX

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FreeRTOS Ver10.1.1 DemoProject for Renesas RX65N (CS+,CC-RX)

LED点滅サンプルVer1.00

このデモはFreeRTOSv10.1.1をRenesas RX65Nマイコン用に移植したものです。評価ボード上の2つのLEDを2タスクでLチカするだけの簡単なサンプルです。そのままビルドしてデバッグモードで動きます。

2018年春にルネサスから発売されたTarget Board for RX family(RX65N)を手に入れたのでFreeRTOSを動かしてみました。 秋葉原のマルツで2,980円(税抜き)で売られています。デバッガのE2Liteがボード上に搭載されてこの値段は安いと思います。

なお、素人の学生が趣味で作成したものですので、もしご利用の際はくれぐれも自己責任でお願いします。

参考にさせていただいたもの
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.1.1 (RX600 RXv2)
  • 開発環境:CS+forCC V7.00.00
  • コンパイラ:CC-RX V2.08.00 (C99)
  • CPUボード:TARGET BOARD for RX65N (RTK5RX65N0C00000BR)
  • CPU(ボード上):R5F565NEDDFP (100-pin LFQFP,120MHz,RAM 640KB,ROM 2MB+32KB)
  • "エミュレータ"(ボード上) "E2エミュレータLite":CS+環境ではデバッグに使用できました。E2Liteとして認識しますが、ドキュメントの方では「エミュレータ」としか書いてないので厳密にはE2Liteではないようです(チップの見た目はRX231?)。また、RFPv3.05以降によるプログラム書き込みは可能です。

サンプルコード内容

CPUボード上のLED0(PD6)を1Hz、LED1(PD7)を5Hzで点滅させる2つのタスクを動かします。

クロック発生回路とポート初期化をスマートコンフィグレータで設定しています。 FreeRTOSではカーネルタイマにコンペアマッチタイマ0(CMT0),コンテキストスイッチにソフトウェア割込み(SWINT)を使用しているので、その周辺機能は使用しないでください。カーネルタイマなどはソース改変すればCMT0以外のタイマも使えるはずです。

プロジェクト作成法

自力でFreeRTOSプロジェクトを作るためのメモになります。サンプルコードのmain.cApplicationHook.cは公式サンプルコードを参考に作成しました。

  1. CS+でプロジェクト新規作成します。ここで自分はビルド設定(CC-RXのプロパティ)で文字コードをUTF-8に変更してしまいますが、SHIFT-JISのままでいけるかどうかは未検証です。ちなみにUTF-8の変更箇所はコンパイル・オプションで2か所、アセンブル・オプションで1か所です。
  2. スマートコンフィグレータで周辺機能の設定を必要があれば設定してください。このデモでは自動コード生成のPORT設定でLED端子を出力にしています。ただし、コンペアマッチタイマ(CMT0)、ソフトウェア割込み(SWINT)はFreeRTOS側が使うので何もせずほっといてください。ただし、CMT0はRTOSにとってのカーネルタイマとなります。CMT0の供給クロックPCLKB=60MHzを前提としていますので、これ以外の周波数に変更する際はCMT0の再設定をしてください。なお、FreeRTOSは起動時にユーザ側にCMT0の設定をする処理を要求してきます。main.c内のvApplicationSetupTimerInterrupt()でCMT0の初期設定を行っていますので、そちらを参考にしてください。
  3. サンプルコードのFreeRTOSフォルダ以下をそのままプロジェクトフォルダにコピーしてからプロジェクトに登録してください。IDEのプロジェクトツリーにフォルダごとドラッグ&ドロップして出てきたダイアログの階層を10とかに増やしてあげれば登録が楽です。
  4. サンプルコードのApplicationHook.cの中身はフック関数類を定義してあります。FreeRTOSConfig.hでフック関数の有無を設定できますが、取りあえず最小限のものだけ定義してあります。取りあえずこれもファイルごとコピーしてプロジェクトに登録してください。また、必要に応じて自力で関数の追加記述をしてください。
  5. サンプルコードのmain.cにあるvApplicationSetupTimerInterrupt()はカーネルタイマの初期設定で必ず必要です。関数を新規のmain.cにコピーするなり新たにソースファイル作るなり任意の場所に定義してください。
  6. /FreeRTOS/FreeRTOSConfig.hを目的に合わせて設定してください。
  7. 各ユーザソースファイルでFreeRTOS.h, task.h, queue.hなど適切なヘッダをインクルードしてください。
  8. ビルドします。おそらく通るはずです。
  9. 任意でデバッグなどなど楽しんでください。

注意点

  • ソースコードの文字エンコードに UTF-8 を使用するため、ビルド設定をShift-JISからUTF-8に変更してあります。
  • FreeRTOSのメモリ管理ファイルは「heap_1.c」を使用しています。目的に応じて変更してください。/FreeRTOS/portable/heap_1.cに置いてあります。

About

License:MIT License


Languages

Language:C 93.9%Language:C++ 5.3%Language:Objective-C 0.8%