wiki:asp3_gr_sakura

GR-SAKURA向けTOPPERS/ASP3

GR-SAKURA(Renesas RX63N)向けにTOPPERS/ASP3 Ver.3.2.0のターゲット依存部を実装しました。
ASP3は動的生成版にオーバーランハンドラを組み込んだものになりますので、ターゲット依存部はOSタイマーとオーバーランタイマーの両方の実装があります。
ターゲット依存部はGR-SAKURA向けのASPを元に、GR-PEACHのASPとASP3との差分などで対応が必要な箇所を調査して作成しました。

ダウンロード

ソースコードはこちらにあります。リストの下にある「Download in other formats:」の「Zip Archive」をクリックすると、zipファイルでダウンロードできます。

GR-SAKURA向けのASPからの変更内容

OSタイマー

ASP3からティックレスになりタイマーの単位がマイクロ秒になりました。
GR-PEACHのターゲット依存部では32bitのタイマーを使用しています。33.33MHzで0x00000000から0xFFFFFFFFまでカウントするタイマーで、約2分で一巡します。十分長い時間なのでティックレス化が実現しています。
GR-SAKURAでは6MHzの16bitタイマーを使用したため、約11ミリ秒で一巡してしまいティックレスとは言いにくいですが、マイクロ秒単位のタイマーは実現しました。

GR-SAKURAでは、OSタイマーに16bitタイマーを2つ使用します。一つは6MHzで0x0000から0xFFFFまでカウントするタイマーで、一巡した時の割り込みで16bitのカウンターをインクリメントします。このカウンターとタイマーのカウント値で32bitのフリーランタイマーを疑似的に作ります。もう一つは、コンペアマッチ用のタイマーで、下位16bit分のタイムアウトの割り込みに使用します。GR-SAKURAのコンペアモードではカウンターは設定値になると0に戻ってしまうので、ワンショットタイマーとして使用します。

割り込み禁止中に疑似32bitタイマー値を読む場合、上位のカウンターが更新されていないことがあるので、割り込みフラグを確認して上位のカウンター値を補正(+1)して32bitタイマー値を作ります。

オーバーランハンドラタイマー

オーバーランハンドラタイマーでは、更にもう一つのタイマーを使用します。OSタイマーのワンショットタイマーと同じように使用し、下位16bitのタイマーとして使用します。
割り込み処理の入り口で、タスクの処理時間のカウントを読むため疑似32bitタイマーを読みこみますが、フリーランタイマーの割り込みかどうかを確認する必要があります。それは、上位のカウンターの補正をする必要があるかどうかの判断に必要になります。割り込み処理の入り口で、ターゲット非依存部のovrtimer_stop関数を呼び出し、ターゲット依存部のtarget_ovrtimer_stopを呼びますが、フリーランタイマーの割り込みかどうかを確認するため、割り込み番号を渡せるよう引数を追加しています。

RX63N依存部

ディスパッチャーの実装のあるRX63N依存部では、ASPにあったreqflgdspflgはASP3で削除されたので対応しました。reqflgp_schedtskp_runtskが同じかどうかの比較で置き換え、dspflg関連の処理は削除しました。
また、タスク例外処理もASP3で削除されたので対応部分を削除しました。 その他、ASP3の「doc/version.txt」ファイルの「○ターゲット依存部の主な要修正箇所(1.9.0 → 3.A.0)」に書かれている内容を適用しました。

シリアルドライバ

シリアルドライバを含むsyslog関連がTECS化されているので、RZ/A1依存部のファイル「scif.h」「tSCIF.cdl」「tSCIF.c」とGR-PEACH依存部のファイル「tSIOPortGRPeachMain_inline.h」「tPutLogGRPeach.c」「tPutLogGRPeach.cdl」「tSIOPortGRPeach.cdl」をコピーして使用し、レジスタの定義や関数内の処理をASPの「target_serial.c」「target_serial.h」を元に変更しました。

TINET

TINET 1.7を含んでいますが、タイマー値と思われる箇所をミリ秒からマイクロ秒に変更しただけで、動作は未確認です。

その他

先だって公開したGR-SAKURA向けASPのRuby版コンフィギュレーターを作成してあったため、それを流用してASP3のターゲット依存部へ適用することができました。

Last modified 7 years ago Last modified on Aug 11, 2017, 12:20:31 AM
Note: See TracWiki for help on using the wiki.