[H8-ML(1289)] H8/3067Fについて質問です
From: Hiroshi Kojima <funfly@xxxxxxxxxxxx>
Date: 2001年09月16日(日)04時04分10秒
みなさん、こんばんは。小島@和歌山大学です。

難解な問題にブチ当たったのですが、どなたか抜本的な
解決方法をご存じないかと期待して投稿します。

秋月の3067Fのボードで、最初に付いている32KBのSRAMを
取り除き、512KBのSRAMを取り付けました。このSRAMに以
下のような容量で値を書き込んだのですが、だいたい100
バイト程度書いた辺りから、値がまったくのデタラメになっ
てしまいます。

unsigned int i;
unsigned int record0[60000];
unsigned int record1[60000];
unsigned int record2[60000];
unsigned int record3[60000];

for(i=0; i<10000; i++){
    record0[i] = 0x5555;
    record0[i] = 0x5555;
    record0[i] = 0x5555;
    record0[i] = 0x5555;
}

これに対し、次のような感じならば問題なく書けます。

unsigned int i;
unsigned int record0[60000];
unsigned int record1[60000];
unsigned int record2[60000];
unsigned int record3[60000];

for(i=0; i<10000; i++){
    record0[i] = 0x5555;
}
for(i=0; i<10000; i++){
    record1[i] = 0x5555;
}
for(i=0; i<10000; i++){
    record2[i] = 0x5555;
}
for(i=0; i<10000; i++){
    record3[i] = 0x5555;
}

つまり、短い間隔で連続しないアドレスをアクセスす
ると、最初の内は大丈夫でも、ある時期を境に正常に
アクセスできなくなるようなのです。逆に、同じタイ
ミングでもシーケンシャルなアクセスならば問題が発
生しないようです。

バスコントローラの設定は一番遅い設定にしています
し、クロックも仕様書の範囲内(20MHz)です。試しに
16MHzにしてみましたが、結果は同じでした。
また、CSとWR波形も監視してみましたが、致命傷にな
るような鈍り方もしていませんでした(もっとも、こ
ちらは専門外なので、実はダメな波形なのかもしれま
せんが)。

とにかく、接触不良であったり、パターンが切れかかっ
ているというのであれば、ランダムアクセスであれ、
シーケンシャルアクセスであれ、リードライトが正常
にできない場所が現れそうな物ですが、シーケンシャ
ルの場合にはそれがまったく現れないのが理解できま
せん。



何か、こういうときにはハードのこの辺が怪しいとか、
ソフトでこうすれば解決するかも知れないとか、アド
バイスありましたらお願いします。
ちなみに、換装したSRAMは日立製の70nsタイプの物で
す。


-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
小島 央 (Hiroshi Kojima)@和歌山大学大学院システム工学研究科
   ∩∩  ・E-mail 1: s012019@xxxxxxxxxxxxxxxxxxxx
   "∪"  ・E-mail 2: funfly@xxxxxxxxxxxx
   http://www.kisweb.ne.jp/personal/funfly/index.html
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

スレッド概略
[表示中](起点)
 ├[1291(1)]
 └[1294(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]