(toppers-users 3286) Renesas Starter Kit for RX610 簡易パッケージについての確認

ソフトバンク 小山 koyama @ softbank.vc
2010年 11月 16日 (火) 11:53:47 JST


先日、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までは
モニタ専用領域で使用不可という仕様になっており、
このエリアを書き換えると暴走するようです。

よろしくお願いします。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20101116/d667f5ec/attachment.html>