CSplusでFreeRTOSプロジェクトもどきSample Programを作ってRenesas RX Simulator/TB-RX65Nで試せるようにしてみた

こんにちは。NoMaYです。

別スレッド『e2 studio v7.5.0のFreeRTOS ProjectでVisual Expression+Renesas RX Simulator/TB-RX65Nで試せるSample Programを作ってみた』のサンプルプログラムをCS+で試せるようにしてみました。(ちなみに、今のところ(?)、CS+から起動する単体のRXスマートコンフィグレータにはFreeRTOS KernelコンポーネントやFreeRTOS Objectコンポーネントを設定する機能がありませんので、手作業でソースファイルを編集することになります。) なお、srcフォルダ以下は、基本的に別スレッドのサンプルプログラムのソースファイルと同一ですが、1点だけ差異があります。(下の方のソースの抜粋を参照して下さい。) また、リンク順を同じにしましたので、ビルドしたMOTファイルは別スレッドのサンプルプログラムでビルドしたMOTファイルと同一です。

TB-RX65N用 (以下はe2 studioの時と同じです)

(1) TBボードのLED0を500ms毎にOn/Offする(FreeRTOS APIのvTaskDelay()を使用)
(2) TBボードのSW1押下毎にLED1をOn/Offする(タスクでセマフォ待ちして割り込みでセマフォ待ち解除)
(3) TBボードのSCI1で3文字受信毎に3文字エコーバックする(タスクでセマフォ待ちして割り込みで3文字毎にセマフォ待ち解除)

Renesas RX Simulator用 (以下はVisual Expression→Pythonコンソールで作ったFormとなる点以外はe2 studioの時と同じです)

(1') Pythonコンソールで作ったFormのLED1を50ms(但しシミュレーション上の時間)毎にOn/Offする(上の(1)の括弧内と同様)
(2') Pythonコンソールで作ったFormのSW1押下毎にFormのLED2をOn/Offする(上の(2)の括弧内と同様)
(3') デバッグコンソール⇔SCI1で3文字受信毎に3文字エコーバックする(上の(3)の括弧内と同様)

プロジェクトのファイル一式 (CS+ for CC V8.02+CC-RX V2.03でビルド)
japan.renesasrulz.com/cafe_rene/m/sample_program/435
sim_rx65n_scfg_freertos_fit_ccrx_c_csplus_20190929.zip    745KB
sim_rx65n_scfg_freertos_fit_ccrx_c_csplus_20191019.zip    757KB (主にGNURX版との合わせ込みです)

含まれるプロジェクト
sim_rx65n_scfg_freertos_fit.mtpj ← Renesas RX Simulator用(TB-RX65Nでも動作可(*1,*2))
tb_rx65n_scfg_freertos_fit.mtpj ← TB-RX65N用(*1,*2)

含まれるPythonコンソールスクリプト
sim_rx65n_LED0_LED1_SW1_form.py ← Renesas RX Simulator用(プロジェクトに登録されているので右ボタンメニューから実行)
sim_rx65n_scfg_freertos_fit.py ← Renesas RX Simulator用(プロジェクト読み込み時にCS+により自動的に実行)

*1:以前に別スレッド『RenesasさんからRXマイコンの低価格Target Boardが出たのでサンプルプログラムをCSplus projectへ変換してみようと思います』に投稿したプロジェクトと同じIDコードを設定しています。

*2:実機用のデバッグツールのプロパティは当方特有の事情でオンボードエミュレータが使えない為に未確認です。

e2 studioの時のサンプルプログラムとのsrcフォルダ以下での差異は以下の1点だけです。(赤文字箇所を追加) (なお、単体のRXスマートコンフィグレータで強制的に0で定義されてしまうBSP_CFG_RTOS_USEDは、コンパイラ起動オプション(コマンドラインオプション)で1を定義するようにしてあります。)

src/smc_gen/r_config/r_bsp_config.h

/* This macro lets other modules no if a RTOS is being used.
   0 = RTOS is not used.
   1 = FreeRTOS is used.
   2 = embOS is used.(This is not available.)
   3 = MicroC_OS is used.(This is not available.)
   4 = RI600V4 or RI600PX is used.(This is not available.)
*/
#if !defined(BSP_CFG_RTOS_USED) || (BSP_CFG_RTOS_USED == 0)
#if defined(BSP_CFG_RTOS_USED)
#undef BSP_CFG_RTOS_USED
#endif
#define BSP_CFG_RTOS_USED               (0) /* Generated value. Do not edit this manually */
#endif

以下、画面コピーと写真です。 (写真はe2 studioの時のものと同じです)

Renesas RX Simulatorで実行



TB-RX65Nで実行



[履歴]

sim_rx65n_scfg_freertos_fit_ccrx_c_csplus_20190929.zip
・初版

sim_rx65n_scfg_freertos_fit_ccrx_c_csplus_20191019.zip
・MOTファイルは変わりません
・VOLATILEマクロ追加(GNURX版との合わせ込み)
 変更ファイル: src/smc_gen/r_config/r_bsp_config.h, src/sim_rx65n_int_emulation.c
・machine.hファイル追加(CC-RX版では未使用)(GNURX版との合わせ込み)
 追加ファイル: src/r_bsp_modified/GNURX_support/machine.h
 変更ファイル: src/smc_gen/r_config/r_bsp_config.h
・GNURX版でのワーニング対処の反映(GNURX版との合わせ込み)
 変更ファイル: src/smc_gen/r_pincfg/Pin.c
・実機用のデバッグツールのプロパティを設定(当方特有の事情でオンボードエミュレータが使えない為に未確認です)
 変更ファイル: sim_rx65n_scfg_freertos_fit.mtpj