Ignore:
Timestamp:
Jun 2, 2015, 3:39:53 PM (9 years ago)
Author:
nmir-saito
Message:

ファイルの mime-type 変更

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ssp_qb_r5f100le_cs/trunk/doc/user.txt

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    11
    2                 TOPPERS/SSPƒJ[ƒlƒ‹
    3                 ƒ†[ƒU[ƒYƒ}ƒjƒ
    4 ƒAƒ‹
    5 
    6                 ‘Ήžƒo[ƒWƒ‡ƒ“: Release 1.3.0
    7                 ÅIXV: 2015”N5ŒŽ19“ú
    8 
    9 ‚±‚̃hƒLƒ
    10 ƒƒ“ƒg‚́CTOPPERS/SSPƒJ[ƒlƒ‹‚ðŽg—p‚·‚邽‚ß‚É•K—v‚ÈŽ–€‚ðà–¾
    11 ‚·‚é‚à‚Ì‚Å‚ ‚éD
     2                TOPPERS/SSPカーネル
     3                ユーザーズマニュアル
     4
     5                対応バージョン: Release 1.3.0
     6                最終更新: 2015年5月19日
     7
     8このドキュメントは,TOPPERS/SSPカーネルを使用するために必要な事項を説明
     9するものである.
    1210
    1311----------------------------------------------------------------------
     
    1917                Nagoya Municipal Industrial Research Institute, JAPAN
    2018
    21  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    22  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    23  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    24  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    25      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    26      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    27  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    28      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—p
    30      ŽÒƒ}ƒjƒ
    31 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    32      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    33  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    34      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    35      ‚ƁD
    36    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    37 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    38 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    39        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    40    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    41        •ñ‚·‚邱‚ƁD
    42  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    43      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    44      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    45      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    46      –Ɛӂ·‚邱‚ƁD
     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     免責すること.
    4741 
    48  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    49  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    50  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    51  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    52  ‚̐ӔC‚𕉂í‚È‚¢D
     42 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     43 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     44 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     45 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     46 の責任を負わない.
    5347 
    5448----------------------------------------------------------------------
    5549
    56 ›–ÚŽŸ
    57 
    58 ‚PDTOPPERS/SSPƒJ[ƒlƒ‹‚ÌŠT—v
    59         1.1 TOPPERS/SSPƒJ[ƒlƒ‹‚̈ʒu•t‚¯
    60         1.2 TOPPERS/SSPƒJ[ƒlƒ‹‚ÌŽd—l
    61         1.3 Šù’m‚Ì–â‘è
    62 ‚QDƒ^[ƒQƒbƒgˆË‘¶•”
    63         2.1 ƒ^[ƒQƒbƒgˆË‘¶•”‚ÌŠT—v
    64         2.2 ŠÈˆÕƒpƒbƒP[ƒW
    65         2.3 ŒÂ•ÊƒpƒbƒP[ƒW
    66 ‚RDƒNƒCƒbƒNƒXƒ^[ƒgƒKƒCƒh
    67         3.1 ŠJ”­ŠÂ‹«‚̏€”õ
    68         3.2 ƒRƒ“ƒtƒBƒMƒ
    69 ƒŒ[ƒ^‚̍\’z
    70         3.3 ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚̍\’z‚ÆŽÀs
    71         3.4 ƒJ[ƒlƒ‹‚ðŠÖ”’PˆÊ‚щƒCƒuƒ‰ƒŠ‰»‚·‚é•û–@
    72         3.5 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ƃJ[ƒlƒ‹‚ð•ÊX‚ɍ\’z‚·‚é•û–@
    73 ‚SDƒfƒBƒŒƒNƒgƒŠ\¬Eƒtƒ@ƒCƒ‹\¬
    74         4.1 ”z•zƒpƒbƒP[ƒW‚̃fƒBƒŒƒNƒgƒŠ\¬
    75         4.2 ƒ^[ƒQƒbƒg”ñˆË‘¶•”‚̃tƒ@ƒCƒ‹\¬
    76 ‚TDƒRƒ“ƒtƒBƒMƒ
    77 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ÌŽg‚¢•û
    78 ‚UDMakefile‚̏C³•û–@
    79         6.1 Makefile‚̕ϐ”’è‹`
    80         6.2 ƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“
    81 ‚VDƒRƒ“ƒtƒBƒMƒ
    82 ƒŒ[ƒ^‚ÌŽg‚¢•û
    83 ‚WDƒVƒXƒeƒ€ƒT[ƒrƒX
    84         8.1 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo
    85                 8.1.1 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚̃T[ƒrƒXƒR[ƒ‹
    86                 8.1.2 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚Ì‚»‚Ì‘¼‚̃T[ƒrƒX
    87         8.2 ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—Í
    88 ‚XDƒTƒ|[ƒgƒ‰ƒCƒuƒ‰ƒŠ
    89         9.1 ƒLƒ
    90 [‘€ìƒ‰ƒCƒuƒ‰ƒŠŠÖ”
    91 ‚P‚ODŽg—pã‚Ì’ˆÓ‚ƃqƒ“ƒg
    92         10.1 ƒ^ƒCƒ}ƒhƒ‰ƒCƒo‚Ì‘gž‚Ý
    93         10.2 assertƒ}ƒNƒ‚̏ˆ—
    94         10.3 ƒIƒuƒWƒFƒNƒgID‚ÌŠÇ—
    95         10.4 ƒJ[ƒlƒ‹‚Ì“à•”ƒVƒ“ƒ{ƒ‹‚̃Šƒl[ƒ€
    96         10.5 ƒVƒXƒeƒ€‚Ì‹N“®Žž‚̏‰Šú‰»ˆ—
    97 ‚P‚PDŽQlî•ñ
    98         11.1 —˜—pðŒ‚Æ—˜—p•ñ
    99         11.2 •ÛØE“K—p«EƒTƒ|[ƒg
    100         11.3 ƒoƒOƒŒƒ|[ƒg
    101         11.4 ƒEƒFƒuƒTƒCƒg
    102         11.5 TOPPERSƒ†[ƒU[ƒYƒ[ƒŠƒ“ƒOƒŠƒXƒg
    103         11.6 TOPPERSƒvƒƒWƒFƒNƒg‚̃ƒ“ƒoŒü‚¯‚̃T[ƒrƒX
    104         11.7 TOPPERSƒvƒƒWƒFƒNƒg‚Ö‚ÌŽQ‰Á
    105 ‚P‚QD
    106         12.1 ƒT[ƒrƒXƒR[ƒ‹ˆê——
    107         12.2 Ã“IAPIˆê——
    108         12.3 ƒo[ƒWƒ‡ƒ“—š—ð
    109 
    110 
    111 ‚PDTOPPERS/SSPƒJ[ƒlƒ‹‚ÌŠT—v
    112 
    113 1.1.  TOPPERS/SSPƒJ[ƒlƒ‹‚̈ʒu•t‚¯
    114 
    115 TOPPERS/SSPƒJ[ƒlƒ‹‚́CTOPPERS/ASPƒJ[ƒlƒ‹‚ÌŽd—l‚ɑ΂µ‚āC
    116 ¬‹K–̓AƒvƒŠƒP[ƒVƒ‡ƒ“Œü‚¯‚ÉŽd—l‚ði‚Á‚½‚à‚Ì‚Å‚ ‚éDÅ¬ƒZƒbƒg‚É
    117 ‚¨‚¯‚é"Å¬"‚Ƃ́CƒJ[ƒlƒ‹‚ªŽg—p‚·‚éROM/RAMŽg—p—Ê‚ð¬‚³‚­‚·‚邽‚ß‚É
    118 Žd—l‚ðÅ“K‰»‚·‚邱‚Æ‚ðˆÓ–¡‚·‚éD
    119 
    120 ’ñ‹Ÿ‚·‚é‹@”\‚̓ÊITRON4.0Žd—l€‹’‚̍Œá‹@”\‚ðƒx[ƒX‚Æ‚µ‚āCˆê•”
    121 Ž©“®ŽÔ§Œä—pƒvƒƒtƒ@ƒCƒ‹‚Ì‹@”\‚ðŽæ‚荞‚ށD
    122 
    123 ‚±‚Ì‚½‚߁CSSPƒJ[ƒlƒ‹‚ÍASPƒJ[ƒlƒ‹‚̉ºˆÊŒÝŠ·‚Å‚àãˆÊŒÝŠ·‚Å‚à‚È‚¢D
    124 ‚½‚¾‚µC§–ñƒ^ƒXƒNŠg’£ƒpƒbƒP[ƒW‚ð“K—p‚µ‚½ê‡CSSPƒJ[ƒlƒ‹‚Í
    125 SSPƒJ[ƒlƒ‹‚̏ãˆÊŒÝŠ·‚Æ‚È‚éD
    126 
    127 1.2. TOPPERS/SSPƒJ[ƒlƒ‹‚ÌŽd—l
    128 
    129 SSPƒJ[ƒlƒ‹‚ÌŽd—l‚ÌŠT—v‚ɂ‚¢‚ẮCuTOPPERSV¢‘ãƒJ[ƒlƒ‹“‡Žd—l‘v‚ð
    130 ŽQÆ‚Ì‚±‚ƁD
    131 
    132 1.3. Šù’m‚Ì–â‘è
    133 
    134 kernel_cfg.ci‚¨‚æ‚Ñcfg1_out.cj‚́CƒJ[ƒlƒ‹CƒVƒXƒeƒ€ƒT[ƒrƒXCƒAƒvƒŠ
    135 ƒP[ƒVƒ‡ƒ“‚Ì‚¢‚¸‚ê‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚àƒCƒ“ƒNƒ‹[ƒh‚µC‚¢‚¸‚ê‚̃Vƒ“
    136 ƒ{ƒ‹‚àŽQÆ‚·‚é‰Â”\«‚ª‚ ‚éD‚»‚Ì‚½‚߁CƒJ[ƒlƒ‹CƒVƒXƒeƒ€ƒT[ƒrƒXCƒAƒv
    137 ƒŠƒP[ƒVƒ‡ƒ“‚ŃVƒ“ƒ{ƒ‹“™‚ªÕ“Ë‚µ‚Ä‚¢‚éê‡‚âCƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚ªH
    138 ‚¢ˆá‚Á‚Ä‚¢‚éê‡‚ɁCkernel_cfg.ci‚¨‚æ‚Ñcfg1_out.cj‚ª³‚µ‚­ƒRƒ“ƒpƒCƒ‹
    139 ‚Å‚«‚È‚­‚È‚éê‡‚ªl‚¦‚ç‚ê‚éDƒJ[ƒlƒ‹‚̃Vƒ“ƒ{ƒ‹‚ðƒŠƒl[ƒ€‚·‚é‚È‚Ç‚Ì•û
    140 –@‚ÅŒyŒ¸‚³‚ê‚Ä‚Í‚¢‚邪C–â‘肪‚È‚­‚È‚Á‚Ä‚¢‚é‚킯‚Å‚Í‚È‚¢D
    141 
    142 ƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    143 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚©‚çCƒRƒ“ƒtƒBƒMƒ
    144 ƒŒ[ƒ^‚ɑ΂·‚é
    145 INCLUDEƒfƒBƒŒƒNƒeƒBƒu‚É‚æ‚葼‚̃Rƒ“ƒtƒBƒMƒ
    146 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[
    147 ƒh‚µ‚Ä‚¢‚éê‡‚ɁC‚»‚Ì’†‚ÉŠÜ‚Ü‚ê‚éCŒ¾ŒêƒvƒŠƒvƒƒZƒbƒT‚̃Cƒ“ƒNƒ‹[ƒhƒfƒB
    148 ƒŒƒNƒeƒBƒui#includej‚ŁCƒRƒ“ƒtƒBƒMƒ
    149 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚Ì’u‚©‚ê‚Ä‚¢‚é
    150 ƒfƒBƒŒƒNƒgƒŠ‚ªCƒtƒ@ƒCƒ‹‚ðŒŸõ‚·‚éƒpƒX‚É‚Í‚¢‚ç‚È‚¢‚Æ‚¢‚¤–â‘肪‚ ‚éD—á
    151 ‚¦‚΁Csyssvc/syslog.cfg‚Ɂu#include "syslog.h"v‚Æ‹Lq‚Å‚«‚È‚¢‚̂́C‚±
    152 ‚Ì–â‘肪‚ ‚邽‚ß‚Å‚ ‚éD
    153 
    154 Œ»Žž“_‚ł́CƒAƒhƒŒƒX‚ª64ƒrƒbƒg‚̊‹«‚ɂ͑Ήž‚µ‚Ä‚¢‚È‚¢D64ƒrƒbƒgƒAƒhƒŒ
    155 ƒXŠÂ‹«‚ðƒTƒ|[ƒg‚·‚邽‚߂̍őå‚̉ۑè‚́Cƒ‚ƒgƒ[ƒ‰SƒŒƒR[ƒhƒtƒH[ƒ}ƒbƒg
    156 ‚ª64ƒrƒbƒgƒAƒhƒŒƒX‚ɑΉž‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚Å‚ ‚éD
    157 
    158 ‚QDƒ^[ƒQƒbƒgˆË‘¶•”
    159 
    160 2.1. ƒ^[ƒQƒbƒgˆË‘¶•”‚ÌŠT—v
    161 
    162 SSPƒJ[ƒlƒ‹‚̃^[ƒQƒbƒg”ñˆË‘¶•”‚ƁCŠeŽí‚̃^[ƒQƒbƒgƒVƒXƒeƒ€‚ɑΉž‚·‚邽
    163 ‚߂̃^[ƒQƒbƒgˆË‘¶•”‚́C•ÊX‚ÉŠJ”­‚³‚ê‚Ä‚¢‚éD‚»‚Ì‚½‚߁CSSPƒJ[ƒlƒ‹‚ª‘Î
    164 ‰ž‚µ‚Ä‚¢‚é‚·‚ׂẴ^[ƒQƒbƒgˆË‘¶•”‚ðCƒo[ƒWƒ‡ƒ“‚𐮍‡‚³‚¹‚ăpƒbƒP[ƒW
    165 ‰»‚·‚邱‚Ƃ͍¢“ï‚Å‚ ‚éD‚»‚±‚ŁCŽå‚ɏ‰‹‰‚̃†[ƒU‚ð‘Ώۂɂµ‚½ŠÈˆÕƒpƒbƒP[
    166 ƒW‚ƁCã‹‰‚̃†[ƒU‚âƒJ[ƒlƒ‹ŠJ”­ŽÒ‚ð‘Ώۂɂµ‚½ŒÂ•ÊƒpƒbƒP[ƒW‚ð—pˆÓ‚µ‚Ä
    167 ‚¢‚éD
    168 
    169 SSPƒJ[ƒlƒ‹‚𖢃Tƒ|[ƒg‚̃^[ƒQƒbƒgƒVƒXƒeƒ€‚Öƒ|[ƒeƒBƒ“ƒO‚·‚邽‚ß‚É•K—v
    170 ‚ȍì‹Æ‚́CŠJ”­ŠÂ‹«‚̍\’z‚Æ•W€‚ÌŠJ”­ŠÂ‹«‚Ƃ̍·ˆÙ‚Ì‹zŽûCƒJ[ƒlƒ‹Ž©g‚Ì
    171 ƒ|[ƒeƒBƒ“ƒOCƒVƒXƒeƒ€ƒT[ƒrƒX‚̃|[ƒeƒBƒ“ƒO‚È‚Ç‚©‚ç‚È‚éDÚ‚µ‚­‚́C
    172 uƒ^[ƒQƒbƒgˆË‘¶•” ƒ|[ƒeƒBƒ“ƒOƒKƒCƒhv‚ðŽQÆ‚·‚邱‚ƁD
    173 
    174 ¦ ƒ^[ƒQƒbƒgˆË‘¶•” ƒ|[ƒeƒBƒ“ƒOƒKƒCƒh‚ÍŒ»Ý‚Í–¢Š®‚Å‚ ‚é
    175 
    176 2.2. ŠÈˆÕƒpƒbƒP[ƒW
    177 
    178 ŠÈˆÕƒpƒbƒP[ƒW‚́CSSPƒJ[ƒlƒ‹‚ª‘Ήž‚µ‚Ä‚¢‚éƒ^[ƒQƒbƒgƒVƒXƒeƒ€–ˆ‚É—pˆÓ‚³
    179 ‚êC‚»‚̃^[ƒQƒbƒgƒVƒXƒeƒ€ã‚ÅSSPƒJ[ƒlƒ‹‚𓮍삳‚¹‚邽‚ß‚É•K—v‚ȃtƒ@ƒC
    180 ƒ‹ˆêŽ®‚ðƒpƒbƒP[ƒW‰»‚µ‚½‚à‚Ì‚Å‚ ‚éDŠÈˆÕƒpƒbƒP[ƒW‚ÉŠÜ‚Ü‚ê‚éƒtƒ@ƒCƒ‹‚́C
    181 ƒo[ƒWƒ‡ƒ“‚ª®‡‚µ‚Ä‚¢‚邱‚Æ‚ªŠm”F‚³‚ê‚Ä‚¢‚éD
    182 
    183 ŠÈˆÕƒpƒbƒP[ƒW‚̃o[ƒWƒ‡ƒ“”ԍ†‚́CƒpƒbƒP[ƒW‰»‚µ‚½“ú•t‚Æ‚·‚邱‚Æ‚ðŒ´‘¥
    184 ‚Æ‚·‚邪Cƒ^[ƒQƒbƒgƒVƒXƒeƒ€–ˆ‚ÌŽ–î‚É‚æ‚肱‚ÌŒ´‘¥‚ɏ]‚í‚È‚¢ê‡‚ª‚ ‚éD
    185 
    186 ŠÈˆÕƒpƒbƒP[ƒW‚́CŠî–{“I‚ɂ́CŽŸ‚Éà–¾‚·‚éŒÂ•ÊƒpƒbƒP[ƒW‚𕡐”‚Ü‚Æ‚ß‚½
    187 ‚à‚Ì‚Å‚ ‚éD‚»‚Ì‚½‚߁C‘Ώۃ^[ƒQƒbƒgƒVƒXƒeƒ€‚É•K—v‚Ì‚È‚¢ƒtƒ@ƒCƒ‹‚àŠÜ‚Ü
    188 ‚ê‚Ä‚¢‚éD‚Ü‚½CŠÈˆÕƒpƒbƒP[ƒW‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚éŒÂ•ÊƒpƒbƒP[ƒW‚̃o[ƒWƒ‡ƒ“
    189 ‚́CŒÂ•ÊƒpƒbƒP[ƒW‚ÌMANIFESTƒtƒ@ƒCƒ‹‚ðŽQÆ‚·‚邱‚Æ‚Å’m‚邱‚Æ‚ª‚Å‚«‚éD
    190 
    191 2.3. ŒÂ•ÊƒpƒbƒP[ƒW
    192 
    193 ŒÂ•ÊƒpƒbƒP[ƒW‚́CSSPƒJ[ƒlƒ‹‚ÌŠJ”­’PˆÊ–ˆ‚ɁC‚»‚ÌŠJ”­’PˆÊ‚ÅŠJ”­‚ð’S“–‚µ
    194 ‚Ä‚¢‚éƒtƒ@ƒCƒ‹ˆêŽ®‚ðƒpƒbƒP[ƒW‰»‚µ‚½‚à‚Ì‚Å‚ ‚éDSSPƒJ[ƒlƒ‹‚̃^[ƒQƒbƒg
    195 ”ñˆË‘¶•”‚àCˆê‚‚̌•ʃpƒbƒP[ƒW‚Æ‚µ‚Ä”z•z‚³‚ê‚éD‚ ‚éŒÂ•ÊƒpƒbƒP[ƒW‚ð
    196 Žg—p‚·‚邽‚߂ɂ́Cˆê”ʂɂ́C‘¼‚̌•ʃpƒbƒP[ƒW‚ª•K—v‚Æ‚È‚éDƒ^[ƒQƒbƒg
    197 ˆË‘¶•”‚̌•ʃpƒbƒP[ƒW‚ðŽg—p‚·‚邽‚ß‚É•K—v‚Æ‚È‚éŒÂ•ÊƒpƒbƒP[ƒW‚Æ‚»‚̃o[
    198 ƒWƒ‡ƒ“‚ɂ‚¢‚ẮCƒ^[ƒQƒbƒgˆË‘¶•”‚̃†[ƒU[ƒYƒ}ƒjƒ
    199 ƒAƒ‹‚ðŽQÆ‚·‚邱‚ƁD
    200 Žg—p‚·‚éŒÂ•ÊƒpƒbƒP[ƒW‚̃o[ƒWƒ‡ƒ“‚𐮍‡‚³‚¹‚邱‚Ƃ́Cƒ†[ƒU‚̐ӔC‚Å‚ 
    201 ‚éD
    202 
    203 ŒÂ•ÊƒpƒbƒP[ƒW‚̃o[ƒWƒ‡ƒ“”ԍ†‚́CX.Y.Z‚ÌŒ`‚Å•\Œ»‚³‚ê‚éDƒ^[ƒQƒbƒg”ñˆË
    204 ‘¶•”‚̃o[ƒWƒ‡ƒ“”ԍ†‚ðCSSPƒJ[ƒlƒ‹‘S‘̂̃ŠƒŠ[ƒX”ԍ†‚Æ‚·‚éDƒ^[ƒQƒbƒg
    205 ˆË‘¶•”‚̃o[ƒWƒ‡ƒ“”ԍ†‚́CX‚ÆY‚ªC‚»‚ꂪˆË‘¶‚·‚éƒ^[ƒQƒbƒg”ñˆË‘¶•”‚ƈê
    206 ’v‚µ‚Ä‚¢‚éD‚»‚ê‚ɑ΂µ‚āCZ‚͈ê’v‚µ‚Ä‚¢‚é‚Æ‚ÍŒÀ‚ç‚È‚¢D—Ⴆ‚΁Cƒ^[ƒQƒb
    207 ƒg”ñˆË‘¶•”‚̃o[ƒWƒ‡ƒ“1.1.0‚ɑΉž‚·‚éƒ^[ƒQƒbƒgˆË‘¶•”‚́Cƒo[ƒWƒ‡ƒ“
    208 1.1.Z‚ÌŒ`‚Æ‚È‚éDƒ^[ƒQƒbƒgˆË‘¶•”‚Ì‚Ý‚ªƒo[ƒWƒ‡ƒ“ƒAƒbƒv‚µ‚½ê‡‚ɂ́CZ
    209 ‚ª•ÏX‚³‚ê‚éD
    210 
    211 Žg—p‚·‚éŒÂ•ÊƒpƒbƒP[ƒW‚́CŽŸ‚Ì—á‚̂悤‚ɁCƒ^[ƒQƒbƒg”ñˆË‘¶•”‚̌•ʃpƒb
    212 ƒP[ƒW‚ð“WŠJ‚µ‚½‚Ì‚Æ“¯‚¶ƒfƒBƒŒƒNƒgƒŠ‚Å“WŠJ‚·‚éD
     50○目次
     51
     521.TOPPERS/SSPカーネルの概要
     53        1.1 TOPPERS/SSPカーネルの位置付け
     54        1.2 TOPPERS/SSPカーネルの仕様
     55        1.3 既知の問題
     562.ターゲット依存部
     57        2.1 ターゲット依存部の概要
     58        2.2 簡易パッケージ
     59        2.3 個別パッケージ
     603.クイックスタートガイド
     61        3.1 開発環境の準備
     62        3.2 コンフィギュレータの構築
     63        3.3 サンプルプログラムの構築と実行
     64        3.4 カーネルを関数単位でライブラリ化する方法
     65        3.5 アプリケーションとカーネルを別々に構築する方法
     664.ディレクトリ構成・ファイル構成
     67        4.1 配布パッケージのディレクトリ構成
     68        4.2 ターゲット非依存部のファイル構成
     695.コンフィギュレーションスクリプトの使い方
     706.Makefileの修正方法
     71        6.1 Makefileの変数定義
     72        6.2 コンパイルオプション
     737.コンフィギュレータの使い方
     748.システムサービス
     75        8.1 シリアルインタフェースドライバ
     76                8.1.1 シリアルインタフェースドライバのサービスコール
     77                8.1.2 シリアルインタフェースドライバのその他のサービス
     78        8.2 カーネル起動メッセージの出力
     799.サポートライブラリ
     80        9.1 キュー操作ライブラリ関数
     8110.使用上の注意とヒント
     82        10.1 タイマドライバの組込み
     83        10.2 assertマクロの処理
     84        10.3 オブジェクトIDの管理
     85        10.4 カーネルの内部シンボルのリネーム
     86        10.5 システムの起動時の初期化処理
     8711.参考情報
     88        11.1 利用条件と利用報告
     89        11.2 保証・適用性・サポート
     90        11.3 バグレポート
     91        11.4 ウェブサイト
     92        11.5 TOPPERSユーザーズメーリングリスト
     93        11.6 TOPPERSプロジェクトのメンバ向けのサービス
     94        11.7 TOPPERSプロジェクトへの参加
     9512.
     96        12.1 サービスコール一覧
     97        12.2 静的API一覧
     98        12.3 バージョン履歴
     99
     100
     1011.TOPPERS/SSPカーネルの概要
     102
     1031.1.  TOPPERS/SSPカーネルの位置付け
     104
     105TOPPERS/SSPカーネルは,TOPPERS/ASPカーネルの仕様に対して,
     106小規模アプリケーション向けに仕様を絞ったものである.最小セットに
     107おける"最小"とは,カーネルが使用するROM/RAM使用量を小さくするために
     108仕様を最適化することを意味する.
     109
     110提供する機能はμITRON4.0仕様準拠の最低機能をベースとして,一部
     111自動車制御用プロファイルの機能を取り込む.
     112
     113このため,SSPカーネルはASPカーネルの下位互換でも上位互換でもない.
     114ただし,制約タスク拡張パッケージを適用した場合,SSPカーネルは
     115SSPカーネルの上位互換となる.
     116
     1171.2. TOPPERS/SSPカーネルの仕様
     118
     119SSPカーネルの仕様の概要については,「TOPPERS新世代カーネル統合仕様書」を
     120参照のこと.
     121
     1221.3. 既知の問題
     123
     124kernel_cfg.c(およびcfg1_out.c)は,カーネル,システムサービス,アプリ
     125ケーションのいずれのインクルードファイルもインクルードし,いずれのシン
     126ボルも参照する可能性がある.そのため,カーネル,システムサービス,アプ
     127リケーションでシンボル等が衝突している場合や,コンパイルオプションが食
     128い違っている場合に,kernel_cfg.c(およびcfg1_out.c)が正しくコンパイル
     129できなくなる場合が考えられる.カーネルのシンボルをリネームするなどの方
     130法で軽減されてはいるが,問題がなくなっているわけではない.
     131
     132システムコンフィギュレーションファイルから,コンフィギュレータに対する
     133INCLUDEディレクティブにより他のコンフィギュレーションファイルをインクルー
     134ドしている場合に,その中に含まれるC言語プリプロセッサのインクルードディ
     135レクティブ(#include)で,コンフィギュレーションファイルの置かれている
     136ディレクトリが,ファイルを検索するパスにはいらないという問題がある.例
     137えば,syssvc/syslog.cfgに「#include "syslog.h"」と記述できないのは,こ
     138の問題があるためである.
     139
     140現時点では,アドレスが64ビットの環境には対応していない.64ビットアドレ
     141ス環境をサポートするための最大の課題は,モトローラSレコードフォーマット
     142が64ビットアドレスに対応していないことである.
     143
     1442.ターゲット依存部
     145
     1462.1. ターゲット依存部の概要
     147
     148SSPカーネルのターゲット非依存部と,各種のターゲットシステムに対応するた
     149めのターゲット依存部は,別々に開発されている.そのため,SSPカーネルが対
     150応しているすべてのターゲット依存部を,バージョンを整合させてパッケージ
     151化することは困難である.そこで,主に初級のユーザを対象にした簡易パッケー
     152ジと,上級のユーザやカーネル開発者を対象にした個別パッケージを用意して
     153いる.
     154
     155SSPカーネルを未サポートのターゲットシステムへポーティングするために必要
     156な作業は,開発環境の構築と標準の開発環境との差異の吸収,カーネル自身の
     157ポーティング,システムサービスのポーティングなどからなる.詳しくは,
     158「ターゲット依存部 ポーティングガイド」を参照すること.
     159
     160※ ターゲット依存部 ポーティングガイドは現在は未完である
     161
     1622.2. 簡易パッケージ
     163
     164簡易パッケージは,SSPカーネルが対応しているターゲットシステム毎に用意さ
     165れ,そのターゲットシステム上でSSPカーネルを動作させるために必要なファイ
     166ル一式をパッケージ化したものである.簡易パッケージに含まれるファイルは,
     167バージョンが整合していることが確認されている.
     168
     169簡易パッケージのバージョン番号は,パッケージ化した日付とすることを原則
     170とするが,ターゲットシステム毎の事情によりこの原則に従わない場合がある.
     171
     172簡易パッケージは,基本的には,次に説明する個別パッケージを複数まとめた
     173ものである.そのため,対象ターゲットシステムに必要のないファイルも含ま
     174れている.また,簡易パッケージに含まれている個別パッケージのバージョン
     175は,個別パッケージのMANIFESTファイルを参照することで知ることができる.
     176
     1772.3. 個別パッケージ
     178
     179個別パッケージは,SSPカーネルの開発単位毎に,その開発単位で開発を担当し
     180ているファイル一式をパッケージ化したものである.SSPカーネルのターゲット
     181非依存部も,一つの個別パッケージとして配布される.ある個別パッケージを
     182使用するためには,一般には,他の個別パッケージが必要となる.ターゲット
     183依存部の個別パッケージを使用するために必要となる個別パッケージとそのバー
     184ジョンについては,ターゲット依存部のユーザーズマニュアルを参照すること.
     185使用する個別パッケージのバージョンを整合させることは,ユーザの責任であ
     186る.
     187
     188個別パッケージのバージョン番号は,X.Y.Zの形で表現される.ターゲット非依
     189存部のバージョン番号を,SSPカーネル全体のリリース番号とする.ターゲット
     190依存部のバージョン番号は,XとYが,それが依存するターゲット非依存部と一
     191致している.それに対して,Zは一致しているとは限らない.例えば,ターゲッ
     192ト非依存部のバージョン1.1.0に対応するターゲット依存部は,バージョン
     1931.1.Zの形となる.ターゲット依存部のみがバージョンアップした場合には,Z
     194が変更される.
     195
     196使用する個別パッケージは,次の例のように,ターゲット非依存部の個別パッ
     197ケージを展開したのと同じディレクトリで展開する.
    213198
    214199        % tar xvfz ssp-1.3.0.tar.gz
    215200        % tar xvfz ssp_arch_rx_rxc-1.3.0.tar.gz
    216201
    217 ƒ^[ƒQƒbƒg”ñˆË‘¶•”‚̌•ʃpƒbƒP[ƒW‚ɂ́CˆÈ‰º‚̃^[ƒQƒbƒgˆË‘¶•”‚ªŠÜ‚Ü‚ê
    218 ‚Ä‚¢‚éD
    219 
    220         target/cq_frk_fm3_gcc   InterfaceŽ•t‘®Cortex-M3Šî”Â
    221                                         iGNUŠJ”­ŠÂ‹«j—pƒ^[ƒQƒbƒgˆË‘¶•”
    222         arch/arm_m_gcc          Cortex-M3iGNUŠJ”­ŠÂ‹«j—pƒvƒƒZƒbƒTˆË‘¶•”
    223 
    224 
    225 ‚RDƒNƒCƒbƒNƒXƒ^[ƒgƒKƒCƒh
    226 
    227 ‚±‚±‚ł́Cƒ^[ƒQƒbƒgˆË‘¶•”‚ª—pˆÓ‚³‚ê‚Ä‚¢‚éƒ^[ƒQƒbƒgƒVƒXƒeƒ€ã‚ŁCSSPƒJ[
    228 ƒlƒ‹ã‚Å“®ì‚·‚éƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ð\’zE“®ì‚³‚¹‚é‚܂ł̎菇‚ðŽ¦‚·D
    229 
    230 3.1. ŠJ”­ŠÂ‹«‚̏€”õ
    231 
    232 SSPƒJ[ƒlƒ‹‚ð—p‚¢‚½ƒVƒXƒeƒ€\’z‚ɂ́CˆÈ‰º‚̃c[ƒ‹‚ª•K—v‚Å‚ ‚éD
    233 
    234         ƒzƒXƒgƒVƒXƒeƒ€—p‚̃c[ƒ‹
    235                 perl            “®ìŠm”FF5.16.2
    236                 GNU Make        “®ìŠm”FF3.81
    237 
    238         TOPPERSV¢‘ãƒJ[ƒlƒ‹—pƒRƒ“ƒtƒBƒMƒ
    239 ƒŒ[ƒ^
    240                 cfg                     “®ìŠm”FF1.8.0
    241                                         ¦ 1.6.0ˆÈ‘O‚̃o[ƒWƒ‡ƒ“‚Å‚Í“®ì‚µ‚È‚¢D
    242 
    243         ƒ^[ƒQƒbƒgƒVƒXƒeƒ€—p‚̃c[ƒ‹iƒNƒƒXŠJ”­ŠÂ‹«j
    244                 •W€‹KŠi‚ɏ€‹’‚µ‚½CƒRƒ“ƒpƒCƒ‰
    245                 ƒAƒZƒ“ƒuƒ‰CƒŠƒ“ƒJCƒ‰ƒCƒuƒ‰ƒŠƒAƒ“
    246                 ƒVƒ“ƒ{ƒ‹ƒtƒ@ƒCƒ‹o—̓c[ƒ‹CƒwƒLƒTƒtƒ@ƒCƒ‹o—̓c[ƒ‹
    247                 •W€Cƒ‰ƒCƒuƒ‰ƒŠi•K{‚Å‚Í‚È‚¢j
    248 
    249 ƒ^[ƒQƒbƒgƒVƒXƒeƒ€—p‚̃c[ƒ‹‚ÉGNUŠJ”­ŠÂ‹«‚ð—p‚¢‚éê‡‚ɂ́CˆÈ‰º‚̃c[ƒ‹
    250 ‚ª•K—v‚Å‚ ‚éD
    251 
    252         ƒ^[ƒQƒbƒgƒVƒXƒeƒ€—p‚ÌGNUŠJ”­ŠÂ‹«ƒc[ƒ‹
    253                 BINUTILSiasCldCarCnmCranlibCobjcopyCobjdumpj
    254                 GCC‚Ü‚½‚ÍGCC-COREigcc‚¨‚æ‚Ñ‚»‚±‚©‚çŒÄ‚яo‚³‚ê‚éƒc[ƒ‹j
    255                 NEWLIBi•W€Cƒ‰ƒCƒuƒ‰ƒŠC•K{‚Å‚Í‚È‚¢j
    256 
    257 “®ìŠm”F‚³‚ê‚Ä‚¢‚éƒ^[ƒQƒbƒgƒVƒXƒeƒ€—p‚̃c[ƒ‹‚ɂ‚¢‚ẮCƒ^[ƒQƒbƒgˆË
    258 ‘¶•”‚̃†[ƒU[ƒYƒ}ƒjƒ
    259 ƒAƒ‹‚ðŽQÆ‚·‚邱‚ƁD
    260 
    261 ƒ^[ƒQƒbƒgƒVƒXƒeƒ€—p‚Ì•W€Cƒ‰ƒCƒuƒ‰ƒŠ‚́CƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•W€Cƒ‰ƒCƒu
    262 ƒ‰ƒŠ‚ðŽg—p‚µ‚È‚¢ê‡‚ɂ́C•K—v‚È‚¢D‚½‚¾‚µCƒRƒ“ƒpƒCƒ‰‚ª•W€Cƒ‰ƒCƒuƒ‰ƒŠ
    263 ŠÖ”imemcpyCmemset‚Ȃǁj‚ðŒÄ‚яo‚·ƒR[ƒh‚𐶐¬‚·‚éê‡‚ª‚ ‚èC‚»‚̏ê
    264 ‡‚É‚Í•W€Cƒ‰ƒCƒuƒ‰ƒŠ‚ª•K—v‚Å‚ ‚éD•W€Cƒ‰ƒCƒuƒ‰ƒŠ‚ð—pˆÓ‚·‚é‘ã‚í‚è‚ɁC
    265 ¶¬‚µ‚½ƒR[ƒh‚ªŒÄ‚яo‚·ŠÖ”‚Ì‚Ý‚ðŽ©•ª‚Å—pˆÓ‚µ‚Ä‚à‚æ‚¢D
    266 
    267 ‚È‚¨CperlƒXƒNƒŠƒvƒg‚̓}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðˆµ‚¤•¶ŽšƒR[ƒh‚ªEUCC‰üsƒR[ƒh‚ª
    268 LF‚Å‚ ‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD‚»‚êˆÈŠO‚Ì•¶ŽšƒR[ƒhC‰üsƒR[ƒh‚Å“®ì‚³‚¹‚é
    269 ‚½‚ß‚É‚ÍperlƒXƒNƒŠƒvƒg‚̏C³‚ª•K—v‚ƂȂ邱‚Æ‚ª‚ ‚éD
    270 
    271 ˆÈ‰º‚ł́C‚±‚ê‚ç‚̃c[ƒ‹‚ª—pˆÓ‚Å‚«‚Ä‚¢‚邱‚Æ‚ð‘O’ñ‚ɁCUNIXƒ}ƒVƒ“ã‚Å‚Ì
    272 \’zŽè‡‚ðà–¾‚·‚éD‚Ü‚½ˆÈ‰º‚Ìà–¾‚ł́CmakeƒRƒ}ƒ“ƒh‚ªGNU Make‚Å‚ ‚é‚à
    273 ‚Ì‚Æ‚·‚éiSSPƒJ[ƒlƒ‹‚̃Tƒ“ƒvƒ‹‚ÌMakefile‚́CGNU Make‚ÌŠg’£‹@”\‚ð—p‚¢‚Ä
    274 ‚¢‚éjD
    275 
    276 3.2. ƒRƒ“ƒtƒBƒMƒ
    277 ƒŒ[ƒ^‚̍\’z
    278 
    279 ƒJ[ƒlƒ‹‚ð\’z‚·‚é‘O‚ɁC‚Ü‚¸CTOPPERSV¢‘ãƒJ[ƒlƒ‹—pƒRƒ“ƒtƒBƒMƒ
    280 ƒŒ[ƒ^
    281 ‚ð\’z‚·‚é•K—v‚ª‚ ‚éDŠÈˆÕƒpƒbƒP[ƒW‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚½ê‡‚ȂǁCƒRƒ“ƒtƒBƒMƒ
    282 
    283 ƒŒ[ƒ^‚ðŽÀsƒtƒ@ƒCƒ‹Œ`Ž®‚Å“üŽè‚µ‚½ê‡‚ɂ́C‚±‚̃Xƒeƒbƒv‚Í•K—v‚È‚¢D
    284 
    285 ƒRƒ“ƒtƒBƒMƒ
    286 ƒŒ[ƒ^‚̍\’z‚ɂ́CˆÈ‰º‚̃c[ƒ‹‚ª•K—v‚Å‚ ‚éD
    287 
    288         ƒzƒXƒgƒVƒXƒeƒ€—p‚̃c[ƒ‹iƒZƒ‹ƒtŠJ”­ŠÂ‹«j
    289                 C++ƒRƒ“ƒpƒCƒ‰CC++ƒ‰ƒCƒuƒ‰ƒŠ
    290                                         “®ìŠm”FiMac OS XŠÂ‹«jFApple LLVM version 5.0 (clang-500.2.79)
    291                 Boost           “®ìŠm”FF1.55.0
    292                 Visual Studio (Windows‚̏ꍇ)
    293 
    294 Å‰‚ɁCƒpƒbƒP[ƒW‚ɃRƒ“ƒtƒBƒMƒ
    295 ƒŒ[ƒ^‚̃\[ƒXƒtƒ@ƒCƒ‹‚ªŠÜ‚Ü‚ê‚Ä‚¢‚È‚¢
    296 ê‡‚ɂ́CƒRƒ“ƒtƒBƒMƒ
    297 ƒŒ[ƒ^‚̃pƒbƒP[ƒW‚ðCSSPƒJ[ƒlƒ‹‚̃\[ƒXƒtƒ@ƒCƒ‹
    298 ‚ð“WŠJ‚µ‚½ƒfƒBƒŒƒNƒgƒŠ‚̉º‚É“WŠJ‚·‚éD
     202ターゲット非依存部の個別パッケージには,以下のターゲット依存部が含まれ
     203ている.
     204
     205        target/cq_frk_fm3_gcc   Interface誌付属Cortex-M3基板
     206                                        (GNU開発環境)用ターゲット依存部
     207        arch/arm_m_gcc          Cortex-M3(GNU開発環境)用プロセッサ依存部
     208
     209
     2103.クイックスタートガイド
     211
     212ここでは,ターゲット依存部が用意されているターゲットシステム上で,SSPカー
     213ネル上で動作するサンプルプログラムを構築・動作させるまでの手順を示す.
     214
     2153.1. 開発環境の準備
     216
     217SSPカーネルを用いたシステム構築には,以下のツールが必要である.
     218
     219        ホストシステム用のツール
     220                perl            動作確認:5.16.2
     221                GNU Make        動作確認:3.81
     222
     223        TOPPERS新世代カーネル用コンフィギュレータ
     224                cfg                     動作確認:1.8.0
     225                                        ※ 1.6.0以前のバージョンでは動作しない.
     226
     227        ターゲットシステム用のツール(クロス開発環境)
     228                標準規格に準拠したCコンパイラ
     229                アセンブラ,リンカ,ライブラリアン
     230                シンボルファイル出力ツール,ヘキサファイル出力ツール
     231                標準Cライブラリ(必須ではない)
     232
     233ターゲットシステム用のツールにGNU開発環境を用いる場合には,以下のツール
     234が必要である.
     235
     236        ターゲットシステム用のGNU開発環境ツール
     237                BINUTILS(as,ld,ar,nm,ranlib,objcopy,objdump)
     238                GCCまたはGCC-CORE(gccおよびそこから呼び出されるツール)
     239                NEWLIB(標準Cライブラリ,必須ではない)
     240
     241動作確認されているターゲットシステム用のツールについては,ターゲット依
     242存部のユーザーズマニュアルを参照すること.
     243
     244ターゲットシステム用の標準Cライブラリは,アプリケーションが標準Cライブ
     245ラリを使用しない場合には,必要ない.ただし,コンパイラが標準Cライブラリ
     246関数(memcpy,memsetなど)を呼び出すコードを生成する場合があり,その場
     247合には標準Cライブラリが必要である.標準Cライブラリを用意する代わりに,
     248生成したコードが呼び出す関数のみを自分で用意してもよい.
     249
     250なお,perlスクリプトはマルチバイト文字を扱う文字コードがEUC,改行コードが
     251LFであることを仮定している.それ以外の文字コード,改行コードで動作させる
     252ためにはperlスクリプトの修正が必要となることがある.
     253
     254以下では,これらのツールが用意できていることを前提に,UNIXマシン上での
     255構築手順を説明する.また以下の説明では,makeコマンドがGNU Makeであるも
     256のとする(SSPカーネルのサンプルのMakefileは,GNU Makeの拡張機能を用いて
     257いる).
     258
     2593.2. コンフィギュレータの構築
     260
     261カーネルを構築する前に,まず,TOPPERS新世代カーネル用コンフィギュレータ
     262を構築する必要がある.簡易パッケージに含まれていた場合など,コンフィギュ
     263レータを実行ファイル形式で入手した場合には,このステップは必要ない.
     264
     265コンフィギュレータの構築には,以下のツールが必要である.
     266
     267        ホストシステム用のツール(セルフ開発環境)
     268                C++コンパイラ,C++ライブラリ
     269                                        動作確認(Mac OS X環境):Apple LLVM version 5.0 (clang-500.2.79)
     270                Boost           動作確認:1.55.0
     271                Visual Studio (Windowsの場合)
     272
     273最初に,パッケージにコンフィギュレータのソースファイルが含まれていない
     274場合には,コンフィギュレータのパッケージを,SSPカーネルのソースファイル
     275を展開したディレクトリの下に展開する.
    299276
    300277        % cd ssp
    301278        % tar xvfz cfg-1.8.0.tar.gz
    302279
    303 ‚Ü‚½‚́CƒRƒ“ƒtƒBƒMƒ
    304 ƒŒ[ƒ^‚̃pƒbƒP[ƒW‚𑼂̃fƒBƒŒƒNƒgƒŠ‚É“WŠJ‚µCSSPƒJ[
    305 ƒlƒ‹‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð“WŠJ‚µ‚½ƒfƒBƒŒƒNƒgƒŠ‚©‚çƒVƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚ð‚Í‚Á
    306 ‚Ä‚à‚æ‚¢D
    307 
    308 ƒ\[ƒXƒtƒ@ƒCƒ‹‚ª“WŠJ‚Å‚«‚é‚ƁCcfgƒfƒBƒŒƒNƒgƒŠ‚Ɉړ®‚µCƒRƒ“ƒtƒBƒMƒ
    309 ƒŒ[
    310 ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒgiconfigurej‚ÅMakefile‚̊‹«ˆË‘¶•”iMakefile.configj
    311 ‚𐶐¬‚µ‚½ŒãCmakeƒRƒ}ƒ“ƒh‚É‚æ‚èƒRƒ“ƒtƒBƒMƒ
    312 ƒŒ[ƒ^icfgƒvƒƒOƒ‰ƒ€j‚ª\
    313 ’z‚Å‚«‚éD
     280または,コンフィギュレータのパッケージを他のディレクトリに展開し,SSPカー
     281ネルのソースファイルを展開したディレクトリからシンボリックリンクをはっ
     282てもよい.
     283
     284ソースファイルが展開できると,cfgディレクトリに移動し,コンフィギュレー
     285ションスクリプト(configure)でMakefileの環境依存部(Makefile.config)
     286を生成した後,makeコマンドによりコンフィギュレータ(cfgプログラム)が構
     287築できる.
    314288
    315289        % cd cfg
     
    317291        % make
    318292
    319 ‚½‚¾‚µCBoost‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚½ƒfƒBƒŒƒNƒgƒŠ‚¨‚æ‚Ñ–¼Ì‚ª•W€‚Å‘z’肵‚Ä‚¢
    320 ‚é‚à‚̂Ƃ͈Ⴄê‡‚ɂ́Cconfigure‚Ì--with-headers‚¨‚æ‚Ñ--with-libraries
    321 ƒIƒvƒVƒ‡ƒ“‚É‚æ‚èCƒwƒbƒ_ƒtƒ@ƒCƒ‹‚¨‚æ‚у‰ƒCƒuƒ‰ƒŠ‚Ì’u‚©‚ꂽƒfƒBƒŒƒNƒgƒŠ
    322 ‚ðŽw’è‚·‚é•K—v‚ª‚ ‚éD
    323 
    324 ‚Ü‚½CƒzƒXƒgƒVƒXƒeƒ€‚É‚æ‚Á‚ẮCÅ“K‰»ƒŒƒxƒ‹‚ðã‚°‚é‚Ɛ³‚µ‚­ƒRƒ“ƒpƒCƒ‹
    325 ‚Å‚«‚È‚¢‚±‚Æ‚ª’m‚ç‚ê‚Ä‚¢‚éD‚»‚̂悤‚ȏꍇ‚ɂ́CÅ“K‰»ƒŒƒxƒ‹‚ð‰º‚°‚é‚©C
    326 Å“K‰»‚ð—}Ž~‚·‚é‚悤‚ɁCMakefile‚ðC³‚·‚é•K—v‚ª‚ ‚éD
    327 
    328 ‚È‚¨CƒRƒ“ƒtƒBƒMƒ
    329 ƒŒ[ƒ^‚ÌŽg—p•û–@‚ɂ‚¢‚ẮCu‚VDƒRƒ“ƒtƒBƒMƒ
    330 ƒŒ[ƒ^
    331 ‚ÌŽg‚¢•ûv‚ÌÍ‚Åà–¾‚·‚éD
    332 
    333 3.3. ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚̍\’z‚ÆŽÀs
    334 
    335 ŽŸ‚ɁCSSPƒJ[ƒlƒ‹ã‚Å“®ì‚·‚éƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ð\’z‚·‚é•û–@‚ðà–¾‚·‚éD
    336 
    337 ‚Ü‚¸CƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚̃IƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚ðì¬
    338 ‚µCƒRƒ“ƒtƒBƒMƒ
    339 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ðŽÀs‚·‚éD—Ⴆ‚΁CƒIƒuƒWƒFƒNƒgƒtƒ@
    340 ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚ðCSSPƒJ[ƒlƒ‹‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð“WŠJ‚µ‚½ƒfƒBƒŒ
    341 ƒNƒgƒŠ‚̉º‚ÌOBJ‚Æ‚¢‚¤–¼Ì‚̃fƒBƒŒƒNƒgƒŠ‚É‚·‚éê‡‚ɂ́CŽŸ‚̃Rƒ}ƒ“ƒh‚ð
    342 ŽÀs‚·‚éiƒfƒBƒŒƒNƒgƒŠ‚̏ꏊ‚Æ–¼Ì‚Í”CˆÓ‚ÉŒˆ‚ß‚Ä‚æ‚¢jD
     293ただし,Boostをインストールしたディレクトリおよび名称が標準で想定してい
     294るものとは違う場合には,configureの--with-headersおよび--with-libraries
     295オプションにより,ヘッダファイルおよびライブラリの置かれたディレクトリ
     296を指定する必要がある.
     297
     298また,ホストシステムによっては,最適化レベルを上げると正しくコンパイル
     299できないことが知られている.そのような場合には,最適化レベルを下げるか,
     300最適化を抑止するように,Makefileを修正する必要がある.
     301
     302なお,コンフィギュレータの使用方法については,「7.コンフィギュレータ
     303の使い方」の章で説明する.
     304
     3053.3. サンプルプログラムの構築と実行
     306
     307次に,SSPカーネル上で動作するサンプルプログラムを構築する方法を説明する.
     308
     309まず,サンプルプログラムのオブジェクトファイルを置くディレクトリを作成
     310し,コンフィギュレーションスクリプトを実行する.例えば,オブジェクトファ
     311イルを置くディレクトリを,SSPカーネルのソースファイルを展開したディレ
     312クトリの下のOBJという名称のディレクトリにする場合には,次のコマンドを
     313実行する(ディレクトリの場所と名称は任意に決めてよい).
    343314
    344315        % cd ssp
    345316        % mkdir OBJ
    346317        % cd OBJ
    347         % perl ../configure -T <ƒ^[ƒQƒbƒg—ªÌ>
    348 
    349 ‚±‚±‚ŁC<ƒ^[ƒQƒbƒg—ªÌ>‚́CtargetƒfƒBƒŒƒNƒgƒŠ‚̉º‚É’u‚©‚ê‚Ä‚¢‚éƒ^[ƒQƒb
    350 ƒgˆË‘¶•”ƒfƒBƒŒƒNƒgƒŠ‚Ì–¼Ì‚Å‚ ‚éDƒRƒ“ƒtƒBƒMƒ
    351 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚̃I
    352 ƒvƒVƒ‡ƒ“‚ɂ‚¢‚ẮCu‚TDƒRƒ“ƒtƒBƒMƒ
    353 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ÌŽg‚¢•ûv‚Ì
    354 Í‚Åà–¾‚·‚éD
    355 
    356 ƒRƒ“ƒtƒBƒMƒ
    357 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ÌŽÀs‚É‚æ‚èCƒJƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠ‚ɂ́C
    358 ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ð\’z‚·‚邽‚ß‚ÌMakefileCƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€—p‚̃Rƒ“
    359 ƒtƒBƒMƒ
    360 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹isample1.cfgjCƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€–{‘Ì
    361 isample1.h‚¨‚æ‚Ñsample1.cj‚ª¶¬‚³‚ê‚éD
    362 
    363 ƒRƒ“ƒtƒBƒMƒ
    364 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ÌŽÀsŒãC•K—v‚Å‚ ‚ê‚ÎMakefile‚ðC³‚·
    365 ‚éDMakefile‚̏C³•û–@‚ɂ‚¢‚ẮCu‚UDMakefile‚̏C³•û–@v‚ÌÍ‚Åà–¾
    366 ‚·‚éD
    367 
    368 ‚»‚ÌŒãCmake depend‚ňˑ¶ŠÖŒWƒtƒ@ƒCƒ‹iMakefile.dependj‚𐶐¬‚µ‚½ŒãC
    369 makeƒRƒ}ƒ“ƒh‚É‚æ‚èƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚̃[ƒhƒ‚ƒWƒ
    370 [ƒ‹iSSP‚Ü‚½‚Í
    371 SSP.exej‚ª¶¬‚Å‚«‚éDˆË‘¶ŠÖŒWƒtƒ@ƒCƒ‹‚̐¶¬‚ɂ͎኱ŽžŠÔ‚ª‚©‚©‚éD
     318        % perl ../configure -T <ターゲット略称>
     319
     320ここで,<ターゲット略称>は,targetディレクトリの下に置かれているターゲッ
     321ト依存部ディレクトリの名称である.コンフィギュレーションスクリプトのオ
     322プションについては,「5.コンフィギュレーションスクリプトの使い方」の
     323章で説明する.
     324
     325コンフィギュレーションスクリプトの実行により,カレントディレクトリには,
     326サンプルプログラムを構築するためのMakefile,サンプルプログラム用のコン
     327フィギュレーションファイル(sample1.cfg),サンプルプログラム本体
     328(sample1.hおよびsample1.c)が生成される.
     329
     330コンフィギュレーションスクリプトの実行後,必要であればMakefileを修正す
     331る.Makefileの修正方法については,「6.Makefileの修正方法」の章で説明
     332する.
     333
     334その後,make dependで依存関係ファイル(Makefile.depend)を生成した後,
     335makeコマンドによりサンプルプログラムのロードモジュール(SSPまたは
     336SSP.exe)が生成できる.依存関係ファイルの生成には若干時間がかかる.
    372337
    373338        % make depend
    374339        % make
    375340
    376 ‚±‚±‚ō\’z‚µ‚½ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€isample1.hCsample1.cCsample1.cfgj
    377 ‚́CSSPƒJ[ƒlƒ‹‚ÌŠî–{“I‚È“®ì‚ðŠm”F‚·‚邽‚ß‚Ì‚à‚Ì‚Å‚ ‚éD‚±‚̃vƒƒOƒ‰
    378 ƒ€‚ÌŠT—và–¾‚́Csample1.c‚̐擪‚̃Rƒƒ“ƒg‚É‚ ‚éD
    379 
    380 3.4. ƒJ[ƒlƒ‹‚ðŠÖ”’PˆÊ‚щƒCƒuƒ‰ƒŠ‰»‚·‚é•û–@
    381 
    382 ‘Oß‚̎菇‚ł́CƒJ[ƒlƒ‹‚ðƒtƒ@ƒCƒ‹’PˆÊ‚ŃRƒ“ƒpƒCƒ‹‚µCƒ‰ƒCƒuƒ‰ƒŠ‰»‚µ‚Ä
    383 ‚¢‚½‚ªCƒJ[ƒlƒ‹‚̃R[ƒhƒTƒCƒY‚ðk¬‚·‚邽‚߂ɂ́CŽg—p‚µ‚È‚¢ƒT[ƒrƒXƒR[
    384 ƒ‹‚̓Šƒ“ƒN‚µ‚È‚¢•û‚ª–]‚Ü‚µ‚¢D‚»‚±‚ÅSSPƒJ[ƒlƒ‹‚ł́CƒJ[ƒlƒ‹‚ðŠÖ”’PˆÊ
    385 ‚ŃRƒ“ƒpƒCƒ‹‚µCƒ‰ƒCƒuƒ‰ƒŠ‰»‚·‚é•û–@‚ð—pˆÓ‚µ‚Ä‚¢‚éD
    386 
    387 ‚±‚Ì•û–@‚ŃTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ð\’z‚·‚é‚ɂ́CƒRƒ“ƒtƒBƒMƒ
    388 ƒŒ[ƒVƒ‡ƒ“ƒXƒN
    389 ƒŠƒvƒg‚ɁC‚»‚ê‚ðŽwŽ¦‚·‚éƒIƒvƒVƒ‡ƒ“i-fj‚ð•t‰Á‚·‚邾‚¯‚Å‚æ‚¢D
     341ここで構築したサンプルプログラム(sample1.h,sample1.c,sample1.cfg)
     342は,SSPカーネルの基本的な動作を確認するためのものである.このプログラ
     343ムの概要説明は,sample1.cの先頭のコメントにある.
     344
     3453.4. カーネルを関数単位でライブラリ化する方法
     346
     347前節の手順では,カーネルをファイル単位でコンパイルし,ライブラリ化して
     348いたが,カーネルのコードサイズを縮小するためには,使用しないサービスコー
     349ルはリンクしない方が望ましい.そこでSSPカーネルでは,カーネルを関数単位
     350でコンパイルし,ライブラリ化する方法を用意している.
     351
     352この方法でサンプルプログラムを構築するには,コンフィギュレーションスク
     353リプトに,それを指示するオプション(-f)を付加するだけでよい.
    390354
    391355        % mkdir OBJ_LIB
    392356        % cd OBJ_LIB
    393         % perl ../configure -T <ƒ^[ƒQƒbƒg—ªÌ> -f
    394 
    395 ‚±‚±‚ŁCOBJ_LIB‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚̏ꏊ‚Æ–¼Ì‚́C”CˆÓ‚ÉŒˆ‚ß‚Ä‚æ‚¢D‚±‚ê
    396 ˆÈ~‚̎菇‚́C‘Oß‚Æ“¯‚¶‚Å‚ ‚éD
    397 
    398 3.5. ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ƃJ[ƒlƒ‹‚ð•ÊX‚ɍ\’z‚·‚é•û–@
    399 
    400 ‘Oß‚Åà–¾‚µ‚½•û–@‚ł́CƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ƃJ[ƒlƒ‹‚𓯎ž‚ɐ¶¬‚·‚邽‚߁C
    401 ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚É”ñí‚É‘½‚­‚̃tƒ@ƒCƒ‹‚ªì¬‚³‚ê
    402 ‚āCˆµ‚¢‚É‚­‚­‚È‚éD‚»‚±‚ŁCƒJ[ƒlƒ‹‚ðC³‚·‚é•p“x‚ª’á‚¢ê‡‚ɂ́CƒJ[
    403 ƒlƒ‹‚ÍŽ–‘O‚ɍ\’z‚µ‚Ä‚¨‚«CŒã‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“‚¾‚¯‚ð\’z‚·‚é•û–@‚ð—pˆÓ
    404 ‚µ‚Ä‚¢‚éDˆÈ‰º‚ł́CƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ð\’z‚ð—á‚ɁC‚»‚̎菇‚ɂ‚¢‚Đà
    405 –¾‚·‚éD
    406 
    407 ‚Ü‚¸CƒJ[ƒlƒ‹‚ð\’z‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ðì¬‚µCƒRƒ“ƒtƒBƒMƒ
    408 ƒŒ[ƒVƒ‡ƒ“ƒX
    409 ƒNƒŠƒvƒg‚ðŽÀs‚·‚éD—Ⴆ‚΁CƒJ[ƒlƒ‹‚ð\’z‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ðCSSPƒJ[
    410 ƒlƒ‹‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð“WŠJ‚µ‚½ƒfƒBƒŒƒNƒgƒŠ‚̉º‚ÌKERNEL_LIB‚Æ‚¢‚¤–¼Ì‚Ì
    411 ƒfƒBƒŒƒNƒgƒŠ‚É‚·‚éê‡‚ɂ́CŽŸ‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚·‚éiƒfƒBƒŒƒNƒgƒŠ‚̏ꏊ
    412 ‚Æ–¼Ì‚Í”CˆÓ‚ÉŒˆ‚ß‚Ä‚æ‚¢jD
     357        % perl ../configure -T <ターゲット略称> -f
     358
     359ここで,OBJ_LIBというディレクトリの場所と名称は,任意に決めてよい.これ
     360以降の手順は,前節と同じである.
     361
     3623.5. アプリケーションとカーネルを別々に構築する方法
     363
     364前節で説明した方法では,アプリケーションとカーネルを同時に生成するため,
     365オブジェクトファイルを置くディレクトリに非常に多くのファイルが作成され
     366て,扱いにくくなる.そこで,カーネルを修正する頻度が低い場合には,カー
     367ネルは事前に構築しておき,後でアプリケーションだけを構築する方法を用意
     368している.以下では,サンプルプログラムを構築を例に,その手順について説
     369明する.
     370
     371まず,カーネルを構築するディレクトリを作成し,コンフィギュレーションス
     372クリプトを実行する.例えば,カーネルを構築するディレクトリを,SSPカー
     373ネルのソースファイルを展開したディレクトリの下のKERNEL_LIBという名称の
     374ディレクトリにする場合には,次のコマンドを実行する(ディレクトリの場所
     375と名称は任意に決めてよい).
    413376
    414377        % mkdir KERNEL_LIB
    415378        % cd KERNEL_LIB
    416         % perl ../configure -T <ƒ^[ƒQƒbƒg—ªÌ> -f
    417 
    418 ‚±‚ê‚É‚æ‚èCƒJ[ƒlƒ‹‚ð\’z‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ɁCMakefileCsample1.cfgC
    419 sample1.hCsample1.c‚ª¶¬‚³‚ê‚邪CMakefileˆÈŠO‚ÍŽÀŽ¿“I‚É‚ÍŽg—p‚µ‚È‚¢D
    420 
    421 make depend‚ňˑ¶ŠÖŒWƒtƒ@ƒCƒ‹iMakefile.dependj‚𐶐¬‚µ‚½ŒãCmake
    422 libkernel.a‚É‚æ‚èƒJ[ƒlƒ‹ƒ‰ƒCƒuƒ‰ƒŠilibkernel.aj‚ª¶¬‚Å‚«‚éD
     379        % perl ../configure -T <ターゲット略称> -f
     380
     381これにより,カーネルを構築するディレクトリに,Makefile,sample1.cfg,
     382sample1.h,sample1.cが生成されるが,Makefile以外は実質的には使用しない.
     383
     384make dependで依存関係ファイル(Makefile.depend)を生成した後,make
     385libkernel.aによりカーネルライブラリ(libkernel.a)が生成できる.
    423386
    424387        % make depend
    425388        % make libkernel.a
    426389
    427 ŽŸ‚ɁCƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\’z‚·‚éƒfƒBƒŒƒNƒgƒŠ‚ðì¬‚µCƒRƒ“ƒtƒBƒMƒ
    428 ƒŒ[
    429 ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ðŽÀs‚·‚éD—Ⴆ‚΁CƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\’z‚·‚éƒfƒBƒŒƒN
    430 ƒgƒŠ‚ðCSSPƒJ[ƒlƒ‹‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð“WŠJ‚µ‚½ƒfƒBƒŒƒNƒgƒŠ‚̉º‚ÌAPL‚Æ‚¢
    431 ‚¤–¼Ì‚̃fƒBƒŒƒNƒgƒŠ‚É‚·‚éê‡‚ɂ́CŽŸ‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚·‚éiƒfƒBƒŒƒNƒg
    432 ƒŠ‚̏ꏊ‚Æ–¼Ì‚Í”CˆÓ‚ÉŒˆ‚ß‚Ä‚æ‚¢jD
     390次に,アプリケーションを構築するディレクトリを作成し,コンフィギュレー
     391ションスクリプトを実行する.例えば,アプリケーションを構築するディレク
     392トリを,SSPカーネルのソースファイルを展開したディレクトリの下のAPLとい
     393う名称のディレクトリにする場合には,次のコマンドを実行する(ディレクト
     394リの場所と名称は任意に決めてよい).
    433395
    434396        % cd ..
    435397        % mkdir APL
    436398        % cd APL
    437         % perl ../configure -T <ƒ^[ƒQƒbƒg—ªÌ> -L ../KERNEL_LIB
    438 
    439 ‚±‚±‚Å-LƒIƒvƒVƒ‡ƒ“‚ɂ́CƒJ[ƒlƒ‹‚ð\’z‚µ‚½ƒfƒBƒŒƒNƒgƒŠ‚̃pƒX‚ðŽw’è‚·‚éD
    440 
    441 ÅŒã‚ɁCmake depend‚ňˑ¶ŠÖŒWƒtƒ@ƒCƒ‹iMakefile.dependj‚𐶐¬‚µ‚½ŒãC
    442 makeƒRƒ}ƒ“ƒh‚É‚æ‚èƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚̃[ƒhƒ‚ƒWƒ
    443 [ƒ‹iSSP‚Ü‚½‚Í
    444 SSP.exej‚ª¶¬‚Å‚«‚éD
     399        % perl ../configure -T <ターゲット略称> -L ../KERNEL_LIB
     400
     401ここで-Lオプションには,カーネルを構築したディレクトリのパスを指定する.
     402
     403最後に,make dependで依存関係ファイル(Makefile.depend)を生成した後,
     404makeコマンドによりサンプルプログラムのロードモジュール(SSPまたは
     405SSP.exe)が生成できる.
    445406
    446407        % make depend
    447408        % make
    448409
    449 ‚±‚̎菇‚ł́CƒAƒvƒŠƒP[ƒVƒ‡ƒ“\’zŽž‚ɂ̓J[ƒlƒ‹‚̍č\’z‚ª•K—v‚©ƒ`ƒFƒb
    450 ƒN‚µ‚È‚¢‚½‚߁CƒJ[ƒlƒ‹‚̃\[ƒXƒR[ƒh‚ðC³‚µ‚½ê‡‚ɂ́CƒJ[ƒlƒ‹‚ð\’z
    451 ‚µ‚½ƒfƒBƒŒƒNƒgƒŠ‚Åmake libkernel.a‚ðÄŽÀs‚·‚é•K—v‚ª‚ ‚éD
    452 
    453 ˆÈã‚ł́CƒJ[ƒlƒ‹‚ƃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð•ÊX‚̃fƒBƒŒƒNƒgƒŠ‚ō\’z‚µ‚½‚ªC
    454 -LƒIƒvƒVƒ‡ƒ“‚ɃJƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠi‚½‚¾‚µC"."‚Æ‚¢‚¤‹Lq‚Å‚Í•s‰Âj‚ðŽw
    455 ’è‚·‚邱‚ƂŁCƒJ[ƒlƒ‹‚ƃAƒvƒŠƒP[ƒVƒ‡ƒ“‚𓯂¶ƒfƒBƒŒƒNƒgƒŠ‚ŕʁX‚ɍ\’z
    456 ‚·‚邱‚Æ‚à‚Å‚«‚éD‹ï‘Ì“I‚ɂ́CŽŸ‚̎菇‚Æ‚È‚éD
     410この手順では,アプリケーション構築時にはカーネルの再構築が必要かチェッ
     411クしないため,カーネルのソースコードを修正した場合には,カーネルを構築
     412したディレクトリでmake libkernel.aを再実行する必要がある.
     413
     414以上では,カーネルとアプリケーションを別々のディレクトリで構築したが,
     415-Lオプションにカレントディレクトリ(ただし,"."という記述では不可)を指
     416定することで,カーネルとアプリケーションを同じディレクトリで別々に構築
     417することもできる.具体的には,次の手順となる.
    457418
    458419        % mkdir OBJ
    459420        % cd OBJ
    460         % perl ../configure -T <ƒ^[ƒQƒbƒg—ªÌ> -L ../OBJ
     421        % perl ../configure -T <ターゲット略称> -L ../OBJ
    461422        % make depend
    462423        % make libkernel.a
     
    464425        % make
    465426
    466 ‚±‚±‚ŁCmake cleankernel‚́CƒJ[ƒlƒ‹ƒ‰ƒCƒuƒ‰ƒŠ‚𐶐¬‚·‚邽‚ß‚Ì’†ŠÔƒtƒ@
    467 ƒCƒ‹‚ðíœ‚·‚é‚à‚Ì‚Å‚ ‚éD‚±‚̎菇‚ł́Cmake depend‚É‚æ‚èƒJ[ƒlƒ‹ƒ‰ƒC
    468 ƒuƒ‰ƒŠ‚ÉŠÖ‚·‚éˆË‘¶ŠÖŒW‚𐶐¬‚µ‚È‚¢‚½‚߁CƒJ[ƒlƒ‹‚̃\[ƒXƒR[ƒh‚ðC³‚µ
    469 ‚½ê‡‚ɂ́C•K‚¸make cleankerneli‚Ü‚½‚́Cmake cleanj‚µ‚Ä‚©‚çCmake
    470 libkernel.a‚·‚é•K—v‚ª‚ ‚é‚Ì‚Å’ˆÓ‚·‚邱‚ƁD
    471 
    472 ‚È‚¨Cmake realclean‚·‚é‚ƁCmake depend‚Æmake‚É‚æ‚萶¬‚µ‚½ƒtƒ@ƒCƒ‹‚ð‚·
    473 ‚ׂč폜‚·‚éD‚»‚ê‚ɑ΂µ‚āCmake clean‚ł́Cmake depend‚É‚æ‚萶¬‚µ‚½ˆË
    474 ‘¶ŠÖŒWƒtƒ@ƒCƒ‹‚͍폜‚µ‚È‚¢D
    475 
    476 
    477 ‚SDƒfƒBƒŒƒNƒgƒŠ\¬Eƒtƒ@ƒCƒ‹\¬
    478 
    479 4.1. ”z•zƒpƒbƒP[ƒW‚̃fƒBƒŒƒNƒgƒŠ\¬
    480 
    481         include/                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“Œü‚¯ƒwƒbƒ_ƒtƒ@ƒCƒ‹
    482         kernel/                 ƒJ[ƒlƒ‹ƒ\[ƒXƒtƒ@ƒCƒ‹
    483         syssvc/                 ƒVƒXƒeƒ€ƒT[ƒrƒXƒwƒbƒ_ƒtƒ@ƒCƒ‹Cƒ\[ƒXƒtƒ@ƒCƒ‹
    484         target/                 ƒ^[ƒQƒbƒgˆË‘¶•”
    485         arch/                   ƒ^[ƒQƒbƒgˆË‘¶•”‚Ì‹¤’Ê•”•ª
    486                 gcc/            GCCŠJ”­ŠÂ‹«ˆË‘¶•”
    487         pdic/                   PDICiƒfƒoƒCƒXƒhƒ‰ƒCƒo‚ÌOS”ñˆË‘¶•”•ªj
    488         utils/                  ƒ†[ƒeƒBƒŠƒeƒBƒvƒƒOƒ‰ƒ€
    489         sample/                 ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚ÆMakefile
    490         doc/                    ƒhƒLƒ
    491 ƒƒ“ƒg
    492         extension/              Šg’£ƒpƒbƒP[ƒW
    493 
    494 4.2. ƒ^[ƒQƒbƒg”ñˆË‘¶•”‚̃tƒ@ƒCƒ‹\¬
    495 
    496 ƒ^[ƒQƒbƒg”ñˆË‘¶•”iƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ÆŠg’£ƒpƒbƒP[ƒW‚͏œ‚­j‚ÌŠeƒtƒ@ƒC
    497 ƒ‹‚ÌŠT—v‚ÍŽŸ‚Ì’Ê‚èD
    498 
    499         README.txt                                      TOPPERS/SSPƒJ[ƒlƒ‹‚ÌŠÈ’P‚ȏЉî
    500         configure                                       ƒRƒ“ƒtƒBƒMƒ
    501 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒgiGNUŠJ”­ŠÂ‹«—pj
    502         MANIFEST                                        ŒÂ•ÊƒpƒbƒP[ƒW‚̃tƒ@ƒCƒ‹ƒŠƒXƒg
     427ここで,make cleankernelは,カーネルライブラリを生成するための中間ファ
     428イルを削除するものである.この手順では,make dependによりカーネルライ
     429ブラリに関する依存関係を生成しないため,カーネルのソースコードを修正し
     430た場合には,必ずmake cleankernel(または,make clean)してから,make
     431libkernel.aする必要があるので注意すること.
     432
     433なお,make realcleanすると,make dependとmakeにより生成したファイルをす
     434べて削除する.それに対して,make cleanでは,make dependにより生成した依
     435存関係ファイルは削除しない.
     436
     437
     4384.ディレクトリ構成・ファイル構成
     439
     4404.1. 配布パッケージのディレクトリ構成
     441
     442        include/                アプリケーション向けヘッダファイル
     443        kernel/                 カーネルソースファイル
     444        syssvc/                 システムサービスヘッダファイル,ソースファイル
     445        target/                 ターゲット依存部
     446        arch/                   ターゲット依存部の共通部分
     447                gcc/            GCC開発環境依存部
     448        pdic/                   PDIC(デバイスドライバのOS非依存部分)
     449        utils/                  ユーティリティプログラム
     450        sample/                 サンプルプログラムとMakefile
     451        doc/                    ドキュメント
     452        extension/              拡張パッケージ
     453
     4544.2. ターゲット非依存部のファイル構成
     455
     456ターゲット非依存部(テストプログラムと拡張パッケージは除く)の各ファイ
     457ルの概要は次の通り.
     458
     459        README.txt                                      TOPPERS/SSPカーネルの簡単な紹介
     460        configure                                       コンフィギュレーションスクリプト(GNU開発環境用)
     461        MANIFEST                                        個別パッケージのファイルリスト
    503462
    504463        include/
    505                 kernel.h                                SSPƒJ[ƒlƒ‹‚ðŽg—p‚·‚邽‚ß‚Ì’è‹`
    506                 sil.h                                   ƒVƒXƒeƒ€ƒCƒ“ƒ^ƒtƒF[ƒXƒŒƒCƒ„‚ðŽg—p‚·‚邽‚ß‚Ì’è‹`
    507                 t_stddef.h                              TOPPERS‹¤’ʃwƒbƒ_ƒtƒ@ƒCƒ‹
    508                 itron.h                                 ITRONŽd—l‹¤’Ê‹K’è‚̃f[ƒ^Œ^E’萔Eƒ}ƒNƒ
     464                kernel.h                                SSPカーネルを使用するための定義
     465                sil.h                                   システムインタフェースレイヤを使用するための定義
     466                t_stddef.h                              TOPPERS共通ヘッダファイル
     467                itron.h                                 ITRON仕様共通規定のデータ型・定数・マクロ
    509468
    510469        kernel/
    511                 Makefile.kernel                 ƒJ[ƒlƒ‹‚̃tƒ@ƒCƒ‹\¬‚Ì’è‹`
    512                 kernel_impl.h                   ƒJ[ƒlƒ‹ŽÀ‘•—p•W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹
    513                 kernel_int.h                    kernel_cfg.c—p‚̃wƒbƒ_ƒtƒ@ƒCƒ‹
    514                 kernel_rename.def               ƒJ[ƒlƒ‹‚Ì“à•”Ž¯•Ê–¼‚̃Šƒl[ƒ€’è‹`
    515                 kernel_rename.h                 ƒJ[ƒlƒ‹‚Ì“à•”Ž¯•Ê–¼‚̃Šƒl[ƒ€
    516                 kernel_unrename.h               ƒJ[ƒlƒ‹‚Ì“à•”Ž¯•Ê–¼‚̃Šƒl[ƒ€‰ðœ     
    517                 kernel_api.csv                  ƒRƒ“ƒtƒBƒMƒ
    518 ƒŒ[ƒ^‚̐ÓIAPIƒe[ƒuƒ‹
    519                 kernel_def.csv                  ƒRƒ“ƒtƒBƒMƒ
    520 ƒŒ[ƒ^‚Ì’lŽæ“¾ƒVƒ“ƒ{ƒ‹ƒe[ƒuƒ‹
    521                 kernel.tf                               ƒRƒ“ƒtƒBƒMƒ
    522 ƒŒ[ƒ^‚̃pƒX2‚̃eƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹
    523                 kernel_check.tf                 ƒRƒ“ƒtƒBƒMƒ
    524 ƒŒ[ƒ^‚̃pƒX3‚̃eƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹
    525                 allfunc.h                               ‚·‚ׂĂ̊֐”‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚ß‚Ì’è‹`
    526                 check.h                                 ƒGƒ‰[ƒ`ƒFƒbƒN—pƒ}ƒNƒ
    527                 startup.c                               ƒJ[ƒlƒ‹‚̏‰Šú‰»‚ƏI—¹ˆ—
    528                 task.h                                  ƒ^ƒXƒN‘€ìƒ‹[ƒ`ƒ“ŠÖ˜A‚Ì’è‹`
    529                 task.c                                  ƒ^ƒXƒN‘€ìƒ‹[ƒ`ƒ“
    530                 task_manage.c                   ƒ^ƒXƒNŠÇ—‹@”\
    531                 sys_manage.c                    ƒVƒXƒeƒ€ó‘ÔŠÇ—‹@”\
    532                 interrupt.h                             Š„ž‚ÝŠÇ—‹@”\ŠÖ˜A‚Ì’è‹`
    533                 interrupt.c                             Š„ž‚ÝŠÇ—‹@”\
    534                 exception.h                             CPU—áŠOŠÇ—‹@”\ŠÖ˜A‚Ì’è‹`
    535                 exception.c                             CPU—áŠOŠÇ—‹@”\
    536                 queue.h                                 ƒLƒ
    537 [‘€ìƒ‰ƒCƒuƒ‰ƒŠ‚ðŽg—p‚·‚邽‚ß‚Ì’è‹`
     470                Makefile.kernel                 カーネルのファイル構成の定義
     471                kernel_impl.h                   カーネル実装用標準ヘッダファイル
     472                kernel_int.h                    kernel_cfg.c用のヘッダファイル
     473                kernel_rename.def               カーネルの内部識別名のリネーム定義
     474                kernel_rename.h                 カーネルの内部識別名のリネーム
     475                kernel_unrename.h               カーネルの内部識別名のリネーム解除       
     476                kernel_api.csv                  コンフィギュレータの静的APIテーブル
     477                kernel_def.csv                  コンフィギュレータの値取得シンボルテーブル
     478                kernel.tf                               コンフィギュレータのパス2のテンプレートファイル
     479                kernel_check.tf                 コンフィギュレータのパス3のテンプレートファイル
     480                allfunc.h                               すべての関数をコンパイルするための定義
     481                check.h                                 エラーチェック用マクロ
     482                startup.c                               カーネルの初期化と終了処理
     483                task.h                                  タスク操作ルーチン関連の定義
     484                task.c                                  タスク操作ルーチン
     485                task_manage.c                   タスク管理機能
     486                sys_manage.c                    システム状態管理機能
     487                interrupt.h                             割込み管理機能関連の定義
     488                interrupt.c                             割込み管理機能
     489                exception.h                             CPU例外管理機能関連の定義
     490                exception.c                             CPU例外管理機能
     491                queue.h                                 キュー操作ライブラリを使用するための定義
    538492
    539493        syssvc/
    540                 banner.h                                ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—Í‚Ì‚½‚ß‚Ì’è‹`
    541                 banner.c                                ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—Í
    542                 banner.cfg                              ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—͂̃Rƒ“ƒtƒBƒMƒ
    543 ƒŒ[
    544                                                                 ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
    545                 serial.h                                ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚ðŽg—p‚·‚邽‚ß‚Ì’è‹`
    546                 serial.c                                ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo
    547                 serial.cfg                              ƒVƒŠƒAƒ‹ƒhƒ‰ƒCƒo‚̃Rƒ“ƒtƒBƒMƒ
    548 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
    549                 syssvc_def.csv                  ƒVƒXƒeƒ€ƒT[ƒrƒX‚̃Rƒ“ƒtƒBƒMƒ
    550 ƒŒ[ƒVƒ‡ƒ“‚̍ۂɕK—v‚È
    551                                                                 ƒRƒ“ƒtƒBƒMƒ
    552 ƒŒ[ƒ^‚Ì’lŽæ“¾ƒVƒ“ƒ{ƒ‹ƒe[ƒuƒ‹
     494                banner.h                                カーネル起動メッセージの出力のための定義
     495                banner.c                                カーネル起動メッセージの出力
     496                banner.cfg                              カーネル起動メッセージの出力のコンフィギュレー
     497                                                                ションファイル
     498                serial.h                                シリアルインタフェースドライバを使用するための定義
     499                serial.c                                シリアルインタフェースドライバ
     500                serial.cfg                              シリアルドライバのコンフィギュレーションファイル
     501                syssvc_def.csv                  システムサービスのコンフィギュレーションの際に必要な
     502                                                                コンフィギュレータの値取得シンボルテーブル
    553503
    554504        arch/gcc/
    555                 MANIFEST                                ŒÂ•ÊƒpƒbƒP[ƒW‚̃tƒ@ƒCƒ‹ƒŠƒXƒg
    556                 tool_stddef.h                   t_stddef.h‚ÌŠJ”­ŠÂ‹«ˆË‘¶•”iGCC—pj
     505                MANIFEST                                個別パッケージのファイルリスト
     506                tool_stddef.h                   t_stddef.hの開発環境依存部(GCC用)
    557507
    558508        utils/
    559                 applyrename                             ƒtƒ@ƒCƒ‹‚ɃŠƒl[ƒ€‚ð“K—p
    560                 genrename                               ƒŠƒl[ƒ€ƒwƒbƒ_ƒtƒ@ƒCƒ‹‚̐¶¬
    561                 makedep                                 ˆË‘¶ŠÖŒWƒŠƒXƒg‚̐¶¬iGNUŠJ”­ŠÂ‹«—pj
    562                 makerelease                             ƒŠƒŠ[ƒXƒpƒbƒP[ƒW‚̐¶¬
     509                applyrename                             ファイルにリネームを適用
     510                genrename                               リネームヘッダファイルの生成
     511                makedep                                 依存関係リストの生成(GNU開発環境用)
     512                makerelease                             リリースパッケージの生成
    563513
    564514        sample/
    565                 Makefile                                ƒTƒ“ƒvƒ‹‚ÌMakefileiGNUŠJ”­ŠÂ‹«—pj
    566                 sample1.h                               ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€(1)‚ÉŠÖ‚·‚é’è‹`
    567                 sample1.c                               ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€(1)
    568                 sample1.cfg                             ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€(1)‚̃Rƒ“ƒtƒBƒMƒ
    569 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
     515                Makefile                                サンプルのMakefile(GNU開発環境用)
     516                sample1.h                               サンプルプログラム(1)に関する定義
     517                sample1.c                               サンプルプログラム(1)
     518                sample1.cfg                             サンプルプログラム(1)のコンフィギュレーションファイル
    570519
    571520        extension/
    572                 alarm.h                                 ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹@”\ŠÖ˜A‚Ì’è‹`
    573                 alarm.c                                 ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‹@”\
    574                 cyclic.h                                ŽüŠúƒnƒ“ƒhƒ‰‹@”\ŠÖ˜A‚Ì’è‹`
    575                 cyclic.c                                ŽüŠúƒnƒ“ƒhƒ‰‹@”\
    576         dataqueue.h             ƒf[ƒ^ƒLƒ
    577 [‹@”\ŠÖ˜A‚Ì’è‹`
    578         dataqueue.c             ƒf[ƒ^ƒLƒ
    579 [‹@”\
    580                 time_event.h                    ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—ŠÖ˜A‚Ì’è‹`
    581         eventflag.h             ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÖ˜A‚Ì’è‹`
    582         eventflag.c             ƒCƒxƒ“ƒgƒtƒ‰ƒO‹@”\
    583                 time_event.c                    ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—
    584                 time_manage.c                   ƒVƒXƒeƒ€ŽžŠÇ—‹@”\
    585                 MANIFEST                                Šg’£ƒpƒbƒP[ƒW‚̃tƒ@ƒCƒ‹ƒŠƒXƒg
     521                alarm.h                                 アラームハンドラ機能関連の定義
     522                alarm.c                                 アラームハンドラ機能
     523                cyclic.h                                周期ハンドラ機能関連の定義
     524                cyclic.c                                周期ハンドラ機能
     525        dataqueue.h             データキュー機能関連の定義
     526        dataqueue.c             データキュー機能
     527                time_event.h                    タイムイベント管理関連の定義
     528        eventflag.h             イベントフラグ関連の定義
     529        eventflag.c             イベントフラグ機能
     530                time_event.c                    タイムイベント管理
     531                time_manage.c                   システム時刻管理機能
     532                MANIFEST                                拡張パッケージのファイルリスト
    586533
    587534        doc/
    588                 user.txt                                ƒ†[ƒU[ƒYƒ}ƒjƒ
    589 ƒAƒ‹
    590                 ssp_spec.txt                    TOPPERS/SSPƒJ[ƒlƒ‹‚ÌŽd—lŠT—v
    591                 extension.txt                   ‹@”\Šg’£Eƒ`ƒ
    592 [ƒjƒ“ƒOƒKƒCƒh
    593                 porting.txt                             ƒ^[ƒQƒbƒgˆË‘¶•” ƒ|[ƒeƒBƒ“ƒOƒKƒCƒh
    594                 configurator.txt                ƒRƒ“ƒtƒBƒMƒ
    595 ƒŒ[ƒ^Žd—l
    596                 version.txt                             •ÏX—š—ð
    597 
    598 
    599 ‚TDƒRƒ“ƒtƒBƒMƒ
    600 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ÌŽg‚¢•û
    601 
    602 ƒRƒ“ƒtƒBƒMƒ
    603 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒgiconfigurej‚́CSSPƒJ[ƒlƒ‹‚¨‚æ‚уAƒv
    604 ƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚ð\’z‚·‚邽‚ß‚É•K—v‚ÈŠî–{“I‚ȃRƒ“ƒtƒBƒMƒ
    605 ƒŒ[ƒVƒ‡
    606 ƒ“‚ðs‚¤‚½‚߂̃vƒƒOƒ‰ƒ€‚Å‚ ‚éD
    607 
    608 SSPƒJ[ƒlƒ‹‚ð—p‚¢‚ăAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðì¬‚·‚éê‡‚ɂ́C‚Ü‚¸ƒIƒuƒWƒFƒNƒg
    609 ƒtƒ@ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚ðì¬‚µC‚»‚̃fƒBƒŒƒNƒgƒŠ‚ŃRƒ“ƒtƒBƒMƒ
    610 ƒŒ[
    611 ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ðŽÀs‚·‚éDƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚̏ê
    612 Š‚Æ–¼Ì‚́C”CˆÓ‚ÉŒˆ‚ß‚Ä‚æ‚¢D
    613 
    614 ƒRƒ“ƒtƒBƒMƒ
    615 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ɑ΂·‚éƒIƒvƒVƒ‡ƒ“‚ÍŽŸ‚Ì’Ê‚èD
    616 
    617         -T <ƒ^[ƒQƒbƒg—ªÌ>
    618                 ƒ^[ƒQƒbƒgƒVƒXƒeƒ€‚Ì–¼Ì‚ðCtargetƒfƒBƒŒƒNƒgƒŠ‚̉º‚É’u‚©‚ê‚Ä‚¢
    619                 ‚éƒ^[ƒQƒbƒgˆË‘¶•”ƒfƒBƒŒƒNƒgƒŠ‚Ì–¼Ì‚ÅŽw’è‚·‚éi•K{jD
    620 
    621         -A <ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€–¼>
    622                 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚Ì–¼Ì‚ðŽw’è‚·‚éDÈ—ª‚µ‚½ê‡‚ɂ́C
    623                 ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€isample1j‚Æ‚È‚éD
    624 
    625         -a <ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃fƒBƒŒƒNƒgƒŠ–¼>
    626                 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚̃\[ƒXƒtƒ@ƒCƒ‹iƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    627 
    628                 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚ðœ‚­j‚ð’u‚¢‚½ƒfƒBƒŒƒNƒgƒŠ–¼‚ðŽw’è‚·‚éDÈ
    629                 —ª‚µ‚½ê‡‚ɂ́CƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚É’u‚©‚ê
    630                 ‚Ä‚¢‚邱‚Æ‚ð‰¼’è‚·‚éDƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    631 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚́C
    632                 ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚É’u‚­‚±‚ƁD
    633 
    634         -U <ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹–¼>
    635                 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚̃ƒCƒ“‚̃IƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹i-A
    636                 ‚ÅŽw’肵‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€–¼‚É".o"‚ð•t‰Á‚µ‚½‚à‚́jˆÈ
    637                 ŠO‚ɁCƒŠƒ“ƒN‚·‚ׂ«ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚Ì–¼Ì‚ðC".o"‚ð•t‰Á‚µ‚½
    638                 Œ`‚ÅŽw’è‚·‚éD""‚ň͂ނ±‚Æ‚É‚æ‚Á‚āC•¡”‚̃tƒ@ƒCƒ‹‚ðŽw’è‚·‚邱
    639                 ‚Æ‚à‰Â”\‚Å‚ ‚éi-UƒIƒvƒVƒ‡ƒ“‚𕡐”Žg‚Á‚Ä‚Í‚È‚ç‚È‚¢jD
    640 
    641         -L <ƒJ[ƒlƒ‹ƒ‰ƒCƒuƒ‰ƒŠ‚̃fƒBƒŒƒNƒgƒŠ–¼>
    642                 Ž–‘O‚ɍ\’z‚µ‚½ƒJ[ƒlƒ‹ƒ‰ƒCƒuƒ‰ƒŠilibkernel.aj‚ð—p‚¢‚āCƒAƒvƒŠ
    643                 ƒP[ƒVƒ‡ƒ“‚Ì‚Ý‚ð\’z‚·‚éê‡‚ɂ́C‚±‚̃IƒvƒVƒ‡ƒ“‚ɃJ[ƒlƒ‹ƒ‰ƒC
    644                 ƒuƒ‰ƒŠ‚Ì’u‚©‚ꂽƒfƒBƒŒƒNƒgƒŠ–¼‚ðŽw’è‚·‚éD‚±‚̃IƒvƒVƒ‡ƒ“‚ÌŽg—p
    645                 —á‚ɂ‚¢‚ẮCu3.5 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ƃJ[ƒlƒ‹‚ð•ÊX‚ɍ\’z‚·‚é
    646                 •û–@v‚̐߂ðŽQÆ‚·‚邱‚ƁD
     535                user.txt                                ユーザーズマニュアル
     536                ssp_spec.txt                    TOPPERS/SSPカーネルの仕様概要
     537                extension.txt                   機能拡張・チューニングガイド
     538                porting.txt                             ターゲット依存部 ポーティングガイド
     539                configurator.txt                コンフィギュレータ仕様
     540                version.txt                             変更履歴
     541
     542
     5435.コンフィギュレーションスクリプトの使い方
     544
     545コンフィギュレーションスクリプト(configure)は,SSPカーネルおよびアプ
     546リケーションプログラムを構築するために必要な基本的なコンフィギュレーショ
     547ンを行うためのプログラムである.
     548
     549SSPカーネルを用いてアプリケーションを作成する場合には,まずオブジェクト
     550ファイルを置くディレクトリを作成し,そのディレクトリでコンフィギュレー
     551ションスクリプトを実行する.オブジェクトファイルを置くディレクトリの場
     552所と名称は,任意に決めてよい.
     553
     554コンフィギュレーションスクリプトに対するオプションは次の通り.
     555
     556        -T <ターゲット略称>
     557                ターゲットシステムの名称を,targetディレクトリの下に置かれてい
     558                るターゲット依存部ディレクトリの名称で指定する(必須).
     559
     560        -A <アプリケーションプログラム名>
     561                アプリケーションプログラムの名称を指定する.省略した場合には,
     562                サンプルプログラム(sample1)となる.
     563
     564        -a <アプリケーションのディレクトリ名>
     565                アプリケーションプログラムのソースファイル(システムコンフィギュ
     566                レーションファイルを除く)を置いたディレクトリ名を指定する.省
     567                略した場合には,オブジェクトファイルを置くディレクトリに置かれ
     568                ていることを仮定する.システムコンフィギュレーションファイルは,
     569                オブジェクトファイルを置くディレクトリに置くこと.
     570
     571        -U <オブジェクトファイル名>
     572                アプリケーションプログラムのメインのオブジェクトファイル(-A
     573                で指定したアプリケーションプログラム名に".o"を付加したもの)以
     574                外に,リンクすべきオブジェクトファイルの名称を,".o"を付加した
     575                形で指定する.""で囲むことによって,複数のファイルを指定するこ
     576                とも可能である(-Uオプションを複数使ってはならない).
     577
     578        -L <カーネルライブラリのディレクトリ名>
     579                事前に構築したカーネルライブラリ(libkernel.a)を用いて,アプリ
     580                ケーションのみを構築する場合には,このオプションにカーネルライ
     581                ブラリの置かれたディレクトリ名を指定する.このオプションの使用
     582                例については,「3.5 アプリケーションとカーネルを別々に構築する
     583                方法」の節を参照すること.
    647584
    648585        -f
    649                 ƒJ[ƒlƒ‹‚ðŠÖ”’PˆÊ‚ŃRƒ“ƒpƒCƒ‹‚µƒ‰ƒCƒuƒ‰ƒŠ‰»‚·‚éê‡‚ɁC‚±‚̃I
    650                 ƒvƒVƒ‡ƒ“‚ðŽw’è‚·‚éD‚±‚̃IƒvƒVƒ‡ƒ“‚ÌŽg—p—á‚ɂ‚¢‚ẮCu3.4 ƒJ[
    651                 ƒlƒ‹‚ðŠÖ”’PˆÊ‚щƒCƒuƒ‰ƒŠ‰»‚·‚é•û–@v‚̐߂ðŽQÆ‚·‚邱‚ƁD
    652 
    653         -D <SSPƒJ[ƒlƒ‹‚̃\[ƒXƒfƒBƒŒƒNƒgƒŠ–¼>
    654                 SSPƒJ[ƒlƒ‹‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð’u‚¢‚½ƒfƒBƒŒƒNƒgƒŠ–¼‚ðŽw’è‚·‚éDÈ
    655                 —ª‚µ‚½ê‡‚ɂ́Cconfigure‚Ì’u‚©‚ê‚Ä‚¢‚éƒfƒBƒŒƒNƒgƒŠ‚Æ‚È‚éD
    656 
    657         -l <ƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê>
    658                 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ðŽw’è‚·‚éDŒ»Žž
    659                 “_‚ł́Cc‚Æc++‚Ì‚Ý‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éD
    660 
    661         -t <ƒeƒ“ƒvƒŒ[ƒgƒfƒBƒŒƒNƒgƒŠ–¼>
    662                 Makefile‚âƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚̃eƒ“ƒvƒŒ[ƒg‚Ì’u‚©‚ꂽƒfƒBƒŒƒNƒg
    663                 ƒŠ–¼‚ðŽw’è‚·‚éDÈ—ª‚µ‚½ê‡‚ɂ́CSSPƒJ[ƒlƒ‹‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð
    664                 ’u‚¢‚½ƒfƒBƒŒƒNƒgƒŠ‚̉º‚ÌsampleƒfƒBƒŒƒNƒgƒŠ‚Æ‚È‚éD
    665 
    666         -m <ƒeƒ“ƒvƒŒ[ƒgMakefile–¼>
    667                 Makefile‚̃eƒ“ƒvƒŒ[ƒg‚Æ‚·‚éƒtƒ@ƒCƒ‹–¼‚ðŽw’è‚·‚éDÈ—ª‚µ‚½ê‡
    668                 ‚ɂ́CMakefile‚Æ‚È‚éD
    669 
    670         -d <ŽÀsŠÂ‹«–¼>
    671                 ƒ^[ƒQƒbƒgƒVƒXƒeƒ€ã‚ł̃vƒƒOƒ‰ƒ€‚ÌŽÀsŠÂ‹«i‚È‚¢‚µ‚́Cƒfƒoƒb
    672                 ƒOŠÂ‹«j‚Ì–¼Ì‚ðŽw’è‚·‚éD‚±‚̃IƒvƒVƒ‡ƒ“‚ðŽw’è‚·‚é‚ƁCŽÀsŠÂ‹«
    673                 ‚ðŽw’è‚·‚éƒVƒ“ƒ{ƒ‹iTOPPERS_<ƒfƒoƒbƒOŠÂ‹«–¼>j‚ªƒ}ƒNƒ’è‹`‚³‚ê
    674                 ‚éDÈ—ª‚µ‚½ê‡‚ɂ́CŽÀsŠÂ‹«‚ðŽw’è‚·‚éƒVƒ“ƒ{ƒ‹‚̓}ƒNƒ’è‹`‚³
    675                 ‚ê‚È‚¢D
     586                カーネルを関数単位でコンパイルしライブラリ化する場合に,このオ
     587                プションを指定する.このオプションの使用例については,「3.4 カー
     588                ネルを関数単位でライブラリ化する方法」の節を参照すること.
     589
     590        -D <SSPカーネルのソースディレクトリ名>
     591                SSPカーネルのソースファイルを置いたディレクトリ名を指定する.省
     592                略した場合には,configureの置かれているディレクトリとなる.
     593
     594        -l <プログラミング言語>
     595                アプリケーションプログラムのプログラミング言語を指定する.現時
     596                点では,cとc++のみをサポートしている.
     597
     598        -t <テンプレートディレクトリ名>
     599                Makefileやサンプルプログラムのテンプレートの置かれたディレクト
     600                リ名を指定する.省略した場合には,SSPカーネルのソースファイルを
     601                置いたディレクトリの下のsampleディレクトリとなる.
     602
     603        -m <テンプレートMakefile名>
     604                Makefileのテンプレートとするファイル名を指定する.省略した場合
     605                には,Makefileとなる.
     606
     607        -d <実行環境名>
     608                ターゲットシステム上でのプログラムの実行環境(ないしは,デバッ
     609                グ環境)の名称を指定する.このオプションを指定すると,実行環境
     610                を指定するシンボル(TOPPERS_<デバッグ環境名>)がマクロ定義され
     611                る.省略した場合には,実行環境を指定するシンボルはマクロ定義さ
     612                れない.
    676613
    677614        -r
    678                 ƒgƒŒ[ƒXƒƒO‹L˜^‚̃Tƒ“ƒvƒ‹ƒR[ƒh‚ð—LŒø‚É‚·‚éê‡‚ɁC‚±‚̃IƒvƒVƒ‡
    679                 ƒ“‚ðŽw’è‚·‚éD‚±‚̃IƒvƒVƒ‡ƒ“‚ÌŽg—p—á‚ɂ‚¢‚ẮCu11.5 ƒgƒŒ[ƒX
    680                 ƒƒO‹L˜^‚̃Tƒ“ƒvƒ‹ƒR[ƒh‚ÌŽg—p•û–@v‚̐߂ðŽQÆ‚·‚邱‚ƁD
    681 
    682         -p <perl‚̃pƒX–¼>
    683                 perl‚̃pƒX–¼‚ðŽw’è‚·‚éDÈ—ª‚µ‚½ê‡‚ɂ́C/usr/local/bin‚Æ
    684                 /usr/bin‚ð’Tõ‚µCperl‚̃pƒX–¼‚ðŒˆ’è‚·‚éD
    685 
    686         -g <ƒRƒ“ƒtƒBƒMƒ
    687 ƒŒ[ƒ^‚̃pƒX–¼>
    688                 ƒRƒ“ƒtƒBƒMƒ
    689 ƒŒ[ƒ^icfgj‚̃pƒX–¼‚ðŽw’è‚·‚éDÈ—ª‚µ‚½ê‡‚ɂ́C
    690                 ƒfƒtƒHƒ‹ƒg‚̃pƒX–¼iSSPƒJ[ƒlƒ‹‚̃\[ƒXƒfƒBƒŒƒNƒgƒŠ‚̉º‚Ì
    691                 cfg/cfg/cfgj‚Æ‚È‚éD
    692 
    693 ƒRƒ“ƒtƒBƒMƒ
    694 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ªs‚¤ˆ—‚ÍŽŸ‚Ì’Ê‚è‚Å‚ ‚éD
    695 
    696 (1) Makefile‚̐¶¬
    697 
    698 ƒeƒ“ƒvƒŒ[ƒgƒfƒBƒŒƒNƒgƒŠiƒfƒtƒHƒ‹ƒg‚ł́Csamplej‚©‚ç“KØ‚ÈMakefile‚ð
    699 ‘I‘ð‚µC•K—v‚ȉӏŠ‚ð‘‚«Š·‚¦‚āCMakefile‚𐶐¬‚·‚éD
    700 
    701 (2) ƒTƒ“ƒvƒ‹ƒvƒƒOƒ‰ƒ€‚̐¶¬
    702 
    703 Žw’肵‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚ªƒeƒ“ƒvƒŒ[ƒgƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚éê‡C
    704 “KØ‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð‘I‘ð‚µC•K—v‚ȉӏŠ‚ð
    705 ‘‚«Š·‚¦‚āCƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚̃\[ƒXƒtƒ@ƒCƒ‹i—Ⴆ‚΁C
    706 sample1.hCsample1.cCsample1.cfgj‚𐶐¬‚·‚éD
    707 
    708 (3) ƒRƒ“ƒtƒBƒMƒ
    709 ƒŒ[ƒ^‚ª—pˆÓ‚Å‚«‚Ä‚¢‚é‚©‚̃`ƒFƒbƒN
    710 
    711 ƒRƒ“ƒtƒBƒMƒ
    712 ƒŒ[ƒ^icfgj‚ÌŽÀsƒtƒ@ƒCƒ‹‚ª‚ ‚é‚©ƒ`ƒFƒbƒN‚µCƒtƒ@ƒCƒ‹‚ª‚È
    713 ‚¢ê‡‚ɂ́C‚»‚ÌŽ|‚ðo—Í‚·‚éD
    714 
    715 
    716 ‚UDMakefile‚̏C³•û–@
    717 
    718 ‘O‚ÌÍ‚Åà–¾‚µ‚½‚悤‚ɁCƒRƒ“ƒtƒBƒMƒ
    719 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚É—^‚¦‚éƒIƒvƒVƒ‡
    720 ƒ““™‚©‚çMakefile‚ª¶¬‚³‚ê‚邪CƒRƒ“ƒtƒBƒMƒ
    721 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚őΉž
    722 ‚Å‚«‚È‚¢ê‡‚ɂ́CMakefile‚𒼐ڏC³‚·‚é•K—v‚ª‚ ‚éD‚±‚±‚ł́CMakefile
    723 ‚Ì’†‚ŁCC³‚ª•K—v‚Æ‚È‚é‰Â”\«‚̍‚‚¢‰ÓŠ‚ɂ‚¢‚Äà–¾‚·‚éD
    724 
    725 ‚È‚¨CMakefile‚ðC³‚µ‚½Œã‚ɃRƒ“ƒtƒBƒMƒ
    726 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ðÄŽÀs‚·
    727 ‚é‚ƁCC³‚µ‚½Makefile‚ªã‘‚«‚³‚ê‚Ä‚µ‚Ü‚¤‚Ì‚Å’ˆÓ‚·‚邱‚ƁiŒÃ‚¢‚à‚Ì‚ª
    728 Makefile.bak‚É•Û‘¶‚³‚ê‚éjD
    729 
    730 6.1. Makefile‚̕ϐ”’è‹`
    731 
    732 (A) ƒ^[ƒQƒbƒg—ªÌ
    733 
    734 TARGET‚ɂ́Cƒ^[ƒQƒbƒgƒVƒXƒeƒ€‚Ì–¼Ì‚ðCtargetƒfƒBƒŒƒNƒgƒŠ‚̉º‚É’u‚©‚ê
    735 ‚Ä‚¢‚éƒ^[ƒQƒbƒgˆË‘¶•”ƒfƒBƒŒƒNƒgƒŠ‚Ì–¼Ì‚ÅŽw’è‚·‚éD‚±‚Ì’è‹`‚́C’ʏí‚́C
    736 ƒRƒ“ƒtƒBƒMƒ
    737 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ɑ΂·‚é-TƒIƒvƒVƒ‡ƒ“‚É‚æ‚ès‚¤D
    738 
    739 (B) ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ÌŠg’£Žq
    740 
    741 CygwinŠÂ‹«‚ŃRƒ“ƒpƒCƒ‹‚·‚鎞‚ɂ́COBJEXT‚ð"exe"‚É’è‹`‚·‚é•K—v‚ª‚ ‚éD‚±
    742 ‚ê‚́CCygwinŠÂ‹«‚ł́Cƒ[ƒhƒ‚ƒWƒ
    743 [ƒ‹‚̃tƒ@ƒCƒ‹–¼‚ÉŠg’£Žq".exe"‚ª•t‰Á
    744 ‚³‚ê‚é‚̂ɑΉž‚·‚邽‚ß‚Ì‚à‚Ì‚Å‚ ‚éDCygwinŠÂ‹«‚Å‚ ‚邱‚Æ‚ð”»’è‚Å‚«‚ê‚΁C
    745 ƒRƒ“ƒtƒBƒMƒ
    746 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ª‚±‚Ì’è‹`‚ðs‚¤D
    747 
    748 (C) ŽÀsŠÂ‹«iƒ^[ƒQƒbƒgˆË‘¶j
    749 
    750 ƒ^[ƒQƒbƒg‚É‚æ‚Á‚ẮCŽÀsŠÂ‹«‚ɑΉž‚µ‚ă^[ƒQƒbƒgˆË‘¶•”‚̃R[ƒh‚ð·‚µ
    751 Š·‚¦‚éê‡‚ª‚ ‚éD‚±‚ê‚ð‰Â”\‚É‚·‚邽‚߂ɁCŽÀsŠÂ‹«‚Ì–¼Ì‚ðDBGENV‚É’è‹`
    752 ‚µ‚Ä‚¢‚éD‚±‚Ì’è‹`‚́C’ʏí‚́CƒRƒ“ƒtƒBƒMƒ
    753 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ɑ΂·
    754 ‚é-DƒIƒvƒVƒ‡ƒ“‚É‚æ‚ès‚¤D‚ǂ̃^[ƒQƒbƒg‚ª‚Ç‚ÌŽÀsŠÂ‹«‚ɑΉž‚µ‚Ä‚¢‚é‚©
    755 ‚́Cƒ^[ƒQƒbƒgˆË‘¶•”‚̃†[ƒU[ƒYƒ}ƒjƒ
    756 ƒAƒ‹‚ðŽQÆ‚·‚邱‚ƁD
    757 
    758 (D) ƒJ[ƒlƒ‹ƒ‰ƒCƒuƒ‰ƒŠ‚̃fƒBƒŒƒNƒgƒŠ–¼
    759 
    760 KERNEL_LIB‚ɂ́CƒJ[ƒlƒ‹ƒ‰ƒCƒuƒ‰ƒŠ‚Ì’u‚©‚ꂽƒfƒBƒŒƒNƒgƒŠ–¼‚ð’è‹`‚·‚éD
    761 ‚±‚Ì’è‹`‚́C’ʏí‚́CƒRƒ“ƒtƒBƒMƒ
    762 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ɑ΂·‚é-LƒIƒvƒVƒ‡
    763 ƒ“‚É‚æ‚ès‚¤D
    764 
    765 (E) ƒJ[ƒlƒ‹‚ðŠÖ”’PˆÊ‚ŃRƒ“ƒpƒCƒ‹‚·‚é‚©‚Ç‚¤‚©
    766 
    767 KERNEL_FUNCOBJS‚́CƒJ[ƒlƒ‹‚ðŠÖ”’PˆÊ‚ŃRƒ“ƒpƒCƒ‹‚·‚éê‡‚É‚Ítrue‚É’è‹`
    768 ‚µCƒtƒ@ƒCƒ‹’PˆÊ‚ŃRƒ“ƒpƒCƒ‹‚·‚éê‡‚É‚Í–¢’è‹`‚Æ‚·‚éD‚±‚Ì’è‹`‚́C’ʏí
    769 ‚́CƒRƒ“ƒtƒBƒMƒ
    770 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ɑ΂·‚é-fƒIƒvƒVƒ‡ƒ“‚É‚æ‚ès‚¤D
    771 
    772 (F) ‹¤’ʃRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“
    773 
    774 ‚·‚ׂẴvƒƒOƒ‰ƒ€‚É‹¤’Ê‚·‚éƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚̒ljÁ‚ª•K—v‚ȏꍇ‚ɂ́C
    775 ‰º‚̕ϐ”‚Ì’è‹`‚ð•ÏX‚·‚éD‚»‚̃Rƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚ªC“Á’è‚̃^[ƒQƒbƒg
    776 ‚ŏí‚É•K—v‚ȏꍇ‚ɂ́Cƒ^[ƒQƒbƒgˆË‘¶‚Ì’è‹`‚ð“ü‚ꂽMakefile.target“™‚ðC
    777 ³‚·‚ׂ«‚Å‚ ‚éD
    778 
    779         CDEFS           ƒRƒ“ƒpƒCƒ‰‚ɑ΂·‚é-DƒIƒvƒVƒ‡ƒ“‚ð‹Lq‚·‚éD
    780         INCLUDES        ƒRƒ“ƒpƒCƒ‰‚ɑ΂·‚é-IƒIƒvƒVƒ‡ƒ“‚ð‹Lq‚·‚éD
    781         COPTS           ƒRƒ“ƒpƒCƒ‰‚ɑ΂·‚é‚»‚Ì‘¼‚̃IƒvƒVƒ‡ƒ“‚ð‹Lq‚·‚éD
    782         LDFLAGS         ƒŠƒ“ƒJ‚ɑ΂·‚éƒIƒvƒVƒ‡ƒ“‚ð‹Lq‚·‚éD
    783         LIBS            ƒ‰ƒCƒuƒ‰ƒŠƒŠƒ“ƒN‚Ì‚½‚߂̃IƒvƒVƒ‡ƒ“‚ð‹Lq‚·‚éD
    784 
    785 ’ljÁ‚̉”\«‚Ì‚ ‚éƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚ɂ‚¢‚ẮCu6.2 ƒRƒ“ƒpƒCƒ‹ƒIƒv
    786 ƒVƒ‡ƒ“v‚̐߂ðŽQÆ‚Ì‚±‚ƁD
    787 
    788 (G) ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€–¼
    789 
    790 APPLNAME‚ɂ́CƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€–¼‚ð’è‹`‚·‚éDƒVƒXƒeƒ€ƒRƒ“ƒtƒB
    791 ƒMƒ
    792 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹–¼‚́CAPPLNAME‚É’è‹`‚µ‚½–¼‘O‚ÉŠg’£Žq".cfg"‚ð•t‰Á
    793 ‚µ‚½–¼‘O‚Æ‚·‚éD‚Ü‚½CƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃ƒCƒ“ƒtƒ@ƒCƒ‹‚́CAPPLNAME‚É’è
    794 ‹`‚µ‚½–¼‘O‚ÉŠg’£Žq".c"‚ð•t‰Á‚µ‚½–¼‘O‚Æ‚·‚éD‚±‚Ì’è‹`‚́C’ʏí‚́CƒRƒ“ƒtƒB
    795 ƒMƒ
    796 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ɑ΂·‚é-AƒIƒvƒVƒ‡ƒ“‚É‚æ‚ès‚¤D
    797 
    798 (H) ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃fƒBƒŒƒNƒgƒŠ–¼
    799 
    800 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃\[ƒXƒtƒ@ƒCƒ‹‚ðCƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ð’u‚­‚Ì‚Æ‚Í•Ê
    801 ‚̃fƒBƒŒƒNƒgƒŠ‚É’u‚­ê‡‚ɂ́CAPPLDIR‚É‚»‚̃fƒBƒŒƒNƒgƒŠ–¼‚ð’è‹`‚·‚éD‚±
    802 ‚Ì’è‹`‚́C’ʏí‚́CƒRƒ“ƒtƒBƒMƒ
    803 ƒŒ[ƒVƒ‡ƒ“ƒXƒNƒŠƒvƒg‚ɑ΂·‚é-aƒIƒvƒVƒ‡ƒ“
    804 ‚É‚æ‚ès‚¤DƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃\[ƒXƒtƒ@ƒCƒ‹‚ð’u‚­ƒfƒBƒŒƒNƒgƒŠ‚ª•¡”‚ 
    805 ‚éê‡‚ɂ́CAPPL_DIR‚Ì’è‹`‚ð•ÏX‚·‚邱‚ƂőΉž‚·‚éD
    806 
    807 (I) ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃vƒƒOƒ‰ƒ€ƒtƒ@ƒCƒ‹–¼
    808 
    809 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•¡”‚̃\[ƒXƒtƒ@ƒCƒ‹‚ō\¬‚³‚ê‚éê‡‚ɂ́C‚»‚̃IƒuƒWƒF
    810 ƒNƒgƒtƒ@ƒCƒ‹–¼‚ðCAPPL_ASMOBJSCAPPL_COBJSCAPPL_CXXOBJS‚É—ñ‹“‚·‚éD
    811 
    812 (J) ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Rƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“
    813 
    814 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Rƒ“ƒpƒCƒ‹‚É•K—v‚ȃRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚âCƒAƒvƒŠƒP[
    815 ƒVƒ‡ƒ“‚ªƒ‰ƒCƒuƒ‰ƒŠ‚ð•K—v‚Æ‚·‚éê‡‚ɂ́CAPPL_CFLAGS‚¨‚æ‚ÑAPPL_LIBS‚É’è
    816 ‹`‚·‚éD
    817 
    818 (K) ƒ[ƒhƒ‚ƒWƒ
    819 [ƒ‹‚̃tƒ@ƒCƒ‹–¼
    820 
    821 •W€‚̃[ƒhƒ‚ƒWƒ
    822 [ƒ‹‚̃tƒ@ƒCƒ‹–¼‚ðOBJNAME‚É’è‹`‚·‚éDƒfƒtƒHƒ‹ƒg‚ÍSSP
    823 ‚Å‚ ‚éD
    824 
    825 (L) ƒ^[ƒQƒbƒgƒtƒ@ƒCƒ‹‚Ì’è‹`
    826 
    827 ƒ^[ƒQƒbƒg"all"‚̈ˑ¶ƒtƒ@ƒCƒ‹‚Æ‚µ‚āCƒ[ƒhƒ‚ƒWƒ
    828 [ƒ‹‚ÌŒ`Ž®‚ðŽw’è‚·‚éD
    829 ‹ï‘Ì“I‚ɂ́CELFŒ`Ž®‚ÌŽž‚Í$(OBJFILE)CƒoƒCƒiƒŠŒ`Ž®‚ÌŽž‚Í$(OBJNAME).binC
    830 ƒ‚ƒgƒ[ƒ‰ SŒ`Ž®‚ÌŽž‚Í$(OBJNAME).srec‚ðŽw’è‚·‚éD$(OBJFILE)‚́CCygwin
    831 ŠÂ‹«‚ÅOBJEXT‚ð"exe"‚É’è‹`‚µ‚½Žž‚É‚Í$(OBJNAME).exeC‚»‚¤‚Å‚È‚¢ê‡‚É‚Í
    832 $(OBJNAME)‚Æ‚È‚éD
    833 
    834 (M) makedep‚̃IƒvƒVƒ‡ƒ“‚Ì’è‹`
    835 
    836 CygwinŠÂ‹«‚Ń‹[ƒgƒfƒBƒŒƒNƒgƒŠ‚ª"cygdrive"‚Å‚È‚¢ê‡‚ɂ́Cmakedep‚Ì-RƒI
    837 ƒvƒVƒ‡ƒ“‚Ń‹[ƒgƒfƒBƒŒƒNƒgƒŠ–¼‚ð—^‚¦‚é•K—v‚ª‚ ‚éDmakedep‚̃IƒvƒVƒ‡ƒ“‚́C
    838 ŽŸ‚Ì—á‚̂悤‚ɁCMAKEDEP_OPTS‚É’è‹`‚·‚éD
     615                トレースログ記録のサンプルコードを有効にする場合に,このオプショ
     616                ンを指定する.このオプションの使用例については,「11.5 トレース
     617                ログ記録のサンプルコードの使用方法」の節を参照すること.
     618
     619        -p <perlのパス名>
     620                perlのパス名を指定する.省略した場合には,/usr/local/binと
     621                /usr/binを探索し,perlのパス名を決定する.
     622
     623        -g <コンフィギュレータのパス名>
     624                コンフィギュレータ(cfg)のパス名を指定する.省略した場合には,
     625                デフォルトのパス名(SSPカーネルのソースディレクトリの下の
     626                cfg/cfg/cfg)となる.
     627
     628コンフィギュレーションスクリプトが行う処理は次の通りである.
     629
     630(1) Makefileの生成
     631
     632テンプレートディレクトリ(デフォルトでは,sample)から適切なMakefileを
     633選択し,必要な箇所を書き換えて,Makefileを生成する.
     634
     635(2) サンプルプログラムの生成
     636
     637指定したアプリケーションプログラムがテンプレートディレクトリにある場合,
     638適切なアプリケーションプログラムのソースファイルを選択し,必要な箇所を
     639書き換えて,アプリケーションプログラムのソースファイル(例えば,
     640sample1.h,sample1.c,sample1.cfg)を生成する.
     641
     642(3) コンフィギュレータが用意できているかのチェック
     643
     644コンフィギュレータ(cfg)の実行ファイルがあるかチェックし,ファイルがな
     645い場合には,その旨を出力する.
     646
     647
     6486.Makefileの修正方法
     649
     650前の章で説明したように,コンフィギュレーションスクリプトに与えるオプショ
     651ン等からMakefileが生成されるが,コンフィギュレーションスクリプトで対応
     652できない場合には,Makefileを直接修正する必要がある.ここでは,Makefile
     653の中で,修正が必要となる可能性の高い箇所について説明する.
     654
     655なお,Makefileを修正した後にコンフィギュレーションスクリプトを再実行す
     656ると,修正したMakefileが上書きされてしまうので注意すること(古いものが
     657Makefile.bakに保存される).
     658
     6596.1. Makefileの変数定義
     660
     661(A) ターゲット略称
     662
     663TARGETには,ターゲットシステムの名称を,targetディレクトリの下に置かれ
     664ているターゲット依存部ディレクトリの名称で指定する.この定義は,通常は,
     665コンフィギュレーションスクリプトに対する-Tオプションにより行う.
     666
     667(B) オブジェクトファイルの拡張子
     668
     669Cygwin環境でコンパイルする時には,OBJEXTを"exe"に定義する必要がある.こ
     670れは,Cygwin環境では,ロードモジュールのファイル名に拡張子".exe"が付加
     671されるのに対応するためのものである.Cygwin環境であることを判定できれば,
     672コンフィギュレーションスクリプトがこの定義を行う.
     673
     674(C) 実行環境(ターゲット依存)
     675
     676ターゲットによっては,実行環境に対応してターゲット依存部のコードを差し
     677換える場合がある.これを可能にするために,実行環境の名称をDBGENVに定義
     678している.この定義は,通常は,コンフィギュレーションスクリプトに対す
     679る-Dオプションにより行う.どのターゲットがどの実行環境に対応しているか
     680は,ターゲット依存部のユーザーズマニュアルを参照すること.
     681
     682(D) カーネルライブラリのディレクトリ名
     683
     684KERNEL_LIBには,カーネルライブラリの置かれたディレクトリ名を定義する.
     685この定義は,通常は,コンフィギュレーションスクリプトに対する-Lオプショ
     686ンにより行う.
     687
     688(E) カーネルを関数単位でコンパイルするかどうか
     689
     690KERNEL_FUNCOBJSは,カーネルを関数単位でコンパイルする場合にはtrueに定義
     691し,ファイル単位でコンパイルする場合には未定義とする.この定義は,通常
     692は,コンフィギュレーションスクリプトに対する-fオプションにより行う.
     693
     694(F) 共通コンパイルオプション
     695
     696すべてのプログラムに共通するコンパイルオプションの追加が必要な場合には,
     697下の変数の定義を変更する.そのコンパイルオプションが,特定のターゲット
     698で常に必要な場合には,ターゲット依存の定義を入れたMakefile.target等を修
     699正すべきである.
     700
     701        CDEFS           コンパイラに対する-Dオプションを記述する.
     702        INCLUDES        コンパイラに対する-Iオプションを記述する.
     703        COPTS           コンパイラに対するその他のオプションを記述する.
     704        LDFLAGS         リンカに対するオプションを記述する.
     705        LIBS            ライブラリリンクのためのオプションを記述する.
     706
     707追加の可能性のあるコンパイルオプションについては,「6.2 コンパイルオプ
     708ション」の節を参照のこと.
     709
     710(G) アプリケーションプログラム名
     711
     712APPLNAMEには,アプリケーションプログラム名を定義する.システムコンフィ
     713ギュレーションファイル名は,APPLNAMEに定義した名前に拡張子".cfg"を付加
     714した名前とする.また,アプリケーションのメインファイルは,APPLNAMEに定
     715義した名前に拡張子".c"を付加した名前とする.この定義は,通常は,コンフィ
     716ギュレーションスクリプトに対する-Aオプションにより行う.
     717
     718(H) アプリケーションのディレクトリ名
     719
     720アプリケーションのソースファイルを,オブジェクトファイルを置くのとは別
     721のディレクトリに置く場合には,APPLDIRにそのディレクトリ名を定義する.こ
     722の定義は,通常は,コンフィギュレーションスクリプトに対する-aオプション
     723により行う.アプリケーションのソースファイルを置くディレクトリが複数あ
     724る場合には,APPL_DIRの定義を変更することで対応する.
     725
     726(I) アプリケーションのプログラムファイル名
     727
     728アプリケーションが複数のソースファイルで構成される場合には,そのオブジェ
     729クトファイル名を,APPL_ASMOBJS,APPL_COBJS,APPL_CXXOBJSに列挙する.
     730
     731(J) アプリケーションのコンパイルオプション
     732
     733アプリケーションのコンパイルに必要なコンパイルオプションや,アプリケー
     734ションがライブラリを必要とする場合には,APPL_CFLAGSおよびAPPL_LIBSに定
     735義する.
     736
     737(K) ロードモジュールのファイル名
     738
     739標準のロードモジュールのファイル名をOBJNAMEに定義する.デフォルトはSSP
     740である.
     741
     742(L) ターゲットファイルの定義
     743
     744ターゲット"all"の依存ファイルとして,ロードモジュールの形式を指定する.
     745具体的には,ELF形式の時は$(OBJFILE),バイナリ形式の時は$(OBJNAME).bin,
     746モトローラ S形式の時は$(OBJNAME).srecを指定する.$(OBJFILE)は,Cygwin
     747環境でOBJEXTを"exe"に定義した時には$(OBJNAME).exe,そうでない場合には
     748$(OBJNAME)となる.
     749
     750(M) makedepのオプションの定義
     751
     752Cygwin環境でルートディレクトリが"cygdrive"でない場合には,makedepの-Rオ
     753プションでルートディレクトリ名を与える必要がある.makedepのオプションは,
     754次の例のように,MAKEDEP_OPTSに定義する.
    839755
    840756MAKEDEP_OPTS = -R cygdrive
    841757
    842 6.2. ƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“
    843 
    844 SSPƒJ[ƒlƒ‹‚̃R[ƒh’†‚ɂ́Cassertƒ}ƒNƒ‚ªŽg‚í‚ê‚Ä‚¢‚éDassertƒ}ƒNƒ‚́C
    845 NDEBUG‚ð’è‹`‚·‚邱‚ƂŁCƒIƒuƒWƒFƒNƒgƒR[ƒh’†‚©‚çÁ‚·‚±‚Æ‚ª‚Å‚«‚éDƒJ[
    846 ƒlƒ‹‚̃fƒoƒbƒO‚ªI—¹‚·‚ê‚΁C-DNDEBUG‚ðŽw’肵‚ăRƒ“ƒpƒCƒ‹‚µ‚½•û‚ªŒø—¦‚ª
    847 ‚æ‚­‚È‚éD
    848 
    849 ƒ^[ƒQƒbƒgˆË‘¶•”‚É‚¨‚¢‚āCƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚É-WerroriŒx‚ðƒGƒ‰[ˆµ
    850 ‚¢‚·‚éj‚ðŽw’肵‚Ä‚¢‚éê‡‚ª‚ ‚éD‚»‚̂悤‚ȃ^[ƒQƒbƒg‚É‚¨‚¢‚āCƒAƒvƒŠ
    851 ƒP[ƒVƒ‡ƒ“‚ÅŒx‚ª”ð‚¯‚ç‚ê‚È‚¢ê‡‚ɂ́Cƒ^[ƒQƒbƒgˆË‘¶•”‚ðC³‚µ‚ăRƒ“
    852 ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚ðíœ‚·‚é•K—v‚ª‚ ‚éD
    853 
    854 
    855 ‚VDƒRƒ“ƒtƒBƒMƒ
    856 ƒŒ[ƒ^‚ÌŽg‚¢•û
    857 
    858 ƒRƒ“ƒtƒBƒMƒ
    859 ƒŒ[ƒ^icfgj‚́CTOPPERSV¢‘ãƒJ[ƒlƒ‹“‡Žd—l‘‚Ì2.12.5ß
    860 ‚Ì‹Lq‚Ì’Ê‚èC3‚‚̃pƒX‚ō\¬‚³‚ê‚éD
    861 
    862 ƒRƒ“ƒtƒBƒMƒ
    863 ƒŒ[ƒ^‚́CƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    864 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹–¼‚ðƒpƒ‰ƒ[
    865 ƒ^‚ÉŽæ‚èCˆÈ‰º‚̃IƒvƒVƒ‡ƒ“‚ðŽ‚Âid—v‚È‚à‚̂̂݁jD
     7586.2. コンパイルオプション
     759
     760SSPカーネルのコード中には,assertマクロが使われている.assertマクロは,
     761NDEBUGを定義することで,オブジェクトコード中から消すことができる.カー
     762ネルのデバッグが終了すれば,-DNDEBUGを指定してコンパイルした方が効率が
     763よくなる.
     764
     765ターゲット依存部において,コンパイルオプションに-Werror(警告をエラー扱
     766いする)を指定している場合がある.そのようなターゲットにおいて,アプリ
     767ケーションで警告が避けられない場合には,ターゲット依存部を修正してコン
     768パイルオプションを削除する必要がある.
     769
     770
     7717.コンフィギュレータの使い方
     772
     773コンフィギュレータ(cfg)は,TOPPERS新世代カーネル統合仕様書の2.12.5節
     774の記述の通り,3つのパスで構成される.
     775
     776コンフィギュレータは,システムコンフィギュレーションファイル名をパラメー
     777タに取り,以下のオプションを持つ(重要なもののみ).
    866778
    867779        --help
    868                 ƒIƒvƒVƒ‡ƒ“‚̃ŠƒXƒg‚Æà–¾‚ð•\Ž¦‚·‚éD
    869 
    870         -vm--versionn
    871                 ƒRƒ“ƒtƒBƒMƒ
    872 ƒŒ[ƒ^‚̃o[ƒWƒ‡ƒ“‚ð•\Ž¦‚·‚éD
    873 
    874         -km--kerneln<ƒJ[ƒlƒ‹–¼>
    875                 ƒJ[ƒlƒ‹‚Ì–¼Ì‚ðŽw’è‚·‚éDƒfƒtƒHƒ‹ƒg‚ÍSSPD
    876 
    877         -pm--passn<ƒpƒX”ԍ†>
    878                 ƒpƒX”ԍ†‚ðŽw’è‚·‚éD1`3‚Ì‚¢‚¸‚ê‚©D
    879 
    880         -Im--include-pathn<ƒCƒ“ƒNƒ‹[ƒhƒpƒX–¼>
    881                 INCLUDEƒfƒBƒŒƒNƒeƒBƒu‚É‚¨‚¢‚āCƒCƒ“ƒNƒ‹[ƒh‚·‚éƒRƒ“ƒtƒBƒMƒ
    882 ƒŒ[
    883                 ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚ð’T‚·ƒpƒX–¼‚ðŽw’è‚·‚éD
    884 
    885         -Tm--template-filen<ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹–¼>
    886                 ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚Ì–¼Ì‚ðŽw’è‚·‚éDƒpƒX2‚ƃpƒX3‚Å—LŒøD
    887 
    888         --api-table <Ã“IAPIƒe[ƒuƒ‹ƒtƒ@ƒCƒ‹–¼>
    889                 Ã“IAPIƒe[ƒuƒ‹‚̃tƒ@ƒCƒ‹–¼‚ðŽw’è‚·‚éD
    890 
    891         --cfg1-def-table <’lŽæ“¾ƒVƒ“ƒ{ƒ‹ƒe[ƒuƒ‹ƒtƒ@ƒCƒ‹–¼>
    892                 ’lŽæ“¾ƒVƒ“ƒ{ƒ‹ƒe[ƒuƒ‹‚̃tƒ@ƒCƒ‹–¼‚ðŽw’è‚·‚éD
    893 
    894         -rm--rom-imagen<ƒ[ƒhƒ‚ƒWƒ
    895 [ƒ‹–¼>
    896                 ƒ[ƒhƒ‚ƒWƒ
    897 [ƒ‹‚ðSƒŒƒR[ƒhƒtƒH[ƒ}ƒbƒg‚ÌŒ`‚É•ÏŠ·‚µ‚½ƒtƒ@ƒCƒ‹‚Ì
    898                 –¼Ì‚ðŽw’è‚·‚éDƒpƒX3‚Å‚Ì‚Ý—LŒøD
    899 
    900         -s [--symbol-table] <ƒVƒ“ƒ{ƒ‹ƒtƒ@ƒCƒ‹–¼>
    901                 ƒ[ƒhƒ‚ƒWƒ
    902 [ƒ‹’†‚ÌŠeƒVƒ“ƒ{ƒ‹‚ƃAƒhƒŒƒX‚̑Ήž•\‚ðŠÜ‚ÞƒVƒ“ƒ{ƒ‹
    903                 ƒtƒ@ƒCƒ‹‚Ì–¼Ì‚ðŽw’è‚·‚éDƒpƒX3‚Å‚Ì‚Ý—LŒøD
    904 
    905         --id-output-file <ID”ԍ†o—̓tƒ@ƒCƒ‹–¼>
    906                 SSPƒJ[ƒlƒ‹‚Å‚ÍŽg—p‚µ‚Ä‚Í‚È‚ç‚È‚¢BÚ×‚Íconfigurator.txt‚Ì
    907                 u›ƒJ[ƒlƒ‹\¬E‰Šú‰»ƒtƒ@ƒCƒ‹ikernel_cfg.cjv‚Ì(5)‚ðŽQÆ‚Ì‚±‚ƁB
    908 
    909         --id-input-file <ID”ԍ†“ü—̓tƒ@ƒCƒ‹–¼>
    910                 SSPƒJ[ƒlƒ‹‚Å‚ÍŽg—p‚µ‚Ä‚Í‚È‚ç‚È‚¢BÚ×‚Íconfigurator.txt‚Ì
    911                 u›ƒJ[ƒlƒ‹\¬E‰Šú‰»ƒtƒ@ƒCƒ‹ikernel_cfg.cjv‚Ì(5)‚ðŽQÆ‚Ì‚±‚ƁB
     780                オプションのリストと説明を表示する.
     781
     782        -v[--version]
     783                コンフィギュレータのバージョンを表示する.
     784
     785        -k[--kernel]<カーネル名>
     786                カーネルの名称を指定する.デフォルトはSSP.
     787
     788        -p[--pass]<パス番号>
     789                パス番号を指定する.1〜3のいずれか.
     790
     791        -I[--include-path]<インクルードパス名>
     792                INCLUDEディレクティブにおいて,インクルードするコンフィギュレー
     793                ションファイルを探すパス名を指定する.
     794
     795        -T[--template-file]<テンプレートファイル名>
     796                テンプレートファイルの名称を指定する.パス2とパス3で有効.
     797
     798        --api-table <静的APIテーブルファイル名>
     799                静的APIテーブルのファイル名を指定する.
     800
     801        --cfg1-def-table <値取得シンボルテーブルファイル名>
     802                値取得シンボルテーブルのファイル名を指定する.
     803
     804        -r[--rom-image]<ロードモジュール名>
     805                ロードモジュールをSレコードフォーマットの形に変換したファイルの
     806                名称を指定する.パス3でのみ有効.
     807
     808        -s [--symbol-table] <シンボルファイル名>
     809                ロードモジュール中の各シンボルとアドレスの対応表を含むシンボル
     810                ファイルの名称を指定する.パス3でのみ有効.
     811
     812        --id-output-file <ID番号出力ファイル名>
     813                SSPカーネルでは使用してはならない。詳細はconfigurator.txtの
     814                「○カーネル構成・初期化ファイル(kernel_cfg.c)」の(5)を参照のこと。
     815
     816        --id-input-file <ID番号入力ファイル名>
     817                SSPカーネルでは使用してはならない。詳細はconfigurator.txtの
     818                「○カーネル構成・初期化ファイル(kernel_cfg.c)」の(5)を参照のこと。
    912819
    913820        --external-id
    914                 ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ð•ÛŽ‚·‚é•Ï”‚Ì’è‹`‚𐶐¬‚·‚éDƒpƒX2‚Å‚Ì‚Ý
    915                 —LŒøD
    916 
    917         -Mm--print-dependenciesn<ƒ^[ƒQƒbƒgƒVƒ“ƒ{ƒ‹>
    918                 ƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    919 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚̈ˑ¶ŠÖŒW‚ðo—Í‚·‚éD
    920                 Makefile’†‚̈ˑ¶ŠÖŒW‚𐶐¬‚·‚éÛ‚É—p‚¢‚éD
    921 
    922 ƒRƒ“ƒtƒBƒMƒ
    923 ƒŒ[ƒ^‚̏ڍ׎d—l‚ɂ‚¢‚ẮC•Ê“rPDFƒtƒ@ƒCƒ‹‚ÌŒ`‚Å”z•z‚µ‚Ä‚¢
    924 ‚éuTOPPERSV¢‘ãƒJ[ƒlƒ‹—pƒRƒ“ƒtƒBƒMƒ
    925 ƒŒ[ƒ^Žd—lv‚ðŽQÆ‚·‚邱‚ƁD
    926 
    927 
    928 ‚WDƒVƒXƒeƒ€ƒT[ƒrƒX
    929 
    930 
    931 8.1. ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo
    932 
    933 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚́CƒVƒŠƒAƒ‹ƒ|[ƒg‚ðˆµ‚¤‚½‚߂̃hƒ‰ƒCƒo‚Å
    934 ‚ ‚éD
    935 
    936 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚́CƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    937 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒC
    938 ƒ‹‚Åserial.cfg‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚ƂŁCƒVƒXƒeƒ€‚É‘g‚ݍž‚Þ‚±‚Æ‚ª‚Å‚«‚éD
    939 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚ðŒÄ‚яo‚·ƒ\[ƒXƒtƒ@ƒCƒ‹‚ł́Cserial.h‚ð
    940 ƒCƒ“ƒNƒ‹[ƒh‚·‚éD
    941 
    942 8.1.1. ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚̃T[ƒrƒXƒR[ƒ‹
    943 
    944 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚ðŒÄ‚яo‚·ƒT[ƒrƒXƒR[ƒ‹‚ÌŽd—l‚ÍŽŸ‚Ì’Ê‚è
    945 ‚Å‚ ‚éD‚±‚Ì’†‚ŁCƒVƒŠƒAƒ‹ƒ|[ƒg‚ÌID”ԍ†iportidj‚̉ðŽß‚̓^[ƒQƒbƒgˆË
    946 ‘¶‚Æ‚È‚éD
    947 
    948 ‚±‚ê‚ç‚̃T[ƒrƒXƒR[ƒ‹‚́C”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚©‚çŒÄ‚яo‚·‚±‚Æ‚Í‚Å‚«‚È
    949 ‚¢D‚Ü‚½Cserial_rea_dat‚Æserial_wri_dat‚́CƒfƒBƒXƒpƒbƒ`•Û—¯ó‘ԂŌĂÑ
    950 o‚·‚±‚Æ‚Í‚Å‚«‚È‚¢D‚¢‚¸‚ê‚àCŒÄ‚яo‚µ‚½ê‡‚É‚ÍE_CTXƒGƒ‰[‚Æ‚È‚éD
     821                オブジェクトのID番号を保持する変数の定義を生成する.パス2でのみ
     822                有効.
     823
     824        -M[--print-dependencies]<ターゲットシンボル>
     825                システムコンフィギュレーションファイルの依存関係を出力する.
     826                Makefile中の依存関係を生成する際に用いる.
     827
     828コンフィギュレータの詳細仕様については,別途PDFファイルの形で配布してい
     829る「TOPPERS新世代カーネル用コンフィギュレータ仕様」を参照すること.
     830
     831
     8328.システムサービス
     833
     834
     8358.1. シリアルインタフェースドライバ
     836
     837シリアルインタフェースドライバは,シリアルポートを扱うためのドライバで
     838ある.
     839
     840シリアルインタフェースドライバは,システムコンフィギュレーションファイ
     841ルでserial.cfgをインクルードすることで,システムに組み込むことができる.
     842シリアルインタフェースドライバを呼び出すソースファイルでは,serial.hを
     843インクルードする.
     844
     8458.1.1. シリアルインタフェースドライバのサービスコール
     846
     847シリアルインタフェースドライバを呼び出すサービスコールの仕様は次の通り
     848である.この中で,シリアルポートのID番号(portid)の解釈はターゲット依
     849存となる.
     850
     851これらのサービスコールは,非タスクコンテキストから呼び出すことはできな
     852い.また,serial_rea_datとserial_wri_datは,ディスパッチ保留状態で呼び
     853出すことはできない.いずれも,呼び出した場合にはE_CTXエラーとなる.
    951854
    952855(1) ER serial_opn_por(ID portid)
    953856
    954 portid‚ÅŽw’肳‚ꂽƒVƒŠƒAƒ‹ƒ|[ƒg‚ðƒI[ƒvƒ“‚µCŽóM^‘—M‚ª‰Â”\‚ȏó‘Ô‚É
    955 ‚·‚éD
     857portidで指定されたシリアルポートをオープンし,受信/送信が可能な状態に
     858する.
    956859
    957860(2) ER serial_cls_por(ID portid)
    958861
    959 portid‚ÅŽw’肳‚ꂽƒVƒŠƒAƒ‹ƒ|[ƒg‚ðƒNƒ[ƒY‚·‚éD
     862portidで指定されたシリアルポートをクローズする.
    960863
    961864(3) ER_UINT serial_rea_dat(ID portid, char *buf, uint_t len)
    962865
    963 portid‚ÅŽw’肳‚ꂽƒVƒŠƒAƒ‹ƒ|[ƒg‚©‚çClenƒoƒCƒg‚Ì•¶Žš—ñ‚ðŽóM‚µCbuf‚©
    964 ‚ç‚̗̈æ‚É“ü‚ê‚éDƒVƒŠƒAƒ‹ƒ|[ƒg‚ÌŽóMƒoƒbƒtƒ@‚ÉŠi”[‚³‚ê‚Ä‚¢‚éƒoƒCƒg”‚ª
    965 len ƒoƒCƒg‚æ‚菭‚È‚¢ê‡CŽæ“¾‰Â”\‚ȃf[ƒ^‚ðbuf‚ÉŠi”[‚µ‚½‚瑦À‚ɃŠƒ^[ƒ“
    966 ‚·‚éDŽóM‚µ‚½•¶Žš”‚Ü‚½‚̓Gƒ‰[ƒR[ƒh‚ð•Ô‚·D
     866portidで指定されたシリアルポートから,lenバイトの文字列を受信し,bufか
     867らの領域に入れる.シリアルポートの受信バッファに格納されているバイト数が
     868len バイトより少ない場合,取得可能なデータをbufに格納したら即座にリターン
     869する.受信した文字数またはエラーコードを返す.
    967870
    968871(4) ER_UINT serial_wri_dat(ID portid, const char *buf, uint_t len)
    969872
    970 portid‚ÅŽw’肳‚ꂽƒVƒŠƒAƒ‹ƒ|[ƒg‚ɁCbuf‚©‚ç‚ÌlenƒoƒCƒg‚Ì•¶Žš—ñ‚𑗐M‚·
    971 ‚éD‘—M’†‚ɃVƒŠƒAƒ‹ƒ|[ƒg‚Ì‘—Mƒoƒbƒtƒ@‚ªƒtƒ‹‚É‚È‚Á‚½ê‡C‚»‚ÌŽž“_‚Å
    972 ‘¦À‚ɃŠƒ^[ƒ“‚·‚éD‘—M‚µ‚½•¶Žš”‚Ü‚½‚̓Gƒ‰[ƒR[ƒh‚ð•Ô‚·D
     873portidで指定されたシリアルポートに,bufからのlenバイトの文字列を送信す
     874る.送信中にシリアルポートの送信バッファがフルになった場合,その時点で
     875即座にリターンする.送信した文字数またはエラーコードを返す.
    973876
    974877(5) ER serial_ctl_por(ID portid, uint_t ioctl)
    975878
    976 portid‚ÅŽw’肳‚ꂽƒVƒŠƒAƒ‹ƒ|[ƒg‚̐§Œäî•ñ‚ðCioctl‚ÅŽ¦‚³‚ê‚é’l‚ɐݒ肷
    977 ‚éD
    978 
    979 ioctl‚ɂ́CˆÈ‰º‚̐§Œäî•ñ‚ð•\‚·’萔‚ðCƒrƒbƒg–ˆ‚ɘ_—˜a‚ð‚Æ‚Á‚½‚à‚Ì‚ð
    980 Žw’è‚·‚éD
    981 
    982         IOCTL_ECHOiƒGƒR[ƒoƒbƒNƒ‚[ƒhj
    983                 ‚±‚̃rƒbƒg‚ðÝ’è‚·‚é‚ƁCƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚ªƒGƒR[
    984                 ƒoƒbƒN‚ðs‚¤D‹ï‘Ì“I‚ɂ́Cƒoƒbƒtƒ@‚©‚當Žš‚ðŽæ‚èo‚·“x‚ɁC‚»‚Ì
    985                 •¶Žš‚ð‘‚«o‚·D
    986 
    987         IOCTL_CRLFi‰üsƒ‚[ƒhj
    988                 LFiline feedj‚ð‘‚«o‚·‚ƁCCRicarriage returnj{LF‚É•ÏŠ·‚µ
    989                 ‚ď‘‚«o‚·D
    990 
    991 
    992 ‚È‚¨CƒI[ƒvƒ“’¼Œã‚̃fƒtƒHƒ‹ƒg‚̐ݒè’l‚Í(IOCTL_ECHO | IOCTL_CRLF)‚Å‚ ‚éD
    993 
    994 
    995 8.1.2. ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚Ì‚»‚Ì‘¼‚̃T[ƒrƒX
    996 
    997 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚́C‘O‹L‚̃T[ƒrƒXƒR[ƒ‹‚ɉÁ‚¦‚āC‰Šú‰»
    998 ˆ—‚Æ–¢‘—M•¶Žš‚ÌŽæo‚µˆ—‚ðŽ‚ÂD‰Šú‰»ˆ—‚́CƒJ[ƒlƒ‹‚ɏ‰Šú‰»ƒ‹[
    999 ƒ`ƒ“‚Æ‚µ‚Ä“o˜^‚·‚éD‚Ü‚½Cƒ^[ƒQƒbƒgˆË‘¶‚ŁC‰Šú‰»ˆ—CI—¹ˆ—CŠ„ž
    1000 ‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚ðŽ‚ÂD‚±‚ê‚ç‚Ì“o˜^ˆ—‚Íserial.cfg‚ÉŠÜ‚Ü‚ê‚éD
     879portidで指定されたシリアルポートの制御情報を,ioctlで示される値に設定す
     880る.
     881
     882ioctlには,以下の制御情報を表す定数を,ビット毎に論理和をとったものを
     883指定する.
     884
     885        IOCTL_ECHO(エコーバックモード)
     886                このビットを設定すると,シリアルインタフェースドライバがエコー
     887                バックを行う.具体的には,バッファから文字を取り出す度に,その
     888                文字を書き出す.
     889
     890        IOCTL_CRLF(改行モード)
     891                LF(line feed)を書き出すと,CR(carriage return)+LFに変換し
     892                て書き出す.
     893
     894
     895なお,オープン直後のデフォルトの設定値は(IOCTL_ECHO | IOCTL_CRLF)である.
     896
     897
     8988.1.2. シリアルインタフェースドライバのその他のサービス
     899
     900シリアルインタフェースドライバは,前記のサービスコールに加えて,初期化
     901処理と未送信文字の取出し処理を持つ.初期化処理は,カーネルに初期化ルー
     902チンとして登録する.また,ターゲット依存で,初期化処理,終了処理,割込
     903みサービスルーチンを持つ.これらの登録処理はserial.cfgに含まれる.
    1001904
    1002905(1) void serial_initialize(intptr_t exinf)
    1003906
    1004 ƒVƒŠƒAƒ‹ƒCƒ“ƒ^ƒtƒF[ƒXƒhƒ‰ƒCƒo‚ð‰Šú‰»‚·‚éDƒJ[ƒlƒ‹‚ɏ‰Šú‰»ƒ‹[ƒ`ƒ“‚Æ
    1005 ‚µ‚Ä“o˜^‚·‚éDexinf‚Í–³Ž‹‚·‚éD
     907シリアルインタフェースドライバを初期化する.カーネルに初期化ルーチンと
     908して登録する.exinfは無視する.
    1006909
    1007910(2) bool_t serial_get_chr(ID portid, char *p_c)
    1008911
    1009 portid‚ÅŽw’肳‚ꂽƒVƒŠƒAƒ‹ƒ|[ƒg‚Ì‘—Mƒoƒbƒtƒ@’†‚Ì•¶Žš‚ðCp_c‚ÌŽw‚·”Ô’n
    1010 ‚ÉŽæ‚èo‚µCtrue‚ð•Ô‚·ŠÖ”D•¶Žš‚ª‚È‚©‚Á‚½Žž‚ɂ́Cfalse‚ð•Ô‚·DI—¹ˆ—
    1011 ƒ‹[ƒ`ƒ“’†‚ŌĂяo‚·‚±‚Æ‚ð‘z’肵‚Ä‚¢‚éD
    1012 
    1013 
    1014 8.2. ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—Í
    1015 
    1016 ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—͂́CƒJ[ƒlƒ‹‚Ì‹N“®Žž‚ɁCƒJ[ƒlƒ‹‚Ì–¼Ì‚âƒo[
    1017 ƒWƒ‡ƒ“”ԍ†C’˜ìŒ •\Ž¦‚È‚Ç‚ðo—Í‚·‚邽‚ß‚Ì‹@”\‚Å‚ ‚éD
    1018 
    1019 ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—͂́CƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    1020 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
    1021 ‚Åbanner.cfg‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚ƂŁCƒVƒXƒeƒ€‚É‘g‚ݍž‚Þ‚±‚Æ‚ª‚Å‚«‚éD
    1022 
    1023 ƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚̏o—͂́CŽŸ‚̊֐”‚ō\¬‚³‚ê‚éD
     912portidで指定されたシリアルポートの送信バッファ中の文字を,p_cの指す番地
     913に取り出し,trueを返す関数.文字がなかった時には,falseを返す.終了処理
     914ルーチン中で呼び出すことを想定している.
     915
     916
     9178.2. カーネル起動メッセージの出力
     918
     919カーネル起動メッセージの出力は,カーネルの起動時に,カーネルの名称やバー
     920ジョン番号,著作権表示などを出力するための機能である.
     921
     922カーネル起動メッセージの出力は,システムコンフィギュレーションファイル
     923でbanner.cfgをインクルードすることで,システムに組み込むことができる.
     924
     925カーネル起動メッセージの出力は,次の関数で構成される.
    1024926
    1025927(1) void print_banner(intptr_t exinf)
    1026928
    1027 ƒVƒXƒeƒ€ƒƒO‹@”\‚ð—p‚¢‚āCƒJ[ƒlƒ‹‹N“®ƒƒbƒZ[ƒW‚ðo—Í‚·‚éDbanner.cfg
    1028 ‚É‚æ‚Á‚āCƒJ[ƒlƒ‹‚ɏ‰Šú‰»ƒ‹[ƒ`ƒ“‚Æ‚µ‚Ä“o˜^‚³‚ê‚éDexinf‚Í–³Ž‹‚³‚ê‚éD
    1029 
    1030 
    1031 ‚XDƒTƒ|[ƒgƒ‰ƒCƒuƒ‰ƒŠ
    1032 
    1033 ƒTƒ|[ƒgƒ‰ƒCƒuƒ‰ƒŠ‚́CƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚âƒVƒXƒeƒ€ƒT[ƒrƒX‚ðì¬‚·‚邽‚ß
    1034 ‚É—˜—p‚Å‚«‚郉ƒCƒuƒ‰ƒŠŠÖ”ŒQ‚Å‚ ‚éD
    1035 
    1036 
    1037 9.1. ƒLƒ
    1038 [‘€ìƒ‰ƒCƒuƒ‰ƒŠŠÖ”
    1039 
    1040 ƒLƒ
    1041 [‘€ìƒ‰ƒCƒuƒ‰ƒŠ‚́CƒLƒ
    1042 [ƒwƒbƒ_‚ðŠÜ‚ÞƒŠƒ“ƒO\‘¢‚̃_ƒuƒ‹ƒŠƒ“ƒNƒLƒ
    1043 [
    1044 ‚ðˆµ‚¤ƒ‰ƒCƒuƒ‰ƒŠ‚Å‚ ‚éDƒLƒ
    1045 [ƒwƒbƒ_‚ÌŽŸƒGƒ“ƒgƒŠ‚̓Lƒ
    1046 [‚̐擪‚̃Gƒ“ƒg
    1047 ƒŠC‘OƒGƒ“ƒgƒŠ‚̓Lƒ
    1048 [‚Ì––”ö‚̃Gƒ“ƒgƒŠ‚Æ‚·‚éD‚Ü‚½CƒLƒ
    1049 [‚̐擪‚̃Gƒ“
    1050 ƒgƒŠ‚Ì‘OƒGƒ“ƒgƒŠ‚ƁCƒLƒ
    1051 [‚Ì––”ö‚̃Gƒ“ƒgƒŠ‚ÌŽŸƒGƒ“ƒgƒŠ‚́CƒLƒ
    1052 [ƒwƒbƒ_
    1053 ‚Æ‚·‚éD‹ó‚̃Lƒ
    1054 [‚́CŽŸƒGƒ“ƒgƒŠC‘OƒGƒ“ƒgƒŠ‚Æ‚àŽ©•ªŽ©g‚ðŽw‚·ƒLƒ
    1055 [ƒwƒb
    1056 ƒ_‚Å‚ ‚ç‚í‚·D
    1057 
    1058 ƒLƒ
    1059 [‘€ìƒ‰ƒCƒuƒ‰ƒŠŠÖ”‚ð—p‚¢‚éê‡‚ɂ́Cqueue.h‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚éD
    1060 
    1061 ƒLƒ
    1062 [ƒwƒbƒ_‚ƃGƒ“ƒgƒŠ‚Ì‚½‚߂̃f[ƒ^\‘¢‚Æ‚µ‚āCQUEUE\‘¢‘Ì‚ð—p‚¢‚éD
    1063 QUEUE\‘¢‘Ì‚Ì’è‹`‚ÍŽŸ‚Ì’Ê‚èDQUEUEŒ^‚̕ϐ”‚Í”z—ñ‚Æ‚µ‚Ä’è‹`‚·‚邱‚Æ‚ð‘O’ñ‚Æ
    1064 ‚µ‚Ä‚¢‚éD
     929システムログ機能を用いて,カーネル起動メッセージを出力する.banner.cfg
     930によって,カーネルに初期化ルーチンとして登録される.exinfは無視される.
     931
     932
     9339.サポートライブラリ
     934
     935サポートライブラリは,アプリケーションやシステムサービスを作成するため
     936に利用できるライブラリ関数群である.
     937
     938
     9399.1. キュー操作ライブラリ関数
     940
     941キュー操作ライブラリは,キューヘッダを含むリング構造のダブルリンクキュー
     942を扱うライブラリである.キューヘッダの次エントリはキューの先頭のエント
     943リ,前エントリはキューの末尾のエントリとする.また,キューの先頭のエン
     944トリの前エントリと,キューの末尾のエントリの次エントリは,キューヘッダ
     945とする.空のキューは,次エントリ,前エントリとも自分自身を指すキューヘッ
     946ダであらわす.
     947
     948キュー操作ライブラリ関数を用いる場合には,queue.hをインクルードする.
     949
     950キューヘッダとエントリのためのデータ構造として,QUEUE構造体を用いる.
     951QUEUE構造体の定義は次の通り.QUEUE型の変数は配列として定義することを前提と
     952している.
    1065953
    1066954        typedef struct
     
    1070958        } QUEUE;
    1071959
    1072 QUEIDX‚ÍQUEUEŒ^‚Ì”z—ñ‚̃Cƒ“ƒfƒbƒNƒX’l‚ð•\‚·ƒf[ƒ^Œ^‚Å‚ ‚éD
     960QUEIDXはQUEUE型の配列のインデックス値を表すデータ型である.
    1073961
    1074962typedef uint8_t QUEIDX;
    1075963
    1076964
    1077 ƒLƒ
    1078 [‘€ì‚Ì‚½‚ß‚É—pˆÓ‚µ‚Ä‚¢‚éŠÖ”‚ÍŽŸ‚Ì’Ê‚èD
     965キュー操作のために用意している関数は次の通り.
    1079966
    1080967(1) queue_initialize(QUEUE *queue , QUEIDX queue_null)
    1081968
    1082 ƒLƒ
    1083 [‚ð‰Šú‰»‚·‚éDqueue‚ɂ̓Lƒ
    1084 [ƒwƒbƒ_‚ðCqueue_null‚É‚Í
    1085 –³Œø‚ȃLƒ
    1086 [ƒwƒbƒ_‚ðŽ¦‚·ƒCƒ“ƒfƒbƒNƒX’l‚ðŽw’è‚·‚éD
     969キューを初期化する.queueにはキューヘッダを,queue_nullには
     970無効なキューヘッダを示すインデックス値を指定する.
    1087971
    1088972(2) queue_insert_prev(QUEUE *top , QUEIDX queue , QUEIDX entry)
    1089973
    1090 queue‚ÅŽw’è‚·‚éƒGƒ“ƒgƒŠ‚Ì‘O‚ɁCentry‚ÅŽw’è‚·‚éƒGƒ“ƒgƒŠ‚ð‘}“ü‚·‚éD
    1091 top‚ÍqueueCentry‚ðŠÜ‚ÞQUEUEŒ^”z—ñ‚̐擪ƒAƒhƒŒƒX‚Å‚ ‚éD
    1092 queue‚ɃLƒ
    1093 [ƒwƒbƒ_‚ðŽw’肵‚½ê‡‚ɂ́CƒLƒ
    1094 [‚Ì––”ö‚Ép_entry‚ÅŽw’è‚·
    1095 ‚éƒGƒ“ƒgƒŠ‚ð‘}“ü‚·‚邱‚Æ‚É‚È‚éD
     974queueで指定するエントリの前に,entryで指定するエントリを挿入する.
     975topはqueue,entryを含むQUEUE型配列の先頭アドレスである.
     976queueにキューヘッダを指定した場合には,キューの末尾にp_entryで指定す
     977るエントリを挿入することになる.
    1096978
    1097979(3) queue_delete_next(QUEUE *top , QUEIDX queue)
    1098980
    1099 queue‚ÅŽw’è‚·‚éƒGƒ“ƒgƒŠ‚ÌŽŸ‚̃Gƒ“ƒgƒŠ‚ðíœ‚µCíœ‚µ‚½ƒGƒ“ƒgƒŠ‚Ì
    1100 ƒLƒ
    1101 [”z—ñ’†‚̃Cƒ“ƒfƒbƒNƒX‚ð•Ô‚·D
    1102 top‚ÍqueueCentry‚ðŠÜ‚ÞQUEUEŒ^”z—ñ‚̐擪ƒAƒhƒŒƒX‚Å‚ ‚éD
     981queueで指定するエントリの次のエントリを削除し,削除したエントリの
     982キュー配列中のインデックスを返す.
     983topはqueue,entryを含むQUEUE型配列の先頭アドレスである.
    1103984
    1104985(6) queue_empty(QUEUE *queue , QUEIDX queue_null)
    1105986
    1106 ƒLƒ
    1107 [‚ª‹ó‚̏ꍇ‚É‚ÍtrueC‚»‚¤‚Å‚È‚¢ê‡‚É‚Ífalse‚ð•Ô‚·Dqueue‚É‚Í
    1108 ƒLƒ
    1109 [ƒwƒbƒ_‚ðCqueue_null‚É‚Í–³Œø‚ȃLƒ
    1110 [ƒwƒbƒ_‚ðŽ¦‚·ƒCƒ“ƒfƒbƒNƒX’l‚ð
    1111 Žw’è‚·‚éD
    1112 
    1113 
    1114 ‚P‚ODŽg—pã‚Ì’ˆÓ‚ƃqƒ“ƒg
    1115 
    1116 10.1. ƒ^ƒCƒ}ƒhƒ‰ƒCƒo‚Ì‘gž‚Ý
    1117 
    1118 ƒ^ƒCƒ}ƒhƒ‰ƒCƒo‚ðƒVƒXƒeƒ€‚É‘g‚ݍž‚Þ‚½‚߂ɁCƒVƒXƒeƒ€ƒRƒ“ƒtƒBƒMƒ
    1119 ƒŒ[ƒVƒ‡
    1120 ƒ“ƒtƒ@ƒCƒ‹‚̐擪‚Åtarget_timer.cfg‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é•K—v‚ª‚ ‚éD
    1121 
    1122 10.2. assertƒ}ƒNƒ‚̏ˆ—
    1123 
    1124 SSPƒJ[ƒlƒ‹‚̃R[ƒh’†‚ɂ́Cassertƒ}ƒNƒ‚ªŽg‚í‚ê‚Ä‚¢‚éDassertƒ}ƒNƒ‚Ì’è
    1125 ‹`‚Ít_stddef.h‚ÉŠÜ‚Ü‚êCassert‚ªŽ¸”s‚µ‚½ê‡‚̍Ōã‚̏ˆ—i’ʏí‚́Cƒvƒ
    1126 ƒOƒ‰ƒ€‚ð’âŽ~‚³‚¹‚鏈—j‚́Cƒ^[ƒQƒbƒgˆË‘¶•”‚ÌTOPPERS_assert_abort‚ÅŒˆ
    1127 ’肳‚ê‚éD
    1128 
    1129 assert‚ªŽ¸”s‚µ‚½ê‡CƒVƒXƒeƒ€ŠJ”­’†‚̓fƒoƒbƒK‚É—Ž‚Æ‚·‚Ì‚ª–]‚Ü‚µ‚¢‚ªC
    1130 ƒVƒXƒeƒ€‰Ò“­Žž‚̑Ώˆ–@‚́CƒVƒXƒeƒ€‚ɑ΂·‚é—vŒ‚Ɉˑ¶‚·‚éD‚»‚±‚ŁCƒ^[
    1131 ƒQƒbƒgˆË‘¶•”‚ÌTOPPERS_assert_abort‚ðCƒVƒXƒeƒ€—vŒ‚ɍ‡’v‚µ‚½“KØ‚ȏˆ—
    1132 ‚É’u‚«Š·‚¦‚é•K—v‚ª‚ ‚éDƒVƒXƒeƒ€—vŒ‚É‚æ‚Á‚ẮCNDEBUG‚ð’è‹`‚µ‚Äassert
    1133 ƒ}ƒNƒ‚̏ˆ—‚ðƒIƒuƒWƒFƒNƒgƒR[ƒh’†‚©‚çÁ‚·iu6.2 ƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“v
    1134 ‚̐߂ðŽQÆj•û–@‚àl‚¦‚ç‚ê‚éD
    1135 
    1136 
    1137 10.3. ƒIƒuƒWƒFƒNƒgID‚ÌŠÇ—
    1138 
    1139 TOPPERS/SSPƒJ[ƒlƒ‹‚ł́CƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ðCƒRƒ“ƒtƒBƒMƒ
    1140 ƒŒ[ƒ^‚ªŠ„
    1141 ‚è•t‚¯‚é•û–@‚ªŠî–{‚Æ‚È‚Á‚Ä‚¢‚éD
    1142 
    1143 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€’†‚ŃIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ðŽQÆ‚·‚éê‡‚ɂ́C
    1144 ŽŸ‚Ì2‚‚̕û–@‚ªl‚¦‚ç‚ê‚éD
    1145 
    1146 (1) ƒIƒuƒWƒFƒNƒgŽ¯•Ê–¼‚ð—p‚¢‚é
    1147 
    1148 ƒIƒuƒWƒFƒNƒg¶¬‚Ì‚½‚߂̐ÓIAPIiCRE_YYYj‚Ì‘æ1ƒpƒ‰ƒ[ƒ^‚É‹Lq‚µ‚½ƒIƒu
    1149 ƒWƒFƒNƒgŽ¯•Ê–¼‚ðCƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€’†‚Å‚à—p‚¢‚é•û–@D
    1150 
    1151 ƒRƒ“ƒtƒBƒMƒ
    1152 ƒŒ[ƒ^‚́CƒIƒuƒWƒFƒNƒgŽ¯•Ê–¼‚ðCŠ„‚è•t‚¯‚½ID”ԍ†‚Ƀ}ƒNƒ’è
    1153 ‹`‚·‚éCŒ¾ŒêƒvƒŠƒvƒƒZƒbƒT‚̃fƒBƒŒƒNƒeƒBƒui#definej‚ðkernel_cfg.h‚ɐ¶
    1154 ¬‚·‚邽‚߁CƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚©‚çkernel_cfg.h‚ðƒCƒ“ƒNƒ‹[ƒh‚·
    1155 ‚é•K—v‚ª‚ ‚éD
    1156 
    1157 ‚±‚Ì•û–@‚́CƒIƒuƒWƒFƒNƒgƒR[ƒh’†‚ÉID”ԍ†‚ª’¼Ú–„‚ߍž‚Ü‚ê‚邽‚ß‚ÉŽÀsŒø
    1158 —¦‚ª—Ç‚¢ˆê•û‚ŁCƒRƒ“ƒtƒBƒMƒ
    1159 ƒŒ[ƒ^‚ªŽÀs‚³‚ê‚Äkernel_cfg.h‚ª‘‚«Š·‚í‚é
    1160 “x‚ɁCƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚̍ăRƒ“ƒpƒCƒ‹‚ª•K—v‚É‚È‚é‚Æ‚¢‚¤Œ‡“_‚ª
    1161 ‚ ‚éD‚»‚Ì‚½‚߁CƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚ð\¬‚·‚éƒtƒ@ƒCƒ‹‚Ì’†‚ŁCˆê
    1162 •”‚̃tƒ@ƒCƒ‹‚݂̂ŃIƒuƒWƒFƒNƒgŽ¯•Ê–¼‚ðŽQÆ‚·‚é\¬‚É‚·‚é‚Æ‚¢‚Á‚½H•v‚ð
    1163 ‚·‚邱‚Æ‚ª–]‚Ü‚µ‚¢D
    1164 
    1165 (2) ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ð•ÛŽ‚·‚é•Ï”‚ð—p‚¢‚é
    1166 
    1167 ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ð•ÛŽ‚·‚éconst‘®«‚ð•t‰Á‚µ‚½•Ï”‚ð—pˆÓ‚µCƒAƒvƒŠƒP[
    1168 ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€’†‚ł́C‚»‚̕ϐ”‚ð—p‚¢‚é•û–@D
    1169 
    1170 —Ⴆ‚΁CTASK1‚Æ‚¢‚¤ƒIƒuƒWƒFƒNƒgŽ¯•Ê–¼‚̃^ƒXƒN‚ɑ΂µ‚āCŽŸ‚̂悤‚ȕϐ”‚ð
    1171 —pˆÓ‚·‚éD
     987キューが空の場合にはtrue,そうでない場合にはfalseを返す.queueには
     988キューヘッダを,queue_nullには無効なキューヘッダを示すインデックス値を
     989指定する.
     990
     991
     99210.使用上の注意とヒント
     993
     99410.1. タイマドライバの組込み
     995
     996タイマドライバをシステムに組み込むために,システムコンフィギュレーショ
     997ンファイルの先頭でtarget_timer.cfgをインクルードする必要がある.
     998
     99910.2. assertマクロの処理
     1000
     1001SSPカーネルのコード中には,assertマクロが使われている.assertマクロの定
     1002義はt_stddef.hに含まれ,assertが失敗した場合の最後の処理(通常は,プロ
     1003グラムを停止させる処理)は,ターゲット依存部のTOPPERS_assert_abortで決
     1004定される.
     1005
     1006assertが失敗した場合,システム開発中はデバッガに落とすのが望ましいが,
     1007システム稼働時の対処法は,システムに対する要件に依存する.そこで,ター
     1008ゲット依存部のTOPPERS_assert_abortを,システム要件に合致した適切な処理
     1009に置き換える必要がある.システム要件によっては,NDEBUGを定義してassert
     1010マクロの処理をオブジェクトコード中から消す(「6.2 コンパイルオプション」
     1011の節を参照)方法も考えられる.
     1012
     1013
     101410.3. オブジェクトIDの管理
     1015
     1016TOPPERS/SSPカーネルでは,オブジェクトのID番号を,コンフィギュレータが割
     1017り付ける方法が基本となっている.
     1018
     1019アプリケーションプログラム中でオブジェクトのID番号を参照する場合には,
     1020次の2つの方法が考えられる.
     1021
     1022(1) オブジェクト識別名を用いる
     1023
     1024オブジェクト生成のための静的API(CRE_YYY)の第1パラメータに記述したオブ
     1025ジェクト識別名を,アプリケーションプログラム中でも用いる方法.
     1026
     1027コンフィギュレータは,オブジェクト識別名を,割り付けたID番号にマクロ定
     1028義するC言語プリプロセッサのディレクティブ(#define)をkernel_cfg.hに生
     1029成するため,アプリケーションプログラムからkernel_cfg.hをインクルードす
     1030る必要がある.
     1031
     1032この方法は,オブジェクトコード中にID番号が直接埋め込まれるために実行効
     1033率が良い一方で,コンフィギュレータが実行されてkernel_cfg.hが書き換わる
     1034度に,アプリケーションプログラムの再コンパイルが必要になるという欠点が
     1035ある.そのため,アプリケーションプログラムを構成するファイルの中で,一
     1036部のファイルのみでオブジェクト識別名を参照する構成にするといった工夫を
     1037することが望ましい.
     1038
     1039(2) オブジェクトのID番号を保持する変数を用いる
     1040
     1041オブジェクトのID番号を保持するconst属性を付加した変数を用意し,アプリケー
     1042ションプログラム中では,その変数を用いる方法.
     1043
     1044例えば,TASK1というオブジェクト識別名のタスクに対して,次のような変数を
     1045用意する.
    11721046
    11731047const ID TASK1_id = TASK1;
    11741048
    1175 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€’†‚ł́C‚±‚̕ϐ”iTASK1_idj‚ð—p‚¢‚邱‚ƂŁC
    1176 ƒRƒ“ƒtƒBƒMƒ
    1177 ƒŒ[ƒ^‚ªŽÀs‚³‚ê‚Äkernel_cfg.h‚ª‘‚«Š·‚í‚é“x‚ɁCã‹L‚̕ϐ”
    1178 ’è‹`‚ðŠÜ‚ñ‚¾ƒtƒ@ƒCƒ‹‚Ì‚Ý‚ðÄƒRƒ“ƒpƒCƒ‹‚·‚ê‚΂悢‚±‚Æ‚É‚È‚éD
    1179 
    1180 ‚±‚Ì•û–@‚́CƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚̍ăRƒ“ƒpƒCƒ‹‚ðÅ¬ŒÀ‚É‚Å‚«‚é—˜
    1181 “_‚ª‚ ‚éˆê•û‚ŁC•Ï”‚Ì‚½‚߂̃ƒ‚ƒŠ—̈悪•K—v‚ɂȂ邱‚ƂɉÁ‚¦‚āCiƒvƒ
    1182 ƒZƒbƒT‚É‚æ‚Á‚Ắj•Ï”ƒAƒNƒZƒX‚Ì‚½‚߂̃I[ƒoƒwƒbƒh‚ª¶‚¶‚é‚Æ‚¢‚¤Œ‡“_‚ª
    1183 ‚ ‚éD‚Ü‚½C’萔‚Å‚Í‚È‚­•Ï”‚Å‚ ‚邱‚Æ‚©‚çC‘¼‚̕ϐ”‚̏‰Šú‰»‚É‚ÍŽg‚¦‚È
    1184 ‚¢‚Æ‚¢‚¤§ŒÀ‚ª‚ ‚éD
    1185 
    1186 ‚È‚¨CTOPPERS/SSPƒJ[ƒlƒ‹‚̃Rƒ“ƒtƒBƒMƒ
    1187 ƒŒ[ƒ^‚́C--external-idƒIƒvƒVƒ‡
    1188 ƒ“‚ð•t‰Á‚·‚邱‚Æ‚É‚æ‚èCã‹L‚̕ϐ”’è‹`‚ðkernel_cfg.c’†‚ɐ¶¬‚·‚é‹@”\‚ð
    1189 Ž‚Á‚Ä‚¢‚é‚̂ŁC‚·‚ׂẴIƒuƒWƒFƒNƒgID‚ð‚±‚Ì•û–@‚ÅŽQÆ‚·‚éê‡‚ɂ́C‚±
    1190 ‚Ì‹@”\‚ð—p‚¢‚邱‚Ƃ𐄏§‚·‚éD
    1191 
    1192 ƒRƒ“ƒtƒBƒMƒ
    1193 ƒŒ[ƒ^‚É‚æ‚éID”ԍ†Š„•t‚¯‚Ì‚à‚¤1‚‚̉ۑè‚Æ‚µ‚āCƒRƒ“ƒtƒBƒMƒ
    1194 
    1195 ƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹‚̏C³‚É‚æ‚èCƒIƒuƒWƒFƒNƒgID‚ÌŠ„•t‚¯‚ª•Ï‚í‚Á‚Ä‚µ‚Ü‚¤
    1196 ‚±‚Æ‚ª‹“‚°‚ç‚ê‚éD‚±‚ê‚́CƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒ\ƒtƒgƒEƒFƒA‚̐݌vŽd—l‘‚ÉID
    1197 ”ԍ†‚ª‹LÚ‚³‚ê‚Ä‚¢‚éê‡‚âCƒfƒoƒbƒOì‹Æ‚É‚¨‚¢‚ÄID”ԍ†‚𑦒l‚Æ‚µ‚Ä•\Ž¦
    1198 ‚âŠm”F‚ª‚Å‚«‚È‚¢ê‡‚ɁCì‹ÆŒø—¦‚ð’ቺ‚³‚¹‚é‰Â”\«‚ªl‚¦‚ç‚ê‚éD
    1199 
    1200 ‚±‚Ì–â‘è‚ɑΉž‚·‚邽‚߂ɁCTOPPERSV¢‘ãƒJ[ƒlƒ‹—pƒRƒ“ƒtƒBƒMƒ
    1201 ƒŒ[ƒ^‚ɂ́C
    1202 ID”ԍ†‚ÌŠ„•t‚¯Œ‹‰Ê‚ðƒtƒ@ƒCƒ‹‚ɏ‘‚«o‚·‹@”\i--id-output-fileƒIƒvƒVƒ‡ƒ“j
    1203 ‚ƁCID”ԍ†‚ÌŠ„•t‚¯‚ðƒtƒ@ƒCƒ‹‚©‚çŽæ‚荞‚Þ‹@”\i--id-input-fileƒIƒvƒVƒ‡ƒ“j
    1204 ‚Æ‚ª—pˆÓ‚³‚ê‚Ä‚¢‚éD‚½‚¾‚µSSPƒJ[ƒlƒ‹‚̏ꍇCŒ»Žž“_‚Å‚Í“®ìã‚Ì–â‘肪‚ ‚è
    1205 Žg—p‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢DÚ×‚Í configurator.txt ‚́u›ƒJ[ƒlƒ‹\¬E‰Šú
    1206 ‰»ƒtƒ@ƒCƒ‹ikernel_cfg.cjv‚Ì (5) ‚ðŽQÆ‚Ì‚±‚ƁD
    1207 
    1208 10.4. ƒJ[ƒlƒ‹‚Ì“à•”ƒVƒ“ƒ{ƒ‹‚̃Šƒl[ƒ€
    1209 
    1210 SSPƒJ[ƒlƒ‹‚ł́Cƒ‚ƒWƒ
    1211 [ƒ‹“à•”‚Ì–¼Ì‚ª‘¼‚̃‚ƒWƒ
    1212 [ƒ‹“à•”‚Ì–¼Ì‚ƏՓ˂·
    1213 ‚邱‚Æ‚ð”ð‚¯‚é‚½‚߂ɁCƒJ[ƒlƒ‹‚Ì“à•”ƒVƒ“ƒ{ƒ‹‚́CCŒ¾ŒêƒŒƒxƒ‹‚ŁCæ“ª‚ª
    1214 "_kernel_"‚Ü‚½‚Í"_KERNEL_"‚Å‚ ‚é–¼Ì‚Æ‚µ‚Ä‚¢‚éD
    1215 
    1216 ‚±‚ê‚ðƒ\[ƒXƒR[ƒh‚̉“ǐ«‚Æ—¼—§‚³‚¹‚邽‚߂ɁCSSPƒJ[ƒlƒ‹‚ł́Cƒ\[ƒXƒR[
    1217 ƒh‚ÍŽ©‘R‚È–¼‘O‚ð—p‚¢‚Ä‹Lq‚µCCŒ¾ŒêƒvƒŠƒvƒƒZƒbƒT‚̃}ƒNƒ’è‹`i#definej
    1218 ‚ð—p‚¢‚āC‚»‚ê‚ð"_kernel_"‚Ü‚½‚Í"_KERNEL_"‚ÅŽn‚Ü‚é–¼‘OiŽ©‘R‚È–¼‘O‚ª
    1219 yyyyy‚̏ꍇ‚ɂ́C_kernel_yyyyyj‚ɃŠƒl[ƒ€‚·‚éŽd‘g‚Ý‚ð—p‚¢‚Ä‚¢‚éD
    1220 
    1221 ‹ï‘Ì“I‚ɂ́CŠÖ˜A‚·‚éƒfƒBƒŒƒNƒgƒŠ‚Éxxx_rename.def‚ð’u‚«C‚»‚±‚©‚烊ƒl[
    1222 ƒ€‚Ì‚½‚߂̃wƒbƒ_ƒtƒ@ƒCƒ‹ixxx_rename.h‚¨‚æ‚Ñxxx_unrename.hj‚𐶐¬‚·‚é
    1223 ƒc[ƒ‹iutils/genrenamej‚ð—pˆÓ‚µ‚Ä‚¢‚éD
    1224 
    1225 ‚±‚ÌŽd‘g‚݂́Cƒ\[ƒXƒR[ƒh‚̉“ǐ«Œüã‚ɖ𗧂ˆê•û‚ŁC•¾ŠQ‚à‚ ‚éD—Ⴆ
    1226 ‚΁C‘½‚­‚̃fƒoƒbƒK‚ŁCƒ\[ƒXƒR[ƒh’†‚Ì–¼Ì‚ƃIƒuƒWƒFƒNƒgƒR[ƒh’†‚Ì–¼Ì
    1227 ‚ªˆÙ‚Ȃ邽‚߂ɁCƒ\[ƒXƒR[ƒh’†‚̕ϐ”–¼‚ðŽw’肵‚Ä’l‚ð“Ç‚ñ‚¾‚èCŠÖ”–¼‚ð
    1228 Žw’肵‚ăuƒŒ[ƒNƒ|ƒCƒ“ƒg‚ð’u‚­‚Æ‚¢‚Á‚½‚±‚Æ‚ª‚Å‚«‚È‚¢D
    1229 
    1230 ‚±‚̏󋵂ɑΉž‚·‚邽‚߂ɁCSSPƒJ[ƒlƒ‹‚ł́Cƒ\[ƒXƒR[ƒh’†‚ÌŠY“–‚·‚é–¼Ì
    1231 ‚ðƒŠƒl[ƒ€‚·‚邽‚߂̃†[ƒeƒBƒŠƒeƒBiutils/applyrenamej‚ð—pˆÓ‚µ‚Ä‚¢‚éD
    1232 applyrenameƒ†[ƒeƒBƒŠƒeƒB‚ɁCƒŠƒl[ƒ€’è‹`ƒtƒ@ƒCƒ‹ixxx_rename.defj‚̃v
    1233 ƒŠƒtƒBƒbƒNƒXixxx‚Ì•”•ªj‚ƁCƒŠƒl[ƒ€‚µ‚½‚¢ƒtƒ@ƒCƒ‹ƒŠƒXƒg‚ð—^‚¦‚é‚ƁCƒŠ
    1234 ƒl[ƒ€ˆ—‚ðs‚È‚¤D—Ⴆ‚΁CkernelƒfƒBƒŒƒNƒgƒŠ‚Ì‚·‚ׂẴtƒ@ƒCƒ‹‚ɑ΂µ
    1235 ‚āCƒJ[ƒlƒ‹‚Ì“à•”ƒVƒ“ƒ{ƒ‹‚ðƒŠƒl[ƒ€‚·‚é‚ɂ́CŽŸ‚̃Rƒ}ƒ“ƒh‚ðŽÀs‚·‚ê‚Î
    1236 ‚æ‚¢D
     1049アプリケーションプログラム中では,この変数(TASK1_id)を用いることで,
     1050コンフィギュレータが実行されてkernel_cfg.hが書き換わる度に,上記の変数
     1051定義を含んだファイルのみを再コンパイルすればよいことになる.
     1052
     1053この方法は,アプリケーションプログラムの再コンパイルを最小限にできる利
     1054点がある一方で,変数のためのメモリ領域が必要になることに加えて,(プロ
     1055セッサによっては)変数アクセスのためのオーバヘッドが生じるという欠点が
     1056ある.また,定数ではなく変数であることから,他の変数の初期化には使えな
     1057いという制限がある.
     1058
     1059なお,TOPPERS/SSPカーネルのコンフィギュレータは,--external-idオプショ
     1060ンを付加することにより,上記の変数定義をkernel_cfg.c中に生成する機能を
     1061持っているので,すべてのオブジェクトIDをこの方法で参照する場合には,こ
     1062の機能を用いることを推奨する.
     1063
     1064コンフィギュレータによるID番号割付けのもう1つの課題として,コンフィギュ
     1065レーションファイルの修正により,オブジェクトIDの割付けが変わってしまう
     1066ことが挙げられる.これは,アプリケーションソフトウェアの設計仕様書にID
     1067番号が記載されている場合や,デバッグ作業においてID番号を即値として表示
     1068や確認ができない場合に,作業効率を低下させる可能性が考えられる.
     1069
     1070この問題に対応するために,TOPPERS新世代カーネル用コンフィギュレータには,
     1071ID番号の割付け結果をファイルに書き出す機能(--id-output-fileオプション)
     1072と,ID番号の割付けをファイルから取り込む機能(--id-input-fileオプション)
     1073とが用意されている.ただしSSPカーネルの場合,現時点では動作上の問題があり
     1074使用することができない.詳細は configurator.txt の「○カーネル構成・初期
     1075化ファイル(kernel_cfg.c)」の (5) を参照のこと.
     1076
     107710.4. カーネルの内部シンボルのリネーム
     1078
     1079SSPカーネルでは,モジュール内部の名称が他のモジュール内部の名称と衝突す
     1080ることを避けるために,カーネルの内部シンボルは,C言語レベルで,先頭が
     1081"_kernel_"または"_KERNEL_"である名称としている.
     1082
     1083これをソースコードの可読性と両立させるために,SSPカーネルでは,ソースコー
     1084ドは自然な名前を用いて記述し,C言語プリプロセッサのマクロ定義(#define)
     1085を用いて,それを"_kernel_"または"_KERNEL_"で始まる名前(自然な名前が
     1086yyyyyの場合には,_kernel_yyyyy)にリネームする仕組みを用いている.
     1087
     1088具体的には,関連するディレクトリにxxx_rename.defを置き,そこからリネー
     1089ムのためのヘッダファイル(xxx_rename.hおよびxxx_unrename.h)を生成する
     1090ツール(utils/genrename)を用意している.
     1091
     1092この仕組みは,ソースコードの可読性向上に役立つ一方で,弊害もある.例え
     1093ば,多くのデバッガで,ソースコード中の名称とオブジェクトコード中の名称
     1094が異なるために,ソースコード中の変数名を指定して値を読んだり,関数名を
     1095指定してブレークポイントを置くといったことができない.
     1096
     1097この状況に対応するために,SSPカーネルでは,ソースコード中の該当する名称
     1098をリネームするためのユーティリティ(utils/applyrename)を用意している.
     1099applyrenameユーティリティに,リネーム定義ファイル(xxx_rename.def)のプ
     1100リフィックス(xxxの部分)と,リネームしたいファイルリストを与えると,リ
     1101ネーム処理を行なう.例えば,kernelディレクトリのすべてのファイルに対し
     1102て,カーネルの内部シンボルをリネームするには,次のコマンドを実行すれば
     1103よい.
    12371104
    12381105        % cd kernel
    12391106        % ../utils/applyrename kernel *
    12401107
    1241 ‚Ü‚½Cƒ^[ƒQƒbƒgˆË‘¶•”‚̃fƒBƒŒƒNƒgƒŠ‚Ì‚·‚ׂẴtƒ@ƒCƒ‹‚ɑ΂µ‚āCƒJ[ƒl
    1242 ƒ‹‚Ì“à•”ƒVƒ“ƒ{ƒ‹‚ðƒŠƒl[ƒ€‚·‚é‚ɂ́CŽŸ‚̂悤‚ȃRƒ}ƒ“ƒh‚ðŽÀs‚·‚ê‚΂悢D
     1108また,ターゲット依存部のディレクトリのすべてのファイルに対して,カーネ
     1109ルの内部シンボルをリネームするには,次のようなコマンドを実行すればよい.
    12431110
    12441111        % cd target/cq_starm_gcc/
     
    12461113        % ../../utils/applyrename ../../kernel/kernel *
    12471114
    1248 10.5. ƒVƒXƒeƒ€‚Ì‹N“®Žž‚̏‰Šú‰»ˆ—
    1249 
    1250 ƒVƒXƒeƒ€‚Ì‹N“®Žž‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å•K—v‚ƂȂ鏉Šú‰»ˆ—‚ðs‚¤‚½‚ß‚Ì‹@
    1251 ”\‚Æ‚µ‚ú‰»ƒ‹[ƒ`ƒ“‚ª—pˆÓ‚³‚ê‚Ä‚¢‚邪C‰Šú‰»ƒ‹[ƒ`ƒ“‚ªŽÀs‚³‚ê‚é‚æ
    1252 ‚è‚à‘‚¢ƒ^ƒCƒ~ƒ“ƒO‚ÅŽÀs‚·‚邱‚Æ‚ª•K—v‚ȏ‰Šú‰»ˆ—‚ª‚ ‚éê‡‚ª‚ ‚éD
    1253 
    1254 ‚±‚̂悤‚ȏꍇ‚É—p‚¢‚邽‚߂ɁC•W€“I‚ȃXƒ^[ƒgƒAƒbƒvƒ‚ƒWƒ
    1255 [ƒ‹‚©‚çCƒ^[
    1256 ƒQƒbƒgƒVƒXƒeƒ€ˆË‘¶‚̏‰Šú‰»ƒtƒbƒNihardware_init_hookj‚ðŒÄ‚яo‚·‚±‚Æ‚Æ
    1257 ‚µ‚Ä‚¢‚éDhardware_init_hook‚́CƒJ[ƒlƒ‹‚̃^[ƒQƒbƒgˆË‘¶•”‚Å—pˆÓ‚³‚ê‚Ä
    1258 ‚¢‚é‚Ì‚ª•W€‚Å‚ ‚邪C‚±‚ê‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å—pˆÓ‚µ‚½‚à‚Ì‚É’u‚«Š·‚¦C
    1259 ‚»‚Ì’†‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å•K—v‚ƂȂ鏉Šú‰»ˆ—‚ðs‚¤‚±‚Æ‚ª‚Å‚«‚éD
    1260 
    1261 ‚½‚¾‚µChardware_init_hook‚̍쐬‚·‚éê‡‚ɂ́CbssƒZƒNƒVƒ‡ƒ“‚ÆdataƒZƒNƒVƒ‡
    1262 ƒ“‚ª‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚âCƒ‰ƒCƒuƒ‰ƒŠ‚ª‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢‚±‚ƁCCŒ¾Œê
    1263 ‚Å‹Lq‚Å‚«‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚±‚Æ‚È‚Ç‚É’ˆÓ‚ª•K—v‚Å‚ ‚éDì¬‚É‚ ‚½‚Á‚ẮC
    1264 uƒ^[ƒQƒbƒgˆË‘¶•” ƒ|[ƒeƒBƒ“ƒOƒKƒCƒhv‚ðŽQÆ‚·‚邱‚ƁD
    1265 
    1266 ƒJ[ƒlƒ‹‚̃Xƒ^[ƒgƒAƒbƒvƒ‚ƒWƒ
    1267 [ƒ‹‚ªhardware_init_hook‚ðŒÄ‚яo‚·‚悤‚É
    1268 ŽÀ‘•‚³‚ê‚Ä‚¢‚È‚¢ê‡‚ɂ́CƒXƒ^[ƒgƒAƒbƒvƒ‚ƒWƒ
    1269 [ƒ‹‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å
    1270 —pˆÓ‚µ‚½‚à‚Ì‚É’u‚«Š·‚¦‚é•û–@‚𐄏§‚·‚éD
    1271 
    1272 ‚P‚PDŽQlî•ñ
    1273 
    1274 11.1. —˜—pðŒ‚Æ—˜—p•ñ
    1275 
    1276 SSPƒJ[ƒlƒ‹‚Ì—˜—pðŒ‚́CŠeƒtƒ@ƒCƒ‹‚̐擪‚É•\Ž¦‚³‚ê‚Ä‚¢‚éD’˜ìŒ ‚́CŠe
    1277 ƒtƒ@ƒCƒ‹‚̐擪‚É•\Ž¦‚³‚ê‚Ä‚¢‚é’˜ìŒ ŽÒ‚ª•Û—L‚µ‚Ä‚¢‚éD
    1278 
    1279 —˜—pðŒ‚Ì(3)‚Ì(b)‚É‚¨‚¢‚āC—˜—p‚ÌŒ`‘Ô‚ðTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ‚·‚é•û
    1280 –@‚Æ‚µ‚ẮCSSPƒJ[ƒlƒ‹‚ð—˜—p‚µ‚½»•i‚Ì–¼Ì‚Ɖž—p•ª–ìC»•i‰»‚µ‚½‰ïŽÐ–¼
    1281 ‚Æ‹ÆŽí“™‚̏î•ñ‚ðCˆÈ‰º‚ÌURL‚̃y[ƒW‚©‚ç•ñ‚·‚é‚à‚Ì‚Æ‚·‚éD
     111510.5. システムの起動時の初期化処理
     1116
     1117システムの起動時にアプリケーションで必要となる初期化処理を行うための機
     1118能として初期化ルーチンが用意されているが,初期化ルーチンが実行されるよ
     1119りも早いタイミングで実行することが必要な初期化処理がある場合がある.
     1120
     1121このような場合に用いるために,標準的なスタートアップモジュールから,ター
     1122ゲットシステム依存の初期化フック(hardware_init_hook)を呼び出すことと
     1123している.hardware_init_hookは,カーネルのターゲット依存部で用意されて
     1124いるのが標準であるが,これをアプリケーションで用意したものに置き換え,
     1125その中でアプリケーションで必要となる初期化処理を行うことができる.
     1126
     1127ただし,hardware_init_hookの作成する場合には,bssセクションとdataセクショ
     1128ンが初期化されていないことや,ライブラリが初期化されていないこと,C言語
     1129で記述できるとは限らないことなどに注意が必要である.作成にあたっては,
     1130「ターゲット依存部 ポーティングガイド」を参照すること.
     1131
     1132カーネルのスタートアップモジュールがhardware_init_hookを呼び出すように
     1133実装されていない場合には,スタートアップモジュールをアプリケーションで
     1134用意したものに置き換える方法を推奨する.
     1135
     113611.参考情報
     1137
     113811.1. 利用条件と利用報告
     1139
     1140SSPカーネルの利用条件は,各ファイルの先頭に表示されている.著作権は,各
     1141ファイルの先頭に表示されている著作権者が保有している.
     1142
     1143利用条件の(3)の(b)において,利用の形態をTOPPERSプロジェクトに報告する方
     1144法としては,SSPカーネルを利用した製品の名称と応用分野,製品化した会社名
     1145と業種等の情報を,以下のURLのページから報告するものとする.
    12821146
    12831147        http://www.toppers.jp/report.html
    12841148
    1285 ‚Ü‚½‚»‚̍ۂɁCSSPƒJ[ƒlƒ‹‚ðŽg—p‚µ‚ẴRƒƒ“ƒg‚₲ˆÓŒ©‚à‚¢‚½‚¾‚¯‚é‚ƍK‚¢
    1286 ‚Å‚ ‚éD
    1287 
    1288 11.2. •ÛØE“K—p«EƒTƒ|[ƒg
    1289 
    1290 SSPƒJ[ƒlƒ‹‚Í–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDŠJ”­ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒ
    1291 ƒWƒFƒNƒg‚́CSSPƒJ[ƒlƒ‹‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC
    1292 ‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½CSSPƒJ[ƒlƒ‹‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI
    1293 ‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚𕉂í‚È‚¢D
    1294 
    1295 ŠJ”­ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́CSSPƒJ[ƒlƒ‹‚ÉŠÖ‚·‚éƒTƒ|[ƒg‚Ì–ñ‘©‚Í
    1296 ‚µ‚Ä‚¢‚È‚¢DSSPƒJ[ƒlƒ‹‚ÉŠÖ‚µ‚ÄŽ¿–₪‚ ‚éê‡‚́CŒãq‚ÌTOPPERSƒ†[ƒU[
    1297 ƒYƒ[ƒŠƒ“ƒOƒŠƒXƒg‚ð—˜—p‚µ‚Ä‚¢‚½‚¾‚¯‚é‚ƍK‚¢‚Å‚ ‚éDŠmŽÀ‚ȃTƒ|[ƒg‚ª•K
    1298 —v‚ȏꍇ‚ɂ́C—Lž‚ŃTƒ|[ƒgƒT[ƒrƒX‚ð’ñ‹Ÿ‚µ‚Ä‚¢‚é‰ïŽÐ‚É‘Š’k‚³‚ꂽ‚¢D
    1299 
    1300 11.3. ƒoƒOƒŒƒ|[ƒg
    1301 
    1302 SSPƒJ[ƒlƒ‹‚ɃoƒO‚â–â‘è“_‚ð”­Œ©‚³‚ꂽê‡‚ɂ́CŒãq‚ÌTOPPERSƒ†[ƒU[ƒY
    1303 ƒ[ƒŠƒ“ƒOƒŠƒXƒg‚É•ñ‚µ‚Ä—~‚µ‚¢D
    1304 
    1305 ƒ[ƒŠƒ“ƒOƒŠƒXƒg‚ɃoƒO‚â–â‘è“_‚È‚Ç‚ð•ñ‚·‚éê‡‚ɂ́C•K—v‚ɉž‚¶‚ÄŽŸ‚Ì
    1306 î•ñ‚ð’m‚点‚Ä—~‚µ‚¢D
    1307 
    1308         Žg—p‚µ‚Ä‚¢‚éƒJ[ƒlƒ‹‚ÉŠÖ‚·‚éî•ñ
    1309                 Eƒ^[ƒQƒbƒg”ñˆË‘¶•”‚̃o[ƒWƒ‡ƒ“
    1310                 EŽg—p‚µ‚Ä‚¢‚éƒ^[ƒQƒbƒgˆË‘¶•”‚Æ‚»‚̃o[ƒWƒ‡ƒ“
    1311                 ETOPPERSƒvƒƒWƒFƒNƒg‚©‚ç‚̃ŠƒŠ[ƒX‚ɑ΂·‚é‰ü‘¢‰ÓŠi‚ ‚ê‚΁j
    1312 
    1313         ƒ^[ƒQƒbƒgƒVƒXƒeƒ€‚ÉŠÖ‚·‚éî•ñ
    1314                 Eƒ^[ƒQƒbƒgƒvƒƒZƒbƒT‚ÌŽí—Þ
    1315                 Eƒ^[ƒQƒbƒgƒ{[ƒh“™‚ÌŽí—Þ
    1316 
    1317         ƒzƒXƒg‚ÉŠÖ‚·‚éî•ñ
    1318                 EOS‚̃o[ƒWƒ‡ƒ“iƒT[ƒrƒXƒpƒbƒN‚Ì“K—pó‹µ‚àj
    1319                 EƒRƒ“ƒpƒCƒ‰‚È‚Ç‚ÌŠJ”­ŠÂ‹«‚̃o[ƒWƒ‡ƒ“iCygwin‚̃o[ƒWƒ‡ƒ“‚àj
    1320 
    1321 11.4. ƒEƒFƒuƒTƒCƒg
    1322 
    1323 TOPPERSƒvƒƒWƒFƒNƒg‚̃EƒFƒuƒTƒCƒg‚́CˆÈ‰º‚ÌURL‚É‚ ‚éD
     1149またその際に,SSPカーネルを使用してのコメントやご意見もいただけると幸い
     1150である.
     1151
     115211.2. 保証・適用性・サポート
     1153
     1154SSPカーネルは無保証で提供されているものである.開発者およびTOPPERSプロ
     1155ジェクトは,SSPカーネルに関して,特定の使用目的に対する適合性も含めて,
     1156いかなる保証も行わない.また,SSPカーネルの利用により直接的または間接的
     1157に生じたいかなる損害に関しても,その責任を負わない.
     1158
     1159開発者およびTOPPERSプロジェクトは,SSPカーネルに関するサポートの約束は
     1160していない.SSPカーネルに関して質問がある場合は,後述のTOPPERSユーザー
     1161ズメーリングリストを利用していただけると幸いである.確実なサポートが必
     1162要な場合には,有償でサポートサービスを提供している会社に相談されたい.
     1163
     116411.3. バグレポート
     1165
     1166SSPカーネルにバグや問題点を発見された場合には,後述のTOPPERSユーザーズ
     1167メーリングリストに報告して欲しい.
     1168
     1169メーリングリストにバグや問題点などを報告する場合には,必要に応じて次の
     1170情報を知らせて欲しい.
     1171
     1172        使用しているカーネルに関する情報
     1173                ・ターゲット非依存部のバージョン
     1174                ・使用しているターゲット依存部とそのバージョン
     1175                ・TOPPERSプロジェクトからのリリースに対する改造箇所(あれば)
     1176
     1177        ターゲットシステムに関する情報
     1178                ・ターゲットプロセッサの種類
     1179                ・ターゲットボード等の種類
     1180
     1181        ホストに関する情報
     1182                ・OSのバージョン(サービスパックの適用状況も)
     1183                ・コンパイラなどの開発環境のバージョン(Cygwinのバージョンも)
     1184
     118511.4. ウェブサイト
     1186
     1187TOPPERSプロジェクトのウェブサイトは,以下のURLにある.
    13241188
    13251189        http://www.toppers.jp/
    13261190
    1327 TOPPERSƒvƒƒWƒFƒNƒg‚âSSPƒJ[ƒlƒ‹‚ÉŠÖ‚·‚éÅVî•ñ‚́C‚±‚̃EƒFƒuƒTƒCƒg‚©
    1328 ‚瓾‚邱‚Æ‚ª‚Å‚«‚éD‚Ü‚½CSSPƒJ[ƒlƒ‹‚̍ŐV”ł́C‚±‚̃EƒFƒuƒTƒCƒg‚©‚çƒ_
    1329 ƒEƒ“ƒ[ƒh‚·‚邱‚Æ‚ª‚Å‚«‚éD
    1330 
    1331 11.5. TOPPERSƒ†[ƒU[ƒYƒ[ƒŠƒ“ƒOƒŠƒXƒg
    1332 
    1333 SSPƒJ[ƒlƒ‹‚ðŠÜ‚ÞTOPPERSƒvƒƒWƒFƒNƒg‚ÌŠJ”­¬‰Ê•¨‚̃†[ƒU‚ɑ΂·‚éî•ñ’ñ
    1334 ‹Ÿ‚¨‚æ‚у†[ƒU‘ŠŒÝŠÔ‚̏î•ñŒðŠ·‚ð—eˆÕ‚É‚·‚邽‚߂ɁCTOPPERSƒ†[ƒU[ƒYƒ[
    1335 ƒŠƒ“ƒOƒŠƒXƒgiusers@toppers.jpj‚ð—pˆÓ‚µ‚Ä‚¢‚éD
    1336 
    1337 ‚±‚̃[ƒŠƒ“ƒOƒŠƒXƒg‚ɂ́C’N‚Å‚àŽ©—R‚É“o˜^‚µCƒ[ƒ‹‚ð‘—•t‚·‚邱‚Æ‚ª‚Å
    1338 ‚«‚éi“o˜^ŽÒˆÈŠO‚̓[ƒ‹‚ð‘—•t‚Å‚«‚È‚¢jD‚Ü‚½C‘—•t‚³‚ꂽƒ[ƒ‹‚́C’N
    1339 ‚Å‚àŽ©—R‚ɃEƒFƒuƒTƒCƒg‚Å“Ç‚Þ‚±‚Æ‚ª‚Å‚«‚éD
    1340 
    1341 ƒ[ƒŠƒ“ƒOƒŠƒXƒg‚Ö‚Ì“o˜^•û–@‚ɂ‚¢‚ẮCˆÈ‰º‚ÌURL‚̃y[ƒW‚Éà–¾‚ª‚ ‚éD
     1191TOPPERSプロジェクトやSSPカーネルに関する最新情報は,このウェブサイトか
     1192ら得ることができる.また,SSPカーネルの最新版は,このウェブサイトからダ
     1193ウンロードすることができる.
     1194
     119511.5. TOPPERSユーザーズメーリングリスト
     1196
     1197SSPカーネルを含むTOPPERSプロジェクトの開発成果物のユーザに対する情報提
     1198供およびユーザ相互間の情報交換を容易にするために,TOPPERSユーザーズメー
     1199リングリスト(users@toppers.jp)を用意している.
     1200
     1201このメーリングリストには,誰でも自由に登録し,メールを送付することがで
     1202きる(登録者以外はメールを送付できない).また,送付されたメールは,誰
     1203でも自由にウェブサイトで読むことができる.
     1204
     1205メーリングリストへの登録方法については,以下のURLのページに説明がある.
    13421206
    13431207        http://www.toppers.jp/community.html
    13441208
    1345 11.6. TOPPERSƒvƒƒWƒFƒNƒg‚̃ƒ“ƒoŒü‚¯‚̃T[ƒrƒX
    1346 
    1347 TOPPERSƒvƒƒWƒFƒNƒg‚̃ƒ“ƒo‚ɑ΂µ‚ẮCã‹L‚ɉÁ‚¦‚āCSSPƒJ[ƒlƒ‹‚ÉŠÖ˜A
    1348 ‚µ‚ÄŽŸ‚̃T[ƒrƒX‚ð—pˆÓ‚µ‚Ä‚¢‚éD
    1349 
    1350 (1) TOPPERSŠJ”­ŽÒƒ[ƒŠƒ“ƒOƒŠƒXƒg
    1351 
    1352 TOPPERSƒvƒƒWƒFƒNƒg‚̃ƒ“ƒo‚́CSSPƒJ[ƒlƒ‹‚ÉŠÖ‚·‚鎿–âCƒoƒO‚â–â‘è“_‚È
    1353 ‚Ç‚Ì•ñ‚ɁCTOPPERSŠJ”­ŽÒƒ[ƒŠƒ“ƒOƒŠƒXƒgidev@toppers.jpj‚ð—˜—p‚·‚邱
    1354 ‚Æ‚ª‚Å‚«‚éD
    1355 
    1356 (2) SSPƒJ[ƒlƒ‹‚ÌŠJ”­Žx‰‡ƒTƒCƒg
    1357 
    1358 SSPƒJ[ƒlƒ‹‚ÌŠJ”­Žx‰‡‚Ì‚½‚ß‚ÌTRACiƒoƒOƒgƒ‰ƒbƒLƒ“ƒOƒVƒXƒeƒ€j‚ªCˆÈ‰º‚Ì
    1359 URL‚É‚ ‚éiTRAC‚ւ̃AƒNƒZƒX‚ɂ́C‰ïˆõƒpƒXƒ[ƒh‚ª•K—v‚Å‚ ‚éjD
     120911.6. TOPPERSプロジェクトのメンバ向けのサービス
     1210
     1211TOPPERSプロジェクトのメンバに対しては,上記に加えて,SSPカーネルに関連
     1212して次のサービスを用意している.
     1213
     1214(1) TOPPERS開発者メーリングリスト
     1215
     1216TOPPERSプロジェクトのメンバは,SSPカーネルに関する質問,バグや問題点な
     1217どの報告に,TOPPERS開発者メーリングリスト(dev@toppers.jp)を利用するこ
     1218とができる.
     1219
     1220(2) SSPカーネルの開発支援サイト
     1221
     1222SSPカーネルの開発支援のためのTRAC(バグトラッキングシステム)が,以下の
     1223URLにある(TRACへのアクセスには,会員パスワードが必要である).
    13601224
    13611225        http://dev.toppers.jp/trac/ssp_core
    13621226
    1363 TOPPERSƒvƒƒWƒFƒNƒg‚̃ƒ“ƒo‚́C‚±‚̃TƒCƒg‚©‚çCƒEƒFƒuƒCƒ“ƒ^ƒtƒF[ƒX‚¨‚æ
    1364 ‚ÑsubversionƒT[ƒo‚É‚æ‚èCSSPƒJ[ƒlƒ‹‚ÌŠJ”­’†‚̃o[ƒWƒ‡ƒ“‚𓾂邱‚Æ‚ª‚Å
    1365 ‚«‚éD‚Ü‚½CƒoƒOƒgƒ‰ƒbƒLƒ“ƒOƒf[ƒ^ƒx[ƒX‚ɃAƒNƒZƒX‚·‚邱‚Æ‚ª‚Å‚«C‰ß‹Ž
    1366 ‚̃oƒO—š—ð‚ւ̃AƒNƒZƒX‚âCƒoƒO‚Ì“o˜^‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚éD
    1367 
    1368 11.7. TOPPERSƒvƒƒWƒFƒNƒg‚Ö‚ÌŽQ‰Á
    1369 
    1370 TOPPERSƒvƒƒWƒFƒNƒg‚ł́C‰½‚©‚ç‚ÌŒ`‚ŃvƒƒWƒFƒNƒg‚ɍvŒ£‚µ‚Ä‚¢‚½‚¾‚¯‚é•ûC
    1371 ƒvƒƒWƒFƒNƒg‚ÅŠJ”­‚µ‚½ƒ\ƒtƒgƒEƒFƒA‚ð‚¨Žg‚¢‚Ì•ûCƒvƒƒWƒFƒNƒg‚É‹»–¡‚ð‚¨
    1372 Ž‚¿‚Ì•û‚ÌŽQ‰Á‚ð‹‚ß‚Ä‚¢‚éDTOPPERSƒvƒƒWƒFƒNƒg‚Ö‚ÌŽQ‰Á•û–@‚ɂ‚¢‚ẮC
    1373 ˆÈ‰º‚̃y[ƒW‚Éà–¾‚ª‚ ‚éD
     1227TOPPERSプロジェクトのメンバは,このサイトから,ウェブインタフェースおよ
     1228びsubversionサーバにより,SSPカーネルの開発中のバージョンを得ることがで
     1229きる.また,バグトラッキングデータベースにアクセスすることができ,過去
     1230のバグ履歴へのアクセスや,バグの登録をすることができる.
     1231
     123211.7. TOPPERSプロジェクトへの参加
     1233
     1234TOPPERSプロジェクトでは,何からの形でプロジェクトに貢献していただける方,
     1235プロジェクトで開発したソフトウェアをお使いの方,プロジェクトに興味をお
     1236持ちの方の参加を求めている.TOPPERSプロジェクトへの参加方法については,
     1237以下のページに説明がある.
    13741238
    13751239        http://www.toppers.jp/joinus.html
    13761240
    13771241
    1378 ‚P‚QDƒŠƒtƒ@ƒŒƒ“ƒX
    1379 
    1380 12.1. ƒT[ƒrƒXƒR[ƒ‹ˆê——
    1381 
    1382 (1) ƒ^ƒXƒNŠÇ—‹@”\
     124212.リファレンス
     1243
     124412.1. サービスコール一覧
     1245
     1246(1) タスク管理機能
    13831247
    13841248        ER ercd = act_tsk(ID tskid)
    13851249        ER ercd = iact_tsk(ID tskid)
    13861250
    1387 (2) ƒVƒXƒeƒ€ó‘ÔŠÇ—‹@”\
     1251(2) システム状態管理機能
    13881252
    13891253        ER ercd = loc_cpu(void)
     
    14001264        ER ercd = ext_ker(void)
    14011265
    1402 (3) Š„ž‚ÝŠÇ—‹@”\
     1266(3) 割込み管理機能
    14031267
    14041268        ER ercd = dis_int(INTNO intno)
    14051269        ER ercd = ena_int(INTNO intno)
    14061270
    1407 12.2. Ã“IAPIˆê——
    1408 
    1409 (1) ƒ^ƒXƒNŠÇ—‹@”\
     127112.2. 静的API一覧
     1272
     1273(1) タスク管理機能
    14101274
    14111275        CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
     
    14131277        DEF_EPR(ID tskid,{ PRI etskpri })
    14141278
    1415 (2) Š„ž‚ÝŠÇ—‹@”\
     1279(2) 割込み管理機能
    14161280
    14171281        ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
     
    14191283        CFG_INT(INTNO intno, { ATR intatr, PRI intpri })
    14201284
    1421 (3) CPU—áŠOŠÇ—‹@”\
     1285(3) CPU例外管理機能
    14221286
    14231287        DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })
    14241288
    1425 (4) ƒVƒXƒeƒ€\¬ŠÇ—‹@”\
     1289(4) システム構成管理機能
    14261290
    14271291        DEF_ICS({ SIZE istksz, STK_T *istk })
     
    14301294        ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })
    14311295
    1432 12.3. ƒo[ƒWƒ‡ƒ“—š—ð
    1433 
    1434         2011”N 3ŒŽ31“ú  Release 1.0.0           ‘ŠúƒŠƒŠ[ƒX
    1435         2011”N11ŒŽ16“ú  Release 1.1.0           Å‰‚̈ê”ʃŠƒŠ[ƒX
    1436         2011”N 3ŒŽ23“ú  Release 1.1.1           Œy”÷‚ȏC³‚ƃoƒOƒtƒBƒbƒNƒX
    1437         2013”N 4ŒŽ23“ú  Release 1.2.0           ƒ^ƒXƒN‚Ì‹N“®—v‹ƒLƒ
    1438 [ƒCƒ“ƒO‹@”\‚̒ljÁ
    1439                                         DEF_ICS‚ÌŽd—l•ÏX
    1440                                         DEF_STK‚̒ljÁ
    1441                                         “¯ŠúE’ʐM‹@”\Šg’£ƒpƒbƒP[ƒW‚̒ljÁ
    1442         2014”N 3ŒŽ 6“ú  Release 1.2.1           ƒoƒOƒtƒBƒbƒNƒX
    1443         2015”N 5ŒŽ19“ú  Release 1.3.0           
    1444 
    1445 ˆÈã
     129612.3. バージョン履歴
     1297
     1298        2011年 3月31日     Release 1.0.0           早期リリース
     1299        2011年11月16日     Release 1.1.0           最初の一般リリース
     1300        2011年 3月23日     Release 1.1.1           軽微な修正とバグフィックス
     1301        2013年 4月23日     Release 1.2.0           タスクの起動要求キューイング機能の追加
     1302                                        DEF_ICSの仕様変更
     1303                                        DEF_STKの追加
     1304                                        同期・通信機能拡張パッケージの追加
     1305        2014年 3月 6日     Release 1.2.1           バグフィックス
     1306        2015年 5月19日     Release 1.3.0           
     1307
     1308以上
Note: See TracChangeset for help on using the changeset viewer.