- Timestamp:
- Jun 2, 2015, 3:39:53 PM (9 years ago)
- Location:
- ssp_qb_r5f100le_cs/trunk/target/qb_r5f100le_cs/ssp_rl78/sample1/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_qb_r5f100le_cs/trunk/target/qb_r5f100le_cs/ssp_rl78/sample1/src/sample1.c
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 10 10 * Nagoya Municipal Industrial Research Institute, JAPAN 11 11 * 12 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 13 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 14 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 15 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 16 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 17 * XR[hÉÜÜêĢ鱯D 18 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 19 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 20 gip 21 * Ò}j 22 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 23 * Ì³ÛØKèðfÚ·é±ÆD 24 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 25 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 26 * ÆD 27 * (a) Äzzɺ¤hL 28 gipÒ}j 29 AÈÇjÉCãLÌ 30 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 31 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 32 * ñ·é±ÆD 33 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 34 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 35 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 36 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 37 * ÆÓ·é±ÆD 12 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 14 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 15 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 16 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 17 * スコード中に含まれていること. 18 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 19 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 20 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 21 * の無保証規定を掲載すること. 22 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 23 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 24 * と. 25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 26 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 28 * 報告すること. 29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 30 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 31 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 32 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 33 * 免責すること. 38 34 * 39 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨40 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI41 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF42 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»43 * ÌÓCðíÈ¢D35 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 36 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 37 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 38 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 39 * の責任を負わない. 44 40 * 45 41 */ 46 42 47 43 /* 48 * TOPPERS/SSP ÌTvvO49 * 50 * SSP J[lÌî{IÈ®ìðmF·é½ßÌTvvOD51 * 52 * vOÌTv:53 * 54 * [UC^tF[Xðó¯ÂC^XNÆC3ÂÌÀsÀs³êé55 * ^XNÆÅ\¬³êéD^XNID¨æÑDæxÝèÍȺÌÊèD56 * ( ^XNID) (N®Dæx) (ÀsDæx)57 * MAIN_TASK MAIN_PRIORITY ( ¶É¯¶)58 * TASK1 TASK1_PRIORITY ( ¶É¯¶)59 * TASK2 TASK2_PRIORITY ( ¶É¯¶)44 * TOPPERS/SSPのサンプルプログラム 45 * 46 * SSPカーネルの基本的な動作を確認するためのサンプルプログラム. 47 * 48 * プログラムの概要: 49 * 50 * ユーザインタフェースを受け持つメインタスクと,3つの並行実行される 51 * タスクとで構成される.タスクIDおよび優先度設定は以下の通り. 52 * (タスクID) (起動時優先度) (実行時優先度) 53 * MAIN_TASK MAIN_PRIORITY (左に同じ) 54 * TASK1 TASK1_PRIORITY (左に同じ) 55 * TASK2 TASK2_PRIORITY (左に同じ) 60 56 * TASK3 TASK3_PRIORITY TASK3_EXEPRIORITY 61 57 * 62 * ܽCN®üúª2bÌüúnhiüúnhID: CYC1j¨æÑ 63 * C^XNN®pÌüúnh(üúnhID: MAIN_CYC)ðp¢éD 64 * 65 * ÀsÀs³êé^XNÍCtask_loopñó[vðÀs·éxÉC^XNª 66 * ÀsŠ鱯ð çí·bZ[Wð\¦·éDó[vðÀs·é 67 * ÌÍCó[vȵÅbZ[WðoÍ·éÆC½ÊÌbZ[WªoÍ 68 * ³êCvOÌ®ìªmFµ¸çÈé½ßÅ éDܽCá¬ÈV 69 * A|[gðp¢ÄbZ[WðoÍ·éêÉC·×ÄÌbZ[W 70 * ªoÍū鿤ÉCbZ[WÌÊð§À·éÆ¢¤Rà éD 71 * 72 * üúnh(CYC1)ÍCN®µ½±Æð¦·bZ[Wð\¦·éD 73 * vOÌN®¼ãÍCüúnh(CYC1)Íâ~óÔÉÈÁÄ¢éD 74 * 75 * C^XNÍCüúnh(MAIN_CYC)©ç100~b²ÆÉN®³êC 76 * VAI/O|[g©ç̶üÍðs¢CüÍ³ê½ 77 * ¶Éε½ðÀs·éDüͳ꽶ÆÌÖWÍÌÊèD 78 * 'Q'ªüͳêéÆCvOðI¹·éD 79 * 80 * '1' : ÎÛ^XNðTASK1ÉØè·¦éiúÝèjD 81 * '2' : ÎÛ^XNðTASK2ÉØè·¦éD 82 * '3' : ÎÛ^XNðTASK3ÉØè·¦éD 83 * 'a' : ÎÛ^XNðact_tskÉæèN®·éD 84 * 'e' : ÎÛ^XNðÖÌ^[ÉæèI¹³¹éD 85 * 'c' : üúnhð®ìJn³¹éD 86 * 'C' : üúnhð®ìâ~³¹éD 87 * 'b' : A[nhð5bãÉN®·é椮ìJn³¹éD 88 * 'B' : A[nhð®ìâ~³¹éD 89 * 'z' : ÎÛ^XNÉCPUáOð¶³¹éi^XNðI¹³¹éjD 90 * 's' : CxgtO(ID:FLG1)ÉY^XNÉÖA·érbgðZbg·éD 91 * 'l' : ·×ÄÌ^XNÖA·éCxgtO(ID:FLG1)ÌrbgðNA·éD 92 * 'p' : |[OÅCxgtO(FLG1)ðÒÂD 93 * 'd' : |[OÅf[^L 94 [(ID:DTQ1)Öf[^ðM·éD 95 * 'r' : |[OÅf[^L 96 [(ID:DTQ1)©çf[^ðóM·éD 58 * また,起動周期が2秒の周期ハンドラ(周期ハンドラID: CYC1)および 59 * メインタスク起動用の周期ハンドラ(周期ハンドラID: MAIN_CYC)を用いる. 60 * 61 * 並行実行されるタスクは,task_loop回空ループを実行する度に,タスクが 62 * 実行中であることをあらわすメッセージを表示する.空ループを実行する 63 * のは,空ループなしでメッセージを出力すると,多量のメッセージが出力 64 * され,プログラムの動作が確認しずらくなるためである.また,低速なシ 65 * リアルポートを用いてメッセージを出力する場合に,すべてのメッセージ 66 * が出力できるように,メッセージの量を制限するという理由もある. 67 * 68 * 周期ハンドラ(CYC1)は,起動したことを示すメッセージを表示する. 69 * プログラムの起動直後は,周期ハンドラ(CYC1)は停止状態になっている. 70 * 71 * メインタスクは,周期ハンドラ(MAIN_CYC)から100ミリ秒ごとに起動され, 72 * シリアルI/Oポートからの文字入力を行い,入力された 73 * 文字に対応した処理を実行する.入力された文字と処理の関係は次の通り. 74 * 'Q'が入力されると,プログラムを終了する. 75 * 76 * '1' : 対象タスクをTASK1に切り換える(初期設定). 77 * '2' : 対象タスクをTASK2に切り換える. 78 * '3' : 対象タスクをTASK3に切り換える. 79 * 'a' : 対象タスクをact_tskにより起動する. 80 * 'e' : 対象タスクを関数のリターンにより終了させる. 81 * 'c' : 周期ハンドラを動作開始させる. 82 * 'C' : 周期ハンドラを動作停止させる. 83 * 'b' : アラームハンドラを5秒後に起動するよう動作開始させる. 84 * 'B' : アラームハンドラを動作停止させる. 85 * 'z' : 対象タスクにCPU例外を発生させる(タスクを終了させる). 86 * 's' : イベントフラグ(ID:FLG1)に当該タスクに関連するビットをセットする. 87 * 'l' : すべてのタスク関連するイベントフラグ(ID:FLG1)のビットをクリアする. 88 * 'p' : ポーリングでイベントフラグ(FLG1)を待つ. 89 * 'd' : ポーリングでデータキュー(ID:DTQ1)へデータを送信する. 90 * 'r' : ポーリングでデータキュー(ID:DTQ1)からデータを受信する. 97 91 */ 98 92 … … 108 102 109 103 /* 110 * VXeT[rXÌG[nhO104 * システムサービスのエラーハンドリング 111 105 */ 112 106 #define SVC(expression) \ … … 118 112 119 113 /* 120 * ÀñÀs³êé^XNÖÌbZ[WÌæ114 * 並列実行されるタスクへのメッセージ領域 121 115 */ 122 116 char message[3]; 123 117 124 118 /* 125 * [vñ126 */ 127 ulong_t task_loop; /* ^XNàÅÌ[vñ*/119 * ループ回数 120 */ 121 ulong_t task_loop; /* タスク内でのループ回数 */ 128 122 129 123 void init_task(intptr_t exinf) … … 134 128 #endif /* TASK_LOOP */ 135 129 136 /* VA|[gÌI[v*/130 /* シリアルポートのオープン */ 137 131 SVC(serial_opn_por(TASK_PORTID)); 138 132 SVC(serial_ctl_por(TASK_PORTID , IOCTL_CRLF)); 139 133 140 /* O^XNÌú»*/134 /* ログタスクの初期化 */ 141 135 logtask_initialize(LOGTASK_PORTID); 142 136 143 /* N®bZ[WÌoÍ*/137 /* 起動メッセージの出力 */ 144 138 syslog(LOG_INFO , "Sample program starts."); 145 139 146 /* üúnhÌN®*/140 /* 周期ハンドラの起動 */ 147 141 SVC(sta_cyc(MAIN_CYC)); 148 142 149 143 /* 150 * [vñÌÝè144 * ループ回数の設定 151 145 * 152 * TASK_LOOP ª}Nè`³êÄ¢éêCªè¹¸ÉCTASK_LOOPÉè153 * `³ê½lðC^XNàÅÌ[vñÆ·éD146 * TASK_LOOPがマクロ定義されている場合,測定せずに,TASK_LOOPに定 147 * 義された値を,タスク内でのループ回数とする. 154 148 * 155 * MEASURE_TWICE ª}Nè`³êÄ¢éêC1ñÚ̪èÊðÌÄ156 * ÄC2ñÚ̪èÊðg¤D1ñÚ̪èÍ·ßÌÔªoé½ßD149 * MEASURE_TWICEがマクロ定義されている場合,1回目の測定結果を捨て 150 * て,2回目の測定結果を使う.1回目の測定は長めの時間が出るため. 157 151 */ 158 152 #ifdef TASK_LOOP … … 163 157 SVC(get_tim(&stime1)); 164 158 for (i = 0; i < task_loop; i++) { 165 /* Ô©¹¬Ì½ßÌ[vÅ èC±±ÅͽàµÈ¢*/159 /* 時間かせぎのためのループであり,ここでは何もしない */ 166 160 } 167 161 SVC(get_tim(&stime2)); … … 180 174 181 175 182 /* VA|[g©ç̶óM*/176 /* シリアルポートからの文字受信 */ 183 177 if(serial_rea_dat(TASK_PORTID , &c , 1) > 0) 184 178 { … … 231 225 break; 232 226 default: 233 /* G[\¦*/227 /* エラー表示 */ 234 228 syslog(LOG_INFO , "Unknown command."); 235 229 break; … … 241 235 void task(intptr_t exinf) 242 236 { 243 /* exinf Í^XNÔ*/237 /* exinfはタスク番号 */ 244 238 uint_t tskno = (uint_t)exinf; 245 239 int_t n = 0; … … 256 250 { 257 251 for (i = 0; i < task_loop; i++) { 258 /* Ô©¹¬Ì½ßÌ[vÅ èC±±ÅͽàµÈ¢*/252 /* 時間かせぎのためのループであり,ここでは何もしない */ 259 253 } 260 254 261 /* ^XNÔÌ\¦*/255 /* タスク番号の表示 */ 262 256 syslog(LOG_NOTICE, "task%d is running (%03d). %s", 263 257 tskno, ++n, graph[tskno-1]); 264 258 265 /* R}hæ¾CbZ[WÌæðNA*/259 /* コマンド取得,メッセージ領域をクリア */ 266 260 command = message[tskno - 1]; 267 261 message[tskno - 1] = 0; -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/target/qb_r5f100le_cs/ssp_rl78/sample1/src/sample1.cfg
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 1 1 /* 2 * TOPPESRS/SSP J[lÌTvvO2 * TOPPESRS/SSPカーネルのサンプルプログラム 3 3 */ 4 4 -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/target/qb_r5f100le_cs/ssp_rl78/sample1/src/sample1.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 7 7 * Nagoya Municipal Industrial Research Institute, JAPAN 8 8 * 9 * ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 11 * ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X 14 * R[hÉÜÜêĢ鱯D 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 16 * Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gipÒ} 18 * j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û 20 * ØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 22 * ūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌì 26 * \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 27 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 28 * ·é±ÆD 29 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 30 * ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 31 * {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 32 * ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 9 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 11 * 再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 13 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース 14 * コード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 16 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 17 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 18 * 証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 20 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. 21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 22 * 権表示,この利用条件および下記の無保証規定を掲載すること. 23 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 24 * 告すること. 25 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 26 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 27 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 28 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 33 29 * 34 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ35 * ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη36 * éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp37 * Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð38 * íÈ¢D30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 31 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 32 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 33 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 34 * わない. 39 35 * 40 36 */ … … 44 40 45 41 /* 46 * ^[Qbg˶Ìè`42 * ターゲット依存の定義 47 43 */ 48 44 #include "target_test.h" … … 81 77 82 78 #ifndef TASK_PORTID 83 #define TASK_PORTID 1 /* ¶üÍ·éVA|[gID */79 #define TASK_PORTID 1 /* 文字入力するシリアルポートID */ 84 80 #endif /* TASK_PORTID */ 85 81 86 82 #ifndef LOOP_REF 87 #define LOOP_REF ULONG_C(1000000) /* ¬xvªpÌ[vñ*/83 #define LOOP_REF ULONG_C(1000000) /* 速度計測用のループ回数 */ 88 84 #endif /* LOOP_REF */ 89 85 -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.