1 |
|
---|
2 | TOPPERS/ASP Kernel without Configurator(Release 1.9.1)
|
---|
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カーネルを使いたいという要望に対応し
|
---|
8 | て,ASPカーネルを改造して作成したものです.改造にあたっては,ASPカーネ
|
---|
9 | ルの動的機能生成拡張パッケージのコードも活用しました.
|
---|
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 |
|
---|
59 | ASPカーネルのターゲット依存部に対して,以下の修正が必要です.
|
---|
60 |
|
---|
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 |
|
---|
105 | 以上
|
---|