Ignore:
Timestamp:
Jul 23, 2017, 2:29:40 PM (7 years ago)
Author:
coas-nagasima
Message:

SVNプロパティを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_asp/trunk/asp_dcre/doc/asp_spec.txt

    • Property svn:mime-type changed from text/plain to text/plane; charset=UTF-8
    r313 r315  
    11
    2                 TOPPERS/ASPカーネルの仕様概要
    3 
    4                 対応バージョン: Release 1.9
    5                 最終更新: 2017å¹´1月29日
    6 
    7 ã“のドキュメントは,TOPPERS/ASPカーネルの仕様概要について説明したもので
    8 ã‚る.μITRON4.0仕様のスタンダードプロファイルに対する拡張および変更箇
    9 æ‰€ã‚’中心に説明する.
     2                TOPPERS/ASPカーネルの仕様概要
     3
     4                対応バージョン: Release 1.9
     5                最終更新: 2017年1月29日
     6
     7このドキュメントは,TOPPERS/ASPカーネルの仕様概要について説明したもので
     8ある.μITRON4.0仕様のスタンダードプロファイルに対する拡張および変更箇
     9所を中心に説明する.
    1010
    1111----------------------------------------------------------------------
     
    1717             Graduate School of Information Science, Nagoya Univ., JAPAN
    1818 
    19  ä¸Šè¨˜è‘—作権è€
    20 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    21  ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    22  å¤‰ãƒ»å†é
    23 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    24  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    25      æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    26      ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    27  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    28      ç”¨ã§ãã‚‹å½¢ã§å†é
    29 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    31      è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    33      ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    34  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    35      ç”¨ã§ããªã„形で再é
    36 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    37      ã¨ï¼Ž
    38    (a) 再é
    39 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    40 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    41        ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    42    (b) 再é
    43 å¸ƒã®å½¢æ
    44 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    45        å ±å‘Šã™ã‚‹ã“と.
    46  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    47      å®³ã‹ã‚‰ã‚‚,上記著作権è€
    48 ãŠã‚ˆã³TOPPERSプロジェクトをå
    49 è²¬ã™ã‚‹ã“と.
    50      ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    51      ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    52 ãŠã‚ˆã³TOPPERSプロジェクトを
    53      å
    54 è²¬ã™ã‚‹ã“と.
     19 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     20 ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     21 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     22 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     23     権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     24     スコード中に含まれていること.
     25 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     26     用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     27     者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     28     の無保証規定を掲載すること.
     29 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     30     用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     31     と.
     32   (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     33       作権表示,この利用条件および下記の無保証規定を掲載すること.
     34   (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     35       報告すること.
     36 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     37     害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     38     また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     39     由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     40     免責すること.
    5541 
    56  æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    57 ãŠ
    58  ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    59  ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    60  ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    61  ã®è²¬ä»»ã‚’負わない.
     42 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     43 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     44 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     45 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     46 の責任を負わない.
    6247 
    6348 $Id$
    6449----------------------------------------------------------------------
    6550
    66 â—‹å‰æã¨ãªã‚‹æ–‡æ›¸
    67 
    68 [1] トロン協会: μITRON4.0仕様, Ver.4.02.00, 2004å¹´.
    69 
    70 [2] トロン協会: μITRON4.0仕様 保護機能拡張(μITRON4.0/PX仕様),
    71         Ver.1.00.00, 2002å¹´.
    72 
    73 [3] TOPPERSプロジェクト: TOPPERS/JSPカーネル ユーザズマニュアル
    74         Release 1.4.3対応, 最終更新: 2007å¹´4月23日.
    75 
    76 â—‹ä»•æ§˜ã®æ¦‚ç•¥
    77 
    78 TOPPERS/ASPカーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルを
    79 ãƒ™ãƒ¼ã‚¹ã«ï¼Œæ¬¡ã®ã‚ˆã†ãªæ‹¡å¼µãƒ»æ”¹è‰¯ã‚’加えたものである.
    80 
    81 ãƒ»å‰²è¾¼ã¿å‡¦ç†æ©Ÿèƒ½ã«ã¤ã„ては,TOPPERS標準割込み処理モデルに準拠させる.
    82 ãƒ»Î¼ITRON4.0仕様のスタンダードプロファイル外の機能の一部を導å
    83 ¥ã™ã‚‹ï¼Ž
    84 ãƒ»ä¸€éƒ¨ã®ä»•æ§˜ã«ã¤ã„て,μITRON4.0仕様に対して変更を加える.
    85 ãƒ»JSPカーネルにおける独自の拡張機能を一部変更して実è£
    86 ã™ã‚‹ï¼Ž
    87 ãƒ»ASPカーネルにおける独自の拡張機能を新たに実è£
    88 ã™ã‚‹ï¼Ž
    89 ãƒ»ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³å‡¦ç†ã‚’å
    90 ¨é¢çš„に見直す.
    91 ãƒ»æ‹¡å¼µæ©Ÿèƒ½ã‚’実è£
    92 ã™ã‚‹ãŸã‚ã®æ‹¡å¼µãƒ‘ッケージをサポートする.
    93 ãƒ»TOPPERS組込みコンポーネントシステム(TECS)を導å
    94 ¥ã™ã‚‹ï¼Ž
    95 
    96 ãã®ãŸã‚ASPカーネルは,μITRON4.0仕様に完å
    97 ¨ã«æº–拠しているわけではなく,
    98 JSPカーネルの上位互換にもなっていない.
    99 
    100 Î¼ITRON4.0仕様では,実è£
    101 ç‹¬è‡ªã«ç”¨æ„ã™ã‚‹é™çš„APIおよびサービスコールの名称
    102 ã«ã¯ï¼Œå
    103 ˆé ­ã«ãã‚Œãžã‚Œ"V"および"v"の文字を付加するものとしているが,ASPカー
    104 ãƒãƒ«ã§ã¯ã“の規定は採用しない.
    105 
    106 ä»¥ä¸‹ã§ã¯ï¼ŒÎ¼ITRON4.0仕様のスタンダードプロファイルに対する拡張および変
    107 æ›´ç®‡æ‰€ã«ã¤ã„て説明する.
    108 
    109 â—‹ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ãƒ—ロファイル外の機能の一部導å
    110 ¥
    111 
    112 Î¼ITRON4.0仕様には規定されているが,スタンダードプロファイルに含まれな
    113 ã„(または,含まれるとは限らない)機能として,次の機能を実è£
    114 ã™ã‚‹ï¼Ž
    115 
    116 (1) イベントフラグの複数タスクå¾
    117 ã¡
    118 
    119 ã‚¤ãƒ™ãƒ³ãƒˆãƒ•ãƒ©ã‚°ã«å¯¾ã™ã‚‹è¤‡æ•°ã‚¿ã‚¹ã‚¯å¾
    120 ã¡ã®æ©Ÿèƒ½ï¼ˆTA_WMUL属性のイベントフラグ)
    121 ã‚’実è£
    122 ã™ã‚‹ï¼Ž
    123 
    124 ã“れにより,イベントフラグのセット(set_flg,iset_flg)で複数のタスクが
    125 èµ·åºŠã•ã‚Œã‚‹å¯èƒ½æ€§ãŒç”Ÿã˜ã‚‹ï¼Žå¤šãã®ã‚¿ã‚¹ã‚¯ã‚’同時にå¾
    126 ã¡è§£é™¤ã—た場合,カーネ
    127 ãƒ«å†
    128 ã§ã®å‰²è¾¼ã¿ç¦æ­¢æ™‚間が長くなるため,使用にあたっては注意がå¿
    129 è¦ã§ã‚る.
    130 
    131 (2) アラームハンドラ
    132 
    133 ã‚¢ãƒ©ãƒ¼ãƒ ãƒãƒ³ãƒ‰ãƒ©ã®æ©Ÿèƒ½ã‚’実è£
    134 ã™ã‚‹ï¼Žã‚¢ãƒ©ãƒ¼ãƒ ãƒãƒ³ãƒ‰ãƒ©æ©Ÿèƒ½ã®ãŸã‚ã«å®Ÿè£
    135 ã™ã‚‹
    136 é™çš„APIおよびサービスコールは次の通りである.
    137 
    138         CRE_ALM         ã‚¢ãƒ©ãƒ¼ãƒ ãƒãƒ³ãƒ‰ãƒ©ã®ç”Ÿæˆï¼ˆé™çš„API)
    139         sta_alm         ã‚¢ãƒ©ãƒ¼ãƒ ãƒãƒ³ãƒ‰ãƒ©ã®å‹•ä½œé–‹å§‹
    140         ista_alm        アラームハンドラの動作開始(非タスクコンテキスト用)
    141         stp_alm         ã‚¢ãƒ©ãƒ¼ãƒ ãƒãƒ³ãƒ‰ãƒ©ã®å‹•ä½œåœæ­¢
    142         istp_alm        アラームハンドラの動作停止(非タスクコンテキスト用)
    143 
    144 (3) 割込みサービスルーチン
    145 
    146 ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ãƒ—ロファイルでは,割込みハンドラと割込みサービスルーチンの
    147 ã„ずれかをサポートすればよいことになっている.JSPカーネルでは割込みハン
    148 ãƒ‰ãƒ©ã®ã¿ã‚’実è£
    149 ã—ているが,ASPカーネルではその両è€
    150 ã‚’実è£
    151 ã™ã‚‹ï¼Ž
    152 
    153 å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチンの仕様については,TOPPERS標準割込み処理モデルの規
    154 å®šã«æº–拠する.割込みサービスルーチンを追加するサービスコールとして,次
    155 ã®é™çš„APIを実è£
    156 ã™ã‚‹ï¼Žã“の静的APIの仕様については,TOPPERS標準割込み処理
    157 ãƒ¢ãƒ‡ãƒ«ã«ãŠã„て,μITRON4.0仕様に対して拡張を加えている.
    158 
    159         ATT_ISR         å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチンの追加(静的API)
    160 
    161 (4) 割込み管理機能
    162 
    163 ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ãƒ—ロファイルに含まれない割込み管理機能として,次のサービス
    164 ã‚³ãƒ¼ãƒ«ã‚’実è£
    165 ã™ã‚‹ï¼ŽJSPカーネルでは,これらのサービスコールを実è£
    166 ã™ã‚‹ã‹ã©
    167 ã†ã‹ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜ã¨ãªã£ã¦ã„るが,ASPカーネルでは,TOPPERS標準割込み
    168 å‡¦ç†ãƒ¢ãƒ‡ãƒ«ã®è¦å®šã«æº–拠して,ターゲット非依存に実è£
    169 ã™ã‚‹ï¼Ž
    170 
    171         dis_int         å‰²è¾¼ã¿ã®ç¦æ­¢
    172         ena_int         å‰²è¾¼ã¿ã®è¨±å¯
    173         chg_ipm         å‰²è¾¼ã¿å„ªå
    174 ˆåº¦ãƒžã‚¹ã‚¯ã®å¤‰æ›´
    175         get_ipm         å‰²è¾¼ã¿å„ªå
    176 ˆåº¦ãƒžã‚¹ã‚¯ã®å‚ç
    177 §
    178 
    179 (5) オブジェクトの状æ
    180 ‹å‚ç
    181 §æ©Ÿèƒ½
    182 
    183 ä¸»ã«ãƒ‡ãƒãƒƒã‚°æ™‚向けの機能として,オブジェクトの状æ
    184 ‹å‚ç
    185 §æ©Ÿèƒ½ã‚’実è£
    186 ã™ã‚‹ï¼Ž
    187 å
    188 ·ä½“的には,次のサービスコールを実è£
    189 ã™ã‚‹ï¼Ž
    190 
    191         ref_tsk         ã‚¿ã‚¹ã‚¯ã®çŠ¶æ
    192 ‹å‚ç
    193 §
    194         ref_tex         ã‚¿ã‚¹ã‚¯ä¾‹å¤–処理の状æ
    195 ‹å‚ç
    196 §
    197         ref_sem         ã‚»ãƒžãƒ•ã‚©ã®çŠ¶æ
    198 ‹å‚ç
    199 §
    200         ref_flg         ã‚¤ãƒ™ãƒ³ãƒˆãƒ•ãƒ©ã‚°ã®çŠ¶æ
    201 ‹å‚ç
    202 §
    203         ref_dtq         ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®çŠ¶æ
    204 ‹å‚ç
    205 §
    206         ref_mbx         ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ã®çŠ¶æ
    207 ‹å‚ç
    208 §
    209         ref_mpf         å›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ールの状æ
    210 ‹å‚ç
    211 §
    212         ref_cyc         å‘¨æœŸãƒãƒ³ãƒ‰ãƒ©ã®çŠ¶æ
    213 ‹å‚ç
    214 §
    215         ref_alm         ã‚¢ãƒ©ãƒ¼ãƒ ãƒãƒ³ãƒ‰ãƒ©ã®çŠ¶æ
    216 ‹å‚ç
    217 §
    218 
    219 â—‹Î¼ITRON4.0仕様に対する変更
    220 
    221 (1) ITRON標準データ型の見直し
    222 
    223 ã‚µã‚¤ã‚ºã®æ±ºã¾ã£ãŸæ•´æ•°åž‹ï¼ˆB,H, Wなど)などについて,C99に準拠した型の名
    224 ç§°ï¼ˆint8_t,int16_t,int32_tなど)やそれと相性が良い名称に変更する.
    225 ITRON標準データ型(B,H, Wなど)をå¿
    226 è¦ã¨ã™ã‚‹ã‚¢ãƒ—リケーションのために,
    227 itron.hを用意する.
    228 
    229 (2) 非タスクコンテキストからのext_tsk
    230 
    231 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‹ã‚‰ext_tskが呼ばれた場合,E_CTXエラーを返すものと
    232 ã™ã‚‹ï¼Žã“れにともなって,ext_tskをリターンする可能性があるものとし,返り
    233 å€¤ã®åž‹ã‚’ERとする.
    234 
    235 (3) CPU例外ハンドラで行える操作
    236 
    237 CPU例外ハンドラで行える操作については,TOPPERS標準割込み処理モデルに準
    238 æ‹ ã™ã‚‹ã“ととし,JSPカーネルの仕様を踏襲せず,μITRON4.0仕様にも従わない.
    239 ãã®ãŸã‚ã®ã‚µãƒ¼ãƒ“スコールとして,次のサービスコールを実è£
    240 ã™ã‚‹ï¼Ž
    241 
    242         xsns_dpn        CPU例外発生時のディスパッチ保留状æ
    243 ‹ã®å‚ç
    244 §
    245         xsns_xpn        CPU例外発生時のタスク例外処理保留状æ
    246 ‹ã®å‚ç
    247 §
    248 
    249 (4) カーネルの用いる管理領域の分離
    250 
    251 Î¼ITRON4.0/PX仕様において導å
    252 ¥ã•ã‚ŒãŸÎ¼ITRON4.0仕様に対する変更として,カー
    253 ãƒãƒ«ã®ç”¨ã„る管理領域の分離に関する仕様を一部採用する.
    254 
    255 ã¾ãšï¼Œå›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ールの実è£
    256 ã«ãŠã„て,カーネルの用いる管理領域を分離
    257 ã™ã‚‹ã“とに伴い,固定長メモリプールを生成する静的API(CRE_MPF)のパラメー
    258 ã‚¿ã«ï¼Œå›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ール管理領域のå
    259 ˆé ­ç•ªåœ°ï¼ˆmpfmb)を追加する.
    260 
    261 ã¾ãŸï¼Œã“れにあわせて,データキューを生成する静的API(CRE_DTQ)の最後の
    262 ãƒ‘ラメータの名称を,データキュー管理領域のå
    263 ˆé ­ç•ªåœ°ï¼ˆdtqmb)に変更する.
    264 
    265 ãªãŠï¼Œãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ã¯ï¼ŒÎ¼ITRON4.0仕様との互換性のために残している機能
    266 ã¨ä½ç½®ä»˜ã‘,カーネルの用いる管理領域の分離は行わない.そのため,メール
    267 ãƒœãƒƒã‚¯ã‚¹ã‚’生成する静的API(CRE_MBX)に対する変更はない.
    268 
    269 (5) 処理単位とメモリ領域のデータ型の見直し
    270 
    271 å‡¦ç†å˜ä½ã®ã‚¨ãƒ³ãƒˆãƒªç•ªåœ°ã®ãƒ‡ãƒ¼ã‚¿åž‹ã‚’,パラメータが反映されないFP型ではな
    272 ãï¼Œå‡¦ç†å˜ä½æ¯Žã®å°‚用のデータ型とする.例えば,タスクのエントリ番地のデー
    273 ã‚¿åž‹ã‚’TASK型,タスク例外処理ルーチンのデータ型をTEXRTN型とする.
    274 
    275 ã¾ãŸï¼Œã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸã¨å›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ール領域のデータ型を,それぞれSTK_T型
    276 ã¨MPF_T型とする.
    277 
    278 (6) 値が0の定数(オブジェクト属性等)の見直し
    279 
    280 ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãƒŸã‚¹ã‚’防ぐために,値が0の定数の扱いを見直す.オブジェクト属
    281 æ€§ï¼ˆTA_TFIFO等)については,値が0のものはデフォルト扱いして廃止し,定義
    282 ã‚’itron.hに移す.値が0のサービスコールの動作モード(TWF_ANDW)やオブジェ
    283 ã‚¯ãƒˆã®çŠ¶æ
    284 ‹ï¼ˆTTEX_ENA等)については,値を変更する.
    285 
    286 (7) 強制å¾
    287 ã¡è¦æ±‚ネストの廃止
    288 
    289 å¼·åˆ¶å¾
    290 ã¡è¦æ±‚をネストする機能を廃止する.言い換えると,強制å¾
    291 ã¡è¦æ±‚ネス
    292 ãƒˆæ•°ã®æœ€å¤§å€¤ã‚’1に固定する.これに伴い,frsm_tskは廃止し,itron.hにおい
    293 ã¦frsm_tskをrsm_tskにマクロ定義する.また,TMAX_SUSCNTの定義をitron.hに
    294 ç§»ã™ï¼Ž
    295 
    296 (8) システム時刻の設定機能の廃止
    297 
    298 set_tim(システム時刻の設定)を廃止する.
    299 
    300 (9) 周期ハンドラの仕様変更
    301 
    302 sta_cycを呼び出した後,最初に周期ハンドラが起動される時刻を変更する.
    303 Î¼ITRON4.0仕様では,sta_cycを呼び出してから周期ハンドラの起動周期で指定
    304 ã—た相対時間後としているが,ASPカーネルでは,起動位相で指定した相対時間
    305 å¾Œã¨ã™ã‚‹ï¼Ž
    306 
    307 (10) タスク例外処理ルーチンの実行開始条件の変更
    308 
    309 å‰²è¾¼ã¿å„ªå
    310 ˆåº¦ãƒžã‚¹ã‚¯å
    311 ¨è§£é™¤çŠ¶æ
    312 ‹ã§ãªã„場合には,タスク例外処理ルーチンの実
    313 è¡ŒãŒé–‹å§‹ã•ã‚Œãªã„という仕様に変更した.
    314 
    315 â—‹JSPカーネルにおける独自の拡張機能
    316 
    317 JSPカーネルにおける独自の拡張機能の中で,以下の機能を実è£
    318 ã™ã‚‹ï¼Ž
    319 
    320 (1) 性能評価用システム時刻参ç
    321 §æ©Ÿèƒ½
    322 
    323 æ€§èƒ½è©•ä¾¡ç”¨ã‚·ã‚¹ãƒ†ãƒ æ™‚刻参ç
    324 §æ©Ÿèƒ½ã¨ã¯ï¼ŒASPカーネル上で動作するタスクやASP
    325 ã‚«ãƒ¼ãƒãƒ«è‡ªèº«ã®æ€§èƒ½ã‚’計測するための,システム時刻をμ秒単位で読み出す機
    326 èƒ½ã§ã‚る.この機能のためのサービスコールは次の通りである(JSPカーネルと
    327 ã¯åç§°ã‚’変更した).
    328 
    329         get_utm         æ€§èƒ½è©•ä¾¡ç”¨ã‚·ã‚¹ãƒ†ãƒ æ™‚刻の参ç
    330 §
    331 
    332 JSPカーネルからの仕様変更として,get_utmは任意のコンテキストから呼び出
    333 ã™ã“とができるものする.また,性能評価用システム時刻の型(SYSUTM)を,
    334 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆéžä¾å­˜éƒ¨ã§ulong_tに定義する.
    335 
    336 (2) 終了処理ルーチン機能
    337 
    338 ASPカーネルでは,システムの終了時に呼び出される終了処理ルーチンを登録す
    339 ã‚‹ãŸã‚ã®æ©Ÿèƒ½ã‚’サポートする.この機能のための静的APIは次の通りである.
    340 
    341         ATT_TER         çµ‚了処理ルーチンの追加(静的API)
    342 
    343 (3) カーネル動作状æ
    344 ‹ã®å‚ç
    345 §
    346 
    347 ã‚«ãƒ¼ãƒãƒ«ä¸Šã§å‹•ä½œã™ã‚‹ã‚¿ã‚¹ã‚¯ã‹ã‚‰å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ãŒï¼Œã‚«ãƒ¼ãƒãƒ«ã®åˆæœŸåŒ–完了
    348 å‰ã‚„終了処理開始後にも呼び出される可能性がある場合には,その中でカーネ
    349 ãƒ«ã®ã‚µãƒ¼ãƒ“スコールを呼び出せるかを判別することがå¿
    350 è¦ã¨ãªã‚‹ï¼Žã“の機能の
    351 ãŸã‚ã®ã‚µãƒ¼ãƒ“スコールは次の通りである(JSPカーネルとは名称を変更した).
    352 
    353         sns_ker         ã‚«ãƒ¼ãƒãƒ«éžå‹•ä½œçŠ¶æ
    354 ‹ã®å‚ç
    355 §
    356 
    357 â—‹ASPカーネルにおける独自の拡張機能
    358 
    359 (1) 割込み要求ラインの属性の設定
    360 
    361 å‰²è¾¼ã¿è¦æ±‚ラインの属性を設定する機能として,TOPPERS標準割込み処理モデル
    362 ã§è¦å®šã•ã‚ŒãŸæ¬¡ã®é™çš„APIを実è£
    363 ã™ã‚‹ï¼Ž
    364 
    365         CFG_INT         å‰²è¾¼ã¿è¦æ±‚ラインの属性の設定(静的API)
    366 
    367 (2) 同期・通信オブジェクトの再初期化機能
    368 
    369 åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトを初期状æ
    370 ‹ã«æˆ»ã™ãŸã‚ã®æ©Ÿèƒ½ã¨ã—て,次のサービスコー
    371 ãƒ«ã‚’実è£
    372 ã™ã‚‹ï¼Ž
    373 
    374         ini_sem         ã‚»ãƒžãƒ•ã‚©ã®å†åˆæœŸåŒ–
    375         ini_flg         ã‚¤ãƒ™ãƒ³ãƒˆãƒ•ãƒ©ã‚°ã®å†åˆæœŸåŒ–
    376         ini_dtq         ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å†åˆæœŸåŒ–
    377         ini_mbx         ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ã®å†åˆæœŸåŒ–
    378         ini_mpf         å›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ールの再初期化
    379 
    380 åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトの再初期化の際に,その同期・通信オブジェクトに対
    381 ã—てå¾
    382 ã¡çŠ¶æ
    383 ‹ã¨ãªã£ã¦ã„たタスクはすべてå¾
    384 ã¡è§£é™¤ã•ã‚Œã‚‹ï¼Žå¾
    385 ã¡è§£é™¤ã•ã‚ŒãŸã‚¿
    386 ã‚¹ã‚¯ã«å¯¾ã—ては,E_DLTを返す.E_DLTは,スタンダードプロファイルでは使用
    387 ã—ていないエラーコードである.
    388 
    389 ãã®ãŸã‚ï¼Œã“れらのサービスコールにより,複数のタスクが起床される可能性
    390 ãŒç”Ÿã˜ã‚‹ï¼Žå¤šãã®ã‚¿ã‚¹ã‚¯ã‚’同時にå¾
    391 ã¡è§£é™¤ã—た場合,カーネルå†
    392 ã§ã®å‰²è¾¼ã¿ç¦
    393 æ­¢æ™‚間が長くなるため,使用にあたっては注意がå¿
    394 è¦ã§ã‚る.
    395 
    396 åŒæœŸãƒ»é€šä¿¡ã‚ªãƒ–ジェクトを再初期化する際に,アプリケーション側との整合性
    397 ã‚’保つのはアプリケーションの責任である.å
    398 ·ä½“的には,固定長メモリプール
    399 ã‚’再初期化する際には,そこから獲得済みのメモリブロックをそれ以降使わな
    400 ã„ようにしなければならない.また,メールボックスを再初期化する際には,
    401 ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ã«é€ä¿¡ã•ã‚ŒãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸é ˜åŸŸã‚’回収しなければならない.
    402 
    403 (3) 優å
    404 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®æ–°è¨­
    405 
    406ʌ㻌
    407 ˆåº¦ä»˜ãã®ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®æ©Ÿèƒ½ã‚’新設する.優å
    408 ˆåº¦ä»˜ããƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼æ©Ÿèƒ½ã®
    409 ãŸã‚ã«å®Ÿè£
    410 ã™ã‚‹é™çš„APIおよびサービスコールは次の通りである.
    411 
    412         CRE_PDQ         å„ªå
    413 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®ç”Ÿæˆ
    414         snd_pdq         å„ªå
    415 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡
    416         psnd_pdq        優å
    417 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡ï¼ˆãƒãƒ¼ãƒªãƒ³ã‚°ï¼‰
    418         ipsnd_pdq       å„ªå
    419 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡ï¼ˆãƒãƒ¼ãƒªãƒ³ã‚°ï¼Œéžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆï¼‰
    420         tsnd_pdq        優å
    421 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®é€ä¿¡ï¼ˆã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã‚り)
    422         rcv_pdq         å„ªå
    423 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—ä¿¡
    424         prcv_pdq        優å
    425 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—信(ポーリング)
    426         trcv_pdq        優å
    427 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã‹ã‚‰ã®å—信(タイムアウトあり)
    428         ini_pdq         å„ªå
    429 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®å†åˆæœŸåŒ–
    430         ref_pdq         å„ªå
    431 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã®çŠ¶æ
    432 ‹å‚ç
    433 §
    434 
    435 ã“こで,優å
    436 ˆåº¦ãƒ‡ãƒ¼ã‚¿ã‚­ãƒ¥ãƒ¼ã«è“„積されたデータの数が多い場合,優å
    437 ˆåº¦ãƒ‡ãƒ¼
    438 ã‚¿ã‚­ãƒ¥ãƒ¼ã¸ã®ãƒ‡ãƒ¼ã‚¿ã®é€ä¿¡ã‚’行うサービスコール(snd_pdq,psnd_pdq,
    439 ipsnd_pdq,tsnd_pdq)の処理時間が長くなり,カーネルå†
    440 ã§ã®å‰²è¾¼ã¿ç¦æ­¢æ™‚é–“
    441 ãŒé•·ããªã‚‹ãŸã‚ï¼Œä½¿ç”¨ã«ã‚たっては注意がå¿
    442 è¦ã§ã‚る.
    443 
    444 (4) 自タスクの拡張æƒ
    445 å ±ã®å‚ç
    446 §
    447 
    448 è‡ªã‚¿ã‚¹ã‚¯ã®æ‹¡å¼µæƒ
    449 å ±ã‚’参ç
    450 §ã™ã‚‹ãŸã‚ã®ã‚µãƒ¼ãƒ“スコールを新設する.ライブラリ
    451 ç­‰ã®ä¸­ã§ç”¨ã„ることを想定している.
    452 
    453         get_inf         è‡ªã‚¿ã‚¹ã‚¯ã®æ‹¡å¼µæƒ
    454 å ±ã®å‚ç
    455 §
    456 
    457 (5) カーネルの終了
    458 
    459 è‡´å‘½çš„なエラーが起こった場合などにカーネルを終了させるためのサービスコー
    460 ãƒ«ã‚’新設する.この機能は,μITRON4.0仕様の機能分類では,システム構成管
    461 ç†æ©Ÿèƒ½ã«åˆ†é¡žã™ã‚‹ï¼ˆJSPカーネルでは,kernel_exitという名称で,実質的にこ
    462 ã®æ©Ÿèƒ½ã‚’用意していた).
    463 
    464         ext_ker         ã‚«ãƒ¼ãƒãƒ«ã®çµ‚了
    465 
    466 ASPカーネルでは,このサービスコールからリターンすることはないが,保護機
    467 èƒ½ã‚’持ったカーネルではエラーリターンする可能性があるため,返り値の型を
    468 ERとする.
    469 
    470 ã“れに伴って,JSPカーネルのkernel_startを,sta_kerに名称変更する.ただ
    471 ã—,sta_kerはサービスコールとは見なさないことにする.
    472 
    473 (6) 非タスクコンテキスト用のスタック領域の設定
    474 
    475 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸã®å
    476 ˆé ­ç•ªåœ°ã¨ã‚µã‚¤ã‚ºã‚’指定するための
    477 é™çš„APIを新設する.また,この静的APIにより,非タスクコンテキスト用のス
    478 ã‚¿ãƒƒã‚¯é ˜åŸŸã®ã‚µã‚¤ã‚ºã®ã¿ã‚’指定することもできる.
    479 
    480         DEF_ICS         éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸã®å®šç¾©
    481 
    482 â—‹JSPカーネルにおける実è£
    483 å®šç¾©ï¼å®Ÿè£
    484 ä¾å­˜è¦å®šã‹ã‚‰ã®å¤‰æ›´
    485 
    486 Î¼ITRON4.0仕様で実è£
    487 å®šç¾©ã¾ãŸã¯å®Ÿè£
    488 ä¾å­˜ã¨ã•ã‚Œã¦ã„る仕様の中で,以下のも
    489 ã®ã«ã¤ã„てJSPカーネルから変更する.
    490 
    491 (1) アプリケーション向けのインクルードファイルの構成の整理
    492 
    493 ã‚«ãƒ¼ãƒãƒ«ã‚’呼び出すアプリケーションからはkernel.hを,SILを呼び出すアプリ
    494 ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‹ã‚‰ã¯sil.hをインクルードすればよいものとし,t_services.hと
    495 s_services.hは廃止する.
    496 
    497 ã¾ãŸï¼Œkernel.hとsil.hのå
    498 ±é€šéƒ¨åˆ†ã¨ã—てt_stddef.hを用意し,カーネルとSIL
    499 ã®ã„ずれも呼び出さないアプリケーションからは,t_stddef.hをインクルード
    500 ã™ã‚Œã°ã‚ˆã„ものとする.itron.hは,μITRON4.0仕様との互換性がå¿
    501 è¦ãªå ´åˆã«
    502 ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ã‚‚のとする.
    503 
    504 (2) 割込み処理/例外処理関連の型の定義の変更
    505 
    506 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã®åž‹ï¼ˆINHNO),割込み番号の型(INTNO),CPU例外ハンド
    507 ãƒ©ç•ªå·ã®åž‹ï¼ˆEXCNO)を,ターゲット非依存部で,いずれもuint_t型に定義する.
    508 
    509 (3) 処理単位の実行開始/リターン時のシステム状æ
    510 ‹ã®è¦å®š
    511 
    512 å‡¦ç†å˜ä½ã®å®Ÿè¡Œé–‹å§‹ï¼ãƒªã‚¿ãƒ¼ãƒ³æ™‚のシステム状æ
    513 ‹ã«ã¤ã„て,μITRON4.0仕様に
    514 ãŠã„て実è£
    515 ä¾å­˜ã§ã‚った点を厳密に規定し,ターゲットによる違いが生じない
    516 ã‚ˆã†ã«ã™ã‚‹ï¼Ž
    517 
    518 (4) isig_timの扱いの変更
    519 
    520 ã‚·ã‚¹ãƒ†ãƒ æ™‚刻を更新する機構をカーネルå†
    521 éƒ¨ã«æŒã¤æ‰±ã„とし,サービスコール
    522 ã¨ã—てのisig_timは廃止する.
    523 
    524 (5) カーネルの用いる領域の指定方法
    525 
    526 JSPカーネルでは,カーネルの用いる領域はすべて自動割付けであったが,ASP
    527 ã‚«ãƒ¼ãƒãƒ«ã§ã¯ï¼Œã‚¿ã‚¹ã‚¯ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸã¨å›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ールの固定長メモリプー
    528 ãƒ«é ˜åŸŸã«ã¤ã„ては,静的APIでå
    529 ˆé ­ç•ªåœ°ã‚’指定することもできるものとする(自
    530 å‹•å‰²ä»˜ã‘もサポートする).
    531 
    532 (6) カーネル管理外の割込みの扱いの規定
    533 
    534 JSPカーネルではターゲット毎に定めていたカーネル管理外の割込みの扱いを,
    535 ASPカーネルでは,TOPPERS標準割込み処理モデルの規定に準拠して,可能な範
    536 å›²ã§æ¨™æº–化する.ただし,NMI以外にカーネル管理外の割込みを設けるかや,ど
    537 ã®å‰²è¾¼ã¿å„ªå
    538 ˆåº¦ã‚ˆã‚Šé«˜ã„ものをカーネル管理外とするかは,ターゲット毎に定
    539 ã‚ã‚‹ï¼Ž
    540 
    541 â—‹ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³å‡¦ç†ã®è¦‹ç›´ã—
    542 
    543 ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³å‡¦ç†ã‚’å
    544 ¨é¢çš„に見直し,システムコンフィギュ
    545 ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ•ã‚¡ã‚¤ãƒ«ä¸­ã«ãŠã‘ã‚‹C言語のプリプロセッサディレクティブの扱いと
    546 é™çš„APIのパラメータの分類を変更した.
    547 
    548 â—‹æ‹¡å¼µãƒ‘ッケージのサポート
    549 
    550 ASPカーネルでは,いくつかの拡張機能を実è£
    551 ã™ã‚‹ãŸã‚ã«ï¼Œæ¬¡ã®æ‹¡å¼µãƒ‘ッケージ
    552 ã‚’サポートしている.
    553 
    554 ãƒ»ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹æ©Ÿèƒ½æ‹¡å¼µãƒ‘ッケージ(優å
    555 ˆåº¦ç¶™æ‰¿ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’除く)
    556 ãƒ»ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒãƒƒãƒ•ã‚¡æ©Ÿèƒ½æ‹¡å¼µãƒ‘ッケージ
    557 ãƒ»ã‚ªãƒ¼ãƒãƒ©ãƒ³ãƒãƒ³ãƒ‰ãƒ©æ©Ÿèƒ½æ‹¡å¼µãƒ‘ッケージ
    558 ãƒ»ã‚¿ã‚¹ã‚¯å„ªå
    559 ˆåº¦æ‹¡å¼µãƒ‘ッケージ
    560 ãƒ»åˆ¶ç´„タスク拡張パッケージ
    561 ãƒ»å‹•çš„生成機能拡張パッケージ
    562 
    563 â—‹TOPPERS組込みコンポーネントシステム(TECS)の導å
    564 ¥
    565 
    566 ãƒ‡ãƒã‚¤ã‚¹ãƒ‰ãƒ©ã‚¤ãƒã‚„システムログ機能との接続にTOPPERS組込みコンポーネント
    567 ã‚·ã‚¹ãƒ†ãƒ ï¼ˆTECS)を導å
    568 ¥ã™ã‚‹ï¼Žã¾ãŸï¼Œã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトをTECSのコンポー
    569 ãƒãƒ³ãƒˆã¨ã—て扱えるようにする.
    570 
    571 ãªãŠï¼ŒTECSに対応するための修正は,TECSのé
    572 å¸ƒãƒ‘ッケージに含まれており,
    573 ASPカーネルのé
    574 å¸ƒãƒ‘ッケージには含まれていない.
    575 
    576 ä»¥ä¸Š
     51○前提となる文書
     52
     53[1] トロン協会: μITRON4.0仕様, Ver.4.02.00, 2004年.
     54
     55[2] トロン協会: μITRON4.0仕様 保護機能拡張(μITRON4.0/PX仕様),
     56        Ver.1.00.00, 2002年.
     57
     58[3] TOPPERSプロジェクト: TOPPERS/JSPカーネル ユーザズマニュアル
     59        Release 1.4.3対応, 最終更新: 2007年4月23日.
     60
     61○仕様の概略
     62
     63TOPPERS/ASPカーネルの仕様は,μITRON4.0仕様のスタンダードプロファイルを
     64ベースに,次のような拡張・改良を加えたものである.
     65
     66・割込み処理機能については,TOPPERS標準割込み処理モデルに準拠させる.
     67・μITRON4.0仕様のスタンダードプロファイル外の機能の一部を導入する.
     68・一部の仕様について,μITRON4.0仕様に対して変更を加える.
     69・JSPカーネルにおける独自の拡張機能を一部変更して実装する.
     70・ASPカーネルにおける独自の拡張機能を新たに実装する.
     71・システムコンフィギュレーション処理を全面的に見直す.
     72・拡張機能を実装するための拡張パッケージをサポートする.
     73・TOPPERS組込みコンポーネントシステム(TECS)を導入する.
     74
     75そのためASPカーネルは,μITRON4.0仕様に完全に準拠しているわけではなく,
     76JSPカーネルの上位互換にもなっていない.
     77
     78μITRON4.0仕様では,実装独自に用意する静的APIおよびサービスコールの名称
     79には,先頭にそれぞれ"V"および"v"の文字を付加するものとしているが,ASPカー
     80ネルではこの規定は採用しない.
     81
     82以下では,μITRON4.0仕様のスタンダードプロファイルに対する拡張および変
     83更箇所について説明する.
     84
     85○スタンダードプロファイル外の機能の一部導入
     86
     87μITRON4.0仕様には規定されているが,スタンダードプロファイルに含まれな
     88い(または,含まれるとは限らない)機能として,次の機能を実装する.
     89
     90(1) イベントフラグの複数タスク待ち
     91
     92イベントフラグに対する複数タスク待ちの機能(TA_WMUL属性のイベントフラグ)
     93を実装する.
     94
     95これにより,イベントフラグのセット(set_flg,iset_flg)で複数のタスクが
     96起床される可能性が生じる.多くのタスクを同時に待ち解除した場合,カーネ
     97ル内での割込み禁止時間が長くなるため,使用にあたっては注意が必要である.
     98
     99(2) アラームハンドラ
     100
     101アラームハンドラの機能を実装する.アラームハンドラ機能のために実装する
     102静的APIおよびサービスコールは次の通りである.
     103
     104        CRE_ALM         アラームハンドラの生成(静的API)
     105        sta_alm         アラームハンドラの動作開始
     106        ista_alm        アラームハンドラの動作開始(非タスクコンテキスト用)
     107        stp_alm         アラームハンドラの動作停止
     108        istp_alm        アラームハンドラの動作停止(非タスクコンテキスト用)
     109
     110(3) 割込みサービスルーチン
     111
     112スタンダードプロファイルでは,割込みハンドラと割込みサービスルーチンの
     113いずれかをサポートすればよいことになっている.JSPカーネルでは割込みハン
     114ドラのみを実装しているが,ASPカーネルではその両者を実装する.
     115
     116割込みサービスルーチンの仕様については,TOPPERS標準割込み処理モデルの規
     117定に準拠する.割込みサービスルーチンを追加するサービスコールとして,次
     118の静的APIを実装する.この静的APIの仕様については,TOPPERS標準割込み処理
     119モデルにおいて,μITRON4.0仕様に対して拡張を加えている.
     120
     121        ATT_ISR         割込みサービスルーチンの追加(静的API)
     122
     123(4) 割込み管理機能
     124
     125スタンダードプロファイルに含まれない割込み管理機能として,次のサービス
     126コールを実装する.JSPカーネルでは,これらのサービスコールを実装するかど
     127うかはターゲット依存となっているが,ASPカーネルでは,TOPPERS標準割込み
     128処理モデルの規定に準拠して,ターゲット非依存に実装する.
     129
     130        dis_int         割込みの禁止
     131        ena_int         割込みの許可
     132        chg_ipm         割込み優先度マスクの変更
     133        get_ipm         割込み優先度マスクの参照
     134
     135(5) オブジェクトの状態参照機能
     136
     137主にデバッグ時向けの機能として,オブジェクトの状態参照機能を実装する.
     138具体的には,次のサービスコールを実装する.
     139
     140        ref_tsk         タスクの状態参照
     141        ref_tex         タスク例外処理の状態参照
     142        ref_sem         セマフォの状態参照
     143        ref_flg         イベントフラグの状態参照
     144        ref_dtq         データキューの状態参照
     145        ref_mbx         メールボックスの状態参照
     146        ref_mpf         固定長メモリプールの状態参照
     147        ref_cyc         周期ハンドラの状態参照
     148        ref_alm         アラームハンドラの状態参照
     149
     150○μITRON4.0仕様に対する変更
     151
     152(1) ITRON標準データ型の見直し
     153
     154サイズの決まった整数型(B,H, Wなど)などについて,C99に準拠した型の名
     155称(int8_t,int16_t,int32_tなど)やそれと相性が良い名称に変更する.
     156ITRON標準データ型(B,H, Wなど)を必要とするアプリケーションのために,
     157itron.hを用意する.
     158
     159(2) 非タスクコンテキストからのext_tsk
     160
     161非タスクコンテキストからext_tskが呼ばれた場合,E_CTXエラーを返すものと
     162する.これにともなって,ext_tskをリターンする可能性があるものとし,返り
     163値の型をERとする.
     164
     165(3) CPU例外ハンドラで行える操作
     166
     167CPU例外ハンドラで行える操作については,TOPPERS標準割込み処理モデルに準
     168拠することとし,JSPカーネルの仕様を踏襲せず,μITRON4.0仕様にも従わない.
     169そのためのサービスコールとして,次のサービスコールを実装する.
     170
     171        xsns_dpn        CPU例外発生時のディスパッチ保留状態の参照
     172        xsns_xpn        CPU例外発生時のタスク例外処理保留状態の参照
     173
     174(4) カーネルの用いる管理領域の分離
     175
     176μITRON4.0/PX仕様において導入されたμITRON4.0仕様に対する変更として,カー
     177ネルの用いる管理領域の分離に関する仕様を一部採用する.
     178
     179まず,固定長メモリプールの実装において,カーネルの用いる管理領域を分離
     180することに伴い,固定長メモリプールを生成する静的API(CRE_MPF)のパラメー
     181タに,固定長メモリプール管理領域の先頭番地(mpfmb)を追加する.
     182
     183また,これにあわせて,データキューを生成する静的API(CRE_DTQ)の最後の
     184パラメータの名称を,データキュー管理領域の先頭番地(dtqmb)に変更する.
     185
     186なお,メールボックスは,μITRON4.0仕様との互換性のために残している機能
     187と位置付け,カーネルの用いる管理領域の分離は行わない.そのため,メール
     188ボックスを生成する静的API(CRE_MBX)に対する変更はない.
     189
     190(5) 処理単位とメモリ領域のデータ型の見直し
     191
     192処理単位のエントリ番地のデータ型を,パラメータが反映されないFP型ではな
     193く,処理単位毎の専用のデータ型とする.例えば,タスクのエントリ番地のデー
     194タ型をTASK型,タスク例外処理ルーチンのデータ型をTEXRTN型とする.
     195
     196また,スタック領域と固定長メモリプール領域のデータ型を,それぞれSTK_T型
     197とMPF_T型とする.
     198
     199(6) 値が0の定数(オブジェクト属性等)の見直し
     200
     201コーディングミスを防ぐために,値が0の定数の扱いを見直す.オブジェクト属
     202性(TA_TFIFO等)については,値が0のものはデフォルト扱いして廃止し,定義
     203をitron.hに移す.値が0のサービスコールの動作モード(TWF_ANDW)やオブジェ
     204クトの状態(TTEX_ENA等)については,値を変更する.
     205
     206(7) 強制待ち要求ネストの廃止
     207
     208強制待ち要求をネストする機能を廃止する.言い換えると,強制待ち要求ネス
     209ト数の最大値を1に固定する.これに伴い,frsm_tskは廃止し,itron.hにおい
     210てfrsm_tskをrsm_tskにマクロ定義する.また,TMAX_SUSCNTの定義をitron.hに
     211移す.
     212
     213(8) システム時刻の設定機能の廃止
     214
     215set_tim(システム時刻の設定)を廃止する.
     216
     217(9) 周期ハンドラの仕様変更
     218
     219sta_cycを呼び出した後,最初に周期ハンドラが起動される時刻を変更する.
     220μITRON4.0仕様では,sta_cycを呼び出してから周期ハンドラの起動周期で指定
     221した相対時間後としているが,ASPカーネルでは,起動位相で指定した相対時間
     222後とする.
     223
     224(10) タスク例外処理ルーチンの実行開始条件の変更
     225
     226割込み優先度マスク全解除状態でない場合には,タスク例外処理ルーチンの実
     227行が開始されないという仕様に変更した.
     228
     229○JSPカーネルにおける独自の拡張機能
     230
     231JSPカーネルにおける独自の拡張機能の中で,以下の機能を実装する.
     232
     233(1) 性能評価用システム時刻参照機能
     234
     235性能評価用システム時刻参照機能とは,ASPカーネル上で動作するタスクやASP
     236カーネル自身の性能を計測するための,システム時刻をμ秒単位で読み出す機
     237能である.この機能のためのサービスコールは次の通りである(JSPカーネルと
     238は名称を変更した).
     239
     240        get_utm         性能評価用システム時刻の参照
     241
     242JSPカーネルからの仕様変更として,get_utmは任意のコンテキストから呼び出
     243すことができるものする.また,性能評価用システム時刻の型(SYSUTM)を,
     244ターゲット非依存部でulong_tに定義する.
     245
     246(2) 終了処理ルーチン機能
     247
     248ASPカーネルでは,システムの終了時に呼び出される終了処理ルーチンを登録す
     249るための機能をサポートする.この機能のための静的APIは次の通りである.
     250
     251        ATT_TER         終了処理ルーチンの追加(静的API)
     252
     253(3) カーネル動作状態の参照
     254
     255カーネル上で動作するタスクから呼び出される関数が,カーネルの初期化完了
     256前や終了処理開始後にも呼び出される可能性がある場合には,その中でカーネ
     257ルのサービスコールを呼び出せるかを判別することが必要となる.この機能の
     258ためのサービスコールは次の通りである(JSPカーネルとは名称を変更した).
     259
     260        sns_ker         カーネル非動作状態の参照
     261
     262○ASPカーネルにおける独自の拡張機能
     263
     264(1) 割込み要求ラインの属性の設定
     265
     266割込み要求ラインの属性を設定する機能として,TOPPERS標準割込み処理モデル
     267で規定された次の静的APIを実装する.
     268
     269        CFG_INT         割込み要求ラインの属性の設定(静的API)
     270
     271(2) 同期・通信オブジェクトの再初期化機能
     272
     273同期・通信オブジェクトを初期状態に戻すための機能として,次のサービスコー
     274ルを実装する.
     275
     276        ini_sem         セマフォの再初期化
     277        ini_flg         イベントフラグの再初期化
     278        ini_dtq         データキューの再初期化
     279        ini_mbx         メールボックスの再初期化
     280        ini_mpf         固定長メモリプールの再初期化
     281
     282同期・通信オブジェクトの再初期化の際に,その同期・通信オブジェクトに対
     283して待ち状態となっていたタスクはすべて待ち解除される.待ち解除されたタ
     284スクに対しては,E_DLTを返す.E_DLTは,スタンダードプロファイルでは使用
     285していないエラーコードである.
     286
     287そのため,これらのサービスコールにより,複数のタスクが起床される可能性
     288が生じる.多くのタスクを同時に待ち解除した場合,カーネル内での割込み禁
     289止時間が長くなるため,使用にあたっては注意が必要である.
     290
     291同期・通信オブジェクトを再初期化する際に,アプリケーション側との整合性
     292を保つのはアプリケーションの責任である.具体的には,固定長メモリプール
     293を再初期化する際には,そこから獲得済みのメモリブロックをそれ以降使わな
     294いようにしなければならない.また,メールボックスを再初期化する際には,
     295メールボックスに送信されたメッセージ領域を回収しなければならない.
     296
     297(3) 優先度データキューの新設
     298
     299優先度付きのデータキューの機能を新設する.優先度付きデータキュー機能の
     300ために実装する静的APIおよびサービスコールは次の通りである.
     301
     302        CRE_PDQ         優先度データキューの生成
     303        snd_pdq         優先度データキューへの送信
     304        psnd_pdq        優先度データキューへの送信(ポーリング)
     305        ipsnd_pdq       優先度データキューへの送信(ポーリング,非タスクコンテキスト)
     306        tsnd_pdq        優先度データキューへの送信(タイムアウトあり)
     307        rcv_pdq         優先度データキューからの受信
     308        prcv_pdq        優先度データキューからの受信(ポーリング)
     309        trcv_pdq        優先度データキューからの受信(タイムアウトあり)
     310        ini_pdq         優先度データキューの再初期化
     311        ref_pdq         優先度データキューの状態参照
     312
     313ここで,優先度データキューに蓄積されたデータの数が多い場合,優先度デー
     314タキューへのデータの送信を行うサービスコール(snd_pdq,psnd_pdq,
     315ipsnd_pdq,tsnd_pdq)の処理時間が長くなり,カーネル内での割込み禁止時間
     316が長くなるため,使用にあたっては注意が必要である.
     317
     318(4) 自タスクの拡張情報の参照
     319
     320自タスクの拡張情報を参照するためのサービスコールを新設する.ライブラリ
     321等の中で用いることを想定している.
     322
     323        get_inf         自タスクの拡張情報の参照
     324
     325(5) カーネルの終了
     326
     327致命的なエラーが起こった場合などにカーネルを終了させるためのサービスコー
     328ルを新設する.この機能は,μITRON4.0仕様の機能分類では,システム構成管
     329理機能に分類する(JSPカーネルでは,kernel_exitという名称で,実質的にこ
     330の機能を用意していた).
     331
     332        ext_ker         カーネルの終了
     333
     334ASPカーネルでは,このサービスコールからリターンすることはないが,保護機
     335能を持ったカーネルではエラーリターンする可能性があるため,返り値の型を
     336ERとする.
     337
     338これに伴って,JSPカーネルのkernel_startを,sta_kerに名称変更する.ただ
     339し,sta_kerはサービスコールとは見なさないことにする.
     340
     341(6) 非タスクコンテキスト用のスタック領域の設定
     342
     343非タスクコンテキスト用のスタック領域の先頭番地とサイズを指定するための
     344静的APIを新設する.また,この静的APIにより,非タスクコンテキスト用のス
     345タック領域のサイズのみを指定することもできる.
     346
     347        DEF_ICS         非タスクコンテキスト用のスタック領域の定義
     348
     349○JSPカーネルにおける実装定義/実装依存規定からの変更
     350
     351μITRON4.0仕様で実装定義または実装依存とされている仕様の中で,以下のも
     352のについてJSPカーネルから変更する.
     353
     354(1) アプリケーション向けのインクルードファイルの構成の整理
     355
     356カーネルを呼び出すアプリケーションからはkernel.hを,SILを呼び出すアプリ
     357ケーションからはsil.hをインクルードすればよいものとし,t_services.hと
     358s_services.hは廃止する.
     359
     360また,kernel.hとsil.hの共通部分としてt_stddef.hを用意し,カーネルとSIL
     361のいずれも呼び出さないアプリケーションからは,t_stddef.hをインクルード
     362すればよいものとする.itron.hは,μITRON4.0仕様との互換性が必要な場合に
     363インクルードするものとする.
     364
     365(2) 割込み処理/例外処理関連の型の定義の変更
     366
     367割込みハンドラ番号の型(INHNO),割込み番号の型(INTNO),CPU例外ハンド
     368ラ番号の型(EXCNO)を,ターゲット非依存部で,いずれもuint_t型に定義する.
     369
     370(3) 処理単位の実行開始/リターン時のシステム状態の規定
     371
     372処理単位の実行開始/リターン時のシステム状態について,μITRON4.0仕様に
     373おいて実装依存であった点を厳密に規定し,ターゲットによる違いが生じない
     374ようにする.
     375
     376(4) isig_timの扱いの変更
     377
     378システム時刻を更新する機構をカーネル内部に持つ扱いとし,サービスコール
     379としてのisig_timは廃止する.
     380
     381(5) カーネルの用いる領域の指定方法
     382
     383JSPカーネルでは,カーネルの用いる領域はすべて自動割付けであったが,ASP
     384カーネルでは,タスクのスタック領域と固定長メモリプールの固定長メモリプー
     385ル領域については,静的APIで先頭番地を指定することもできるものとする(自
     386動割付けもサポートする).
     387
     388(6) カーネル管理外の割込みの扱いの規定
     389
     390JSPカーネルではターゲット毎に定めていたカーネル管理外の割込みの扱いを,
     391ASPカーネルでは,TOPPERS標準割込み処理モデルの規定に準拠して,可能な範
     392囲で標準化する.ただし,NMI以外にカーネル管理外の割込みを設けるかや,ど
     393の割込み優先度より高いものをカーネル管理外とするかは,ターゲット毎に定
     394める.
     395
     396○システムコンフィギュレーション処理の見直し
     397
     398システムコンフィギュレーション処理を全面的に見直し,システムコンフィギュ
     399レーションファイル中におけるC言語のプリプロセッサディレクティブの扱いと
     400静的APIのパラメータの分類を変更した.
     401
     402○拡張パッケージのサポート
     403
     404ASPカーネルでは,いくつかの拡張機能を実装するために,次の拡張パッケージ
     405をサポートしている.
     406
     407・ミューテックス機能拡張パッケージ(優先度継承ミューテックスを除く)
     408・メッセージバッファ機能拡張パッケージ
     409・オーバランハンドラ機能拡張パッケージ
     410・タスク優先度拡張パッケージ
     411・制約タスク拡張パッケージ
     412・動的生成機能拡張パッケージ
     413
     414○TOPPERS組込みコンポーネントシステム(TECS)の導入
     415
     416デバイスドライバやシステムログ機能との接続にTOPPERS組込みコンポーネント
     417システム(TECS)を導入する.また,カーネルオブジェクトをTECSのコンポー
     418ネントとして扱えるようにする.
     419
     420なお,TECSに対応するための修正は,TECSの配布パッケージに含まれており,
     421ASPカーネルの配布パッケージには含まれていない.
     422
     423以上
Note: See TracChangeset for help on using the changeset viewer.