Changes between Initial Version and Version 1 of asp3_gr_sakura


Ignore:
Timestamp:
Aug 8, 2017, 11:50:30 PM (7 years ago)
Author:
coas-nagasima
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • asp3_gr_sakura

    v1 v1  
     1= GR-SAKURA向けTOPPERS/ASP3 =
     2
     3GR-SAKURA(Renesas RX63N)向けにTOPPERS/ASP3 Ver.3.2.0のターゲット依存部を実装しました。[[br]]
     4ASP3は動的生成版にオーバーランハンドラを組み込んだものになりますので、ターゲット依存部はOSタイマーとオーバーランタイマーの両方の実装があります。[[br]]
     5ターゲット依存部はGR-SAKURA向けのASPを元に、対応が必要な箇所をGR-PEACHのASPとASP3との差分などで作成しました。[[br]]
     6
     7== OSタイマー ==
     8
     9ASP3からティックレスになりタイマーの単位がマイクロ秒になりました。[[br]]
     10GR-PEACHのターゲット依存部では32bitのタイマーを使用して、33.33MHzで0x00000000から0xFFFFFFFFまでカウントするタイマーで、約2分で一巡するのでティックレス化が可能になりました。[[br]]
     11GR-SAKURAでは6MHzの16bitタイマーを使用したため、約11ミリ秒で一巡してしまいティックレスとは言いにくいですが、マイクロ秒単位のタイマーは実現しました。[[br]]
     12
     13GR-SAKURAでは、OSタイマーに16bitタイマーを2つ使用します。一つは6MHzで0x0000から0xFFFFまでカウントするタイマーで、一巡した時の割り込みで16bitのカウンターをインクリメントします。このカウンターとタイマーのカウント値で32bitのフリーランタイマーを疑似的に作ります。もう一つは、コンペアマッチ用のタイマーで、下位16bit分のタイムアウトの割り込みに使用します。GR-SAKURAのコンペアモードではカウンターは設定値になると0に戻ってしまうので、ワンショットタイマーとして使用します。[[br]]
     14
     15割り込み禁止中に疑似32bitタイマー値を読む場合、上位のカウンターが更新されていないことがあるので、割り込みフラグを確認して上位のカウンター値を補正(+1)して32bitタイマー値を作ります。
     16
     17== オーバーランハンドラタイマー ==
     18
     19オーバーランハンドラタイマーでは、更にもう一つのタイマーを使用します。OSタイマーのワンショットタイマーと同じように使用し、下位16bitのタイマーとして使用します。[[br]]
     20割り込み処理の入り口で、タスクの処理時間のカウントを読むため疑似32bitタイマーを読みこみますが、フリーランタイマーの割り込みかどうかを確認する必要があります。それは、上位のカウンターの補正をする必要があるかどうかの判断に必要になります。割り込み処理の入り口で、ターゲット非依存部の{{{ovrtimer_stop}}}関数を呼び出し、ターゲット依存部の{{{target_ovrtimer_stop}}}を呼びますが、フリーランタイマーの割り込みかどうかを確認するため、割り込み番号を渡せるよう引数を追加しています。
     21
     22== RX63N依存部 ==
     23
     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)」に書かれている内容を適用した。
     27
     28== シリアルドライバ ==
     29
     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」を元に変更した。
     31
     32== TINET ==
     33
     34TINET 1.7を含んでいますが、タイマー値と思われる個所をミリ秒からマイクロ秒に変更しただけで、動作は未確認です。
     35
     36== その他 ==
     37
     38GR-SAKURA向けASPでRuby版CFGに対応しておいたため、ASP3へのポーティングではRuby版CFGを流用することで対応できた。