[H8-ML(6040)] 3069でROM 起動時にダンマリ?
From: ida@xxxxxxxxxxxxxxxxxxxx
Date: 2006年08月08日(火)17時01分00秒
こんばんは、井田です。

現在 H8/3069でHEW4(製品版)を使用し、C,C++の混合でコーディングを行っています。
コンパイル後の「*.MOT」ファイルは260KB程有ります。

RAMデバッグも一通り済んで、ROMに書き込んだのですが、
電源ON時にH8のイニシャル処理とはまったく関係のないソフト処理でダンマリ停止することが有ります。
電源を入り切りしていると正常に起動する時もあるのですが、ダンマリ停止する割合が多く悩んでいます。
RAMデバッグの時は問題なく動作します。
なお、叩き台としてVC++6で作成ものを、H8/3069用に置き換えています。

セクションの設定は下記のようになっています。
0x00200000は外部SRAM

0x00000400	PResetPRG
		PIntPRG
0x00000800	P
		C
		C$DSEC
		C$BSEC
		C$INT
		D
		C$VTBL
0x00200000	B
		R
0x00FFFD00	S
		

下記のソースでお気づきの点など有りましたら、助言いただけたら幸いです。

Seq1まではLCDに表示されるがSeq1A1は表示されない。
GetMinValue()が呼び出されていない感じ。

void main(){
	CUI::Create();
}

void CUI::Create()
{
	//クラスはシングルトンで保有
	m_pInputA = new CInputA;	//CInputBaseから継承
	m_pInputB = new CInputB;	//CInputBaseから継承

	LcdOut("Seq1");	//LCD出力
	m_pInputA->SetLimit();
	LcdOut("Seq2");	//LCD出力
	m_pInputB->SetLimit();
}

void CInputBase::SetLimit(){
	int GetMin;
	int GetMax;
	LcdOut("Seq1A");		//LCD出力
	GetMin = GetMinValue();	//戻り値-9999
	LcdOut("Seq1B");		//LCD出力
	GetMax = GetMaxValue();	//戻り値9999
}

int CInputA::GetMaxValue()
{
	int i;
	int k = 1;
	int nRet = 0;
	for(i = 0; i < 4; i++){
		nRet += 9*k;
		k *= 10;
	}
	return nRet;
}

int CInputA::GetMinValue()
{
	LcdOut("Seq1A1");		//LCD出力
	return -GetMaxValue();
}
スレッド概略
[表示中](起点)
 ├[6041(1)]
 ├[6046(2)]
 └[6048(3)]


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


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