(toppers-users 3287) Re: Renesas Starter Kit for RX610 簡易パッケージについての確認
片岡 歩
kata @ witz-inc.co.jp
2010年 11月 16日 (火) 13:16:44 JST
ソフトバンク 小山様
ヴィッツの片岡です。
不具合の報告ありがとうございます。
ご指摘のとおり、0x00000001番地に書き込んでますね。
reqflg のクリアは実施したいので、以下の様に値を取得する
レジスタを変更することが良いかと思います。
line:394とline:395のディスティネーションレジスタをr5からr4に変更
393 : mov.l #__kernel_reqflg, r5 ; reqflg が FALSE なら
394 : mov.l [r5], r4
395 : cmp #0, r4
396 : bz dispatcher_idle_loop ; アイドルループを繰り返す
397 : mov.l #0, [r5] ; reqflgがtrueならfalseにする
メモリマップでは
0x00000000 __kernel_kerflg
0x00000004 _histcb_table
となっており、サンプルプログラムや付属のテストプログラムでは
問題が表面化しなかったようです。
アイドル復帰後の状態確認って、テスト必要ですね。
修正パッケージについてはどこかのタイミングでリリースしたいと思いますが、
現在、計画が立っておりませんので、本メール記載の対策を入れていただければ
幸いです。
以上、よろしくお願いします。
>先日、Renesas RXについて質問をした 小山 です。
>
>TOPPERS/ASPカーネルの
>「Renesas Starter Kit for RX610 簡易パッケージ」を
>ルネサス製の「RX-Stick」というボードへの移植を
>試みているのですが、カーネルに問題点がありまして
>回答をお願いします。
>
>問題点:
> カーネルのアイドルループに移行すると
> RX-Stick専用のモニタデバッガがタイムアウトしてしまう。
>
>カーネルのアイドルループのソースを見ると
>疑問の思うところが見つかりました。
>
>ソース :arch/rx_rxc/prc_support.src
>モジュール:dispatcher_pre_idle
>問題の行 :397行目
>
>393 : mov.l #__kernel_reqflg, r5 ; reqflg が FALSE なら
>394 : mov.l [r5], r5
>395 : cmp #0, r5
>396 : bz dispatcher_idle_loop ; アイドルループを繰り返す
>397 : mov.l #0, [r5] ; reqflgがtrueならfalseにする
>
>398 : mov.l #__kernel_intnest, r5
>399 : mov.w #0, [r5] ; タスクコンテキストに切換え
>
>397行目でr5の指すアドレスを0クリアしているのですが、
>r5はその前に__kernel_reqflgの読み込みによって壊れています。
>その結果、00000001hに4バイトで0を書き込むという動作になります。
>
>RX-Stick専用のモニタデバッガでは、00000000h〜00000FFFhまでは
>モニタ専用領域で使用不可という仕様になっており、
>このエリアを書き換えると暴走するようです。
>
>よろしくお願いします。
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
|| ||
|| (株)ヴィッツ ||
|| 組込制御開発部 ||
|| ||
|| 片岡 歩 E-mail:kata @ witz-inc.co.jp ||
|| ||
|| 〒460-0008 名古屋市中区栄2-13-1 白川第2ビル2F/7F ||
|| TEL:(052)223-7570 ||
|| (052)220-1218(代表) ||
|| FAX:(052)218-5855 ||
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜