Consoleで試せるようにしてみたこんにちは。kernelの開発者ガイドの日本語版が載っていることに気付いたのですが、その中に含まれているCコード例をルネサスRXシミュレータで試せたら面白そうだと思い、やってみました。studio)版です。studio)版もやろうと思います。以下、プロジェクトのファイル一式です。kernelの開発者ガイドのCコード例をルネサスRXシミュレータで動かした時の画面コピーです。(上記の(8)のプロジェクトです。Demoをビルドするプロジェクトも含まれています。(上記の(2)で除外している項目はありますが。以下、それらの画面コピーです。18:01こんにちは。#前の投稿の続きです以下、やったこと(主なもの)の詳細です。kernelではRXマイコンのSWINT割り込みを使っていますが、ルネサスRXシミュレータでは未対応となっています。そこで、ルネサスRXシミュレータが対応してるCMT割り込みの1つで無理矢理代替しました。この無理矢理な代替実装ですが、一応、実機でも動きます。Demo(除外項目あり)をビルドしたものです。TBボードで動きます。Demoの中にRXマイコンのTPUを使って実装されている項目がありますが、ルネサスRXシミュレータではTPUは未対応となっていますので、その項目を除外しました。ルネサスRXシミュレータではBSPモジュール内で無限ループしてしまう点を回避ルネサスRXシミュレータはクロック系の内蔵周辺機能にも未対応ですが、そのことによりBSPモジュールのresetprg.cのoperating_frequency_set()内で無限ループしてしまいます。今回の無理矢理な代替実装でも実機で動きますので、単に条件コンパイルでoperating_frequency_set()呼び出しを除外するのではなく、以下のようにrenesas_simulator_debugging_keyという変数で動的に呼び出しを除外出来るようにしておき、デバッガでのルネサスRXシミュレータへのダウンロード時にデバッガの機能で変数の値を書き換えてしまうやり方を取ってみました。...略...}CS+でダウンロード時に値を書き換えるにはダウンロード後のフック関数にPythonスクリプトを記述します。studioでダウンロード時に値を書き換えるにはデバッグ構成の[Starup]の[コマンドを実行]にGDBコマンドを記述します。Consoleへ出力するようになっていますので以下のように記述しました。Consoleへメッセージを出力vAssertCalled()に以下を追加しました。ConsoleへOn/Offのメッセージを出力vParTestInitialise()とvParTestSetLED()に以下を追加しました。開発者ガイドのCコード例が動くようにルネサスRXシミュレータの起動設定を変更(私の個人的な好みを含む)以下、画面コピーです。開発者ガイドのCコード例をビルドする時には不要なデモソースをビルドから除外したプロジェクトを作成(CS+のみ)CS+のsim_rx65n_freertos_dev_guide_debugプロジェクトではsrc/FreeRTOS/Demo/フォルダから下を丸ごとビルドから除外しました。実は、自分自身、デバッグする時に嵌ってしまっていたのでコンパイル時の最適化レベルを0に変更しました。11:00こんにちは。studio)版もやってみました。studioプロジェクトを2つ入れてみました。studio)版も作り直しました。以下、プロジェクトのファイル一式です。studioプロジェクトを2つ入れてみた画面です。kernelの開発者ガイドのCコード例の実行画面です。Windowsシミュレータで実行docs.aws.amazon.com/ja_jp/freertos-kernel/latest/dg/task-management.html以下、ルネサスRXシミュレータで実行させてみたCコード例です。(ルネサスFreeRTOSプロジェクトはmain()を呼び出しませんので、src/frtos_startup/freertos_start.cのProcessing_Before_Start_Kernel()をmain()の代わりに使っています。11:01こんにちは。#前の投稿の続きです今回、CC-RXのC言語拡張仕様からGNURXのC言語拡張仕様への置き換え以外に、以下のことも行っています。XXX(vect=NNN)のように記述してコンパイルすれば、リンカがベクタテーブルにベクタを埋め込んでくれるのですが、RXスマートコンフィグレータがGNURX向けに生成したコードは、生成したソースに記述されたベクタ配列変数にRXスマートコンフィグレータがベクタを配置するようになっています。そこで、この為だけにRXスマートコンフィグレータにソースを生成させて、生成させたソースの幾つかはビルドから除外するようにし、生成されたソースに以下のような記述を追加してみました。(なお、CC-RX/GNURX/ICCRX共通化BSPがリリースされ、RXスマートコンフィグレータがGNURXが持っている、CC-RXと同様のコンパイラ/リンカ機能を使うようになれば、こういうことは不要になる筈です。RXスマートコンフィグレータがGNURX向けに生成したコードでRTOSサポートを有効にする為のr_bsp_config.hの小細工CC-RX版でRのTOSサポートを有効にする為のr_bsp_config.hの小細工は、別スレッド「FreeRTOSをFITやCG(や追々PDG2でも?)と一緒に使うサンプルプログラムをCSplusでビルド出来るプロジェクトにしてみた」に投稿したものですが、GNURX版ではそれだけでは足りませんでしたので、以下のように小細工しました。volatileの場合、、CC-RXではROMに配置されたのですが、GNURXではROMに配置されずにRAMに配置されたので、以下のように修正しました。GNURXでのワーニング対策でFreeRTOSConfig.hでconfigENABLE_BACKWARD_COMPATIBILITYを0で定義(未定義時は1)未定義時は以下のワーニングが出ましたので、出ないようにする為に、以下を追加しました。kernelのRX600v2のCC-RX版と同じになるように修正しました。studioの画面コピーです。NoMaY:NoMaYさんこんにちは、シェルティです。種々ご検討いただきありがとうございます。近日中にFITモジュール全般を更新してCC-RX/GCC/IAR対応となります。FreeRTOSの連携もある程度可能になります。FreeRTOSとスマートコンフィグレータが連携して、かつ、コンパイラ違いの環境でもコンフィグレーションが正しく働くかが正直なところ未知数です。継続して改善を続けていくことになりますので、引き続きご意見などをいただけますと幸いです。