
	TOPPERS/ASP Kernel without Configurator（Release 1.9.1）
		Toyohashi Open Platform for Embedded Real-Time Systems/
		Advanced Standard Profile Kernel

TOPPERS/ASPカーネル without Configurator（以下，ASP_WO_CFGカーネル）は，
コンフィギュレータなしでTOPPERS/ASPカーネルを使いたいという要望に対応し
て，ASPカーネルを改造して作成したものです．改造にあたっては，ASPカーネ
ルの動的機能生成拡張パッケージのコードも活用しました．

【使用方法】

ASP_WO_CFGカーネルのユーザーズマニュアルを用意する予定はありません．ま
ずは，サンプルプログラム（sampleディレクトリの下のファイル）を，ASPカー
ネルのものと比較することで，使い方を把握して下さい．

カーネルオブジェクトの数を定義するkernel_cfg.hファイルと，カーネルオブ
ジェクトのIDを定義するkernel_id.hファイルは，アプリケーション側で用意し
てください．kernel_cfg.cは，カーネル側で用意しているものをそのまま使用
してください．

初期化処理と終了時処理は，アプリケーション側で以下の名称で用意して下さ
い．

	void	inirtn(void);
	void	terrtn(void);

カーネルオブジェクトの生成は，システムコンフィギュレーションファイルに
静的APIを記述する代わりに，初期化処理（inirtn）から以下のサービスコール
を呼び出すことで行います．これらのサービスコールは，初期化処理の中での
み呼び出すことができます（カーネルの起動後は呼び出せません）．

	ER	cre_tsk(ID tskid, const T_CTSK *pk_ctsk);
	ER	cre_sem(ID semid, const T_CSEM *pk_csem);
	ER	cre_flg(ID flgid, const T_CFLG *pk_cflg);
	ER	cre_dtq(ID dtqid, const T_CDTQ *pk_cdtq);
	ER	cre_pdq(ID pdqid, const T_CPDQ *pk_cpdq);
	ER	cre_mbx(ID mbxid, const T_CMBX *pk_cmbx);
	ER	cre_mpf(ID mpfid, const T_CMPF *pk_cmpf);
	ER	cre_cyc(ID cycid, const T_CCYC *pk_ccyc);
	ER	cre_alm(ID almid, const T_CALM *pk_calm);
	ER	cfg_int(INTNO intno, const T_CINT *pk_cint);
	ER	att_isr(const T_CISR *pk_cisr);
	ER	def_inh(INHNO inhno, const T_DINH *pk_dinh);
	ER	def_exc(EXCNO excno, const T_DEXC *pk_dexc);

【質問・バグレポート・意見等の送付先】

ASP_WO_CFGカーネルに対するご意見・ご質問等は，TOPPERSユーザーズメーリン
グリスト（users@toppers.jp）宛にお願いします．

TOPPERSユーザーズメーリングリストへの登録方法については，以下のページに
説明があります．

	http://www.toppers.jp/community.html

【ポーティングにあたって】

ASPカーネルのターゲット依存部に対して，以下の修正が必要です．

(1) 割込み要求ライン属性の設定方法と，割込みハンドラおよびCPU例外ハンド
ラの登録方法が，大幅に変更されています．cfg_int，def_inh，def_excの各サー
ビスコールは，カーネル内の標準的なデータ構造に登録内容を書き込みます．
それらの処理が終わった後，カーネルの起動前に，ターゲット依存部の
target_prepare が呼ばれます．

	void target_prepare(void)

target_prepareの中では，カーネル内の標準的なデータ構造を読み込んで，割
込み要求ラインの属性の設定と，割込みハンドラおよびCPU例外ハンドラの登録
処理を行って下さい．

この変更に伴って，以下のマクロと関数（または，それに変わるマクロと関数
など）は不要になります．

	void x_config_int(INTNO intno, ATR intatr, PRI intpri)

	INT_ENTRY(inhno, inthdr)
	INTHDR_ENTRY(inhno, inhno_num, inthdr)
	void x_define_inh(INHNO inhno, FP int_entry)

	EXC_ENTRY(excno, exchdr)
	EXCHDR_ENTRY(excno, excno_num, exchdr)
	void x_define_exc(EXCNO excno, FP exc_entry)

(2) cre_tsk，att_isr，cfg_int，def_inh，def_excでターゲット依存にエラー
チェックを行うための以下の関数が必要になります．ターゲット依存にチェッ
クすべきエラーがない場合には，こららの関数を，常にE_OKを返す関数として
実装してください．

	ER target_check_ctsk(ID tskid, const T_CTSK *pk_ctsk)
	ER target_check_aisr(const T_CISR *pk_cisr)
	ER target_check_cint(INTNO intno, const T_CINT *pk_cint)
	ER target_check_dinh(INHNO inhno, const T_DINH *pk_dinh)
	ER target_check_dexc(EXCNO excno, const T_DEXC *pk_dexc)

(3) ターゲット依存部にコンフィギュレーションファイル（例えば，
target_timer.cfgやtarget_serial.cfg）があった場合，その内容を，初期化処
理（例えば，target_timer_initializeやsio_initialize）に追加します．

また，コンフィギュレータを使わないとい趣旨からは，offset.hの自動生成も
使わないのが望ましいと考えます．ターゲット毎にoffset.hを準備する方法を
推奨します．

以上
