Changeset 95 for ssp_qb_r5f100le_cs/trunk/doc/user.txt
- Timestamp:
- Jun 2, 2015, 3:39:53 PM (9 years ago)
- 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 1 1 2 TOPPERS/SSPJ[l 3 [U[Y}j 4 A 5 6 Îo[W: Release 1.3.0 7 ÅIXV: 2015N519ú 8 9 ±ÌhL 10 gÍCTOPPERS/SSPJ[lðgp·é½ßÉKvÈðྠ11 ·éàÌÅ éD 2 TOPPERS/SSPカーネル 3 ユーザーズマニュアル 4 5 対応バージョン: Release 1.3.0 6 最終更新: 2015年5月19日 7 8 このドキュメントは,TOPPERS/SSPカーネルを使用するために必要な事項を説明 9 するものである. 12 10 13 11 ---------------------------------------------------------------------- … … 19 17 Nagoya Municipal Industrial Research Institute, JAPAN 20 18 21 ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 22 Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 23 ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 24 (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 25 \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 26 XR[hÉÜÜêÄ¢é±ÆD 27 (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 28 pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 29 gip 30 Ò}j 31 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 32 ̳ÛØKèðfÚ·é±ÆD 33 (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 34 pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 35 ÆD 36 (a) Äzzɺ¤hL 37 gipÒ}j 38 AÈÇjÉCãLÌ 39 ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 40 (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 41 ñ·é±ÆD 42 (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 43 Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 44 ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 45 RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 免責すること. 47 41 48 {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨49 æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI50 ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF51 AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»52 ÌÓCðíÈ¢D42 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 43 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 44 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 45 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 46 の責任を負わない. 53 47 54 48 ---------------------------------------------------------------------- 55 49 56 Ú 57 58 PDTOPPERS/SSPJ[lÌTv 59 1.1 TOPPERS/SSPJ[lÌÊut¯ 60 1.2 TOPPERS/SSPJ[lÌdl 61 1.3 ùmÌâè 62 QD^[Qbg˶ 63 2.1 ^[Qbg˶ÌTv 64 2.2 ÈÕpbP[W 65 2.3 ÂÊpbP[W 66 RDNCbNX^[gKCh 67 3.1 J«Ìõ 68 3.2 RtBM 69 [^Ì\z 70 3.3 TvvOÌ\zÆÀs 71 3.4 J[lðÖPÊÅCu»·éû@ 72 3.5 AvP[VÆJ[lðÊXÉ\z·éû@ 73 SDfBNg\¬Et@C\¬ 74 4.1 zzpbP[WÌfBNg\¬ 75 4.2 ^[Qbgñ˶Ìt@C\¬ 76 TDRtBM 77 [VXNvgÌg¢û 78 UDMakefileÌC³û@ 79 6.1 MakefileÌÏè` 80 6.2 RpCIvV 81 VDRtBM 82 [^Ìg¢û 83 WDVXeT[rX 84 8.1 VAC^tF[XhCo 85 8.1.1 VAC^tF[XhCoÌT[rXR[ 86 8.1.2 VAC^tF[XhCo̻̼ÌT[rX 87 8.2 J[lN®bZ[WÌoÍ 88 XDT|[gCu 89 9.1 L 90 [ìCuÖ 91 PODgpãÌÓÆqg 92 10.1 ^C}hCoÌgÝ 93 10.2 assert}NÌ 94 10.3 IuWFNgIDÌÇ 95 10.4 J[lÌàV{Ìl[ 96 10.5 VXeÌN®Ìú» 97 PPDQlîñ 98 11.1 pðÆpñ 99 11.2 ÛØEKp«ET|[g 100 11.3 oO|[g 101 11.4 EFuTCg 102 11.5 TOPPERS[U[Y[OXg 103 11.6 TOPPERSvWFNgÌoü¯ÌT[rX 104 11.7 TOPPERSvWFNgÖÌQÁ 105 PQD 106 12.1 T[rXR[ê 107 12.2 ÃIAPIê 108 12.3 o[Wð 109 110 111 PDTOPPERS/SSPJ[lÌTv 112 113 1.1. TOPPERS/SSPJ[lÌÊut¯ 114 115 TOPPERS/SSPJ[lÍCTOPPERS/ASPJ[lÌdlÉεÄC 116 ¬KÍAvP[Vü¯ÉdlðiÁ½àÌÅ éDŬZbgÉ 117 ¨¯é"Ŭ"ÆÍCJ[lªgp·éROM/RAMgpÊ𬳷é½ßÉ 118 dlðÅK»·é±ÆðÓ¡·éD 119 120 ñ·é@\ÍÊITRON4.0dlÌÅá@\ðx[XƵÄCê 121 ©®Ô§äpvt@CÌ@\ðæèÞD 122 123 ±Ì½ßCSSPJ[lÍASPJ[l̺ÊÝ·ÅàãÊÝ·ÅàÈ¢D 124 ½¾µC§ñ^XNg£pbP[WðKpµ½êCSSPJ[lÍ 125 SSPJ[lÌãÊÝ·ÆÈéD 126 127 1.2. TOPPERS/SSPJ[lÌdl 128 129 SSPJ[lÌdlÌTvÉ¢ÄÍCuTOPPERSV¢ãJ[ldlvð 130 QÆ̱ÆD 131 132 1.3. ùmÌâè 133 134 kernel_cfg.ci¨æÑcfg1_out.cjÍCJ[lCVXeT[rXCAv 135 P[VÌ¢¸êÌCN[ht@CàCN[hµC¢¸êÌV 136 {àQÆ·éÂ\«ª éD»Ì½ßCJ[lCVXeT[rXCAv 137 P[VÅV{ªÕ˵ĢéêâCRpCIvVªH 138 ¢áÁÄ¢éêÉCkernel_cfg.ci¨æÑcfg1_out.cjª³µRpC 139 Å«ÈÈéêªl¦çêéDJ[lÌV{ðl[·éÈÇÌû 140 @Åy¸³êÄÍ¢éªCâèªÈÈÁÄ¢éí¯ÅÍÈ¢D 141 142 VXeRtBM 143 [Vt@C©çCRtBM 144 [^Éηé 145 INCLUDEfBNeBuÉæè¼ÌRtBM 146 [Vt@CðCN[ 147 hµÄ¢éêÉC»ÌÉÜÜêéC¾êvvZbTÌCN[hfB 148 NeBui#includejÅCRtBM 149 [Vt@CÌu©êÄ¢é 150 fBNgªCt@Cðõ·épXÉÍ¢çȢƢ¤âèª éDá 151 ¦ÎCsyssvc/syslog.cfgÉu#include "syslog.h"vÆLqÅ«È¢ÌÍC± 152 Ìâèª é½ßÅ éD 153 154 »_ÅÍCAhXª64rbgÌ«ÉÍεĢȢD64rbgAh 155 X«ðT|[g·é½ßÌÅåÌÛèÍCg[SR[htH[}bg 156 ª64rbgAhXÉεĢȢ±ÆÅ éD 157 158 QD^[Qbg˶ 159 160 2.1. ^[Qbg˶ÌTv 161 162 SSPJ[lÌ^[Qbgñ˶ÆCeíÌ^[QbgVXeÉÎ·é½ 163 ßÌ^[Qbg˶ÍCÊXÉJ³êÄ¢éD»Ì½ßCSSPJ[lªÎ 164 µÄ¢é·×ÄÌ^[Qbg˶ðCo[W𮳹ÄpbP[W 165 »·é±ÆÍ¢ïÅ éD»±ÅCåÉÌ[UðÎÛɵ½ÈÕpbP[ 166 WÆCãÌ[UâJ[lJÒðÎÛɵ½ÂÊpbP[Wðp 167 ¢éD 168 169 SSPJ[lð¢T|[gÌ^[QbgVXeÖ|[eBO·é½ßÉKv 170 ÈìÆÍCJ«Ì\zÆWÌJ«ÆÌ·ÙÌzûCJ[l©gÌ 171 |[eBOCVXeT[rXÌ|[eBOÈÇ©çÈéDÚµÍC 172 u^[Qbg˶ |[eBOKChvðQÆ·é±ÆD 173 174 ¦ ^[Qbg˶ |[eBOKChÍ»ÝÍ¢®Å é 175 176 2.2. ÈÕpbP[W 177 178 ÈÕpbP[WÍCSSPJ[lªÎµÄ¢é^[QbgVXeÉpÓ³ 179 êC»Ì^[QbgVXeãÅSSPJ[lð®ì³¹é½ßÉKvÈt@C 180 ê®ðpbP[W»µ½àÌÅ éDÈÕpbP[WÉÜÜêét@CÍC 181 o[Wª®µÄ¢é±ÆªmF³êÄ¢éD 182 183 ÈÕpbP[WÌo[WÔÍCpbP[W»µ½útÆ·é±Æð´¥ 184 Æ·éªC^[QbgVXeÌîÉæè±Ì´¥É]íÈ¢êª éD 185 186 ÈÕpbP[WÍCî{IÉÍCÉྷéÂÊpbP[Wð¡ÜÆß½ 187 àÌÅ éD»Ì½ßCÎÛ^[QbgVXeÉKvÌÈ¢t@CàÜÜ 188 êÄ¢éDܽCÈÕpbP[WÉÜÜêÄ¢éÂÊpbP[WÌo[W 189 ÍCÂÊpbP[WÌMANIFESTt@CðQÆ·é±ÆÅmé±ÆªÅ«éD 190 191 2.3. ÂÊpbP[W 192 193 ÂÊpbP[WÍCSSPJ[lÌJPÊÉC»ÌJPÊÅJðSµ 194 Ä¢ét@Cê®ðpbP[W»µ½àÌÅ éDSSPJ[lÌ^[Qbg 195 ñ˶àCêÂÌÂÊpbP[WƵÄzz³êéD éÂÊpbP[Wð 196 gp·é½ßÉÍCêÊÉÍC¼ÌÂÊpbP[WªKvÆÈéD^[Qbg 197 ˶ÌÂÊpbP[Wðgp·é½ßÉKvÆÈéÂÊpbP[WÆ»Ìo[ 198 WÉ¢ÄÍC^[Qbg˶Ì[U[Y}j 199 AðQÆ·é±ÆD 200 gp·éÂÊpbP[WÌo[W𮳹é±ÆÍC[UÌÓCÅ 201 éD 202 203 ÂÊpbP[WÌo[WÔÍCX.Y.ZÌ`Å\»³êéD^[QbgñË 204 ¶Ìo[WÔðCSSPJ[lSÌÌ[XÔÆ·éD^[Qbg 205 ˶Ìo[WÔÍCXÆYªC»êªË¶·é^[Qbgñ˶Æê 206 vµÄ¢éD»êÉεÄCZÍêvµÄ¢éÆÍÀçÈ¢Dá¦ÎC^[Qb 207 gñ˶Ìo[W1.1.0Éηé^[Qbg˶ÍCo[W 208 1.1.ZÌ`ÆÈéD^[Qbg˶Ìݪo[WAbvµ½êÉÍCZ 209 ªÏX³êéD 210 211 gp·éÂÊpbP[WÍCÌáÌæ¤ÉC^[Qbgñ˶ÌÂÊpb 212 P[WðWJµ½ÌƯ¶fBNgÅWJ·éD 50 ○目次 51 52 1.TOPPERS/SSPカーネルの概要 53 1.1 TOPPERS/SSPカーネルの位置付け 54 1.2 TOPPERS/SSPカーネルの仕様 55 1.3 既知の問題 56 2.ターゲット依存部 57 2.1 ターゲット依存部の概要 58 2.2 簡易パッケージ 59 2.3 個別パッケージ 60 3.クイックスタートガイド 61 3.1 開発環境の準備 62 3.2 コンフィギュレータの構築 63 3.3 サンプルプログラムの構築と実行 64 3.4 カーネルを関数単位でライブラリ化する方法 65 3.5 アプリケーションとカーネルを別々に構築する方法 66 4.ディレクトリ構成・ファイル構成 67 4.1 配布パッケージのディレクトリ構成 68 4.2 ターゲット非依存部のファイル構成 69 5.コンフィギュレーションスクリプトの使い方 70 6.Makefileの修正方法 71 6.1 Makefileの変数定義 72 6.2 コンパイルオプション 73 7.コンフィギュレータの使い方 74 8.システムサービス 75 8.1 シリアルインタフェースドライバ 76 8.1.1 シリアルインタフェースドライバのサービスコール 77 8.1.2 シリアルインタフェースドライバのその他のサービス 78 8.2 カーネル起動メッセージの出力 79 9.サポートライブラリ 80 9.1 キュー操作ライブラリ関数 81 10.使用上の注意とヒント 82 10.1 タイマドライバの組込み 83 10.2 assertマクロの処理 84 10.3 オブジェクトIDの管理 85 10.4 カーネルの内部シンボルのリネーム 86 10.5 システムの起動時の初期化処理 87 11.参考情報 88 11.1 利用条件と利用報告 89 11.2 保証・適用性・サポート 90 11.3 バグレポート 91 11.4 ウェブサイト 92 11.5 TOPPERSユーザーズメーリングリスト 93 11.6 TOPPERSプロジェクトのメンバ向けのサービス 94 11.7 TOPPERSプロジェクトへの参加 95 12. 96 12.1 サービスコール一覧 97 12.2 静的API一覧 98 12.3 バージョン履歴 99 100 101 1.TOPPERS/SSPカーネルの概要 102 103 1.1. TOPPERS/SSPカーネルの位置付け 104 105 TOPPERS/SSPカーネルは,TOPPERS/ASPカーネルの仕様に対して, 106 小規模アプリケーション向けに仕様を絞ったものである.最小セットに 107 おける"最小"とは,カーネルが使用するROM/RAM使用量を小さくするために 108 仕様を最適化することを意味する. 109 110 提供する機能はμITRON4.0仕様準拠の最低機能をベースとして,一部 111 自動車制御用プロファイルの機能を取り込む. 112 113 このため,SSPカーネルはASPカーネルの下位互換でも上位互換でもない. 114 ただし,制約タスク拡張パッケージを適用した場合,SSPカーネルは 115 SSPカーネルの上位互換となる. 116 117 1.2. TOPPERS/SSPカーネルの仕様 118 119 SSPカーネルの仕様の概要については,「TOPPERS新世代カーネル統合仕様書」を 120 参照のこと. 121 122 1.3. 既知の問題 123 124 kernel_cfg.c(およびcfg1_out.c)は,カーネル,システムサービス,アプリ 125 ケーションのいずれのインクルードファイルもインクルードし,いずれのシン 126 ボルも参照する可能性がある.そのため,カーネル,システムサービス,アプ 127 リケーションでシンボル等が衝突している場合や,コンパイルオプションが食 128 い違っている場合に,kernel_cfg.c(およびcfg1_out.c)が正しくコンパイル 129 できなくなる場合が考えられる.カーネルのシンボルをリネームするなどの方 130 法で軽減されてはいるが,問題がなくなっているわけではない. 131 132 システムコンフィギュレーションファイルから,コンフィギュレータに対する 133 INCLUDEディレクティブにより他のコンフィギュレーションファイルをインクルー 134 ドしている場合に,その中に含まれるC言語プリプロセッサのインクルードディ 135 レクティブ(#include)で,コンフィギュレーションファイルの置かれている 136 ディレクトリが,ファイルを検索するパスにはいらないという問題がある.例 137 えば,syssvc/syslog.cfgに「#include "syslog.h"」と記述できないのは,こ 138 の問題があるためである. 139 140 現時点では,アドレスが64ビットの環境には対応していない.64ビットアドレ 141 ス環境をサポートするための最大の課題は,モトローラSレコードフォーマット 142 が64ビットアドレスに対応していないことである. 143 144 2.ターゲット依存部 145 146 2.1. ターゲット依存部の概要 147 148 SSPカーネルのターゲット非依存部と,各種のターゲットシステムに対応するた 149 めのターゲット依存部は,別々に開発されている.そのため,SSPカーネルが対 150 応しているすべてのターゲット依存部を,バージョンを整合させてパッケージ 151 化することは困難である.そこで,主に初級のユーザを対象にした簡易パッケー 152 ジと,上級のユーザやカーネル開発者を対象にした個別パッケージを用意して 153 いる. 154 155 SSPカーネルを未サポートのターゲットシステムへポーティングするために必要 156 な作業は,開発環境の構築と標準の開発環境との差異の吸収,カーネル自身の 157 ポーティング,システムサービスのポーティングなどからなる.詳しくは, 158 「ターゲット依存部 ポーティングガイド」を参照すること. 159 160 ※ ターゲット依存部 ポーティングガイドは現在は未完である 161 162 2.2. 簡易パッケージ 163 164 簡易パッケージは,SSPカーネルが対応しているターゲットシステム毎に用意さ 165 れ,そのターゲットシステム上でSSPカーネルを動作させるために必要なファイ 166 ル一式をパッケージ化したものである.簡易パッケージに含まれるファイルは, 167 バージョンが整合していることが確認されている. 168 169 簡易パッケージのバージョン番号は,パッケージ化した日付とすることを原則 170 とするが,ターゲットシステム毎の事情によりこの原則に従わない場合がある. 171 172 簡易パッケージは,基本的には,次に説明する個別パッケージを複数まとめた 173 ものである.そのため,対象ターゲットシステムに必要のないファイルも含ま 174 れている.また,簡易パッケージに含まれている個別パッケージのバージョン 175 は,個別パッケージのMANIFESTファイルを参照することで知ることができる. 176 177 2.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に対応するターゲット依存部は,バージョン 193 1.1.Zの形となる.ターゲット依存部のみがバージョンアップした場合には,Z 194 が変更される. 195 196 使用する個別パッケージは,次の例のように,ターゲット非依存部の個別パッ 197 ケージを展開したのと同じディレクトリで展開する. 213 198 214 199 % tar xvfz ssp-1.3.0.tar.gz 215 200 % tar xvfz ssp_arch_rx_rxc-1.3.0.tar.gz 216 201 217 ^[Qbgñ˶ÌÂÊpbP[WÉÍCȺÌ^[Qbg˶ªÜÜê 218 Ä¢éD 219 220 target/cq_frk_fm3_gcc Interfacet®Cortex-M3î 221 iGNUJ«jp^[Qbg˶ 222 arch/arm_m_gcc Cortex-M3iGNUJ«jpvZbT˶ 223 224 225 RDNCbNX^[gKCh 226 227 ±±ÅÍC^[Qbg˶ªpÓ³êÄ¢é^[QbgVXeãÅCSSPJ[ 228 lãÅ®ì·éTvvOð\zE®ì³¹éÜÅÌèð¦·D 229 230 3.1. J«Ìõ 231 232 SSPJ[lðp¢½VXe\zÉÍCȺÌc[ªKvÅ éD 233 234 zXgVXepÌc[ 235 perl ®ìmFF5.16.2 236 GNU Make ®ìmFF3.81 237 238 TOPPERSV¢ãJ[lpRtBM 239 [^ 240 cfg ®ìmFF1.8.0 241 ¦ 1.6.0ÈOÌo[WÅÍ®ìµÈ¢D 242 243 ^[QbgVXepÌc[iNXJ«j 244 WKiɵ½CRpC 245 AZuCJCCuA 246 V{t@CoÍc[CwLTt@CoÍc[ 247 WCCuiK{ÅÍÈ¢j 248 249 ^[QbgVXepÌc[ÉGNUJ«ðp¢éêÉÍCȺÌc[ 250 ªKvÅ éD 251 252 ^[QbgVXepÌGNUJ«c[ 253 BINUTILSiasCldCarCnmCranlibCobjcopyCobjdumpj 254 GCCܽÍGCC-COREigcc¨æÑ»±©çÄÑo³êéc[j 255 NEWLIBiWCCuCK{ÅÍÈ¢j 256 257 ®ìmF³êÄ¢é^[QbgVXepÌc[É¢ÄÍC^[QbgË 258 ¶Ì[U[Y}j 259 AðQÆ·é±ÆD 260 261 ^[QbgVXepÌWCCuÍCAvP[VªWCCu 262 ðgpµÈ¢êÉÍCKvÈ¢D½¾µCRpCªWCCu 263 ÖimemcpyCmemsetÈÇjðÄÑo·R[h𶬷éêª èC»Ìê 264 ÉÍWCCuªKvÅ éDWCCuðpÓ·éãíèÉC 265 ¶¬µ½R[hªÄÑo·ÖÌÝð©ªÅpÓµÄàæ¢D 266 267 ȨCperlXNvgÍ}`oCg¶ðµ¤¶R[hªEUCCüsR[hª 268 LFÅ é±Æð¼èµÄ¢éD»êÈO̶R[hCüsR[hŮ쳹é 269 ½ßÉÍperlXNvgÌC³ªKvÆÈé±Æª éD 270 271 ȺÅÍC±êçÌc[ªpÓÅ«Ä¢é±ÆðOñÉCUNIX}VãÅÌ 272 \zèðྷéDܽȺÌà¾ÅÍCmakeR}hªGNU MakeÅ éà 273 ÌÆ·éiSSPJ[lÌTvÌMakefileÍCGNU MakeÌg£@\ðp¢Ä 274 ¢éjD 275 276 3.2. RtBM 277 [^Ì\z 278 279 J[lð\z·éOÉCܸCTOPPERSV¢ãJ[lpRtBM 280 [^ 281 ð\z·éKvª éDÈÕpbP[WÉÜÜêÄ¢½êÈÇCRtBM 282 283 [^ðÀst@C`®Åüèµ½êÉÍC±ÌXebvÍKvÈ¢D 284 285 RtBM 286 [^Ì\zÉÍCȺÌc[ªKvÅ éD 287 288 zXgVXepÌc[iZtJ«j 289 C++RpCCC++Cu 290 ®ìmFiMac OS X«jFApple LLVM version 5.0 (clang-500.2.79) 291 Boost ®ìmFF1.55.0 292 Visual Studio (WindowsÌê) 293 294 ÅÉCpbP[WÉRtBM 295 [^Ì\[Xt@CªÜÜêĢȢ 296 êÉÍCRtBM 297 [^ÌpbP[WðCSSPJ[lÌ\[Xt@C 298 ðWJµ½fBNg̺ÉWJ·é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 210 3.クイックスタートガイド 211 212 ここでは,ターゲット依存部が用意されているターゲットシステム上で,SSPカー 213 ネル上で動作するサンプルプログラムを構築・動作させるまでの手順を示す. 214 215 3.1. 開発環境の準備 216 217 SSPカーネルを用いたシステム構築には,以下のツールが必要である. 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,改行コードが 251 LFであることを仮定している.それ以外の文字コード,改行コードで動作させる 252 ためにはperlスクリプトの修正が必要となることがある. 253 254 以下では,これらのツールが用意できていることを前提に,UNIXマシン上での 255 構築手順を説明する.また以下の説明では,makeコマンドがGNU Makeであるも 256 のとする(SSPカーネルのサンプルのMakefileは,GNU Makeの拡張機能を用いて 257 いる). 258 259 3.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 を展開したディレクトリの下に展開する. 299 276 300 277 % cd ssp 301 278 % tar xvfz cfg-1.8.0.tar.gz 302 279 303 ܽÍCRtBM 304 [^ÌpbP[Wð¼ÌfBNgÉWJµCSSPJ[ 305 lÌ\[Xt@CðWJµ½fBNg©çV{bNNðÍÁ 306 Äàæ¢D 307 308 \[Xt@CªWJÅ«éÆCcfgfBNgÉÚ®µCRtBM 309 [ 310 VXNvgiconfigurejÅMakefileÌ«˶iMakefile.configj 311 𶬵½ãCmakeR}hÉæèRtBM 312 [^icfgvOjª\ 313 zÅ«éD 280 または,コンフィギュレータのパッケージを他のディレクトリに展開し,SSPカー 281 ネルのソースファイルを展開したディレクトリからシンボリックリンクをはっ 282 てもよい. 283 284 ソースファイルが展開できると,cfgディレクトリに移動し,コンフィギュレー 285 ションスクリプト(configure)でMakefileの環境依存部(Makefile.config) 286 を生成した後,makeコマンドによりコンフィギュレータ(cfgプログラム)が構 287 築できる. 314 288 315 289 % cd cfg … … 317 291 % make 318 292 319 ½¾µCBoostðCXg[µ½fBNg¨æѼ̪WÅzèµÄ¢ 320 éàÌÆÍá¤êÉÍCconfigureÌ--with-headers¨æÑ--with-libraries 321 IvVÉæèCwb_t@C¨æÑCuÌu©ê½fBNg 322 ðwè·éKvª éD 323 324 ܽCzXgVXeÉæÁÄÍCÅK»xðã°éƳµRpC 325 Å«È¢±ÆªmçêÄ¢éD»Ìæ¤ÈêÉÍCÅK»xðº°é©C 326 ÅK»ð}~·éæ¤ÉCMakefileðC³·éKvª éD 327 328 ȨCRtBM 329 [^Ìgpû@É¢ÄÍCuVDRtBM 330 [^ 331 Ìg¢ûvÌÍÅྷéD 332 333 3.3. TvvOÌ\zÆÀs 334 335 ÉCSSPJ[lãÅ®ì·éTvvOð\z·éû@ðྷéD 336 337 ܸCTvvOÌIuWFNgt@CðufBNgðì¬ 338 µCRtBM 339 [VXNvgðÀs·éDá¦ÎCIuWFNgt@ 340 CðufBNgðCSSPJ[lÌ\[Xt@CðWJµ½fB 341 Ng̺ÌOBJÆ¢¤¼ÌÌfBNgÉ·éêÉÍCÌR}hð 342 Às·éifBNgÌêƼÌÍCÓÉßÄæ¢jD 293 ただし,Boostをインストールしたディレクトリおよび名称が標準で想定してい 294 るものとは違う場合には,configureの--with-headersおよび--with-libraries 295 オプションにより,ヘッダファイルおよびライブラリの置かれたディレクトリ 296 を指定する必要がある. 297 298 また,ホストシステムによっては,最適化レベルを上げると正しくコンパイル 299 できないことが知られている.そのような場合には,最適化レベルを下げるか, 300 最適化を抑止するように,Makefileを修正する必要がある. 301 302 なお,コンフィギュレータの使用方法については,「7.コンフィギュレータ 303 の使い方」の章で説明する. 304 305 3.3. サンプルプログラムの構築と実行 306 307 次に,SSPカーネル上で動作するサンプルプログラムを構築する方法を説明する. 308 309 まず,サンプルプログラムのオブジェクトファイルを置くディレクトリを作成 310 し,コンフィギュレーションスクリプトを実行する.例えば,オブジェクトファ 311 イルを置くディレクトリを,SSPカーネルのソースファイルを展開したディレ 312 クトリの下のOBJという名称のディレクトリにする場合には,次のコマンドを 313 実行する(ディレクトリの場所と名称は任意に決めてよい). 343 314 344 315 % cd ssp 345 316 % mkdir OBJ 346 317 % cd OBJ 347 % perl ../configure -T <^[QbgªÌ> 348 349 ±±ÅC<^[QbgªÌ>ÍCtargetfBNg̺Éu©êÄ¢é^[Qb 350 g˶fBNg̼ÌÅ éDRtBM 351 [VXNvgÌI 352 vVÉ¢ÄÍCuTDRtBM 353 [VXNvgÌg¢ûvÌ 354 ÍÅྷéD 355 356 RtBM 357 [VXNvgÌÀsÉæèCJgfBNgÉÍC 358 TvvOð\z·é½ßÌMakefileCTvvOpÌR 359 tBM 360 [Vt@Cisample1.cfgjCTvvO{Ì 361 isample1.h¨æÑsample1.cjª¶¬³êéD 362 363 RtBM 364 [VXNvgÌÀsãCKvÅ êÎMakefileðC³· 365 éDMakefileÌC³û@É¢ÄÍCuUDMakefileÌC³û@vÌÍÅྠ366 ·éD 367 368 »ÌãCmake dependÅ˶ÖWt@CiMakefile.dependj𶬵½ãC 369 makeR}hÉæèTvvOÌ[hW 370 [iSSPÜ½Í 371 SSP.exejª¶¬Å«éD˶ÖWt@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)を生成した後, 335 makeコマンドによりサンプルプログラムのロードモジュール(SSPまたは 336 SSP.exe)が生成できる.依存関係ファイルの生成には若干時間がかかる. 372 337 373 338 % make depend 374 339 % make 375 340 376 ±±Å\zµ½TvvOisample1.hCsample1.cCsample1.cfgj 377 ÍCSSPJ[lÌî{IÈ®ìðmF·é½ßÌàÌÅ éD±ÌvO 378 ÌTvà¾ÍCsample1.cÌæªÌRgÉ éD 379 380 3.4. J[lðÖPÊÅCu»·éû@ 381 382 OßÌèÅÍCJ[lðt@CPÊÅRpCµCCu»µÄ 383 ¢½ªCJ[lÌR[hTCYðk¬·é½ßÉÍCgpµÈ¢T[rXR[ 384 ÍNµÈ¢ûª]ܵ¢D»±ÅSSPJ[lÅÍCJ[lðÖPÊ 385 ÅRpCµCCu»·éû@ðpӵĢéD 386 387 ±Ìû@ÅTvvOð\z·éÉÍCRtBM 388 [VXN 389 vgÉC»êðw¦·éIvVi-fjðtÁ·é¾¯Åæ¢D 341 ここで構築したサンプルプログラム(sample1.h,sample1.c,sample1.cfg) 342 は,SSPカーネルの基本的な動作を確認するためのものである.このプログラ 343 ムの概要説明は,sample1.cの先頭のコメントにある. 344 345 3.4. カーネルを関数単位でライブラリ化する方法 346 347 前節の手順では,カーネルをファイル単位でコンパイルし,ライブラリ化して 348 いたが,カーネルのコードサイズを縮小するためには,使用しないサービスコー 349 ルはリンクしない方が望ましい.そこでSSPカーネルでは,カーネルを関数単位 350 でコンパイルし,ライブラリ化する方法を用意している. 351 352 この方法でサンプルプログラムを構築するには,コンフィギュレーションスク 353 リプトに,それを指示するオプション(-f)を付加するだけでよい. 390 354 391 355 % mkdir OBJ_LIB 392 356 % cd OBJ_LIB 393 % perl ../configure -T <^[QbgªÌ> -f 394 395 ±±ÅCOBJ_LIBÆ¢¤fBNgÌêƼÌÍCCÓÉßÄæ¢D±ê 396 È~ÌèÍCOßƯ¶Å éD 397 398 3.5. AvP[VÆJ[lðÊXÉ\z·éû@ 399 400 OßÅྵ½û@ÅÍCAvP[VÆJ[lð¯É¶¬·é½ßC 401 IuWFNgt@CðufBNgÉñíɽÌt@Cªì¬³ê 402 ÄCµ¢ÉÈéD»±ÅCJ[lðC³·épxªá¢êÉÍCJ[ 403 lÍOÉ\zµÄ¨«CãÅAvP[V¾¯ð\z·éû@ðpÓ 404 µÄ¢éDȺÅÍCTvvOð\zðáÉC»ÌèÉ¢Äà 405 ¾·éD 406 407 ܸCJ[lð\z·éfBNgð쬵CRtBM 408 [VX 409 NvgðÀs·éDá¦ÎCJ[lð\z·éfBNgðCSSPJ[ 410 lÌ\[Xt@CðWJµ½fBNg̺ÌKERNEL_LIBÆ¢¤¼ÌÌ 411 fBNgÉ·éêÉÍCÌR}hðÀs·éifBNgÌê 412 ƼÌÍCÓÉßÄæ¢jD 357 % perl ../configure -T <ターゲット略称> -f 358 359 ここで,OBJ_LIBというディレクトリの場所と名称は,任意に決めてよい.これ 360 以降の手順は,前節と同じである. 361 362 3.5. アプリケーションとカーネルを別々に構築する方法 363 364 前節で説明した方法では,アプリケーションとカーネルを同時に生成するため, 365 オブジェクトファイルを置くディレクトリに非常に多くのファイルが作成され 366 て,扱いにくくなる.そこで,カーネルを修正する頻度が低い場合には,カー 367 ネルは事前に構築しておき,後でアプリケーションだけを構築する方法を用意 368 している.以下では,サンプルプログラムを構築を例に,その手順について説 369 明する. 370 371 まず,カーネルを構築するディレクトリを作成し,コンフィギュレーションス 372 クリプトを実行する.例えば,カーネルを構築するディレクトリを,SSPカー 373 ネルのソースファイルを展開したディレクトリの下のKERNEL_LIBという名称の 374 ディレクトリにする場合には,次のコマンドを実行する(ディレクトリの場所 375 と名称は任意に決めてよい). 413 376 414 377 % mkdir KERNEL_LIB 415 378 % cd KERNEL_LIB 416 % perl ../configure -T < ^[QbgªÌ> -f417 418 ±êÉæèCJ[lð\z·éfBNgÉCMakefileCsample1.cfgC 419 sample1.h Csample1.cª¶¬³êéªCMakefileÈOÍÀ¿IÉÍgpµÈ¢D420 421 make depend Å˶ÖWt@CiMakefile.dependj𶬵½ãCmake422 libkernel.a ÉæèJ[lCuilibkernel.ajª¶¬Å«éD379 % perl ../configure -T <ターゲット略称> -f 380 381 これにより,カーネルを構築するディレクトリに,Makefile,sample1.cfg, 382 sample1.h,sample1.cが生成されるが,Makefile以外は実質的には使用しない. 383 384 make dependで依存関係ファイル(Makefile.depend)を生成した後,make 385 libkernel.aによりカーネルライブラリ(libkernel.a)が生成できる. 423 386 424 387 % make depend 425 388 % make libkernel.a 426 389 427 ÉCAvP[Vð\z·éfBNgð쬵CRtBM 428 [ 429 VXNvgðÀs·éDá¦ÎCAvP[Vð\z·éfBN 430 gðCSSPJ[lÌ\[Xt@CðWJµ½fBNg̺ÌAPLÆ¢ 431 ¤¼ÌÌfBNgÉ·éêÉÍCÌR}hðÀs·éifBNg 432 ÌêƼÌÍCÓÉßÄæ¢jD 390 次に,アプリケーションを構築するディレクトリを作成し,コンフィギュレー 391 ションスクリプトを実行する.例えば,アプリケーションを構築するディレク 392 トリを,SSPカーネルのソースファイルを展開したディレクトリの下のAPLとい 393 う名称のディレクトリにする場合には,次のコマンドを実行する(ディレクト 394 リの場所と名称は任意に決めてよい). 433 395 434 396 % cd .. 435 397 % mkdir APL 436 398 % cd APL 437 % perl ../configure -T <^[QbgªÌ> -L ../KERNEL_LIB 438 439 ±±Å-LIvVÉÍCJ[lð\zµ½fBNgÌpXðwè·éD 440 441 ÅãÉCmake dependÅ˶ÖWt@CiMakefile.dependj𶬵½ãC 442 makeR}hÉæèTvvOÌ[hW 443 [iSSPÜ½Í 444 SSP.exejª¶¬Å«éD 399 % perl ../configure -T <ターゲット略称> -L ../KERNEL_LIB 400 401 ここで-Lオプションには,カーネルを構築したディレクトリのパスを指定する. 402 403 最後に,make dependで依存関係ファイル(Makefile.depend)を生成した後, 404 makeコマンドによりサンプルプログラムのロードモジュール(SSPまたは 405 SSP.exe)が生成できる. 445 406 446 407 % make depend 447 408 % make 448 409 449 ±ÌèÅÍCAvP[V\zÉÍJ[lÌÄ\zªKv©`Fb 450 NµÈ¢½ßCJ[lÌ\[XR[hðC³µ½êÉÍCJ[lð\z 451 µ½fBNgÅmake libkernel.aðÄÀs·éKvª éD 452 453 ÈãÅÍCJ[lÆAvP[VðÊXÌfBNgÅ\zµ½ªC 454 -L IvVÉJgfBNgi½¾µC"."Æ¢¤LqÅÍsÂjðw455 è·é±ÆÅCJ[lÆAvP[Vð¯¶fBNgÅÊXÉ\z 456 ·é±ÆàÅ«éDïÌIÉÍCÌèÆÈéD 410 この手順では,アプリケーション構築時にはカーネルの再構築が必要かチェッ 411 クしないため,カーネルのソースコードを修正した場合には,カーネルを構築 412 したディレクトリでmake libkernel.aを再実行する必要がある. 413 414 以上では,カーネルとアプリケーションを別々のディレクトリで構築したが, 415 -Lオプションにカレントディレクトリ(ただし,"."という記述では不可)を指 416 定することで,カーネルとアプリケーションを同じディレクトリで別々に構築 417 することもできる.具体的には,次の手順となる. 457 418 458 419 % mkdir OBJ 459 420 % cd OBJ 460 % perl ../configure -T < ^[QbgªÌ> -L ../OBJ421 % perl ../configure -T <ターゲット略称> -L ../OBJ 461 422 % make depend 462 423 % make libkernel.a … … 464 425 % make 465 426 466 ±±ÅCmake cleankernelÍCJ[lCu𶬷é½ßÌÔt@ 467 Cðí·éàÌÅ éD±ÌèÅÍCmake dependÉæèJ[lC 468 uÉÖ·é˶ÖW𶬵Ȣ½ßCJ[lÌ\[XR[hðC³µ 469 ½êÉÍCK¸make cleankerneliܽÍCmake cleanjµÄ©çCmake 470 libkernel.a·éKvª éÌÅÓ·é±ÆD 471 472 ȨCmake realclean·éÆCmake dependÆmakeÉæ趬µ½t@Cð· 473 ×Äí·éD»êÉεÄCmake cleanÅÍCmake dependÉæ趬µ½Ë 474 ¶ÖWt@CÍíµÈ¢D 475 476 477 SDfBNg\¬Et@C\¬ 478 479 4.1. zzpbP[WÌfBNg\¬ 480 481 include/ AvP[Vü¯wb_t@C 482 kernel/ J[l\[Xt@C 483 syssvc/ VXeT[rXwb_t@CC\[Xt@C 484 target/ ^[Qbg˶ 485 arch/ ^[Qbg˶̤ʪ 486 gcc/ GCCJ«˶ 487 pdic/ PDICifoCXhCoÌOSñ˶ªj 488 utils/ [eBeBvO 489 sample/ TvvOÆMakefile 490 doc/ hL 491 g 492 extension/ g£pbP[W 493 494 4.2. ^[Qbgñ˶Ìt@C\¬ 495 496 ^[Qbgñ˶ieXgvOÆg£pbP[WÍjÌet@C 497 ÌTvÍÌÊèD 498 499 README.txt TOPPERS/SSPJ[lÌÈPÈÐî 500 configure RtBM 501 [VXNvgiGNUJ«pj 502 MANIFEST ÂÊpbP[WÌt@CXg 427 ここで,make cleankernelは,カーネルライブラリを生成するための中間ファ 428 イルを削除するものである.この手順では,make dependによりカーネルライ 429 ブラリに関する依存関係を生成しないため,カーネルのソースコードを修正し 430 た場合には,必ずmake cleankernel(または,make clean)してから,make 431 libkernel.aする必要があるので注意すること. 432 433 なお,make realcleanすると,make dependとmakeにより生成したファイルをす 434 べて削除する.それに対して,make cleanでは,make dependにより生成した依 435 存関係ファイルは削除しない. 436 437 438 4.ディレクトリ構成・ファイル構成 439 440 4.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 454 4.2. ターゲット非依存部のファイル構成 455 456 ターゲット非依存部(テストプログラムと拡張パッケージは除く)の各ファイ 457 ルの概要は次の通り. 458 459 README.txt TOPPERS/SSPカーネルの簡単な紹介 460 configure コンフィギュレーションスクリプト(GNU開発環境用) 461 MANIFEST 個別パッケージのファイルリスト 503 462 504 463 include/ 505 kernel.h SSP J[lðgp·é½ßÌè`506 sil.h VXeC^tF[XCðgp·é½ßÌè`507 t_stddef.h TOPPERS ¤Êwb_t@C508 itron.h ITRON dl¤ÊKèÌf[^^EèE}N464 kernel.h SSPカーネルを使用するための定義 465 sil.h システムインタフェースレイヤを使用するための定義 466 t_stddef.h TOPPERS共通ヘッダファイル 467 itron.h ITRON仕様共通規定のデータ型・定数・マクロ 509 468 510 469 kernel/ 511 Makefile.kernel J[lÌt@C\¬Ìè` 512 kernel_impl.h J[lÀpWwb_t@C 513 kernel_int.h kernel_cfg.cpÌwb_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 RtBM 518 [^ÌÃIAPIe[u 519 kernel_def.csv RtBM 520 [^Ìlæ¾V{e[u 521 kernel.tf RtBM 522 [^ÌpX2Ìev[gt@C 523 kernel_check.tf RtBM 524 [^ÌpX3Ìev[gt@C 525 allfunc.h ·×ÄÌÖðRpC·é½ßÌè` 526 check.h G[`FbNp}N 527 startup.c J[lÌú»ÆI¹ 528 task.h ^XNì[`ÖAÌè` 529 task.c ^XNì[` 530 task_manage.c ^XNÇ@\ 531 sys_manage.c VXeóÔÇ@\ 532 interrupt.h ÝÇ@\ÖAÌè` 533 interrupt.c ÝÇ@\ 534 exception.h CPUáOÇ@\ÖAÌè` 535 exception.c CPUáOÇ@\ 536 queue.h L 537 [ìCuðgp·é½ßÌè` 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 キュー操作ライブラリを使用するための定義 538 492 539 493 syssvc/ 540 banner.h J[lN®bZ[WÌoÍ̽ßÌè` 541 banner.c J[lN®bZ[WÌoÍ 542 banner.cfg J[lN®bZ[WÌoÍÌRtBM 543 [ 544 Vt@C 545 serial.h VAC^tF[XhCoðgp·é½ßÌè` 546 serial.c VAC^tF[XhCo 547 serial.cfg VAhCoÌRtBM 548 [Vt@C 549 syssvc_def.csv VXeT[rXÌRtBM 550 [VÌÛÉKvÈ 551 RtBM 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 コンフィギュレータの値取得シンボルテーブル 553 503 554 504 arch/gcc/ 555 MANIFEST ÂÊpbP[WÌt@CXg556 tool_stddef.h t_stddef.h ÌJ«˶iGCCpj505 MANIFEST 個別パッケージのファイルリスト 506 tool_stddef.h t_stddef.hの開発環境依存部(GCC用) 557 507 558 508 utils/ 559 applyrename t@CÉl[ðKp560 genrename l[wb_t@C̶¬561 makedep ˶ÖWXg̶¬iGNUJ«pj562 makerelease [XpbP[W̶¬509 applyrename ファイルにリネームを適用 510 genrename リネームヘッダファイルの生成 511 makedep 依存関係リストの生成(GNU開発環境用) 512 makerelease リリースパッケージの生成 563 513 564 514 sample/ 565 Makefile TvÌMakefileiGNUJ«pj 566 sample1.h TvvO(1)ÉÖ·éè` 567 sample1.c TvvO(1) 568 sample1.cfg TvvO(1)ÌRtBM 569 [Vt@C 515 Makefile サンプルのMakefile(GNU開発環境用) 516 sample1.h サンプルプログラム(1)に関する定義 517 sample1.c サンプルプログラム(1) 518 sample1.cfg サンプルプログラム(1)のコンフィギュレーションファイル 570 519 571 520 extension/ 572 alarm.h A[nh@\ÖAÌè` 573 alarm.c A[nh@\ 574 cyclic.h üúnh@\ÖAÌè` 575 cyclic.c üúnh@\ 576 dataqueue.h f[^L 577 [@\ÖAÌè` 578 dataqueue.c f[^L 579 [@\ 580 time_event.h ^CCxgÇÖAÌè` 581 eventflag.h CxgtOÖAÌè` 582 eventflag.c CxgtO@\ 583 time_event.c ^CCxgÇ 584 time_manage.c VXeÇ@\ 585 MANIFEST g£pbP[WÌt@CXg 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 拡張パッケージのファイルリスト 586 533 587 534 doc/ 588 user.txt [U[Y}j 589 A 590 ssp_spec.txt TOPPERS/SSPJ[lÌdlTv 591 extension.txt @\g£E` 592 [jOKCh 593 porting.txt ^[Qbg˶ |[eBOKCh 594 configurator.txt RtBM 595 [^dl 596 version.txt ÏXð 597 598 599 TDRtBM 600 [VXNvgÌg¢û 601 602 RtBM 603 [VXNvgiconfigurejÍCSSPJ[l¨æÑAv 604 P[VvOð\z·é½ßÉKvÈî{IÈRtBM 605 [V 606 ðs¤½ßÌvOÅ éD 607 608 SSPJ[lðp¢ÄAvP[Vð쬷éêÉÍCܸIuWFNg 609 t@CðufBNgð쬵C»ÌfBNgÅRtBM 610 [ 611 VXNvgðÀs·éDIuWFNgt@CðufBNgÌê 612 ƼÌÍCCÓÉßÄæ¢D 613 614 RtBM 615 [VXNvgÉηéIvVÍÌÊèD 616 617 -T <^[QbgªÌ> 618 ^[QbgVXe̼ÌðCtargetfBNg̺Éu©êÄ¢ 619 é^[Qbg˶fBNg̼ÌÅwè·éiK{jD 620 621 -A <AvP[VvO¼> 622 AvP[VvO̼Ìðwè·éDȪµ½êÉÍC 623 TvvOisample1jÆÈéD 624 625 -a <AvP[VÌfBNg¼> 626 AvP[VvOÌ\[Xt@CiVXeRtBM 627 628 [Vt@Cðjðu¢½fBNg¼ðwè·éDÈ 629 ªµ½êÉÍCIuWFNgt@CðufBNgÉu©ê 630 Ä¢é±Æð¼è·éDVXeRtBM 631 [Vt@CÍC 632 IuWFNgt@CðufBNgÉu±ÆD 633 634 -U <IuWFNgt@C¼> 635 AvP[VvOÌCÌIuWFNgt@Ci-A 636 Åwèµ½AvP[VvO¼É".o"ðtÁµ½àÌjÈ 637 OÉCN·×«IuWFNgt@C̼ÌðC".o"ðtÁµ½ 638 `Åwè·éD""ÅÍÞ±ÆÉæÁÄC¡Ìt@Cðwè·é± 639 ÆàÂ\Å éi-UIvVð¡gÁÄÍÈçÈ¢jD 640 641 -L <J[lCuÌfBNg¼> 642 OÉ\zµ½J[lCuilibkernel.ajðp¢ÄCAv 643 P[VÌÝð\z·éêÉÍC±ÌIvVÉJ[lC 644 uÌu©ê½fBNg¼ðwè·éD±ÌIvVÌgp 645 áÉ¢ÄÍCu3.5 AvP[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 543 5.コンフィギュレーションスクリプトの使い方 544 545 コンフィギュレーションスクリプト(configure)は,SSPカーネルおよびアプ 546 リケーションプログラムを構築するために必要な基本的なコンフィギュレーショ 547 ンを行うためのプログラムである. 548 549 SSPカーネルを用いてアプリケーションを作成する場合には,まずオブジェクト 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 方法」の節を参照すること. 647 584 648 585 -f 649 J[lðÖPÊÅRpCµCu»·éêÉC±ÌI650 vVðwè·éD±ÌIvVÌgpáÉ¢ÄÍCu3.4 J[651 lðÖPÊÅCu»·éû@vÌßðQÆ·é±ÆD652 653 -D <SSP J[lÌ\[XfBNg¼>654 SSP J[lÌ\[Xt@Cðu¢½fBNg¼ðwè·éDÈ655 ªµ½êÉÍCconfigureÌu©êÄ¢éfBNgÆÈéD656 657 -l < vO~O¾ê>658 AvP[VvOÌvO~O¾êðwè·éD»659 _ÅÍCcÆc++ÌÝðT|[gµÄ¢éD660 661 -t < ev[gfBNg¼>662 Makefile âTvvOÌev[gÌu©ê½fBNg663 ¼ðwè·éDȪµ½êÉÍCSSPJ[lÌ\[Xt@Cð664 u¢½fBNg̺ÌsamplefBNgÆÈéD665 666 -m < ev[gMakefile¼>667 Makefile Ìev[gÆ·ét@C¼ðwè·éDȪµ½ê668 ÉÍCMakefileÆÈéD669 670 -d < Às«¼>671 ^[QbgVXeãÅÌvOÌÀs«iÈ¢µÍCfob672 O«j̼Ìðwè·éD±ÌIvVðwè·éÆCÀs«673 ðwè·éV{iTOPPERS_<fobO«¼>jª}Nè`³ê674 éDȪµ½êÉÍCÀs«ðwè·éV{Í}Nè`³675 êÈ¢D586 カーネルを関数単位でコンパイルしライブラリ化する場合に,このオ 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 れない. 676 613 677 614 -r 678 g[XOL^ÌTvR[hðLøÉ·éêÉC±ÌIvV 679 ðwè·éD±ÌIvVÌgpáÉ¢ÄÍCu11.5 g[X 680 OL^ÌTvR[hÌgpû@vÌßðQÆ·é±ÆD 681 682 -p <perlÌpX¼> 683 perlÌpX¼ðwè·éDȪµ½êÉÍC/usr/local/binÆ 684 /usr/binðTõµCperlÌpX¼ðè·éD 685 686 -g <RtBM 687 [^ÌpX¼> 688 RtBM 689 [^icfgjÌpX¼ðwè·éDȪµ½êÉÍC 690 ftHgÌpX¼iSSPJ[lÌ\[XfBNgÌºÌ 691 cfg/cfg/cfgjÆÈéD 692 693 RtBM 694 [VXNvgªs¤ÍÌÊèÅ éD 695 696 (1) Makefile̶¬ 697 698 ev[gfBNgiftHgÅÍCsamplej©çKØÈMakefileð 699 IðµCKvÈÓð«·¦ÄCMakefile𶬷éD 700 701 (2) TvvO̶¬ 702 703 wèµ½AvP[VvOªev[gfBNgÉ éêC 704 KØÈAvP[VvOÌ\[Xt@CðIðµCKvÈÓð 705 «·¦ÄCAvP[VvOÌ\[Xt@Ciá¦ÎC 706 sample1.hCsample1.cCsample1.cfgj𶬷éD 707 708 (3) RtBM 709 [^ªpÓÅ«Ä¢é©Ì`FbN 710 711 RtBM 712 [^icfgjÌÀst@Cª é©`FbNµCt@CªÈ 713 ¢êÉÍC»Ì|ðoÍ·éD 714 715 716 UDMakefileÌC³û@ 717 718 OÌÍÅྵ½æ¤ÉCRtBM 719 [VXNvgÉ^¦éIvV 720 ©çMakefileª¶¬³êéªCRtBM 721 [VXNvgÅÎ 722 Å«È¢êÉÍCMakefileð¼ÚC³·éKvª éD±±ÅÍCMakefile 723 ÌÅCC³ªKvÆÈéÂ\«Ì¢ÓÉ¢ÄྷéD 724 725 ȨCMakefileðC³µ½ãÉRtBM 726 [VXNvgðÄÀs· 727 éÆCC³µ½Makefileªã«³êĵܤÌÅÓ·é±Æiâà̪ 728 Makefile.bakÉÛ¶³êéjD 729 730 6.1. MakefileÌÏè` 731 732 (A) ^[QbgªÌ 733 734 TARGETÉÍC^[QbgVXe̼ÌðCtargetfBNg̺Éu©ê 735 Ä¢é^[Qbg˶fBNg̼ÌÅwè·éD±Ìè`ÍCÊíÍC 736 RtBM 737 [VXNvgÉηé-TIvVÉæès¤D 738 739 (B) IuWFNgt@CÌg£q 740 741 Cygwin«ÅRpC·éÉÍCOBJEXTð"exe"Éè`·éKvª éD± 742 êÍCCygwin«ÅÍC[hW 743 [Ìt@C¼Ég£q".exe"ªtÁ 744 ³êéÌÉηé½ßÌàÌÅ éDCygwin«Šé±Æð»èÅ«êÎC 745 RtBM 746 [VXNvgª±Ìè`ðs¤D 747 748 (C) Às«i^[Qbg˶j 749 750 ^[QbgÉæÁÄÍCÀs«ÉεÄ^[Qbg˶ÌR[hð·µ 751 ·¦éêª éD±êðÂ\É·é½ßÉCÀs«̼ÌðDBGENVÉè` 752 µÄ¢éD±Ìè`ÍCÊíÍCRtBM 753 [VXNvgÉη 754 é-DIvVÉæès¤DÇÌ^[QbgªÇÌÀs«ÉÎµÄ¢é© 755 ÍC^[Qbg˶Ì[U[Y}j 756 AðQÆ·é±ÆD 757 758 (D) J[lCuÌfBNg¼ 759 760 KERNEL_LIBÉÍCJ[lCuÌu©ê½fBNg¼ðè`·éD 761 ±Ìè`ÍCÊíÍCRtBM 762 [VXNvgÉηé-LIvV 763 Éæès¤D 764 765 (E) J[lðÖPÊÅRpC·é©Ç¤© 766 767 KERNEL_FUNCOBJSÍCJ[lðÖPÊÅRpC·éêÉÍtrueÉè` 768 µCt@CPÊÅRpC·éêÉÍ¢è`Æ·éD±Ìè`ÍCÊí 769 ÍCRtBM 770 [VXNvgÉηé-fIvVÉæès¤D 771 772 (F) ¤ÊRpCIvV 773 774 ·×ÄÌvOɤʷéRpCIvVÌÇÁªKvÈêÉÍC 775 ºÌÏÌè`ðÏX·éD»ÌRpCIvVªCÁèÌ^[Qbg 776 ÅíÉKvÈêÉÍC^[Qbg˶Ìè`ðüê½Makefile.targetðC 777 ³·×«Å éD 778 779 CDEFS RpCÉηé-DIvVðLq·éD 780 INCLUDES RpCÉηé-IIvVðLq·éD 781 COPTS RpCÉηé»Ì¼ÌIvVðLq·éD 782 LDFLAGS JÉηéIvVðLq·éD 783 LIBS CuN̽ßÌIvVðLq·éD 784 785 ÇÁÌÂ\«Ì éRpCIvVÉ¢ÄÍCu6.2 RpCIv 786 VvÌßðQÆ̱ÆD 787 788 (G) AvP[VvO¼ 789 790 APPLNAMEÉÍCAvP[VvO¼ðè`·éDVXeRtB 791 M 792 [Vt@C¼ÍCAPPLNAMEÉè`µ½¼OÉg£q".cfg"ðtÁ 793 µ½¼OÆ·éDܽCAvP[VÌCt@CÍCAPPLNAMEÉè 794 `µ½¼OÉg£q".c"ðtÁµ½¼OÆ·éD±Ìè`ÍCÊíÍCRtB 795 M 796 [VXNvgÉηé-AIvVÉæès¤D 797 798 (H) AvP[VÌfBNg¼ 799 800 AvP[VÌ\[Xt@CðCIuWFNgt@CðuÌÆÍÊ 801 ÌfBNgÉuêÉÍCAPPLDIRÉ»ÌfBNg¼ðè`·éD± 802 Ìè`ÍCÊíÍCRtBM 803 [VXNvgÉηé-aIvV 804 Éæès¤DAvP[VÌ\[Xt@CðufBNgª¡ 805 éêÉÍCAPPL_DIRÌè`ðÏX·é±ÆÅηéD 806 807 (I) AvP[VÌvOt@C¼ 808 809 AvP[Vª¡Ì\[Xt@CÅ\¬³êéêÉÍC»ÌIuWF 810 Ngt@C¼ðCAPPL_ASMOBJSCAPPL_COBJSCAPPL_CXXOBJSÉñ·éD 811 812 (J) AvP[VÌRpCIvV 813 814 AvP[VÌRpCÉKvÈRpCIvVâCAvP[ 815 VªCuðKvÆ·éêÉÍCAPPL_CFLAGS¨æÑAPPL_LIBSÉè 816 `·éD 817 818 (K) [hW 819 [Ìt@C¼ 820 821 WÌ[hW 822 [Ìt@C¼ðOBJNAMEÉè`·éDftHgÍSSP 823 Å éD 824 825 (L) ^[Qbgt@CÌè` 826 827 ^[Qbg"all"Ì˶t@CƵÄC[hW 828 [Ì`®ðwè·éD 829 ïÌIÉÍCELF`®ÌÍ$(OBJFILE)CoCi`®ÌÍ$(OBJNAME).binC 830 g[ S`®ÌÍ$(OBJNAME).srecðwè·éD$(OBJFILE)ÍCCygwin 831 «ÅOBJEXTð"exe"Éè`µ½ÉÍ$(OBJNAME).exeC»¤ÅÈ¢êÉÍ 832 $(OBJNAME)ÆÈéD 833 834 (M) makedepÌIvVÌè` 835 836 Cygwin«Å[gfBNgª"cygdrive"ÅÈ¢êÉÍCmakedepÌ-RI 837 vVÅ[gfBNg¼ð^¦éKvª éDmakedepÌIvVÍ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 書き換えて,アプリケーションプログラムのソースファイル(例えば, 640 sample1.h,sample1.c,sample1.cfg)を生成する. 641 642 (3) コンフィギュレータが用意できているかのチェック 643 644 コンフィギュレータ(cfg)の実行ファイルがあるかチェックし,ファイルがな 645 い場合には,その旨を出力する. 646 647 648 6.Makefileの修正方法 649 650 前の章で説明したように,コンフィギュレーションスクリプトに与えるオプショ 651 ン等からMakefileが生成されるが,コンフィギュレーションスクリプトで対応 652 できない場合には,Makefileを直接修正する必要がある.ここでは,Makefile 653 の中で,修正が必要となる可能性の高い箇所について説明する. 654 655 なお,Makefileを修正した後にコンフィギュレーションスクリプトを再実行す 656 ると,修正したMakefileが上書きされてしまうので注意すること(古いものが 657 Makefile.bakに保存される). 658 659 6.1. Makefileの変数定義 660 661 (A) ターゲット略称 662 663 TARGETには,ターゲットシステムの名称を,targetディレクトリの下に置かれ 664 ているターゲット依存部ディレクトリの名称で指定する.この定義は,通常は, 665 コンフィギュレーションスクリプトに対する-Tオプションにより行う. 666 667 (B) オブジェクトファイルの拡張子 668 669 Cygwin環境でコンパイルする時には,OBJEXTを"exe"に定義する必要がある.こ 670 れは,Cygwin環境では,ロードモジュールのファイル名に拡張子".exe"が付加 671 されるのに対応するためのものである.Cygwin環境であることを判定できれば, 672 コンフィギュレーションスクリプトがこの定義を行う. 673 674 (C) 実行環境(ターゲット依存) 675 676 ターゲットによっては,実行環境に対応してターゲット依存部のコードを差し 677 換える場合がある.これを可能にするために,実行環境の名称をDBGENVに定義 678 している.この定義は,通常は,コンフィギュレーションスクリプトに対す 679 る-Dオプションにより行う.どのターゲットがどの実行環境に対応しているか 680 は,ターゲット依存部のユーザーズマニュアルを参照すること. 681 682 (D) カーネルライブラリのディレクトリ名 683 684 KERNEL_LIBには,カーネルライブラリの置かれたディレクトリ名を定義する. 685 この定義は,通常は,コンフィギュレーションスクリプトに対する-Lオプショ 686 ンにより行う. 687 688 (E) カーネルを関数単位でコンパイルするかどうか 689 690 KERNEL_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 712 APPLNAMEには,アプリケーションプログラム名を定義する.システムコンフィ 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 752 Cygwin環境でルートディレクトリが"cygdrive"でない場合には,makedepの-Rオ 753 プションでルートディレクトリ名を与える必要がある.makedepのオプションは, 754 次の例のように,MAKEDEP_OPTSに定義する. 839 755 840 756 MAKEDEP_OPTS = -R cygdrive 841 757 842 6.2. RpCIvV 843 844 SSPJ[lÌR[hÉÍCassert}NªgíêÄ¢éDassert}NÍC 845 NDEBUGðè`·é±ÆÅCIuWFNgR[h©çÁ·±ÆªÅ«éDJ[ 846 lÌfobOªI¹·êÎC-DNDEBUGðwèµÄRpCµ½ûªø¦ª 847 æÈéD 848 849 ^[Qbg˶ɨ¢ÄCRpCIvVÉ-WerrorixðG[µ 850 ¢·éjðwèµÄ¢éêª éD»Ìæ¤È^[Qbgɨ¢ÄCAv 851 P[VÅxªð¯çêÈ¢êÉÍC^[Qbg˶ðC³µÄR 852 pCIvVðí·éKvª éD 853 854 855 VDRtBM 856 [^Ìg¢û 857 858 RtBM 859 [^icfgjÍCTOPPERSV¢ãJ[ldlÌ2.12.5ß 860 ÌLqÌÊèC3ÂÌpXÅ\¬³êéD 861 862 RtBM 863 [^ÍCVXeRtBM 864 [Vt@C¼ðp[ 865 ^ÉæèCȺÌIvVðÂidvÈàÌÌÝjD 758 6.2. コンパイルオプション 759 760 SSPカーネルのコード中には,assertマクロが使われている.assertマクロは, 761 NDEBUGを定義することで,オブジェクトコード中から消すことができる.カー 762 ネルのデバッグが終了すれば,-DNDEBUGを指定してコンパイルした方が効率が 763 よくなる. 764 765 ターゲット依存部において,コンパイルオプションに-Werror(警告をエラー扱 766 いする)を指定している場合がある.そのようなターゲットにおいて,アプリ 767 ケーションで警告が避けられない場合には,ターゲット依存部を修正してコン 768 パイルオプションを削除する必要がある. 769 770 771 7.コンフィギュレータの使い方 772 773 コンフィギュレータ(cfg)は,TOPPERS新世代カーネル統合仕様書の2.12.5節 774 の記述の通り,3つのパスで構成される. 775 776 コンフィギュレータは,システムコンフィギュレーションファイル名をパラメー 777 タに取り,以下のオプションを持つ(重要なもののみ). 866 778 867 779 --help 868 IvVÌXgÆà¾ð\¦·éD 869 870 -vm--versionn 871 RtBM 872 [^Ìo[Wð\¦·éD 873 874 -km--kerneln<J[l¼> 875 J[l̼Ìðwè·éDftHgÍSSPD 876 877 -pm--passn<pXÔ> 878 pXÔðwè·éD1`3Ì¢¸ê©D 879 880 -Im--include-pathn<CN[hpX¼> 881 INCLUDEfBNeBuɨ¢ÄCCN[h·éRtBM 882 [ 883 Vt@CðT·pX¼ðwè·éD 884 885 -Tm--template-filen<ev[gt@C¼> 886 ev[gt@C̼Ìðwè·éDpX2ÆpX3ÅLøD 887 888 --api-table <ÃIAPIe[ut@C¼> 889 ÃIAPIe[uÌt@C¼ðwè·éD 890 891 --cfg1-def-table <læ¾V{e[ut@C¼> 892 læ¾V{e[uÌt@C¼ðwè·éD 893 894 -rm--rom-imagen<[hW 895 [¼> 896 [hW 897 [ðSR[htH[}bgÌ`ÉÏ·µ½t@CÌ 898 ¼Ìðwè·éDpX3ÅÌÝLøD 899 900 -s [--symbol-table] <V{t@C¼> 901 [hW 902 [ÌeV{ÆAhXÌÎ\ðÜÞV{ 903 t@C̼Ìðwè·éDpX3ÅÌÝLøD 904 905 --id-output-file <IDÔoÍt@C¼> 906 SSPJ[lÅÍgpµÄÍÈçÈ¢BÚ×Íconfigurator.txtÌ 907 uJ[l\¬Eú»t@Cikernel_cfg.cjvÌ(5)ðQÆ̱ÆB 908 909 --id-input-file <IDÔüÍt@C¼> 910 SSPJ[lÅÍgpµÄÍÈçÈ¢BÚ×Íconfigurator.txtÌ 911 uJ[l\¬Eú»t@Cikernel_cfg.cjvÌ(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)を参照のこと。 912 819 913 820 --external-id 914 IuWFNgÌIDÔðÛ·éÏÌè`𶬷éDpX2ÅÌÝ 915 LøD 916 917 -Mm--print-dependenciesn<^[QbgV{> 918 VXeRtBM 919 [Vt@CÌ˶ÖWðoÍ·éD 920 MakefileÌ˶ÖW𶬷éÛÉp¢éD 921 922 RtBM 923 [^ÌÚ×dlÉ¢ÄÍCÊrPDFt@CÌ`ÅzzµÄ¢ 924 éuTOPPERSV¢ãJ[lpRtBM 925 [^dlvðQÆ·é±ÆD 926 927 928 WDVXeT[rX 929 930 931 8.1. VAC^tF[XhCo 932 933 VAC^tF[XhCoÍCVA|[g𵤽ßÌhCoÅ 934 éD 935 936 VAC^tF[XhCoÍCVXeRtBM 937 [Vt@C 938 Åserial.cfgðCN[h·é±ÆÅCVXeÉgÝޱƪūéD 939 VAC^tF[XhCoðÄÑo·\[Xt@CÅÍCserial.hð 940 CN[h·éD 941 942 8.1.1. VAC^tF[XhCoÌT[rXR[ 943 944 VAC^tF[XhCoðÄÑo·T[rXR[ÌdlÍÌÊè 945 Å éD±ÌÅCVA|[gÌIDÔiportidjÌðßÍ^[QbgË 946 ¶ÆÈéD 947 948 ±êçÌT[rXR[ÍCñ^XNReLXg©çÄÑo·±ÆÍÅ«È 949 ¢DܽCserial_rea_datÆserial_wri_datÍCfBXpb`Û¯óÔÅÄÑ 950 o·±ÆÍÅ«È¢D¢¸êàCÄÑoµ½êÉÍE_CTXG[ÆÈéD 821 オブジェクトのID番号を保持する変数の定義を生成する.パス2でのみ 822 有効. 823 824 -M[--print-dependencies]<ターゲットシンボル> 825 システムコンフィギュレーションファイルの依存関係を出力する. 826 Makefile中の依存関係を生成する際に用いる. 827 828 コンフィギュレータの詳細仕様については,別途PDFファイルの形で配布してい 829 る「TOPPERS新世代カーネル用コンフィギュレータ仕様」を参照すること. 830 831 832 8.システムサービス 833 834 835 8.1. シリアルインタフェースドライバ 836 837 シリアルインタフェースドライバは,シリアルポートを扱うためのドライバで 838 ある. 839 840 シリアルインタフェースドライバは,システムコンフィギュレーションファイ 841 ルでserial.cfgをインクルードすることで,システムに組み込むことができる. 842 シリアルインタフェースドライバを呼び出すソースファイルでは,serial.hを 843 インクルードする. 844 845 8.1.1. シリアルインタフェースドライバのサービスコール 846 847 シリアルインタフェースドライバを呼び出すサービスコールの仕様は次の通り 848 である.この中で,シリアルポートのID番号(portid)の解釈はターゲット依 849 存となる. 850 851 これらのサービスコールは,非タスクコンテキストから呼び出すことはできな 852 い.また,serial_rea_datとserial_wri_datは,ディスパッチ保留状態で呼び 853 出すことはできない.いずれも,呼び出した場合にはE_CTXエラーとなる. 951 854 952 855 (1) ER serial_opn_por(ID portid) 953 856 954 portid Åwè³ê½VA|[gðI[vµCóM^MªÂ\ÈóÔÉ955 ·éD 857 portidで指定されたシリアルポートをオープンし,受信/送信が可能な状態に 858 する. 956 859 957 860 (2) ER serial_cls_por(ID portid) 958 861 959 portid Åwè³ê½VA|[gðN[Y·éD862 portidで指定されたシリアルポートをクローズする. 960 863 961 864 (3) ER_UINT serial_rea_dat(ID portid, char *buf, uint_t len) 962 865 963 portid Åwè³ê½VA|[g©çClenoCg̶ñðóMµCbuf©964 çÌÌæÉüêéDVA|[gÌóMobt@Éi[³êÄ¢éoCgª 965 len oCgæèÈ¢êCæ¾Â\Èf[^ðbufÉi[µ½ç¦ÀÉ^[966 ·éDóMµ½¶Ü½ÍG[R[hðÔ·D 866 portidで指定されたシリアルポートから,lenバイトの文字列を受信し,bufか 867 らの領域に入れる.シリアルポートの受信バッファに格納されているバイト数が 868 len バイトより少ない場合,取得可能なデータをbufに格納したら即座にリターン 869 する.受信した文字数またはエラーコードを返す. 967 870 968 871 (4) ER_UINT serial_wri_dat(ID portid, const char *buf, uint_t len) 969 872 970 portid Åwè³ê½VA|[gÉCbuf©çÌlenoCg̶ñðM·971 éDMÉVA|[gÌMobt@ªtÉÈÁ½êC»Ì_Å 972 ¦ÀÉ^[·éDMµ½¶Ü½ÍG[R[hðÔ·D 873 portidで指定されたシリアルポートに,bufからのlenバイトの文字列を送信す 874 る.送信中にシリアルポートの送信バッファがフルになった場合,その時点で 875 即座にリターンする.送信した文字数またはエラーコードを返す. 973 876 974 877 (5) ER serial_ctl_por(ID portid, uint_t ioctl) 975 878 976 portid Åwè³ê½VA|[ģäîñðCioctlŦ³êélÉÝè·977 éD 978 979 ioctl ÉÍCȺ̧äîñð\·èðCrbgÉ_aðÆÁ½àÌð980 wè·éD 981 982 IOCTL_ECHO iGR[obN[hj983 ±ÌrbgðÝè·éÆCVAC^tF[XhCoªGR[984 obNðs¤DïÌIÉÍCobt@©ç¶ðæèo·xÉC»Ì985 ¶ð«o·D986 987 IOCTL_CRLF iüs[hj988 LF iline feedjð«o·ÆCCRicarriage returnj{LFÉÏ·µ989 Ä«o·D990 991 992 ȨCI[v¼ãÌftHgÌÝèlÍ(IOCTL_ECHO | IOCTL_CRLF)Å éD 993 994 995 8.1.2. VAC^tF[XhCo̻̼ÌT[rX996 997 VAC^tF[XhCoÍCOLÌT[rXR[ÉÁ¦ÄCú» 998 Æ¢M¶ÌæoµðÂDú»ÍCJ[lÉú»[ 999 `ƵÄo^·éDܽC^[Qbg˶ÅCú»CI¹C 1000 ÝT[rX[`ðÂD±êçÌo^Íserial.cfgÉÜÜêéD 879 portidで指定されたシリアルポートの制御情報を,ioctlで示される値に設定す 880 る. 881 882 ioctlには,以下の制御情報を表す定数を,ビット毎に論理和をとったものを 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 898 8.1.2. シリアルインタフェースドライバのその他のサービス 899 900 シリアルインタフェースドライバは,前記のサービスコールに加えて,初期化 901 処理と未送信文字の取出し処理を持つ.初期化処理は,カーネルに初期化ルー 902 チンとして登録する.また,ターゲット依存で,初期化処理,終了処理,割込 903 みサービスルーチンを持つ.これらの登録処理はserial.cfgに含まれる. 1001 904 1002 905 (1) void serial_initialize(intptr_t exinf) 1003 906 1004 VAC^tF[XhCoðú»·éDJ[lÉú»[`Æ 1005 µÄo^·éDexinfͳ·éD 907 シリアルインタフェースドライバを初期化する.カーネルに初期化ルーチンと 908 して登録する.exinfは無視する. 1006 909 1007 910 (2) bool_t serial_get_chr(ID portid, char *p_c) 1008 911 1009 portidÅwè³ê½VA|[gÌMobt@̶ðCp_cÌw·Ôn 1010 ÉæèoµCtrueðÔ·ÖD¶ªÈ©Á½ÉÍCfalseðÔ·DI¹ 1011 [`ÅÄÑo·±ÆðzèµÄ¢éD 1012 1013 1014 8.2. J[lN®bZ[WÌoÍ 1015 1016 J[lN®bZ[WÌoÍÍCJ[lÌN®ÉCJ[l̼Ìâo[ 1017 WÔCì \¦ÈÇðoÍ·é½ßÌ@\Å éD 1018 1019 J[lN®bZ[WÌoÍÍCVXeRtBM 1020 [Vt@C 1021 Åbanner.cfgðCN[h·é±ÆÅCVXeÉgÝޱƪūéD 1022 1023 J[lN®bZ[WÌoÍÍCÌÖÅ\¬³êéD 912 portidで指定されたシリアルポートの送信バッファ中の文字を,p_cの指す番地 913 に取り出し,trueを返す関数.文字がなかった時には,falseを返す.終了処理 914 ルーチン中で呼び出すことを想定している. 915 916 917 8.2. カーネル起動メッセージの出力 918 919 カーネル起動メッセージの出力は,カーネルの起動時に,カーネルの名称やバー 920 ジョン番号,著作権表示などを出力するための機能である. 921 922 カーネル起動メッセージの出力は,システムコンフィギュレーションファイル 923 でbanner.cfgをインクルードすることで,システムに組み込むことができる. 924 925 カーネル起動メッセージの出力は,次の関数で構成される. 1024 926 1025 927 (1) void print_banner(intptr_t exinf) 1026 928 1027 VXeO@\ðp¢ÄCJ[lN®bZ[WðoÍ·éDbanner.cfg 1028 ÉæÁÄCJ[lÉú»[`ƵÄo^³êéDexinfͳ³êéD 1029 1030 1031 XDT|[gCu 1032 1033 T|[gCuÍCAvP[VâVXeT[rXð쬷é½ß 1034 ÉpÅ«éCuÖQÅ éD 1035 1036 1037 9.1. L 1038 [ìCuÖ 1039 1040 L 1041 [ìCuÍCL 1042 [wb_ðÜÞO\¢Ì_uNL 1043 [ 1044 ðµ¤CuÅ éDL 1045 [wb_ÌGgÍL 1046 [ÌæªÌGg 1047 COGgÍL 1048 [ÌöÌGgÆ·éDܽCL 1049 [ÌæªÌG 1050 gÌOGgÆCL 1051 [ÌöÌGgÌGgÍCL 1052 [wb_ 1053 Æ·éDóÌL 1054 [ÍCGgCOGgÆ੪©gðw·L 1055 [wb 1056 _Å çí·D 1057 1058 L 1059 [ìCuÖðp¢éêÉÍCqueue.hðCN[h·éD 1060 1061 L 1062 [wb_ÆGg̽ßÌf[^\¢ÆµÄCQUEUE\¢Ìðp¢éD 1063 QUEUE\¢ÌÌè`ÍÌÊèDQUEUE^ÌÏÍzñƵÄè`·é±ÆðOñÆ 1064 µÄ¢éD 929 システムログ機能を用いて,カーネル起動メッセージを出力する.banner.cfg 930 によって,カーネルに初期化ルーチンとして登録される.exinfは無視される. 931 932 933 9.サポートライブラリ 934 935 サポートライブラリは,アプリケーションやシステムサービスを作成するため 936 に利用できるライブラリ関数群である. 937 938 939 9.1. キュー操作ライブラリ関数 940 941 キュー操作ライブラリは,キューヘッダを含むリング構造のダブルリンクキュー 942 を扱うライブラリである.キューヘッダの次エントリはキューの先頭のエント 943 リ,前エントリはキューの末尾のエントリとする.また,キューの先頭のエン 944 トリの前エントリと,キューの末尾のエントリの次エントリは,キューヘッダ 945 とする.空のキューは,次エントリ,前エントリとも自分自身を指すキューヘッ 946 ダであらわす. 947 948 キュー操作ライブラリ関数を用いる場合には,queue.hをインクルードする. 949 950 キューヘッダとエントリのためのデータ構造として,QUEUE構造体を用いる. 951 QUEUE構造体の定義は次の通り.QUEUE型の変数は配列として定義することを前提と 952 している. 1065 953 1066 954 typedef struct … … 1070 958 } QUEUE; 1071 959 1072 QUEIDX ÍQUEUE^ÌzñÌCfbNXlð\·f[^^Å éD960 QUEIDXはQUEUE型の配列のインデックス値を表すデータ型である. 1073 961 1074 962 typedef uint8_t QUEIDX; 1075 963 1076 964 1077 L 1078 [ì̽ßÉpӵĢéÖÍÌÊèD 965 キュー操作のために用意している関数は次の通り. 1079 966 1080 967 (1) queue_initialize(QUEUE *queue , QUEIDX queue_null) 1081 968 1082 L 1083 [ðú»·éDqueueÉÍL 1084 [wb_ðCqueue_nullÉÍ 1085 ³øÈL 1086 [wb_ð¦·CfbNXlðwè·éD 969 キューを初期化する.queueにはキューヘッダを,queue_nullには 970 無効なキューヘッダを示すインデックス値を指定する. 1087 971 1088 972 (2) queue_insert_prev(QUEUE *top , QUEIDX queue , QUEIDX entry) 1089 973 1090 queueÅwè·éGgÌOÉCentryÅwè·éGgð}ü·éD 1091 topÍqueueCentryðÜÞQUEUE^zñÌæªAhXÅ éD 1092 queueÉL 1093 [wb_ðwèµ½êÉÍCL 1094 [ÌöÉp_entryÅwè· 1095 éGgð}ü·é±ÆÉÈéD 974 queueで指定するエントリの前に,entryで指定するエントリを挿入する. 975 topはqueue,entryを含むQUEUE型配列の先頭アドレスである. 976 queueにキューヘッダを指定した場合には,キューの末尾にp_entryで指定す 977 るエントリを挿入することになる. 1096 978 1097 979 (3) queue_delete_next(QUEUE *top , QUEIDX queue) 1098 980 1099 queueÅwè·éGgÌÌGgðíµCíµ½GgÌ 1100 L 1101 [zñÌCfbNXðÔ·D 1102 topÍqueueCentryðÜÞQUEUE^zñÌæªAhXÅ éD 981 queueで指定するエントリの次のエントリを削除し,削除したエントリの 982 キュー配列中のインデックスを返す. 983 topはqueue,entryを含むQUEUE型配列の先頭アドレスである. 1103 984 1104 985 (6) queue_empty(QUEUE *queue , QUEIDX queue_null) 1105 986 1106 L 1107 [ªóÌêÉÍtrueC»¤ÅÈ¢êÉÍfalseðÔ·DqueueÉÍ 1108 L 1109 [wb_ðCqueue_nullÉͳøÈL 1110 [wb_ð¦·CfbNXlð 1111 wè·éD 1112 1113 1114 PODgpãÌÓÆqg 1115 1116 10.1. ^C}hCoÌgÝ 1117 1118 ^C}hCoðVXeÉgÝÞ½ßÉCVXeRtBM 1119 [V 1120 t@CÌæªÅtarget_timer.cfgðCN[h·éKvª éD 1121 1122 10.2. assert}NÌ 1123 1124 SSPJ[lÌR[hÉÍCassert}NªgíêÄ¢éDassert}NÌè 1125 `Ít_stddef.hÉÜÜêCassertª¸sµ½êÌÅãÌiÊíÍCv 1126 Oðâ~³¹éjÍC^[Qbg˶ÌTOPPERS_assert_abortÅ 1127 è³êéD 1128 1129 assertª¸sµ½êCVXeJÍfobKÉƷ̪]ܵ¢ªC 1130 VXeÒÌÎ@ÍCVXeÉηévÉ˶·éD»±ÅC^[ 1131 Qbg˶ÌTOPPERS_assert_abortðCVXevÉvµ½KØÈ 1132 Éu«·¦éKvª éDVXevÉæÁÄÍCNDEBUGðè`µÄassert 1133 }NÌðIuWFNgR[h©çÁ·iu6.2 RpCIvVv 1134 ÌßðQÆjû@àl¦çêéD 1135 1136 1137 10.3. IuWFNgIDÌÇ 1138 1139 TOPPERS/SSPJ[lÅÍCIuWFNgÌIDÔðCRtBM 1140 [^ª 1141 èt¯éû@ªî{ÆÈÁÄ¢éD 1142 1143 AvP[VvOÅIuWFNgÌIDÔðQÆ·éêÉÍC 1144 Ì2ÂÌû@ªl¦çêéD 1145 1146 (1) IuWFNg¯Ê¼ðp¢é 1147 1148 IuWFNg¶¬Ì½ßÌÃIAPIiCRE_YYYjÌæ1p[^ÉLqµ½Iu 1149 WFNg¯Ê¼ðCAvP[VvOÅàp¢éû@D 1150 1151 RtBM 1152 [^ÍCIuWFNg¯Ê¼ðCèt¯½IDÔÉ}Nè 1153 `·éC¾êvvZbTÌfBNeBui#definejðkernel_cfg.hɶ 1154 ¬·é½ßCAvP[VvO©çkernel_cfg.hðCN[h· 1155 éKvª éD 1156 1157 ±Ìû@ÍCIuWFNgR[hÉIDÔª¼ÚßÜêé½ßÉÀsø 1158 ¦ªÇ¢êûÅCRtBM 1159 [^ªÀs³êÄkernel_cfg.hª«·íé 1160 xÉCAvP[VvOÌÄRpCªKvÉÈéÆ¢¤_ª 1161 éD»Ì½ßCAvP[VvOð\¬·ét@CÌÅCê 1162 Ìt@CÌÝÅIuWFNg¯Ê¼ðQÆ·é\¬É·éÆ¢Á½Hvð 1163 ·é±Æª]ܵ¢D 1164 1165 (2) IuWFNgÌIDÔðÛ·éÏðp¢é 1166 1167 IuWFNgÌIDÔðÛ·éconst®«ðtÁµ½ÏðpÓµCAvP[ 1168 VvOÅÍC»ÌÏðp¢éû@D 1169 1170 á¦ÎCTASK1Æ¢¤IuWFNg¯Ê¼Ì^XNÉεÄCÌæ¤ÈÏð 1171 pÓ·éD 987 キューが空の場合にはtrue,そうでない場合にはfalseを返す.queueには 988 キューヘッダを,queue_nullには無効なキューヘッダを示すインデックス値を 989 指定する. 990 991 992 10.使用上の注意とヒント 993 994 10.1. タイマドライバの組込み 995 996 タイマドライバをシステムに組み込むために,システムコンフィギュレーショ 997 ンファイルの先頭でtarget_timer.cfgをインクルードする必要がある. 998 999 10.2. assertマクロの処理 1000 1001 SSPカーネルのコード中には,assertマクロが使われている.assertマクロの定 1002 義はt_stddef.hに含まれ,assertが失敗した場合の最後の処理(通常は,プロ 1003 グラムを停止させる処理)は,ターゲット依存部のTOPPERS_assert_abortで決 1004 定される. 1005 1006 assertが失敗した場合,システム開発中はデバッガに落とすのが望ましいが, 1007 システム稼働時の対処法は,システムに対する要件に依存する.そこで,ター 1008 ゲット依存部のTOPPERS_assert_abortを,システム要件に合致した適切な処理 1009 に置き換える必要がある.システム要件によっては,NDEBUGを定義してassert 1010 マクロの処理をオブジェクトコード中から消す(「6.2 コンパイルオプション」 1011 の節を参照)方法も考えられる. 1012 1013 1014 10.3. オブジェクトIDの管理 1015 1016 TOPPERS/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 用意する. 1172 1046 1173 1047 const ID TASK1_id = TASK1; 1174 1048 1175 AvP[VvOÅÍC±ÌÏiTASK1_idjðp¢é±ÆÅC 1176 RtBM 1177 [^ªÀs³êÄkernel_cfg.hª«·íéxÉCãLÌÏ 1178 è`ðÜñ¾t@CÌÝðÄRpC·êÎ梱ÆÉÈéD 1179 1180 ±Ìû@ÍCAvP[VvOÌÄRpCðŬÀÉÅ«é 1181 _ª éêûÅCÏ̽ßÌÌæªKvÉÈé±ÆÉÁ¦ÄCiv 1182 ZbTÉæÁÄÍjÏANZX̽ßÌI[owbhª¶¶éÆ¢¤_ª 1183 éDܽCèÅÍÈÏÅ é±Æ©çC¼ÌÏÌú»ÉÍg¦È 1184 ¢Æ¢¤§Àª éD 1185 1186 ȨCTOPPERS/SSPJ[lÌRtBM 1187 [^ÍC--external-idIvV 1188 ðtÁ·é±ÆÉæèCãLÌÏè`ðkernel_cfg.cɶ¬·é@\ð 1189 ÁÄ¢éÌÅC·×ÄÌIuWFNgIDð±Ìû@ÅQÆ·éêÉÍC± 1190 Ì@\ðp¢é±Æð§·éD 1191 1192 RtBM 1193 [^ÉæéIDÔt¯Ìà¤1ÂÌÛèƵÄCRtBM 1194 1195 [Vt@CÌC³ÉæèCIuWFNgIDÌt¯ªÏíÁĵܤ 1196 ±Æª°çêéD±êÍCAvP[V\tgEFAÌÝvdlÉID 1197 ÔªLÚ³êÄ¢éêâCfobOìÆɨ¢ÄIDÔð¦lƵÄ\¦ 1198 âmFªÅ«È¢êÉCìÆø¦ðẳ¹éÂ\«ªl¦çêéD 1199 1200 ±ÌâèÉηé½ßÉCTOPPERSV¢ãJ[lpRtBM 1201 [^ÉÍC 1202 IDÔÌt¯Êðt@CÉ«o·@\i--id-output-fileIvVj 1203 ÆCIDÔÌt¯ðt@C©çæèÞ@\i--id-input-fileIvVj 1204 ƪpÓ³êÄ¢éD½¾µSSPJ[lÌêC»_ÅÍ®ìãÌâèª è 1205 gp·é±ÆªÅ«È¢DÚ×Í configurator.txt ÌuJ[l\¬Eú 1206 »t@Cikernel_cfg.cjvÌ (5) ðQÆ̱ÆD 1207 1208 10.4. J[lÌàV{Ìl[ 1209 1210 SSPJ[lÅÍCW 1211 [à̼̪¼ÌW 1212 [à̼ÌÆÕË· 1213 é±Æðð¯é½ßÉCJ[lÌàV{ÍCC¾êxÅC檪 1214 "_kernel_"ܽÍ"_KERNEL_"Å é¼ÌƵĢéD 1215 1216 ±êð\[XR[hÌÂǫƼ§³¹é½ßÉCSSPJ[lÅÍC\[XR[ 1217 hÍ©RȼOðp¢ÄLqµCC¾êvvZbTÌ}Nè`i#definej 1218 ðp¢ÄC»êð"_kernel_"ܽÍ"_KERNEL_"ÅnÜé¼Oi©RȼOª 1219 yyyyyÌêÉÍC_kernel_yyyyyjÉl[·édgÝðp¢Ä¢éD 1220 1221 ïÌIÉÍCÖA·éfBNgÉxxx_rename.defðu«C»±©çl[ 1222 ̽ßÌwb_t@Cixxx_rename.h¨æÑxxx_unrename.hj𶬷é 1223 c[iutils/genrenamejðpӵĢéD 1224 1225 ±ÌdgÝÍC\[XR[hÌÂÇ«üãÉð§ÂêûÅC¾Qà éDᦠ1226 ÎC½ÌfobKÅC\[XR[h̼ÌÆIuWFNgR[hÌ¼Ì 1227 ªÙÈé½ßÉC\[XR[hÌϼðwèµÄlðÇñ¾èCÖ¼ð 1228 wèµÄu[N|CgðuÆ¢Á½±ÆªÅ«È¢D 1229 1230 ±ÌóµÉηé½ßÉCSSPJ[lÅÍC\[XR[hÌY·é¼Ì 1231 ðl[·é½ßÌ[eBeBiutils/applyrenamejðpӵĢéD 1232 applyrename[eBeBÉCl[è`t@Cixxx_rename.defjÌv 1233 tBbNXixxx̪jÆCl[µ½¢t@CXgð^¦éÆC 1234 l[ðsȤDá¦ÎCkernelfBNgÌ·×ÄÌt@CÉε 1235 ÄCJ[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新世代カーネル用コンフィギュレータには, 1071 ID番号の割付け結果をファイルに書き出す機能(--id-output-fileオプション) 1072 と,ID番号の割付けをファイルから取り込む機能(--id-input-fileオプション) 1073 とが用意されている.ただしSSPカーネルの場合,現時点では動作上の問題があり 1074 使用することができない.詳細は configurator.txt の「○カーネル構成・初期 1075 化ファイル(kernel_cfg.c)」の (5) を参照のこと. 1076 1077 10.4. カーネルの内部シンボルのリネーム 1078 1079 SSPカーネルでは,モジュール内部の名称が他のモジュール内部の名称と衝突す 1080 ることを避けるために,カーネルの内部シンボルは,C言語レベルで,先頭が 1081 "_kernel_"または"_KERNEL_"である名称としている. 1082 1083 これをソースコードの可読性と両立させるために,SSPカーネルでは,ソースコー 1084 ドは自然な名前を用いて記述し,C言語プリプロセッサのマクロ定義(#define) 1085 を用いて,それを"_kernel_"または"_KERNEL_"で始まる名前(自然な名前が 1086 yyyyyの場合には,_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)を用意している. 1099 applyrenameユーティリティに,リネーム定義ファイル(xxx_rename.def)のプ 1100 リフィックス(xxxの部分)と,リネームしたいファイルリストを与えると,リ 1101 ネーム処理を行なう.例えば,kernelディレクトリのすべてのファイルに対し 1102 て,カーネルの内部シンボルをリネームするには,次のコマンドを実行すれば 1103 よい. 1237 1104 1238 1105 % cd kernel 1239 1106 % ../utils/applyrename kernel * 1240 1107 1241 ܽC^[Qbg˶ÌfBNgÌ·×ÄÌt@CÉεÄCJ[l 1242 ÌàV{ðl[·éÉÍCÌæ¤ÈR}hðÀs·êÎæ¢D 1108 また,ターゲット依存部のディレクトリのすべてのファイルに対して,カーネ 1109 ルの内部シンボルをリネームするには,次のようなコマンドを実行すればよい. 1243 1110 1244 1111 % cd target/cq_starm_gcc/ … … 1246 1113 % ../../utils/applyrename ../../kernel/kernel * 1247 1114 1248 10.5. VXeÌN®Ìú» 1249 1250 VXeÌN®ÉAvP[VÅKvÆÈéú»ðs¤½ßÌ@ 1251 \ƵÄú»[`ªpÓ³êÄ¢éªCú»[`ªÀs³êéæ 1252 èà¢^C~OÅÀs·é±ÆªKvÈú»ª éêª éD 1253 1254 ±Ìæ¤ÈêÉp¢é½ßÉCWIÈX^[gAbvW 1255 [©çC^[ 1256 QbgVXe˶Ìú»tbNihardware_init_hookjðÄÑo·±ÆÆ 1257 µÄ¢éDhardware_init_hookÍCJ[lÌ^[Qbg˶ÅpÓ³êÄ 1258 ¢é̪WÅ éªC±êðAvP[VÅpÓµ½àÌÉu«·¦C 1259 »ÌÅAvP[VÅKvÆÈéú»ðs¤±ÆªÅ«éD 1260 1261 ½¾µChardware_init_hookÌ쬷éêÉÍCbssZNVÆdataZNV 1262 ªú»³êĢȢ±ÆâCCuªú»³êĢȢ±ÆCC¾ê 1263 ÅLqÅ«éÆÍÀçÈ¢±ÆÈÇÉÓªKvÅ éDì¬É ½ÁÄÍC 1264 u^[Qbg˶ |[eBOKChvðQÆ·é±ÆD 1265 1266 J[lÌX^[gAbvW 1267 [ªhardware_init_hookðÄÑo·æ¤É 1268 À³êĢȢêÉÍCX^[gAbvW 1269 [ðAvP[VÅ 1270 pÓµ½àÌÉu«·¦éû@ð§·éD 1271 1272 PPDQlîñ 1273 1274 11.1. pðÆpñ 1275 1276 SSPJ[lÌpðÍCet@CÌæªÉ\¦³êÄ¢éDì ÍCe 1277 t@CÌæªÉ\¦³êÄ¢éì ÒªÛLµÄ¢éD 1278 1279 pðÌ(3)Ì(b)ɨ¢ÄCpÌ`ÔðTOPPERSvWFNgÉñ·éû 1280 @ƵÄÍCSSPJ[lðpµ½»i̼ÌÆpªìC»i»µ½ïм 1281 ÆÆíÌîñðCȺÌURLÌy[W©çñ·éàÌÆ·éD 1115 10.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 1136 11.参考情報 1137 1138 11.1. 利用条件と利用報告 1139 1140 SSPカーネルの利用条件は,各ファイルの先頭に表示されている.著作権は,各 1141 ファイルの先頭に表示されている著作権者が保有している. 1142 1143 利用条件の(3)の(b)において,利用の形態をTOPPERSプロジェクトに報告する方 1144 法としては,SSPカーネルを利用した製品の名称と応用分野,製品化した会社名 1145 と業種等の情報を,以下のURLのページから報告するものとする. 1282 1146 1283 1147 http://www.toppers.jp/report.html 1284 1148 1285 ܽ»ÌÛÉCSSPJ[lðgpµÄÌRgâ²Ó©à¢½¾¯éÆK¢ 1286 Å éD 1287 1288 11.2. ÛØEKp«ET|[g1289 1290 SSP J[lͳÛØÅñ³êÄ¢éàÌÅ éDJÒ¨æÑTOPPERSv1291 WFNgÍCSSPJ[lÉÖµÄCÁèÌgpÚIÉηéK«àÜßÄC 1292 ¢©ÈéÛØàsíÈ¢DܽCSSPJ[lÌpÉæè¼ÚIܽÍÔÚI 1293 ɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D 1294 1295 JÒ¨æÑTOPPERSvWFNgÍCSSPJ[lÉÖ·éT|[gÌñ©Í 1296 µÄ¢È¢DSSPJ[lÉֵĿ⪠éêÍCãqÌTOPPERS[U[ 1297 Y[OXgðpµÄ¢½¾¯éÆK¢Å éDmÀÈT|[gªK 1298 vÈêÉÍCLÅT|[gT[rXðñµÄ¢éïÐÉk³ê½¢D 1299 1300 11.3. oO|[g1301 1302 SSP J[lÉoOââè_ð©³ê½êÉÍCãqÌTOPPERS[U[Y1303 [OXgÉñµÄ~µ¢D 1304 1305 [OXgÉoOââè_ÈÇðñ·éêÉÍCKvɶÄÌ 1306 îñðmç¹Ä~µ¢D 1307 1308 gpµÄ¢éJ[lÉÖ·éîñ1309 E^[Qbgñ˶Ìo[W1310 EgpµÄ¢é^[Qbg˶ƻÌo[W1311 ETOPPERSvWFNg©çÌ[XÉηéü¢Ói êÎj1312 1313 ^[QbgVXeÉÖ·éîñ1314 E^[QbgvZbTÌíÞ1315 E^[Qbg{[hÌíÞ1316 1317 zXgÉÖ·éîñ1318 EOSÌo[WiT[rXpbNÌKpóµàj1319 ERpCÈÇÌJ«Ìo[WiCygwinÌo[Wàj1320 1321 11.4. EFuTCg1322 1323 TOPPERS vWFNgÌEFuTCgÍCȺÌURLÉ éD1149 またその際に,SSPカーネルを使用してのコメントやご意見もいただけると幸い 1150 である. 1151 1152 11.2. 保証・適用性・サポート 1153 1154 SSPカーネルは無保証で提供されているものである.開発者およびTOPPERSプロ 1155 ジェクトは,SSPカーネルに関して,特定の使用目的に対する適合性も含めて, 1156 いかなる保証も行わない.また,SSPカーネルの利用により直接的または間接的 1157 に生じたいかなる損害に関しても,その責任を負わない. 1158 1159 開発者およびTOPPERSプロジェクトは,SSPカーネルに関するサポートの約束は 1160 していない.SSPカーネルに関して質問がある場合は,後述のTOPPERSユーザー 1161 ズメーリングリストを利用していただけると幸いである.確実なサポートが必 1162 要な場合には,有償でサポートサービスを提供している会社に相談されたい. 1163 1164 11.3. バグレポート 1165 1166 SSPカーネルにバグや問題点を発見された場合には,後述のTOPPERSユーザーズ 1167 メーリングリストに報告して欲しい. 1168 1169 メーリングリストにバグや問題点などを報告する場合には,必要に応じて次の 1170 情報を知らせて欲しい. 1171 1172 使用しているカーネルに関する情報 1173 ・ターゲット非依存部のバージョン 1174 ・使用しているターゲット依存部とそのバージョン 1175 ・TOPPERSプロジェクトからのリリースに対する改造箇所(あれば) 1176 1177 ターゲットシステムに関する情報 1178 ・ターゲットプロセッサの種類 1179 ・ターゲットボード等の種類 1180 1181 ホストに関する情報 1182 ・OSのバージョン(サービスパックの適用状況も) 1183 ・コンパイラなどの開発環境のバージョン(Cygwinのバージョンも) 1184 1185 11.4. ウェブサイト 1186 1187 TOPPERSプロジェクトのウェブサイトは,以下のURLにある. 1324 1188 1325 1189 http://www.toppers.jp/ 1326 1190 1327 TOPPERS vWFNgâSSPJ[lÉÖ·éÅVîñÍC±ÌEFuTCg©1328 ç¾é±ÆªÅ«éDܽCSSPJ[lÌÅVÅÍC±ÌEFuTCg©ç_ 1329 E[h·é±ÆªÅ«éD 1330 1331 11.5. TOPPERS [U[Y[OXg1332 1333 SSP J[lðÜÞTOPPERSvWFNgÌJ¬Ê¨Ì[UÉηéîññ1334 ¨æÑ[UÝÔÌîñð·ðeÕÉ·é½ßÉCTOPPERS[U[Y[ 1335 OXgiusers@toppers.jpjðpӵĢéD 1336 1337 ±Ì[OXgÉÍCNÅà©RÉo^µC[ðt·é±ÆªÅ 1338 «éio^ÒÈOÍ[ðtÅ«È¢jDܽCt³ê½[ÍCN 1339 Åà©RÉEFuTCgÅÇޱƪūéD 1340 1341 [OXgÖÌo^û@É¢ÄÍCȺÌURLÌy[WÉྪ éD 1191 TOPPERSプロジェクトやSSPカーネルに関する最新情報は,このウェブサイトか 1192 ら得ることができる.また,SSPカーネルの最新版は,このウェブサイトからダ 1193 ウンロードすることができる. 1194 1195 11.5. TOPPERSユーザーズメーリングリスト 1196 1197 SSPカーネルを含むTOPPERSプロジェクトの開発成果物のユーザに対する情報提 1198 供およびユーザ相互間の情報交換を容易にするために,TOPPERSユーザーズメー 1199 リングリスト(users@toppers.jp)を用意している. 1200 1201 このメーリングリストには,誰でも自由に登録し,メールを送付することがで 1202 きる(登録者以外はメールを送付できない).また,送付されたメールは,誰 1203 でも自由にウェブサイトで読むことができる. 1204 1205 メーリングリストへの登録方法については,以下のURLのページに説明がある. 1342 1206 1343 1207 http://www.toppers.jp/community.html 1344 1208 1345 11.6. TOPPERS vWFNgÌoü¯ÌT[rX1346 1347 TOPPERS vWFNgÌoÉεÄÍCãLÉÁ¦ÄCSSPJ[lÉÖA1348 µÄÌT[rXðpӵĢéD 1349 1350 (1) TOPPERS JÒ[OXg1351 1352 TOPPERS vWFNgÌoÍCSSPJ[lÉÖ·é¿âCoOââè_È1353 ÇÌñÉCTOPPERSJÒ[OXgidev@toppers.jpjðp·é± 1354 ƪūéD 1355 1356 (2) SSP J[lÌJxTCg1357 1358 SSP J[lÌJx̽ßÌTRACioOgbLOVXejªCȺÌ1359 URL É éiTRACÖÌANZXÉÍCïõpX[hªKvÅ éjD1209 11.6. TOPPERSプロジェクトのメンバ向けのサービス 1210 1211 TOPPERSプロジェクトのメンバに対しては,上記に加えて,SSPカーネルに関連 1212 して次のサービスを用意している. 1213 1214 (1) TOPPERS開発者メーリングリスト 1215 1216 TOPPERSプロジェクトのメンバは,SSPカーネルに関する質問,バグや問題点な 1217 どの報告に,TOPPERS開発者メーリングリスト(dev@toppers.jp)を利用するこ 1218 とができる. 1219 1220 (2) SSPカーネルの開発支援サイト 1221 1222 SSPカーネルの開発支援のためのTRAC(バグトラッキングシステム)が,以下の 1223 URLにある(TRACへのアクセスには,会員パスワードが必要である). 1360 1224 1361 1225 http://dev.toppers.jp/trac/ssp_core 1362 1226 1363 TOPPERS vWFNgÌoÍC±ÌTCg©çCEFuC^tF[X¨æ1364 ÑsubversionT[oÉæèCSSPJ[lÌJÌo[Wð¾é±ÆªÅ 1365 «éDܽCoOgbLOf[^x[XÉANZX·é±ÆªÅ«Cß 1366 ÌoOðÖÌANZXâCoOÌo^ð·é±ÆªÅ«éD 1367 1368 11.7. TOPPERS vWFNgÖÌQÁ1369 1370 TOPPERS vWFNgÅÍC½©çÌ`ÅvWFNgÉv£µÄ¢½¾¯éûC1371 vWFNgÅJµ½\tgEFAð¨g¢ÌûCvWFNgÉ»¡ð¨ 1372 ¿ÌûÌQÁðßÄ¢éDTOPPERSvWFNgÖÌQÁû@É¢ÄÍC 1373 ȺÌy[WÉྪ éD 1227 TOPPERSプロジェクトのメンバは,このサイトから,ウェブインタフェースおよ 1228 びsubversionサーバにより,SSPカーネルの開発中のバージョンを得ることがで 1229 きる.また,バグトラッキングデータベースにアクセスすることができ,過去 1230 のバグ履歴へのアクセスや,バグの登録をすることができる. 1231 1232 11.7. TOPPERSプロジェクトへの参加 1233 1234 TOPPERSプロジェクトでは,何からの形でプロジェクトに貢献していただける方, 1235 プロジェクトで開発したソフトウェアをお使いの方,プロジェクトに興味をお 1236 持ちの方の参加を求めている.TOPPERSプロジェクトへの参加方法については, 1237 以下のページに説明がある. 1374 1238 1375 1239 http://www.toppers.jp/joinus.html 1376 1240 1377 1241 1378 PQDt@X 1379 1380 12.1. T[rXR[ê1381 1382 (1) ^XNÇ@\1242 12.リファレンス 1243 1244 12.1. サービスコール一覧 1245 1246 (1) タスク管理機能 1383 1247 1384 1248 ER ercd = act_tsk(ID tskid) 1385 1249 ER ercd = iact_tsk(ID tskid) 1386 1250 1387 (2) VXeóÔÇ@\1251 (2) システム状態管理機能 1388 1252 1389 1253 ER ercd = loc_cpu(void) … … 1400 1264 ER ercd = ext_ker(void) 1401 1265 1402 (3) ÝÇ@\1266 (3) 割込み管理機能 1403 1267 1404 1268 ER ercd = dis_int(INTNO intno) 1405 1269 ER ercd = ena_int(INTNO intno) 1406 1270 1407 12.2. ÃIAPIê1408 1409 (1) ^XNÇ@\1271 12.2. 静的API一覧 1272 1273 (1) タスク管理機能 1410 1274 1411 1275 CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task, … … 1413 1277 DEF_EPR(ID tskid,{ PRI etskpri }) 1414 1278 1415 (2) ÝÇ@\1279 (2) 割込み管理機能 1416 1280 1417 1281 ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri }) … … 1419 1283 CFG_INT(INTNO intno, { ATR intatr, PRI intpri }) 1420 1284 1421 (3) CPU áOÇ@\1285 (3) CPU例外管理機能 1422 1286 1423 1287 DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr }) 1424 1288 1425 (4) VXe\¬Ç@\1289 (4) システム構成管理機能 1426 1290 1427 1291 DEF_ICS({ SIZE istksz, STK_T *istk }) … … 1430 1294 ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn }) 1431 1295 1432 12.3. o[Wð 1433 1434 2011N 331ú Release 1.0.0 ú[X 1435 2011N1116ú Release 1.1.0 ÅÌêÊ[X 1436 2011N 323ú Release 1.1.1 y÷ÈC³ÆoOtBbNX 1437 2013N 423ú Release 1.2.0 ^XNÌN®vL 1438 [CO@\ÌÇÁ 1439 DEF_ICSÌdlÏX 1440 DEF_STKÌÇÁ 1441 ¯úEÊM@\g£pbP[WÌÇÁ 1442 2014N 3 6ú Release 1.2.1 oOtBbNX 1443 2015N 519ú Release 1.3.0 1444 1445 Èã 1296 12.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 以上 -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.