2 TOPPERS新世代カーネルへのマイグレーションガイド
6 このドキュメントは,従来のTOPPERSカーネルを含むμITRON4.0仕様準拠のカー
7 ネルから,TOPPERS新世代カーネルに移行するための方法(またはヒント)を説
10 ----------------------------------------------------------------------
12 Toyohashi Open Platform for Embedded Real-Time Systems/
13 Advanced Standard Profile Kernel
15 Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
16 Graduate School of Information Science, Nagoya Univ., JAPAN
18 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
19 ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
20 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
21 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
22 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
24 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
25 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
26 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
29 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
31 (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
32 作権表示,この利用条件および下記の無保証規定を掲載すること.
33 (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
35 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
36 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
37 また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
38 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
41 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
42 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
43 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
44 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
48 ----------------------------------------------------------------------
60 TOPPERS新世代カーネル仕様では,ITRON仕様の次のデータ型を廃止している.
61 対応する新しいデータ型を用意しているので,単純に置き換えればよい.
64 ------------------------------------------
83 また,定数についても,次の通り置き換える必要がある.
86 ------------------------------------------
90 なお,ITRON仕様のデータ型を使いたいアプリケーションのために,ITRON仕様
91 との互換性を保つためのitron.hを用意しているが,使用することは推奨しない.
96 TOPPERS新世代カーネルでは,オブジェクトのID番号を自動割付けすることが基
97 本となっている.TOPPERS新世代カーネルを用いる際のID番号の管理方法につい
98 ては,「TOPPERS/ASPカーネル ユーザーズマニュアル」の「11.3 オブジェクト
99 IDの管理」の節に説明があるので,まずはこれを参照すること.
101 従来,ID番号を手動で割り付けており,手動で割り付けていたID番号を変更し
102 たくない場合には,コンフィギュレータの持つID番号の割付けをファイルから
103 取り込む機能(--id-input-fileオプション)を用いることで,手動で割り付け
104 たID番号を用いることができる.この場合に,手動で割り付けたID番号は,コ
105 ンフィギュレータが--id-input-fileオプションで取り込むファイル中にのみ記
106 述し,アプリケーションのソースプログラムからは,kernel_cfg.hを用いるこ
112 TOPPERS新世代カーネルでは,タスクを起動するサービスコールとしてact_tsk
113 をサポートしており,sta_tskをサポートしていない.act_tskとsta_tskの機能
114 を比較した場合,前者はタスク起動のキューイング機能を持つのに対して,後
115 者はタスクに起動コードを渡す機能を持つ.そのため,sta_tskをact_tskに置
116 き換える場合に,起動コードを渡す機能をどのように実現するかが問題となる.
118 起動コードを渡す機能を最も簡単に代用する方法は,起動コードを渡すための
119 データキューを用意する方法である.タスクを起動する処理単位は,データ
120 キューに起動コードを送信した後,act_tskによりタスクを起動する.起動され
121 たタスクは,データキューから起動コードを受信する.
123 タスク起動のキューイングが起こらないことが保証できる,言い換えると,タ
124 スクを起動する時には,対象タスクは休止状態にあることが保証できる場合に
125 は,起動コードをグローバル変数に置いて渡す方法もある.タスクを起動する
126 処理単位がそのグローバル変数に書くのは,タスクが休止状態の間に限られ,
127 起動されたタスクがそのグローバル変数を読むのは,タスクが実行できる状態
128 の間に限られるため,グローバル変数に対する排他制御は必要ない.
133 TOPPERS新世代カーネルでは,システム時刻を設定するサービスコールである
134 set_timが使用されることは稀であると考え,サポートしないこととした.
136 ITRON仕様と互換のset_timとget_timが必要な場合には,下に示すコードの
137 itron_set_timとitron_get_tim で代用することができる(下のコードでは,エ
140 ----------------------------------------
141 SYSTIM systim_offset = 0U;
144 itron_set_tim(const SYSTIM *p_systim)
148 get_tim(¤t_time);
149 systim_offset = *p_systim - current_time;
153 itron_get_tim(SYSTIM *p_systim)
157 get_tim(¤t_time);
158 *p_systim = systim_offset + current_time;
160 ----------------------------------------