-
Notifications
You must be signed in to change notification settings - Fork 10
Description
シェルティさん、こんにちは。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さんに説明するのがちょっとややこしく
なりそうですね、、、
」