FreeRTOSのRL78のsample programを作成していこうかと思います(RL78/G13,G14の他にRL78/G23もやろうかと思います)

こんにちは。NoMaYです。

今までちょこちょことRL78ポートレイヤを改造していると書いてましたが、サンプルプログラム(もっとも今のところRL78/G14のドライバ層のみです)も作成していたりします。既作成分はGitHubの以下のリポジトリにおいてあります。今日、RL78/G23が発表されましたので、RL78/G23のサンプルプログラムもこのリポジトリに追加していこうかと思っています。(あと、RX23Wも追加していこうかと思っています。)

github.com/NoMaY-jp/FreeRTOS_examples_for_Renesas_R_CPUs

なお、このリポジトリで使用しているポートレイヤはFreeRTOS公式リポジトリのポートレイヤから改造しています。(RL78だけでなくRXも改造しています。)

RL78ポートレイヤ改造概要

(1) タスクスタックとは別に割り込み専用スタックを使用することが可能
(2) カーネル内(とユーザタスク内)のクリティカルセクションの実行中も(多重)割り込みを受け付けることが可能(FreeRTOS APIの呼び出しは不可)
(3) 従来のコード生成機能で生成した割り込み処理Cソース中からFreeRTOS APIの呼び出しが可能(RL78スマートコンフィグレータは今後調査します)

今のところ以下のフォルダがありますが、チョコさんのUARTリングバッファ/簡易IICマスタ/IICAマスタのサンプルプログラムのソースを殆どそのままに近い形で使わせて頂いているものもあります。

13_RTOSDemo
20_UART_9600bps_Basic
26_UART_2Mbps_Tx_DTC_Rx_RingBuffer ← チョコさんのUARTリングバッファのソースを使用
30_I2C_Simple_Master_100Kbps_Basic
31_I2C_Simple_Master_100Kbps_Advanced ← チョコさんの簡易IICマスタのソースを使用
32_I2C_Simple_Master_1Mbps_Basic
33_I2C_Simple_Master_1Mbps_Advanced ← チョコさんの簡易IICマスタのソースを使用
40_I2C_100Kbps_Basic
41_I2C_100Kbps_Advanced ← チョコさんのIICAマスタのソースを使用
42_I2C_1Mbps_Basic
43_I2C_1Mbps_Advanced ← チョコさんのIICAマスタのソースを使用

[追記]

RXポートレイヤ改造概要

(A) RX100,RX200,RX600,RX600v2,RX700v3_DPFPUをひとつにマージ(ただしRX100のTICKLESS IDLEという機能は手が回らず未マージ)
(B) IARコンパイラでもCC-RX/GNURXと同様にFreeRTOSConfig.hのみでコンフィグレーション可能(従来はもう1つASM用にファイルが必要だった)

すみません、RXのRTOSDemoは後日FITベースからCGベースへ変更予定です。(まったくの私の好みによるもの、であって、FITに問題があったから、とかでは全然ありません。)
 

Top Replies

Parents
  • こんにちは。NoMaYです。

    別スレッドで気付いた以下の件への対策として、んっ?出来るかな?、というのが思い浮かびました。最新のRXスマートコンフィグレータでは(RL78でも)scfgファイルの設定でソース生成フォルダを変更出来るようになっていますので(この課題自体は2~3年前に出たものと記憶していますが)、この機能を活用して、1つのe2 studioプロジェクト内にFreeRTOS対応scfgファイルとFreeRTOS非対応scfgファイルの2つを同居させ、かつソース生成フォルダを分けるようにようにして、更にe2 studioの機能のビルドから除外とかリンクされたフォルダとか仮想フォルダとかも活用したら、何とかなるかも知れないかも知れません、、、そのうち試してみようと思います、、、

    > 独り言です。こんにちは。NoMaYです。
    > あららっ、記憶では、昔はe2 studioのFreeRTOSプロジェクトのscfgファイルをCS+(とIAR EWB)向け単体RXスマートコンフィグレータで開けば(言い換えるとプロジェクト変換した場合も)、CGコンポーネントが使えるようになった(ただし逆に(ファイルは残っていて消えないものの)FreeRTOS関連の設定はRXスマートコンフィグレータGUI上では出来なくなる)のでしたけれども、最新の単体RXスマートコンフィグレータでは、意図的にせよ意図的で無いにせよ(なぜならプラグイン的にはソースコードは共通の筈なのだから)、その技が使えなくなってしまいましたね、、、
    >別の小技(大技?)を探さないと、ですかね、、、(出来るという仕様ではないから、まあ、仕方がないかな、、、どういう策があるかなぁ、、、)

    あと、そのスレッドで気付いた(というより以前からの)課題:

    (1) FITモジュールの初期化処理をsrc/smc_gen/r_bsp/board/XXX/hwsetup.cのhardware_setup()等に記述してもモジュールのバージョンアップ時には恐らく消えると思う(通常のコード再生成時には残っているけれども)
    (2) CGコンポーネントの移植初期化処理をsrc/smc_gen/general/r_cg_hardware_setup.cのR_Systeminit()内に記述すると通常のコード再生成時であっても消える(これの対策には既にある小技が使える、体裁を気にしなければ(1)の対策にも)

Reply
  • こんにちは。NoMaYです。

    別スレッドで気付いた以下の件への対策として、んっ?出来るかな?、というのが思い浮かびました。最新のRXスマートコンフィグレータでは(RL78でも)scfgファイルの設定でソース生成フォルダを変更出来るようになっていますので(この課題自体は2~3年前に出たものと記憶していますが)、この機能を活用して、1つのe2 studioプロジェクト内にFreeRTOS対応scfgファイルとFreeRTOS非対応scfgファイルの2つを同居させ、かつソース生成フォルダを分けるようにようにして、更にe2 studioの機能のビルドから除外とかリンクされたフォルダとか仮想フォルダとかも活用したら、何とかなるかも知れないかも知れません、、、そのうち試してみようと思います、、、

    > 独り言です。こんにちは。NoMaYです。
    > あららっ、記憶では、昔はe2 studioのFreeRTOSプロジェクトのscfgファイルをCS+(とIAR EWB)向け単体RXスマートコンフィグレータで開けば(言い換えるとプロジェクト変換した場合も)、CGコンポーネントが使えるようになった(ただし逆に(ファイルは残っていて消えないものの)FreeRTOS関連の設定はRXスマートコンフィグレータGUI上では出来なくなる)のでしたけれども、最新の単体RXスマートコンフィグレータでは、意図的にせよ意図的で無いにせよ(なぜならプラグイン的にはソースコードは共通の筈なのだから)、その技が使えなくなってしまいましたね、、、
    >別の小技(大技?)を探さないと、ですかね、、、(出来るという仕様ではないから、まあ、仕方がないかな、、、どういう策があるかなぁ、、、)

    あと、そのスレッドで気付いた(というより以前からの)課題:

    (1) FITモジュールの初期化処理をsrc/smc_gen/r_bsp/board/XXX/hwsetup.cのhardware_setup()等に記述してもモジュールのバージョンアップ時には恐らく消えると思う(通常のコード再生成時には残っているけれども)
    (2) CGコンポーネントの移植初期化処理をsrc/smc_gen/general/r_cg_hardware_setup.cのR_Systeminit()内に記述すると通常のコード再生成時であっても消える(これの対策には既にある小技が使える、体裁を気にしなければ(1)の対策にも)

Children
No Data