[49] | 1 |
|
---|
[70] | 2 | TOPPERS/ASP Kernel without Configurator(Release 1.9.1)
|
---|
[49] | 3 | Toyohashi Open Platform for Embedded Real-Time Systems/
|
---|
| 4 | Advanced Standard Profile Kernel
|
---|
| 5 |
|
---|
| 6 | TOPPERS/ASPカーネル without Configurator(以下,ASP_WO_CFGカーネル)は,
|
---|
| 7 | コンフィギュレータなしでTOPPERS/ASPカーネルを使いたいという要望に対応し
|
---|
[53] | 8 | て,ASPカーネルを改造して作成したものです.改造にあたっては,ASPカーネ
|
---|
| 9 | ルの動的機能生成拡張パッケージのコードも活用しました.
|
---|
[49] | 10 |
|
---|
| 11 | 【使用方法】
|
---|
| 12 |
|
---|
| 13 | ASP_WO_CFGカーネルのユーザーズマニュアルを用意する予定はありません.ま
|
---|
| 14 | ずは,サンプルプログラム(sampleディレクトリの下のファイル)を,ASPカー
|
---|
| 15 | ネルのものと比較することで,使い方を把握して下さい.
|
---|
| 16 |
|
---|
| 17 | カーネルオブジェクトの数を定義するkernel_cfg.hファイルと,カーネルオブ
|
---|
| 18 | ジェクトのIDを定義するkernel_id.hファイルは,アプリケーション側で用意し
|
---|
| 19 | てください.kernel_cfg.cは,カーネル側で用意しているものをそのまま使用
|
---|
| 20 | してください.
|
---|
| 21 |
|
---|
| 22 | 初期化処理と終了時処理は,アプリケーション側で以下の名称で用意して下さ
|
---|
| 23 | い.
|
---|
| 24 |
|
---|
| 25 | void inirtn(void);
|
---|
| 26 | void terrtn(void);
|
---|
| 27 |
|
---|
| 28 | カーネルオブジェクトの生成は,システムコンフィギュレーションファイルに
|
---|
| 29 | 静的APIを記述する代わりに,初期化処理(inirtn)から以下のサービスコール
|
---|
| 30 | を呼び出すことで行います.これらのサービスコールは,初期化処理の中での
|
---|
| 31 | み呼び出すことができます(カーネルの起動後は呼び出せません).
|
---|
| 32 |
|
---|
| 33 | ER cre_tsk(ID tskid, const T_CTSK *pk_ctsk);
|
---|
| 34 | ER cre_sem(ID semid, const T_CSEM *pk_csem);
|
---|
| 35 | ER cre_flg(ID flgid, const T_CFLG *pk_cflg);
|
---|
| 36 | ER cre_dtq(ID dtqid, const T_CDTQ *pk_cdtq);
|
---|
| 37 | ER cre_pdq(ID pdqid, const T_CPDQ *pk_cpdq);
|
---|
| 38 | ER cre_mbx(ID mbxid, const T_CMBX *pk_cmbx);
|
---|
| 39 | ER cre_mpf(ID mpfid, const T_CMPF *pk_cmpf);
|
---|
| 40 | ER cre_cyc(ID cycid, const T_CCYC *pk_ccyc);
|
---|
| 41 | ER cre_alm(ID almid, const T_CALM *pk_calm);
|
---|
| 42 | ER cfg_int(INTNO intno, const T_CINT *pk_cint);
|
---|
| 43 | ER att_isr(const T_CISR *pk_cisr);
|
---|
| 44 | ER def_inh(INHNO inhno, const T_DINH *pk_dinh);
|
---|
| 45 | ER def_exc(EXCNO excno, const T_DEXC *pk_dexc);
|
---|
| 46 |
|
---|
| 47 | 【質問・バグレポート・意見等の送付先】
|
---|
| 48 |
|
---|
| 49 | ASP_WO_CFGカーネルに対するご意見・ご質問等は,TOPPERSユーザーズメーリン
|
---|
| 50 | グリスト(users@toppers.jp)宛にお願いします.
|
---|
| 51 |
|
---|
| 52 | TOPPERSユーザーズメーリングリストへの登録方法については,以下のページに
|
---|
| 53 | 説明があります.
|
---|
| 54 |
|
---|
| 55 | http://www.toppers.jp/community.html
|
---|
| 56 |
|
---|
| 57 | 【ポーティングにあたって】
|
---|
| 58 |
|
---|
[53] | 59 | ASPカーネルのターゲット依存部に対して,以下の修正が必要です.
|
---|
[49] | 60 |
|
---|
[53] | 61 | (1) 割込み要求ライン属性の設定方法と,割込みハンドラおよびCPU例外ハンド
|
---|
| 62 | ラの登録方法が,大幅に変更されています.cfg_int,def_inh,def_excの各サー
|
---|
| 63 | ビスコールは,カーネル内の標準的なデータ構造に登録内容を書き込みます.
|
---|
| 64 | それらの処理が終わった後,カーネルの起動前に,ターゲット依存部の
|
---|
| 65 | target_prepare が呼ばれます.
|
---|
| 66 |
|
---|
| 67 | void target_prepare(void)
|
---|
| 68 |
|
---|
| 69 | target_prepareの中では,カーネル内の標準的なデータ構造を読み込んで,割
|
---|
| 70 | 込み要求ラインの属性の設定と,割込みハンドラおよびCPU例外ハンドラの登録
|
---|
| 71 | 処理を行って下さい.
|
---|
| 72 |
|
---|
| 73 | この変更に伴って,以下のマクロと関数(または,それに変わるマクロと関数
|
---|
| 74 | など)は不要になります.
|
---|
| 75 |
|
---|
| 76 | void x_config_int(INTNO intno, ATR intatr, PRI intpri)
|
---|
| 77 |
|
---|
| 78 | INT_ENTRY(inhno, inthdr)
|
---|
| 79 | INTHDR_ENTRY(inhno, inhno_num, inthdr)
|
---|
| 80 | void x_define_inh(INHNO inhno, FP int_entry)
|
---|
| 81 |
|
---|
| 82 | EXC_ENTRY(excno, exchdr)
|
---|
| 83 | EXCHDR_ENTRY(excno, excno_num, exchdr)
|
---|
| 84 | void x_define_exc(EXCNO excno, FP exc_entry)
|
---|
| 85 |
|
---|
| 86 | (2) cre_tsk,att_isr,cfg_int,def_inh,def_excでターゲット依存にエラー
|
---|
| 87 | チェックを行うための以下の関数が必要になります.ターゲット依存にチェッ
|
---|
| 88 | クすべきエラーがない場合には,こららの関数を,常にE_OKを返す関数として
|
---|
| 89 | 実装してください.
|
---|
| 90 |
|
---|
| 91 | ER target_check_ctsk(ID tskid, const T_CTSK *pk_ctsk)
|
---|
| 92 | ER target_check_aisr(const T_CISR *pk_cisr)
|
---|
| 93 | ER target_check_cint(INTNO intno, const T_CINT *pk_cint)
|
---|
| 94 | ER target_check_dinh(INHNO inhno, const T_DINH *pk_dinh)
|
---|
| 95 | ER target_check_dexc(EXCNO excno, const T_DEXC *pk_dexc)
|
---|
| 96 |
|
---|
| 97 | (3) ターゲット依存部にコンフィギュレーションファイル(例えば,
|
---|
| 98 | target_timer.cfgやtarget_serial.cfg)があった場合,その内容を,初期化処
|
---|
| 99 | 理(例えば,target_timer_initializeやsio_initialize)に追加します.
|
---|
| 100 |
|
---|
| 101 | また,コンフィギュレータを使わないとい趣旨からは,offset.hの自動生成も
|
---|
| 102 | 使わないのが望ましいと考えます.ターゲット毎にoffset.hを準備する方法を
|
---|
| 103 | 推奨します.
|
---|
| 104 |
|
---|
[49] | 105 | 以上
|
---|