Changes between Version 1 and Version 2 of asp3_gr_sakura
- Timestamp:
- Aug 11, 2017, 12:20:31 AM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
asp3_gr_sakura
v1 v2 3 3 GR-SAKURA(Renesas RX63N)向けにTOPPERS/ASP3 Ver.3.2.0のターゲット依存部を実装しました。[[br]] 4 4 ASP3は動的生成版にオーバーランハンドラを組み込んだものになりますので、ターゲット依存部はOSタイマーとオーバーランタイマーの両方の実装があります。[[br]] 5 ターゲット依存部はGR-SAKURA向けのASPを元に、 対応が必要な箇所をGR-PEACHのASPとASP3との差分などで作成しました。[[br]]5 ターゲット依存部はGR-SAKURA向けのASPを元に、GR-PEACHのASPとASP3との差分などで対応が必要な箇所を調査して作成しました。[[br]] 6 6 7 == OSタイマー == 7 == ダウンロード == 8 9 ソースコードは[https://dev.toppers.jp/trac_user/contrib/browser/asp3_gr_sakura/trunk こちら]にあります。リストの下にある「Download in other formats:」の「Zip Archive」をクリックすると、zipファイルでダウンロードできます。 10 11 == GR-SAKURA向けのASPからの変更内容 == 12 13 === OSタイマー === 8 14 9 15 ASP3からティックレスになりタイマーの単位がマイクロ秒になりました。[[br]] 10 GR-PEACHのターゲット依存部では32bitのタイマーを使用して 、33.33MHzで0x00000000から0xFFFFFFFFまでカウントするタイマーで、約2分で一巡するのでティックレス化が可能になりました。[[br]]16 GR-PEACHのターゲット依存部では32bitのタイマーを使用しています。33.33MHzで0x00000000から0xFFFFFFFFまでカウントするタイマーで、約2分で一巡します。十分長い時間なのでティックレス化が実現しています。[[br]] 11 17 GR-SAKURAでは6MHzの16bitタイマーを使用したため、約11ミリ秒で一巡してしまいティックレスとは言いにくいですが、マイクロ秒単位のタイマーは実現しました。[[br]] 12 18 … … 15 21 割り込み禁止中に疑似32bitタイマー値を読む場合、上位のカウンターが更新されていないことがあるので、割り込みフラグを確認して上位のカウンター値を補正(+1)して32bitタイマー値を作ります。 16 22 17 == オーバーランハンドラタイマー==23 === オーバーランハンドラタイマー === 18 24 19 25 オーバーランハンドラタイマーでは、更にもう一つのタイマーを使用します。OSタイマーのワンショットタイマーと同じように使用し、下位16bitのタイマーとして使用します。[[br]] 20 26 割り込み処理の入り口で、タスクの処理時間のカウントを読むため疑似32bitタイマーを読みこみますが、フリーランタイマーの割り込みかどうかを確認する必要があります。それは、上位のカウンターの補正をする必要があるかどうかの判断に必要になります。割り込み処理の入り口で、ターゲット非依存部の{{{ovrtimer_stop}}}関数を呼び出し、ターゲット依存部の{{{target_ovrtimer_stop}}}を呼びますが、フリーランタイマーの割り込みかどうかを確認するため、割り込み番号を渡せるよう引数を追加しています。 21 27 22 == RX63N依存部==28 === RX63N依存部 === 23 29 24 ディスパッチャーの実装のあるRX63N依存部では、ASPにあった{{{reqflg}}}と{{{dspflg}}}はASP3で削除されたので対応しました。{{{reqflg}}}は{{{p_schedtsk}}}と{{{p_runtsk}}}が同じかどうかの比較で置き換え、{{{dspflg}}} 周りの処理は削除した。[[br]]25 また、タスク例外処理もASP3で削除されたので対応部分を削除し た。26 その他、ASP3の「doc/version.txt」ファイルの「○ターゲット依存部の主な要修正箇所(1.9.0 → 3.A.0)」に書かれている内容を適用し た。30 ディスパッチャーの実装のあるRX63N依存部では、ASPにあった{{{reqflg}}}と{{{dspflg}}}はASP3で削除されたので対応しました。{{{reqflg}}}は{{{p_schedtsk}}}と{{{p_runtsk}}}が同じかどうかの比較で置き換え、{{{dspflg}}}関連の処理は削除しました。[[br]] 31 また、タスク例外処理もASP3で削除されたので対応部分を削除しました。 32 その他、ASP3の「doc/version.txt」ファイルの「○ターゲット依存部の主な要修正箇所(1.9.0 → 3.A.0)」に書かれている内容を適用しました。 27 33 28 == シリアルドライバ==34 === シリアルドライバ === 29 35 30 シリアルドライバを含む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」を元に変更し た。36 シリアルドライバを含む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」を元に変更しました。 31 37 32 == TINET==38 === TINET === 33 39 34 TINET 1.7を含んでいますが、タイマー値と思われる 個所をミリ秒からマイクロ秒に変更しただけで、動作は未確認です。40 TINET 1.7を含んでいますが、タイマー値と思われる箇所をミリ秒からマイクロ秒に変更しただけで、動作は未確認です。 35 41 36 == その他==42 === その他 === 37 43 38 GR-SAKURA向けASPでRuby版CFGに対応しておいたため、ASP3へのポーティングではRuby版CFGを流用することで対応できた。44 先だって公開した[wiki:rubycfg_asp GR-SAKURA向けASPのRuby版コンフィギュレーター]を作成してあったため、それを流用してASP3のターゲット依存部へ適用することができました。