TOPPERSのサンプルプログラムをターゲットに合わせてカスタマイズしてみる。
ターゲットについて
- マイコンはSH7149を使用。
- ROM、RAMはマイコン内蔵のものを使用。
- クロック設定は、I : B : P = 80 : 40 : 40 [MHz]
開発コードネームは「KOKUBUNJI」。
コードネームをつけると、なんだかカッコよいような気がする。
そういえば、昔の拙者の上司は焼肉が大好きで、
コードネームを「ユッケ」や「ハラミ」にしていたなぁ。
まずはコピペする。
jsp/config/sh2ディレクトリにあるapsh2f6a以下をコピーして、
「kokubunji」ディレクトリを作成する。
% cd jsp/config/sh2
% cp -r apsh2f6a kokubunji
あと、「apsh2f6a.h」を「kokubunji.h」にリネームする。
こいつをベースにカスタマイズしていく。
各種ファイルの修正
kokubunjiディレクトリ内の各ファイルをターゲットに合わせて修正。
hw_serial.h
#include "sh7149sci.h"
Makefile.config
まずSH7145になってるところをSH7149に変更。
CDEFS := $(CDEFS) -DSH7149
KERNEL_COBJS := $(KERNEL_COBJS) sys_config.o sh7149sci.o
ROM、RAMのアドレスを変更する。
# ベクタテーブルの後ろ
TEXT_START_ADDRESS=0x00000400
# RAM領域の先頭アドレス(CS2)
DATA_START_ADDRESS=0xFFFF9000
SCIのドライバ
標準で添付されているsh7145用のSCIドライバを改造してSH7149用を作る。
ヘッダの修正
sh7145sci.hをコピーしてsh7149sci.hを作る。
SH7149のSCIはSH7145とほとんど同じだが、レジスタのアドレスが異なる。
「コントロールレジスタのアドレスのオフセット」のところを下記のように修正。
#define SCI_SCR 0x4
#define SCI_SSR 0x8
#define SCI_BRR 0x2
#define SCI_SMR 0x0
#define SCI_TDR 0x6
#define SCI_RDR 0xA
#define SCI_SDCR 0xC
あと、周辺クロックがSH7145と違うので、BRRの設定を変更しておく。
#define SMR_CKS 0x0 /* 分周比 */
#define BRR9600 129 /* 9600 ビットレート */
#define BRR19200 64 /* 19200 ビットレート */
#define BRR38400 32 /* 38400 ビットレート */
コードの修正
sh7145sci.cをコピーしてsh7149sci.cを作る。
ここでは、SCIのベースアドレスを修正する。
const SIOPINIB siopinib_table[TNUM_PORT] = {
{0xffffc000, BRR9600, 0x0, 6}, /* SCI0 */
}
CMTのドライバ
sh7145cmt.hをコピーしてsh7149cmt.hを作る。
クロック周波数を変更。Pφ = 40 [MHz]を8分周するので5,000 [kHz]となる。
#define TIMER_CLOCK 5000
レジスタのアドレスを変更する。
#define CMSTR (VH *)0xffffce00
#define CMCSR_0 (VH *)0xffffce02
#define CMCNT_0 (VH *)0xffffce04
#define CMCOR_0 (VH *)0xffffce06
最終更新:2008年12月28日 19:19