(toppers-users 2297) Re: 時間計測とsyslog

Tetsuo TAKAHASHI tetsu-t @ mbd.ocn.ne.jp
2006年 2月 4日 (土) 17:35:12 JST


高橋です。
#だんだん違う内容になって来たかもしれませんが・・・m(_ _)m

On 2006/02/04, at 13:53, ykominami wrote:
> 小南です.

> SH3/SH4ターゲット依存部のユーザーズマニュアル(doc/sh3.txt)
> の「3.4 メモリマップ」では以下のように記述されています.
>  ・Solution Engine
>   コード領域を 0x0c003000 〜 0x0c0fffff 約 
> 1MB,データ領域を 0x0c100000
>   〜 の約3MB,非タスクコンテキスト用のスタック領域 
> を 〜0x0c3fffff に確
>   保している.0x0c000000 〜 0x0c000fff は, 
> GDBスタブのワークエリアとなっ
>   ており,使用することができない.
> この領域はキャッシュ可能な領域です。

これは、P0領域にあるからと言うお話ですよね。

> ところが、例えば「SH7727ハードウェアマニュアル  
> 5.2.1 キャッシュ制御レジスタ
> (CCR)」の説明にはこう書いてあります.
>    「CCRの内容を変更するプログラムは、キャッシングし 
> ないアドレス空間に配置して
>  ください」

えっと、「SH7750シリーズ ハードウェアマニュアル」を 
見ますと、「4.2 レジスタの説明」に
======================================================================== 
===============
CCRへは、P4領域のH'FF00 001Cとエリア7のH'1F00  
001Cからロングワードサイズでアクセス
することが可能です。CCRの各ビットは下記に示すようなキャッ 
シュの設定に使われます。したが
って、CCRの書き換えは非キャッシュのP2領域のプログラ 
ムのみで行わなければなりません。CCR
更新後に、P0、P1、P3、U0領域へのデータア 
クセス命令は、CCR更新命令から4命令以降に配置
してください。
======================================================================== 
===============
とありますので、これが小南さんのおっしゃる事に該当するのでしょう 
か。

> もしstart.Sに来たときにキャッシュが有効になっていると, 
> start.Sで一旦
> キャッシュを無効にする操作そのものが、ハードウェアマニュアルに 
> 書かれた制約に
> 反することになります。
> しかし、キャッシュが無効になっていれば、どのアドレス空間も 
> キャッシングしてい
> ないので制約に反しないことになります。

そうですね。そうすると、上記の通りP2領域にstart.Sの 
コードがないといけないと
言う事ですね。と言う事は、当方で作ったテストモジュールのマップを 
確認して、
どこに配置されるかを確認すべきであると言う事になりますね。

> これを回避するには、
(snip)
> などが考えられます.

了解しました。
それで、当方で質問する前に一度やった方法は、メインタスクの中で 
CCRの値を
設定する様にしてみましたが、これも意味がなかった事になりますね。

> ハードの故障以外にも、こういう可能性が考えられると重います。

はい。了解しました。

--
// Tetsuo TAKAHASHI <tetsu-t @ mbd.ocn.ne.jp>