(toppers-users 132) Re: スタブなしについて質問 2

Shinya Honda honda @ ertl.ics.tut.ac.jp
2001年 3月 20日 (火) 23:07:19 JST


豊橋技術科学大学の本田です.


- "Takeda Masaru" <takeda-masaru @ ryusyo.co.jp>-san writes ---
> どうもお世話になります。
> 前述のスタブなしの場合についてですが、
> 回答をいただいたとおりにやってみたのですが、
> できた実行ファイルをROMに焼いても動きません。
> ただし、手持ちのハードに合わせるために、
> 少しだけ手を加えたファイルがあります。
> ハードの相違点は
> ○クロック24.54545MHz
> ○リトルエンディアン
> ○ROM領域 0番地〜
> ○RAM領域 0x10000000番地〜
> ○スタック領域 〜0x101ffff0
> ○RS232Cボーレート 38400bps
> こんなところです。
> Makefile.configとsys_config.hを変更しました。
> 添付しますのでどうか見て下さい。
Makefile.configとsys_config.hの設定は,これでいいと思います.


> あと、sh3.txtにhardware_init_hookにBSCの
> 設定を追加するように書かれていたので、
> 自分なりに書いてみましたがこれもだめでした。
> これも必要ですか?
> 

hardware_init_hookには,ボード依存の初期化を記述する必要があります.
DVESH7700のhardware_init_hookが空なのは,イメージのロードにGDB-STUB を
使うことを想定しているため,GDB-STUBの方で初期化が終了しているので,必
要ないからです.(手抜きという話もありますが....)

そのため,直接カーネルをROMから起動しようとした場合は,
hardware_init_hookにBSC等の初期化処理を記述する必要があります.
添付されたsys_support.Sを見ますと,SHのアセンブラの記述方法が間違って
ます.SHは16bit固定長命令のため,基本的に大きな即値を扱うには,一旦レ
ジスタに読み込む必要があります.

例えば,

#define BSC_BCR1        0xffffff60      
        move.l #0x0800, BSC_BCR1

をGCCの形で書くと,


mov.l BSC_BCR1,r0
mov.l BSC_BCR1_DATA,r1
mov.w r1, @ r0

      .align 4
BSC_BCR1:
        .long  0xffffff60      
BSC_BCR1_DATA:
        .long  0x0800


バスコントロールレジスタ(BCR1)は,16ビットレジスタなので,mov.wでアク
セスする必要があります.


hardware_init_hookは,sh3-stubのinit_dvesh3.Sを参考にして下さい.具体
的には,init_bscをhardware_init_hookに変えて,ファイルの下の方のXXX_D 
をターゲットボードにあわせて,各コントロールレジスタに設定する値に変え
ます.以下()内は,SH7708シリーズハードウェアマニュアルの関連ページ番号
です.


FRQCR_D:     内蔵周波数レジスタ(FRQCR)の設定値(9-18)
BCR1_D:      バスコントロールレジスタ(BCR1)の設定値(10-15)
BCR2_D:      バスコントロールレジスタ2(BCR2)の設定値(10-18)
WCR1_D:      ウェイトコントロールレジスタ1(WCR1)の設定値(10-20)
WCR2_D:      ウェイトコントロールレジスタ2(WCR2)の設定値(10-21)
MCR_D:       個別メモリコントロールレジスタ(MCR)の設定値(10-24)
DCR_D:       DRAMコントロールレジスタ(DCR)の設定値(10-29)
RTCSR_D:     リフレッシュタイマコントロール(RTCSR)の設定値(10-34)
RTCNT_D:     リフレッシュタイマカウンタ(RTCNT)の設定値(10-36)
RTCOR_D:     リフレッシュタイムコンスタントレジスタ(RTCOR)の設定値(10-37) 
RFCR_D:      リフレッシュカウントレジスタ(RFCR)の設定値(10-37)

以下はDVESH7700固有のレジスタです.
DGR_CSR0_D:  
DGR_CSR21_D:
DGR_CSR23_D:
DGR_CSR24_D:


ターゲットボードで他にROMから動作するプログラムのソースがありましたら,
その初期化処理を見て,上記のレジスタの設定値をそのまま使うのが一番確実
だと思われます.


以上,よろしくお願いします.
-------------------------------------------
豊橋技術科学大学 情報工学専攻 1年 高田研究室   
E-mail  honda @ ertl.ics.tut.ac.jp               
WWW     http://www.ertl.ics.tut.ac.jp/~honda
本田 晋也