Skip to content

[連絡] NoMaYが1~2ヶ月内ぐらいにプルリクエストを出したいと考えている項目(RX編) #3

@NoMaY-jp

Description

@NoMaY-jp

シェルティさん、こんにちは。NoMaYです。

私がFreeRTOS-KernelのこちらのForkにプルリクエストを出したいと考えている項目です。(RX編です。)

(1) RX Family Renesas FreeRTOS Packageのソースと本家のソースのマージ
(2) Amazon FreeRTOSの方でも行われている(と思っていますが)Uncrustifyというソース整形ツールによる整形
(3) RX SmartConfiguratorのIAR対応に向けての準備
(4) hirakuni45さん指摘の件

課題 [2020/09/19追加]

(A) GCC/IAR版RX200ポートレイヤが無い(CC-RX版RX200ポートレイヤしかない)件
(B) RX100ポートレイヤがCMT0決め打ちになっている件
(C) IAR版RX600ポートレイヤがiorx62n.hをインクルードしてしまっている件

以下詳細です。

(1) RX Family Renesas FreeRTOS Packageのソースと本家のソースのマージ

以下の2種類があります。

・GCCポートレイヤで間違いのあったもの(RX200削除とRX100修正)
・CC-RX版でマージが行われていないもの(RX100/RX200/RX600でのマージとRX600v2のソースをGCC版に似せる)

なお、GCC RX200ポートレイヤ削除のプルリクエストを出しています。

Fix: Remove the newly (mistakenly) added GCC/RX200 port FreeRTOS#146

関連して、どのポートレイヤを使えば良いか分かり難いのとRX100ポートレイヤで使用上の注意点に気付きましたので、以下のプルリクエストを出しています。

Maintenance: Add readme.txt in each Renesas RX folder to show recommended port FreeRTOS#152

(2) Amazon FreeRTOSの方でも行われている(と思っていますが)Uncrustifyというソース整形ツールによる整形

先月、Amazonの人が一気にやろうとして失敗して、ひとまず、以下にのみ適用する形でひと区切り付けていました。

・ポートレイヤより上位の部分
・ARM Cortexコア向けポートレイヤのそれなりの種類
・PICやESPなどの人気のあるマイコン向けポートレイヤ

失敗した原因は、Uncrustifyがインラインアセンブラ部分に対して間違った整形をして、ビルドエラーが散見されるようになってしまった為でした。それでも、いずれは全ポートレイヤに適用したい意向のようです。これに関して、RXv3ポートレイヤで既にひとつプルリクエストを出しています。

Style: Make Renesas RXv3 DPFPU port layer consistent with uncrustify. FreeRTOS#137

以下のコメントのように、いずれは全ポートレイヤに適用したいということですので、私が勘所を覚えているうちに済ませてしまいたい、と思っているのです。

Style: Revert uncrustify for portable directories FreeRTOS#115 (comment)

RTOSDemoのMOTファイルは変化させないようにしますので、実機評価は不要とするつもりです。

(3) RX SmartConfiguratorのIAR対応に向けての準備

以下の2点です。

・ FreeRTOSConfig.hの他に(ポートレイヤのアセンブラソースの為)のPriorityDefinitions.hがありますが、それを廃止する為のアセンブラソースの削除(インラインアセンブラ化します/RXv3ポートレイヤでは削除済み)
・Tick割り込みのベクタ記述がVECT_CMTx_CMIxスタイルなのをCC-RX版/GCC版と同じ_CMTx_CMIxスタイルを受付可能にする(configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_Hマクロで切り替えてbackward compatibilityを保ちます)

IAR版RTOSDemoのMOTファイルは変化しますので、実機評価もしようと思います。

(4) hirakuni45さん指摘の件

以下のスレッドの件です。Amazonさんの方でされるような話の流れでしたが、忙しくて手が回らないようですので、私がすることにしました。あと、このタイミングでCC-RX/GCC/IARの各版相互で関数の並び順を揃えたいと思っています。

Improper access to an on-chip peripheral register in Renesas RX port layer
https://forums.freertos.org/t/improper-access-to-an-on-chip-peripheral-register-in-renesas-rx-port-layer/9851

まずは、このあたりですが、まとめて出すより小分けにしようと考えています。

以下、課題の詳細です。[2020/09/19追加]

すみません、まだ考えがまとまっていません。

(A) GCC/IAR版RX200ポートレイヤが無い(CC-RX版RX200ポートレイヤしかない)件

以下のかふぇルネへの投稿の件です。間違って追加されたGCC/RX200ポートレイヤは削除するとして、その後、歯抜けとなる{GCC, IAR}/RX200ポートレイヤを歯抜けのままにするか、それとも、作るか、あるいは、本質的にはRX100ポートレイヤとRX200ポートレイヤは実は同じに出来るものなので、その性質を何か活用するか、とかです。

e2 studio v7.5.0でFreeRTOS+SCFGプロジェクトではRTOS Objectコンポーネントというものは使えないのかな
https://japan.renesasrulz.com/cafe_rene/f/forum21/5940/e2-studio-v7-5-0-freertos-scfg-rtos-object/36418#36418

以前からあるRenesas/RX200ポートレイヤがRXv1コア搭載RX200マイコン向けポートレイヤでしたので、プルリクエストで追加されたGCC/RX200ポートレイヤがRXv2コア搭載RX200マイコン向けなのはさすがにチグハグかと思います。


> あと、調査を始めたところですが、RXv2コアのRX231でRXv1コア用のRX200ポートレイヤを使うのは間違いな気がします。また、RXv3コアの品種でRXv2コア用のRX600v2ポートレイヤを使うのも間違いな気がします。タスク切り替え時にFPSWや倍精度浮動小数点レジスタが退避/復帰されないような気がします、、、

(B) RX100ポートレイヤがCMT0決め打ちになっている件

以下のかふぇルネへの投稿の件です。

e2 studio v7.5.0でFreeRTOS+SCFGプロジェクトではRTOS Objectコンポーネントというものは使えないのかな
https://japan.renesasrulz.com/cafe_rene/f/forum21/5940/e2-studio-v7-5-0-freertos-scfg-rtos-object/36495#36495

RX100ポートレイヤですが、このポートレイヤでは消費電力削減用のTICKLESS IDLEという機能が追加されていて、その差分の影響で、このポートレイヤではCMTはCMT0固定になります。


RX100ポートレイヤ内のvPortSuppressTicksAndSleep()という関数内でもCMTを触っていますので、その箇所をポートレイヤ内に残すのか、その部分を関数として切り出してfreertos_start.c内へ移すのか、そういうことを検討した方が良いのかな、とも思います。


FreeRTOSConfig.hに以下の記述を追加すればポートレイヤがfreertos_start.c内のvApplicationSetupTimerInterrupt()を呼び出すようになります。ですので、TICKLESS IDLEという機能を使わない場合はそのように記述する、ということにすれば良いのかな、と思います。

frtos_config/FreeRTOSConfig.h

void vApplicationSetupTimerInterrupt(void);
#define configSETUP_TICK_INTERRUPT() vApplicationSetupTimerInterrupt()

(C) IAR版RX600ポートレイヤがiorx62n.hをインクルードしてしまっている件

以下のかふぇルネへの投稿の件です。

e2 studio v7.5.0でFreeRTOS+SCFGプロジェクトではRTOS Objectコンポーネントというものは使えないのかな
https://japan.renesasrulz.com/cafe_rene/f/forum21/5940/e2-studio-v7-5-0-freertos-scfg-rtos-object/36660#36660

FreeRTOSのIAR向けポートレイヤで特定の品種のIOR定義ファイルがインクルードされてる、、、ここも直さなくちゃ、、、きっと、RTOSデモプログラム側を同時に直さないといけないかと思うので、Amazonさんに説明するのがちょっとややこしく
なりそうですね、、、

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions