OSDN Git Service

a8bb87c96b6217acdb4bfc3b72cae4d84989d185
[toppersasp4lpc/asp.git] / asp / doc / migration.txt
1
2                 TOPPERS新世代カーネルへのマイグレーションガイド
3
4                 最終更新: 2008年8月8日(作成中)
5
6 このドキュメントは,従来のTOPPERSカーネルを含むμITRON4.0仕様準拠のカー
7 ネルから,TOPPERS新世代カーネルに移行するための方法(またはヒント)を説
8 明するものである.
9
10 ----------------------------------------------------------------------
11  TOPPERS/ASP Kernel
12      Toyohashi Open Platform for Embedded Real-Time Systems/
13      Advanced Standard Profile Kernel
14
15  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
16              Graduate School of Information Science, Nagoya Univ., JAPAN
17  
18  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
19  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
20  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
21  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
22      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
23      スコード中に含まれていること.
24  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
25      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
26      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
27      の無保証規定を掲載すること.
28  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
29      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
30      と.
31    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
32        作権表示,この利用条件および下記の無保証規定を掲載すること.
33    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
34        報告すること.
35  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
36      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
37      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
38      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
39      免責すること.
40  
41  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
42  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
43  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
44  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
45  の責任を負わない.
46  
47  @(#) $Id$
48 ----------------------------------------------------------------------
49
50 ○目次
51
52 ・データ型の変更
53 ・オブジェクトIDの自動割付けへの対応
54 ・sta_tskの置き換え
55 ・set_timの置き換え
56
57
58 ○データ型の変更
59
60 TOPPERS新世代カーネル仕様では,ITRON仕様の次のデータ型を廃止している.
61 対応する新しいデータ型を用意しているので,単純に置き換えればよい.
62
63         廃止したデータ型                置き換えるデータ型
64         ------------------------------------------
65         B                                               int8_t
66         UB                                              uint8_t
67         VB                                              uint8_t
68         H                                               int16_t
69         UH                                              uint16_t
70         VH                                              uint16_t
71         W                                               int32_t
72         UW                                              uint32_t
73         VW                                              uint32_t
74         D                                               int64_t
75         UD                                              uint64_t
76         VD                                              uint64_t
77         VP                                              void *
78         INT                                             int_t
79         UINT                                    uint_t
80         BOOL                                    boot_t
81         VP_INT                                  intptr_t
82
83 また,定数についても,次の通り置き換える必要がある.
84
85         廃止した定数                      置き換える定数
86         ------------------------------------------
87         TRUE                                    true
88         FALSE                                   false
89
90 なお,ITRON仕様のデータ型を使いたいアプリケーションのために,ITRON仕様
91 との互換性を保つためのitron.hを用意しているが,使用することは推奨しない.
92
93
94 ○オブジェクトIDの自動割付けへの対応
95
96 TOPPERS新世代カーネルでは,オブジェクトのID番号を自動割付けすることが基
97 本となっている.TOPPERS新世代カーネルを用いる際のID番号の管理方法につい
98 ては,「TOPPERS/ASPカーネル ユーザーズマニュアル」の「11.3 オブジェクト
99 IDの管理」の節に説明があるので,まずはこれを参照すること.
100
101 従来,ID番号を手動で割り付けており,手動で割り付けていたID番号を変更し
102 たくない場合には,コンフィギュレータの持つID番号の割付けをファイルから
103 取り込む機能(--id-input-fileオプション)を用いることで,手動で割り付け
104 たID番号を用いることができる.この場合に,手動で割り付けたID番号は,コ
105 ンフィギュレータが--id-input-fileオプションで取り込むファイル中にのみ記
106 述し,アプリケーションのソースプログラムからは,kernel_cfg.hを用いるこ
107 とが望ましい.
108
109
110 ○sta_tskの置き換え
111
112 TOPPERS新世代カーネルでは,タスクを起動するサービスコールとしてact_tsk
113 をサポートしており,sta_tskをサポートしていない.act_tskとsta_tskの機能
114 を比較した場合,前者はタスク起動のキューイング機能を持つのに対して,後
115 者はタスクに起動コードを渡す機能を持つ.そのため,sta_tskをact_tskに置
116 き換える場合に,起動コードを渡す機能をどのように実現するかが問題となる.
117
118 起動コードを渡す機能を最も簡単に代用する方法は,起動コードを渡すための
119 データキューを用意する方法である.タスクを起動する処理単位は,データ
120 キューに起動コードを送信した後,act_tskによりタスクを起動する.起動され
121 たタスクは,データキューから起動コードを受信する.
122
123 タスク起動のキューイングが起こらないことが保証できる,言い換えると,タ
124 スクを起動する時には,対象タスクは休止状態にあることが保証できる場合に
125 は,起動コードをグローバル変数に置いて渡す方法もある.タスクを起動する
126 処理単位がそのグローバル変数に書くのは,タスクが休止状態の間に限られ,
127 起動されたタスクがそのグローバル変数を読むのは,タスクが実行できる状態
128 の間に限られるため,グローバル変数に対する排他制御は必要ない.
129
130
131 ○set_timの置き換え
132
133 TOPPERS新世代カーネルでは,システム時刻を設定するサービスコールである
134 set_timが使用されることは稀であると考え,サポートしないこととした.
135
136 ITRON仕様と互換のset_timとget_timが必要な場合には,下に示すコードの
137 itron_set_timとitron_get_tim で代用することができる(下のコードでは,エ
138 ラー処理は省略している).
139
140 ----------------------------------------
141 SYSTIM  systim_offset = 0U;
142
143 void
144 itron_set_tim(const SYSTIM *p_systim)
145 {
146         SYSTIM  current_time;
147
148         get_tim(&current_time);
149         systim_offset = *p_systim - current_time;
150 }
151
152 void
153 itron_get_tim(SYSTIM *p_systim)
154 {
155         SYSTIM  current_time;
156
157         get_tim(&current_time);
158         *p_systim = systim_offset + current_time;
159 }
160 ----------------------------------------
161
162 以上