(toppers-users 3070) [JSP/H8]内臓RAMのアドレス

中村和博 norichan1108 @ gmail.com
2010年 2月 13日 (土) 08:18:01 JST


おはようございます。中村です。

すでにH8/300Hはサポート対象外だったと思いますが、不具合?と思わしきものが
ありましたので一応報告しておきます。
h8_3069f.hの最後の方で定義されている、内臓RAMの開始位置の定義ですが、

#define H8IN_RAM_BASE           0xffbf10
#define H8IN_RAM_SIZE           0x004000

と、0xffbf10からとなっています。
手元の、3069fのハードウェアマニュアルには、

-- 引用ここから --
17.1 概要
H8/3069F は16k バイトのスタティックRAM を内蔵しています。RAM はCPU と16 ビッ
ト幅のデータバスで接続されており、アクセスはバイトデータ、ワードデータにかかわら
ず2 ステートで行われます。したがって、データの高速転送が可能です。
H8/3069F の内蔵 RAM は、モード 1、2、7 のとき H'FBF20〜H'FFF1F に、モード 3、4、5
のときH'FFBF20〜H'FFFF1F に、割り当てられています。
システムコントロールレジスタ(SYSCR)のRAM イネーブル(RAME)ビットにより
内蔵RAM 有効/無効の制御を行います。
-- 引用ここまで --

と、ffbf20〜ffff1fとなっており、アドレスが16byteずれているようにおもいます。
幸い?外部RAMでプログラムを動作させる限りは、内臓RAMはスタック程度
でしか使っていませんし、内臓RAMの上位から下位に向かって(でいいのかな?
アドレスの若い方に向かって)使うので問題になることは滅多にないようには思いますが。
おそらく、他の3048/3052も同様だとおもいます。