Changeset 285 for rubycfg_ssp
- Timestamp:
- May 2, 2017, 5:55:20 PM (6 years ago)
- Location:
- rubycfg_ssp/trunk
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_ssp/trunk/alarm.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 49 35 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: alarm.trb 588 2016-02-05 12:54:58Z ertl-hiro $ … … 59 44 60 45 # 61 # ã¢ã©ã¼ã éç¥æ©è½ã®çæã¹ã¯ãªãã46 # アラーム通知機能の生成スクリプト 62 47 # 63 48 … … 69 54 def prepare() 70 55 $cfgData[@api].sort.each do |key, params| 71 # almatr ãç¡å¹ã®å ´åï¼E_RSATRï¼72 # ï¼TA_STA以å¤ã®ããããã»ããããã¦ããå ´åï¼56 # almatrが無効の場合(E_RSATR) 57 #(TA_STA以外のビットがセットされている場合) 73 58 if (params[:almatr] & ~($TA_STA)) != 0 74 59 error_illegal_id("E_RSATR", params, :almatr, :almid) … … 81 66 if $cfgData[:CRE_ALM].size() > 0 82 67 83 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼68 # 事前準備(エラーチェック,メモリ領域の生成) 84 69 prepare() 85 70 86 # ã¢ã©ã¼ã ãã³ãã©ã¢ãã¬ã¹(almhdr)71 # アラームハンドラアドレス(almhdr) 87 72 $kernelCfgC.append("const ALMHDR\t_kernel_alminib_almhdr[TNUM_ALMID] = {") 88 73 $cfgData[@api].each.with_index do |id, index| … … 92 77 $kernelCfgC.add("};") 93 78 94 # ã¢ã©ã¼ã ãã³ãã©æ¡å¼µæ 95 å ±(exinf) 79 # アラームハンドラ拡張情報(exinf) 96 80 $kernelCfgC.append("const intptr_t\t_kernel_alminib_exinf[TNUM_ALMID] = {") 97 81 $cfgData[@api].each.with_index do |id, index| … … 102 86 $kernelCfgC.add2("};") 103 87 else 104 # ãªãã¸ã§ã¯ãã1ã¤ããªãå ´å88 # オブジェクトが1つもない場合 105 89 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(const ALMHDR, _kernel_alminib_almhdr);") 106 90 $kernelCfgC.add2("TOPPERS_EMPTY_LABEL(const intptr_t, _kernel_alminib_exinf);") 107 91 end 108 92 109 # ã¢ã©ã¼ã ãã³ãã©ã®ã¿ã¤ã ã¤ãã³ãIDãªãã»ãã93 # アラームハンドラのタイムイベントIDオフセット 110 94 $kernelCfgC.add2("const uint_t _kernel_almevtid_offset = #{$cfgData[:CRE_CYC].size};") 111 95 112 # ã¢ã©ã¼ã ãã³ãã©ã®åä½ç¶æ 113 96 # アラームハンドラの動作状態 114 97 $kernelCfgC.add2("uint16_t\t_kernel_almcb_almact;") 115 98 end … … 117 100 118 101 # 119 # ã¢ã©ã¼ã éç¥ã«é¢ããæ 120 å ±ã®çæ 102 # アラーム通知に関する情報の生成 121 103 # 122 104 $kernelCfgC.comment_header("Alarm Notification Functions") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/banner.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 8 8 # Nagoya Municipal Industrial Research Institute, JAPAN 9 9 # 10 # ä¸è¨è使¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 # å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 # ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 # è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 # ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 # ã¨ï¼ 29 # (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 # (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 # å ±åãããã¨ï¼ 37 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 # 害ãããï¼ä¸è¨è使¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 # å 45 責ãããã¨ï¼ 10 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 11 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 12 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 13 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 14 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 15 # スコード中に含まれていること. 16 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 17 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 18 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 19 # の無保証規定を掲載すること. 20 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 21 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 22 # と. 23 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 24 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 25 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 26 # 報告すること. 27 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 28 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 29 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 30 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 31 # 免責すること. 46 32 # 47 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 48 ã 49 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 52 # ã®è²¬ä»»ãè² ããªãï¼ 33 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 # の責任を負わない. 53 38 # 54 39 # $Id: core_kernel.trb 662 2016-02-27 02:33:51Z ertl-hiro $ … … 56 41 57 42 # 58 # ããã¼åºåç¨ã®ãã³ãã¬ã¼ããã¡ã¤ã«43 # バナー出力用のテンプレートファイル 59 44 # 60 45 -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/cyclic.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 49 35 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: cyclic.trb 588 2016-02-05 12:54:58Z ertl-hiro $ … … 59 44 60 45 # 61 # 卿éç¥æ©è½ã®çæã¹ã¯ãªãã46 # 周期通知機能の生成スクリプト 62 47 # 63 48 … … 70 55 $cfgData[@api].sort.each do |key, params| 71 56 72 # cycatr ãç¡å¹ã®å ´åï¼E_RSATRï¼73 # ï¼TA_STA以å¤ã®ããããã»ããããã¦ããå ´åï¼57 # cycatrが無効の場合(E_RSATR) 58 #(TA_STA以外のビットがセットされている場合) 74 59 if (params[:cycatr] & ~($TA_STA)) != 0 75 60 error_illegal_id("E_RSATR", params, :cycatr, :cycid) 76 61 end 77 62 78 # (0 < cyctim && cyctim <= TMAX_RELTIM) ã§ãªãå ´åï¼E_PARï¼63 # (0 < cyctim && cyctim <= TMAX_RELTIM)でない場合(E_PAR) 79 64 if !(0 < params[:cyctim] && params[:cyctim] <= $TMAX_RELTIM) 80 65 error_illegal_id("E_PAR", params, :cyctim, :cycid) 81 66 end 82 67 83 # (0 <= cycphs && cycphs <= TMAX_RELTIM) ã§ãªãå ´åï¼E_PARï¼68 # (0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合(E_PAR) 84 69 if !(0 <= params[:cycphs] && params[:cycphs] <= $TMAX_RELTIM) 85 70 error_illegal_id("E_PAR", params, :cycphs, :cycid) 86 71 end 87 72 88 # ä½ç¸ã0ãã¤ï¼å±æ§ã TA_STA ã®å ´å(è¦å)73 # 位相が0かつ,属性が TA_STA の場合(警告) 89 74 if params[:cycphs] == 0 && (params[:cycatr] & $TA_STA) != 0 90 75 warning("cycphs==0 is not recommended when TA_STA is set to cycatr in CRE_CYC") … … 96 81 if $cfgData[:CRE_CYC].size() > 0 97 82 98 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼83 # 事前準備(エラーチェック,メモリ領域の生成) 99 84 prepare() 100 85 101 # 卿ãã³ãã©å±æ§(cycatr)86 # 周期ハンドラ属性(cycatr) 102 87 cycact = 0 103 88 $cfgData[@api].each.with_index do |id, index| … … 108 93 $kernelCfgC.add("const uint16_t\t_kernel_cycinib_cycact = #{cycact};") 109 94 110 # 卿ãã³ãã©æ¡å¼µæ 111 å ±(exinf) 95 # 周期ハンドラ拡張情報(exinf) 112 96 $kernelCfgC.append("const intptr_t\t_kernel_cycinib_exinf[TNUM_CYCID] = {") 113 97 $cfgData[@api].each.with_index do |id, index| … … 118 102 $kernelCfgC.add("};") 119 103 120 # 卿ãã³ãã©ã¢ãã¬ã¹(cychdr)104 # 周期ハンドラアドレス(cychdr) 121 105 $kernelCfgC.append("const CYCHDR\t_kernel_cycinib_cychdr[TNUM_CYCID] = {") 122 106 $cfgData[@api].each.with_index do |id, index| … … 126 110 $kernelCfgC.add("};") 127 111 128 # 卿ãã³ãã©å¨æ(cyctim)112 # 周期ハンドラ周期(cyctim) 129 113 $kernelCfgC.append("const RELTIM\t_kernel_cycinib_cyctim[TNUM_CYCID] = {") 130 114 $cfgData[@api].each.with_index do |id, index| … … 134 118 $kernelCfgC.add("};") 135 119 136 # 卿ãã³ãã©ä½ç¸(cycphs)120 # 周期ハンドラ位相(cycphs) 137 121 $kernelCfgC.append("const RELTIM\t_kernel_cycinib_cycphs[TNUM_CYCID] = {") 138 122 $cfgData[@api].each.with_index do |id, index| … … 142 126 $kernelCfgC.add("};") 143 127 144 # 卿ãã³ãã©ã®æ¬¡åèµ·åæå»128 # 周期ハンドラの次回起動時刻 145 129 $kernelCfgC.add("EVTTIM\t_kernel_cyccb_evttim[TNUM_CYCID];") 146 130 else 147 # ãªãã¸ã§ã¯ãã1ã¤ããªãå ´å131 # オブジェクトが1つもない場合 148 132 $kernelCfgC.add("const uint16_t _kernel_cycinib_cycact = 0;") 149 133 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(const intptr_t, _kernel_cycinib_exinf);") … … 154 138 end 155 139 156 # 卿ãã³ãã©ã®ã¿ã¤ã ã¤ãã³ãIDãªãã»ãã157 # 卿ãã³ãã©ã®ã¿ã¤ã ã¤ãã³ãIDã¯0ããéå§140 # 周期ハンドラのタイムイベントIDオフセット 141 # 周期ハンドラのタイムイベントIDは0から開始 158 142 $kernelCfgC.add2("const uint_t _kernel_cycevtid_offset = 0;") 159 143 160 # 卿ãã³ãã©ã®åä½ç¶æ 161 144 # 周期ハンドラの動作状態 162 145 $kernelCfgC.add2("uint16_t\t_kernel_cyccb_cycact;") 163 146 end … … 165 148 166 149 # 167 # 卿éç¥ã«é¢ããæ 168 å ±ã®çæ 150 # 周期通知に関する情報の生成 169 151 # 170 152 $kernelCfgC.comment_header("Cyclic Notification Functions") 171 153 172 # ã¨ã³ããªãTMAX_MAXCYCå(kernel.hã§å®ç¾©)ããå¤ãå ´åã¯ã¨ã©ã¼ã¨ãã154 # エントリがTMAX_MAXCYC個(kernel.hで定義)より多い場合はエラーとする 173 155 if $cfgData[:CRE_CYC].size() > $TMAX_MAXCYC 174 156 error("The number of CRE_CYC must be equal to or less than #{$TMAX_MAXCYC}") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/dataqueue.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 49 35 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: dataqueue.trb 668 2016-03-03 13:57:53Z ertl-hiro $ … … 59 44 60 45 # 61 # ãã¼ã¿ãã¥ã¼æ©è½ã®çæã¹ã¯ãªãã46 # データキュー機能の生成スクリプト 62 47 # 63 48 … … 69 54 def prepare() 70 55 $cfgData[@api].sort.each do |key, params| 71 # dtqatr ãç¡å¹ã®å ´åï¼E_RSATRï¼72 # ï¼TA_NULL以å¤ã®å ´åï¼56 # dtqatrが無効の場合(E_RSATR) 57 #(TA_NULL以外の場合) 73 58 if params[:dtqatr] != $TA_NULL 74 59 error_illegal_id("E_RSATR", params, :dtqatr, :dtqid) 75 60 end 76 61 77 # dtqmb ãNULLã§ãªãå ´åï¼E_NOSPTï¼62 # dtqmbがNULLでない場合(E_NOSPT) 78 63 if params[:dtqmb] != "NULL" 79 64 error_illegal_id("E_NOSPT", params, :dtqmb, :dtqid) 80 65 end 81 66 82 # ãã¼ã¿ãã¥ã¼ãµã¤ãºdtqcntã0ã®å ´å(E_PAR)67 # データキューサイズdtqcntが0の場合(E_PAR) 83 68 if params[:dtqcnt] == 0 84 69 error_illegal_id("E_PAR", params, :dtqcnt, :dtqid) … … 89 74 def generateData() 90 75 if $cfgData[:CRE_DTQ].size() > 0 91 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼76 # 事前準備(エラーチェック,メモリ領域の生成) 92 77 prepare() 93 78 94 # ãã¼ã¿ãã¥ã¼é å79 # データキュー領域 95 80 $cfgData[@api].each.with_index do |id, index| 96 81 $kernelCfgC.add("static intptr_t _kernel_dtqmb_#{id[1][:dtqid].str}[#{id[1][:dtqcnt]}];") … … 98 83 99 84 # 100 # ãã¼ã¿ãã¥ã¼åæåãããã¯85 # データキュー初期化ブロック 101 86 # 102 87 103 # ãã¼ã¿ãã¥ã¼å±æ§(dtqatr)88 # データキュー属性(dtqatr) 104 89 $kernelCfgC.append("const ATR\t_kernel_dtqinib_atr[TNUM_DTQID] = {") 105 90 $cfgData[@api].each.with_index do |id, index| … … 110 95 $kernelCfgC.add("};") 111 96 112 # ãã¼ã¿ãã¥ã¼ãµã¤ãº(dtqcnt)97 # データキューサイズ(dtqcnt) 113 98 $kernelCfgC.append("const uint8_t\t_kernel_dtqinib_size[TNUM_DTQID] = {") 114 99 $cfgData[@api].each.with_index do |id, index| … … 118 103 $kernelCfgC.add("};") 119 104 120 # ãã¼ã¿ãã¥ã¼ç®¡çé å(data)105 # データキュー管理領域(data) 121 106 $kernelCfgC.append("intptr_t * const\t_kernel_dtqinib_data[TNUM_DTQID] = {") 122 107 $cfgData[@api].each.with_index do |id, index| … … 127 112 128 113 # 129 # ãã¼ã¿ãã¥ã¼ã³ã³ããã¼ã«ãããã¯114 # データキューコントロールブロック 130 115 # 131 116 $kernelCfgC.add(<<EOS) … … 136 121 137 122 else 138 # ãªãã¸ã§ã¯ãã1ã¤ããªãå ´å123 # オブジェクトが1つもない場合 139 124 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(const ATR, _kernel_dtqinib_atr);") 140 125 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(intptr_t * const, _kernel_dtqinib_data);") … … 148 133 149 134 # 150 # ãã¼ã¿ãã¥ã¼ã«é¢ããæ 151 å ±ã®çæ 135 # データキューに関する情報の生成 152 136 # 153 137 $kernelCfgC.comment_header("Dataqueue Functions") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/eventflag.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 49 35 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: eventflag.trb 588 2016-02-05 12:54:58Z ertl-hiro $ … … 59 44 60 45 # 61 # ã¤ãã³ããã©ã°æ©è½ã®çæã¹ã¯ãªãã46 # イベントフラグ機能の生成スクリプト 62 47 # 63 48 … … 69 54 def prepare() 70 55 $cfgData[@api].sort.each do |key, params| 71 # flgatr ãç¡å¹ã®å ´åï¼E_RSATRï¼72 # ï¼TA_CLR以å¤ã®ããããã»ããããã¦ããå ´åï¼56 # flgatrが無効の場合(E_RSATR) 57 #(TA_CLR以外のビットがセットされている場合) 73 58 if (params[:flgatr] & ~($TA_CLR)) != 0 74 59 error_illegal_id("E_RSATR", params, :flgatr, :flgid) 75 60 end 76 61 77 # iflgptn ãFLGPTNã«æ ¼ç´ã§ããªãå ´åï¼E_PARï¼62 # iflgptnがFLGPTNに格納できない場合(E_PAR) 78 63 if (params[:iflgptn] & ~((1 << $TBIT_FLGPTN) - 1)) != 0 79 64 error_wrong_id("E_PAR", params, :iflgptn, :flgid, "too large") … … 84 69 def generateData() 85 70 # 86 # ãªãã¸ã§ã¯ãåæåãããã¯ã®çæ71 # オブジェクト初期化ブロックの生成 87 72 # 88 73 if $cfgData[:CRE_FLG].size() > 0 89 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼74 # 事前準備(エラーチェック,メモリ領域の生成) 90 75 prepare() 91 76 92 # ã¤ãã³ããã©ã°å±æ§(flgatr)77 # イベントフラグ属性(flgatr) 93 78 $kernelCfgC.append("const ATR\t_kernel_flginib_atr[TNUM_FLGID] = {") 94 79 $cfgData[@api].each.with_index do |id, index| … … 99 84 $kernelCfgC.add("};") 100 85 101 # ã¤ãã³ããã©ã°ãã¿ã¼ã³ã®åæå¤(iflgptn)86 # イベントフラグパターンの初期値(iflgptn) 102 87 $kernelCfgC.append("const FLGPTN\t_kernel_flginib_iflgptn[TNUM_FLGID] = {") 103 88 $cfgData[@api].each.with_index do |id, index| … … 107 92 $kernelCfgC.add("};") 108 93 109 # ã¤ãã³ããã©ã°ã®ç¾å¨ã®ãã©ã°ãã¿ã¼ã³ãæ ¼ç´ãã夿°94 # イベントフラグの現在のフラグパターンを格納する変数 110 95 $kernelCfgC.add2("FLGPTN\t_kernel_flgcb_flgptn[TNUM_FLGID];") 111 96 112 97 else 113 # ãªãã¸ã§ã¯ãã1ã¤ããªãå ´å98 # オブジェクトが1つもない場合 114 99 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(const ATR, _kernel_flginib_atr);") 115 100 $kernelCfgC.add("TOPPERS_EMPTY_LABEL(const FLGPTN, _kernel_flginib_iflgptn);") … … 120 105 121 106 # 122 # ã¤ãã³ããã©ã°ã«é¢ããæ 123 å ±ã®çæ 107 # イベントフラグに関する情報の生成 124 108 # 125 109 $kernelCfgC.comment_header("Eventflag Functions") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/exception.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 49 35 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: exception.trb 663 2016-02-27 04:45:50Z ertl-hiro $ … … 59 44 60 45 # 61 # CPU ä¾å¤ç®¡çæ©è½ã®çæã¹ã¯ãªãã46 # CPU例外管理機能の生成スクリプト 62 47 # 63 48 64 49 # 65 # kernel_cfg.c ã®çæ50 # kernel_cfg.cの生成 66 51 # 67 52 $kernelCfgC.comment_header("CPU Exception Management Functions") 68 53 69 54 # 70 # CPU ä¾å¤ãã³ãã©ã«é¢ããã¨ã©ã¼ãã§ãã¯55 # CPU例外ハンドラに関するエラーチェック 71 56 # 72 57 $cfgData[:DEF_EXC].each do |key, params| 73 # excno ãCPUä¾å¤ãã³ãã©çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼58 # excnoがCPU例外ハンドラ番号として正しくない場合(E_PAR) 74 59 if $EXCNO_VALID.index(params[:excno]).nil? 75 60 error_illegal("E_PAR", params, :excno) 76 61 end 77 62 78 # excatr ãç¡å¹ã®å ´åï¼E_RSATRï¼79 # ï¼TARGET_EXCATR以å¤ã®ããããã»ããããã¦ããå ´åï¼63 # excatrが無効の場合(E_RSATR) 64 #(TARGET_EXCATR以外のビットがセットされている場合) 80 65 if (params[:excatr] & ~($TARGET_EXCATR)) != 0 81 66 error_illegal_sym("E_RSATR", params, :excatr, :excno) … … 84 69 85 70 # 86 # CPUä¾å¤ãã³ãã©ã®ããã®æ¨æºçãªåæåæ 87 å ±ã®çæ 71 # CPU例外ハンドラのための標準的な初期化情報の生成 88 72 # 89 73 if !$OMIT_INITIALIZE_EXCEPTION 90 74 # 91 # å®ç¾©ããCPUä¾å¤ãã³ãã©ã®æ°75 # 定義するCPU例外ハンドラの数 92 76 # 93 77 $kernelCfgC.add(<<EOS) … … 98 82 if $cfgData[:DEF_EXC].size != 0 99 83 # 100 # CPU ä¾å¤ãã³ãã©ã®ã¨ã³ããª84 # CPU例外ハンドラのエントリ 101 85 # 102 86 $cfgData[:DEF_EXC].each do |key, params| … … 107 91 108 92 # 109 # CPU ä¾å¤ãã³ãã©åæåãããã¯93 # CPU例外ハンドラ初期化ブロック 110 94 # 111 95 $kernelCfgC.append("const EXCNO _kernel_excinib_excno[TNUM_EXCNO] = {") … … 138 122 139 123 # 140 # CPU ä¾å¤ç®¡çæ©è½åæå颿°ã®è¿½å124 # CPU例外管理機能初期化関数の追加 141 125 # 142 126 $initializeFunctions.push("_kernel_initialize_exception();") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/install.sh
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/interrupt.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 49 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 35 # 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: interrupt.trb 678 2016-03-06 02:36:09Z ertl-hiro $ … … 59 44 60 45 # 61 # å²è¾¼ã¿ç®¡çæ©è½ã®çæã¹ã¯ãªãã46 # 割込み管理機能の生成スクリプト 62 47 # 63 48 … … 65 50 66 51 # 67 # ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 # トレースログマクロのデフォルト定義 68 53 # 69 54 $kernelCfgC.add(<<EOS) … … 78 63 79 64 # 80 # CRE_ISR ã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·ã®ã81 # ãã©ã«ãå®ç¾©65 # CRE_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号のデ 66 # フォルト定義 82 67 # 83 68 if $INTNO_CREISR_VALID.nil? … … 89 74 90 75 # 91 # CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿åªå 92 度ã®ããã©ã«ãå®ç¾© 76 # CFG_INTで使用できる割込み優先度のデフォルト定義 93 77 # 94 78 if $INTPRI_CFGINT_VALID.nil? … … 97 81 98 82 # 99 # å²è¾¼ã¿çªå·ã¨å²è¾¼ã¿ãã³ãã©çªå·ã®å¤æãã¼ãã«ã®ä½æ83 # 割込み番号と割込みハンドラ番号の変換テーブルの作成 100 84 # 101 85 if $INTNO_CREISR_VALID.length != $INHNO_CREISR_VALID.length … … 113 97 114 98 # 115 # å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«é¢ããã¨ã©ã¼ãã§ãã¯99 # 割込み要求ラインに関するエラーチェック 116 100 # 117 101 $cfgData[:CFG_INT].each do |key, params| 118 # intno ãå²è¾¼ã¿çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼102 # intnoが割込み番号として正しくない場合(E_PAR) 119 103 if $INTNO_VALID.index(params[:intno]).nil? 120 104 error_illegal("E_PAR", params, :intno) 121 105 end 122 106 123 # intatr ãç¡å¹ã®å ´åï¼E_RSATRï¼124 # ï¼TA_ENAINTï¼TA_EDGEï¼TARGET_INTATR以å¤ã®ããããã»ããããã¦ããå ´åï¼107 # intatrが無効の場合(E_RSATR) 108 #(TA_ENAINT,TA_EDGE,TARGET_INTATR以外のビットがセットされている場合) 125 109 if (params[:intatr] & ~($TA_ENAINT|$TA_EDGE|$TARGET_INTATR)) != 0 126 110 error_illegal_sym("E_RSATR", params, :intatr, :intno) 127 111 end 128 112 129 # intpriãCFG_INTã«å¯¾ããå²è¾¼ã¿åªå 130 度ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ 113 # intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR) 131 114 if $INTPRI_CFGINT_VALID.index(params[:intpri]).nil? 132 115 error_illegal_sym("E_PAR", params, :intpri, :intno) 133 116 end 134 117 135 # ã«ã¼ãã«ç®¡çå¤ã«åºå®ããã¦ããintnoã«å¯¾ãã¦ï¼intpriã«TMIN_INTPRIã136 # ããå°ããå¤ãæå®ãããªãã£ãå ´åï¼E_OBJï¼118 # カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRIよ 119 # りも小さい値が指定されなかった場合(E_OBJ) 137 120 if !$INTNO_FIX_NONKERNEL.nil? 138 121 if !$INTNO_FIX_NONKERNEL.index(params[:intno]).nil? … … 144 127 end 145 128 146 # ã«ã¼ãã«ç®¡çã«åºå®ããã¦ããintnoã«å¯¾ãã¦ï¼intpriã«TMIN_INTPRIãã147 # ãå°ããå¤ãæå®ãããå ´åï¼E_OBJï¼129 # カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRIより 130 # も小さい値が指定された場合(E_OBJ) 148 131 if !$INTNO_FIX_KERNEL.nil? 149 132 if !$INTNO_FIX_KERNEL.index(params[:intno]).nil? … … 157 140 158 141 # 159 # å²è¾¼ã¿ãã³ãã©ã«é¢ããã¨ã©ã¼ãã§ãã¯142 # 割込みハンドラに関するエラーチェック 160 143 # 161 144 $cfgData[:DEF_INH].each do |key, params| 162 # inhno ãå²è¾¼ã¿ãã³ãã©çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼145 # inhnoが割込みハンドラ番号として正しくない場合(E_PAR) 163 146 if $INHNO_VALID.index(params[:inhno]).nil? 164 147 error_illegal("E_PAR", params, :inhno) 165 148 end 166 149 167 # inhatr ãç¡å¹ã®å ´åï¼E_RSATRï¼168 # ï¼TARGET_INHATR以å¤ã®ããããã»ããããã¦ããå ´åï¼150 # inhatrが無効の場合(E_RSATR) 151 #(TARGET_INHATR以外のビットがセットされている場合) 169 152 if (params[:inhatr] & ~($TARGET_INHATR)) != 0 170 153 error_illegal_sym("E_RSATR", params, :inhatr, :inhno) 171 154 end 172 155 173 # ã«ã¼ãã«ç®¡çå¤ã«åºå®ããã¦ããinhnoã«å¯¾ãã¦ï¼inhatrã«TA_NONKERNELã174 # æå®ããã¦ããªãå ´åï¼E_RSATRï¼156 # カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNELが 157 # 指定されていない場合(E_RSATR) 175 158 if !$INHNO_FIX_NONKERNEL.nil? 176 159 if !$INHNO_FIX_NONKERNEL.index(params[:inhno]).nil? … … 182 165 end 183 166 184 # ã«ã¼ãã«ç®¡çã«åºå®ããã¦ããinhnoã«å¯¾ãã¦ï¼inhatrã«TA_NONKERNELãæ185 # å®ããã¦ããå ´åï¼E_RSATRï¼167 # カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNELが指 168 # 定されている場合(E_RSATR) 186 169 if !$INHNO_FIX_KERNEL.nil? 187 170 if !$INHNO_FIX_KERNEL.index(params[:inhno]).nil? … … 196 179 intnoVal = $toIntnoVal[params[:inhno].val] 197 180 198 # inhno ã«å¯¾å¿ããintnoã«å¯¾ããCFG_INTããªãå ´åï¼E_OBJï¼181 # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ) 199 182 if !$cfgData[:CFG_INT].has_key?(intnoVal) 200 183 error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to " \ … … 203 186 intnoParams = $cfgData[:CFG_INT][intnoVal] 204 187 if (params[:inhatr] & $TA_NONKERNEL) == 0 205 # inhatrã«TA_NONKERNELãæå®ããã¦ãããï¼inhnoã«å¯¾å¿ããintno 206 # ã«å¯¾ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 207 度ãTMIN_INTPRIãããå° 208 # ããå ´åï¼E_OBJï¼ 188 # inhatrにTA_NONKERNELが指定されておらず,inhnoに対応するintno 189 # に対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも小 190 # さい場合(E_OBJ) 209 191 if intnoParams[:intpri] < $TMIN_INTPRI 210 192 error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \ … … 212 194 end 213 195 else 214 # inhatrã«TA_NONKERNELãæå®ããã¦ããï¼inhnoã«å¯¾å¿ããintnoã« 215 # 対ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 216 度ãTMIN_INTPRI以ä¸ã§ãã 217 # å ´åï¼E_OBJï¼ 196 # inhatrにTA_NONKERNELが指定されており,inhnoに対応するintnoに 197 # 対してCFG_INTで設定された割込み優先度がTMIN_INTPRI以上である 198 # 場合(E_OBJ) 218 199 if intnoParams[:intpri] >= $TMIN_INTPRI 219 200 error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \ … … 226 207 227 208 # 228 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ã«é¢ããã¨ã©ã¼ãã§ãã¯ã¨å²è¾¼ã¿ãã³ãã©ã®çæ209 # 割込みサービスルーチン(ISR)に関するエラーチェックと割込みハンドラの生成 229 210 # 230 211 $cfgData[:ATT_ISR].sort.each do |key, params| 231 # isratr ãç¡å¹ã®å ´åï¼E_RSATRï¼232 # ï¼TARGET_ISRATR以å¤ã®ããããã»ããããã¦ããå ´åï¼212 # isratrが無効の場合(E_RSATR) 213 #(TARGET_ISRATR以外のビットがセットされている場合) 233 214 if (params[:isratr] & ~($TARGET_ISRATR)) != 0 234 215 error_illegal("E_RSATR", params, "isratr") 235 216 end 236 217 237 # intno ãATT_ISRã«å¯¾ããå²è¾¼ã¿çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼218 # intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR) 238 219 if $INTNO_ATTISR_VALID.index(params[:intno]).nil? 239 220 error_illegal("E_PAR", params, "intno") 240 221 end 241 222 242 # (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI) ã§ãªãå ´åï¼E_PARï¼223 # (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR) 243 224 if !($TMIN_ISRPRI <= params[:isrpri] && params[:isrpri] <= $TMAX_ISRPRI) 244 225 error_illegal("E_PAR", params, "isrpri") … … 247 228 248 229 $INTNO_ATTISR_VALID.each do |intnoVal| 249 # å²è¾¼ã¿çªå·intnoã«å¯¾ãã¦ç»é²ãããISRã®ãªã¹ãã®ä½æ230 # 割込み番号intnoに対して登録されたISRのリストの作成 250 231 isrParamsList = [] 251 232 $cfgData[:ATT_ISR].sort.each do |key, params| … … 255 236 end 256 237 257 # å²è¾¼ã¿çªå·intnoã«å¯¾ãã¦ç»é²ãããISRãåå¨ããå ´å238 # 割込み番号intnoに対して登録されたISRが存在する場合 258 239 if isrParamsList.size > 0 259 240 inhnoVal = $toInhnoVal[intnoVal] 260 241 261 # intno ã«å¯¾å¿ããinhnoã«å¯¾ãã¦DEF_INHãããå ´åï¼E_OBJï¼242 # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ) 262 243 if $cfgData[:DEF_INH].has_key?(inhnoVal) 263 244 inhnoParams = $cfgData[:DEF_INH][inhnoVal] … … 266 247 end 267 248 268 # intno ã«å¯¾ããCFG_INTããªãå ´åï¼E_OBJï¼249 # intnoに対するCFG_INTがない場合(E_OBJ) 269 250 if !$cfgData[:CFG_INT].has_key?(intnoVal) 270 251 error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \ … … 273 254 intnoParams = $cfgData[:CFG_INT][intnoVal] 274 255 275 # intnoã«å¯¾ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 276 度ãTMIN_INTPRIããã 277 # å°ããå ´åï¼E_OBJï¼ 256 # intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも 257 # 小さい場合(E_OBJ) 278 258 if intnoParams[:intpri] < $TMIN_INTPRI 279 259 error_ercd("E_OBJ", isrParamsList[0], … … 283 263 end 284 264 285 # 次ã®DEF_INHã«ç¸å½ãããã¼ã¿ãçæ265 # 次のDEF_INHに相当するデータを生成 286 266 # DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } ); 287 267 $cfgData[:DEF_INH][inhnoVal] = { … … 291 271 } 292 272 293 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç¨ã®å²è¾¼ã¿ãã³ãã©273 # 割込みサービスルーチン用の割込みハンドラ 294 274 $kernelCfgC.add("void") 295 275 $kernelCfgC.add("_kernel_inthdr_#{intnoVal}(void)") … … 305 285 end 306 286 307 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãåªå 308 度é ã«å¼ã³åºã 309 i = 0 # stable sortãè¡ãããã®å¤æ° 287 # 割込みサービスルーチンを優先度順に呼び出す 288 i = 0 # stable sortを行うための変数 310 289 isrParamsList.sort_by {|params| [ params[:isrpri].val, i += 1 ]} \ 311 290 .each_with_index do |params, index| … … 328 307 329 308 # 330 # å²è¾¼ã¿ãã³ãã©ã®ããã®æ¨æºçãªåæåæ 331 å ±ã®çæ 309 # 割込みハンドラのための標準的な初期化情報の生成 332 310 # 333 311 if !$OMIT_INITIALIZE_INTERRUPT || $USE_INHINIB_TABLE 334 312 # 335 # å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°313 # 定義する割込みハンドラの数 336 314 # 337 315 $kernelCfgC.add(<<EOS) … … 342 320 if $cfgData[:DEF_INH].size != 0 343 321 # 344 # å²è¾¼ã¿ãã³ãã©ã®ã¨ã³ããª322 # 割込みハンドラのエントリ 345 323 # 346 324 $cfgData[:DEF_INH].each do |key, params| … … 351 329 352 330 # 353 # å²è¾¼ã¿ãã³ãã©åæåãããã¯331 # 割込みハンドラ初期化ブロック 354 332 # 355 333 $kernelCfgC.append("const INHNO\t_kernel_inhinib_inhno[TNUM_INHNO] = {") … … 381 359 382 360 # 383 # å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®ããã®æ¨æºçãªåæåæ 384 å ±ã®çæ 361 # 割込み要求ラインのための標準的な初期化情報の生成 385 362 # 386 363 if !$OMIT_INITIALIZE_INTERRUPT || $USE_INTINIB_TABLE 387 364 388 365 # 389 # è¨å®ããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã®æ°366 # 設定する割込み要求ラインの数 390 367 # 391 368 $kernelCfgC.add(<<EOS) … … 395 372 396 373 # 397 # å²è¾¼ã¿è¦æ±ã©ã¤ã³åæåãããã¯374 # 割込み要求ライン初期化ブロック 398 375 # 399 376 if $cfgData[:CFG_INT].size != 0 … … 427 404 428 405 # 429 # å²è¾¼ã¿ç®¡çæ©è½åæå颿°ã®è¿½å406 # 割込み管理機能初期化関数の追加 430 407 # 431 408 $initializeFunctions.push("_kernel_initialize_interrupt();") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/kernel.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 49 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 35 # 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: kernel.trb 670 2016-03-03 15:08:11Z ertl-hiro $ … … 59 44 60 45 # 61 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹2ã®çæã¹ã¯ãªãã62 # 63 64 # 65 # ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®æå®46 # コンフィギュレータのパス2の生成スクリプト 47 # 48 49 # 50 # タイムスタンプファイルの指定 66 51 # 67 52 $timeStampFileName = "kernel_cfg.timestamp" 68 53 69 54 # 70 # kernel_cfg.hã®å 71 é é¨åã®çæ 55 # kernel_cfg.hの先頭部分の生成 72 56 # 73 57 $kernelCfgH = GenFile.new("kernel_cfg.h") … … 79 63 80 64 # 81 # kernel_cfg.cã®å 82 é é¨åã®çæ 65 # kernel_cfg.cの先頭部分の生成 83 66 # 84 67 $kernelCfgC = GenFile.new("kernel_cfg.c") … … 94 77 95 78 # 96 # ã¤ã³ã¯ã«ã¼ããã£ã¬ã¯ãã£ãï¼#includeï¼79 # インクルードディレクティブ(#include) 97 80 # 98 81 $kernelCfgC.comment_header("Include Directives") … … 103 86 104 87 # 105 # ã¹ã¿ãã¯é åã®ç¢ºä¿é¢æ° 106 # 107 # ã¹ã¿ãã¯é åã®å®ç¾©åã¨ï¼ã¹ã¿ãã¯é åã®ãµã¤ãºè¨è¿°ãé 108 åã§è¿ãï¼ 88 # スタック領域の確保関数 89 # 90 # スタック領域の定義分と,スタック領域のサイズ記述を配列で返す. 109 91 # 110 92 unless defined? AllocStack() 111 93 def AllocStack(stack, size) 112 # 大ããæ¹ã«ä¸¸ãããµã¤ãºã§ç¢ºä¿ãã94 # 大きい方に丸めたサイズで確保する 113 95 $kernelCfgC.add("static STK_T #{stack}[COUNT_STK_T(#{size})];") 114 96 return("ROUND_STK_T(#{size})") … … 117 99 118 100 # 119 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã«é¢ããæ 120 å ±ã®çæï¼ä»®æ³ã¯ã©ã¹ï¼ 101 # カーネルオブジェクトに関する情報の生成(仮想クラス) 121 102 # 122 103 class KernelObject … … 129 110 end 130 111 131 # ãªãã¸ã§ã¯ãã®IDçªå·ã®ãã¯ãå®ç¾©çæ112 # オブジェクトのID番号のマクロ定義生成 132 113 def generateIdMacro() 133 114 $cfgData[@api].sort.each do |key, params| … … 138 119 139 120 def generate() 140 # kernel_cfg.h ã®çæ121 # kernel_cfg.hの生成 141 122 $kernelCfgH.add("#define TNUM_#{@OBJ}ID\t#{$cfgData[@api].size}") 142 123 143 # ãªãã¸ã§ã¯ãã®IDçªå·ã®ãã¯ãå®ç¾©ã®çæ124 # オブジェクトのID番号のマクロ定義の生成 144 125 generateIdMacro() 145 126 146 # ãªãã¸ã§ã¯ãã®IDçªå·ãä¿æãã夿°127 # オブジェクトのID番号を保持する変数 147 128 if $USE_EXTERNAL_ID 148 129 $cfgData[@api].sort.each do |key, params| … … 153 134 end 154 135 155 # ãªãã¸ã§ã¯ãIDçªå·ã®æå¤§å¤136 # オブジェクトID番号の最大値 156 137 $kernelCfgC.add2("const ID _kernel_tmax_#{@obj}id" \ 157 138 " = (TMIN_#{@OBJ}ID + TNUM_#{@OBJ}ID - 1);") 158 139 159 # ãã¼ã¿æ§é ã®çæ140 # データ構造の生成 160 141 if respond_to?(:generateData) 161 142 generateData() … … 163 144 164 145 if $cfgData[@api].size() > 0 165 # ãªãã¸ã§ã¯ãåæå颿°ã®è¿½å146 # オブジェクト初期化関数の追加 166 147 $initializeFunctions.push("_kernel_initialize_#{@object}();") 167 148 end … … 170 151 171 152 # 172 # åæ©è½ã¢ã¸ã¥ã¼ã«ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³153 # 各機能モジュールのコンフィギュレーション 173 154 # 174 155 $initializeFunctions = [] … … 182 163 183 164 # 184 # éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é å165 # 非タスクコンテキスト用のスタック領域 185 166 # 186 167 $kernelCfgC.comment_header("Stack Area for Non-task Context") 187 168 188 # éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã¹ã¿ãã¯é åã®ãµã¤ãº169 # 非タスクコンテキスト用スタック領域のサイズ 189 170 $istksz = 0 190 171 191 # DEF_ICS ã®ã¨ã³ããªãåå¨ãããï¼172 # DEF_ICSのエントリが存在するか? 192 173 if $cfgData[:DEF_ICS].size == 0 193 # ãªãå ´åï¼ãµã¤ãºã¯æ¢å®å¤(DEFAULT_ISTKSZ)ã使ã174 # ない場合,サイズは既定値(DEFAULT_ISTKSZ)を使う 194 175 $kernelCfgC.add2("#define TOPPERS_ISTKSZ DEFAULT_ISTKSZ") 195 176 $istksz = $DEFAULT_ISTKSZ 196 177 else 197 # DEF_ICS ã®ã¨ã³ããªãããå ´å198 199 # éçAPIãDEF_ICSããè¤æ°ããï¼E_OBJï¼178 # DEF_ICS のエントリがある場合 179 180 # 静的API「DEF_ICS」が複数ある(E_OBJ) 200 181 if $cfgData[:DEF_ICS].size > 1 201 182 error("E_OBJ: too many DEF_ICS") … … 204 185 params = $cfgData[:DEF_ICS][1] 205 186 206 # istksz ã« 0 ãæå®ããå ´åï¼E_PARï¼187 # istksz に 0 を指定した場合(E_PAR) 207 188 if params[:istksz] == 0 208 189 error_wrong("E_PAR", params, :istksz, "size is 0") 209 # istk ã¯å¸¸ã« NULL ã§ãã(E_PAR)190 # istk は常に NULL である (E_PAR) 210 191 elsif params[:istk] != "NULL" 211 192 error_wrong("E_PAR", params, :istk, "must be NULL") … … 217 198 218 199 # 219 # å 220 ±æã¹ã¿ãã¯é å 221 # SSPã§ã¯ãã¹ã¦ã®å¦çåä½ã®ã¹ã¿ãã¯ãå 222 ±æããããï¼ 223 # ããã§ã·ã¹ãã å 224 ¨ä½ã®ã¹ã¿ãã¯é åã確ä¿ããï¼ 225 # 226 227 # 228 # å 229 ±æã¹ã¿ãã¯ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã«æåãããã©ãã 230 # DEF_STK å¦çä¸ã«ã¨ã©ã¼ãçºçããå ´åï¼ãã®å¤æ°ã false ã«ãªãï¼ 200 # 共有スタック領域 201 # SSPではすべての処理単位のスタックを共有するため, 202 # ここでシステム全体のスタック領域を確保する. 203 # 204 205 # 206 # 共有スタックのコンフィギュレーションに成功したかどうか 207 # DEF_STK 処理中にエラーが発生した場合,この変数が false になる. 231 208 # 232 209 $defstk_success = true … … 234 211 $kernelCfgC.comment_header("Stack Area for System") 235 212 236 # å 237 ±æã¹ã¿ãã¯ã®ãµã¤ãº 213 # 共有スタックのサイズ 238 214 $stksz = 0 239 215 … … 241 217 stksz_str = "" 242 218 243 # DEF_STK ã®ã¨ã³ããªãåå¨ãããï¼219 # DEF_STK のエントリが存在するか? 244 220 if $cfgData[:DEF_STK].size == 0 245 # (1) DEF_STK ã®ã¨ã³ããªããªãå ´å221 # (1) DEF_STK のエントリがない場合 246 222 stk_str = "_kernel_stack" 247 223 stksz_str = AllocStack(stk_str, "TOPPERS_TSTKSZ+TOPPERS_ISTKSZ") … … 249 225 $stksz = $tstksz + $istksz 250 226 else 251 # (2) DEF_STK ã®ã¨ã³ããªãããå ´å252 253 # éçAPIãDEF_STKããè¤æ°ããï¼E_OBJï¼227 # (2) DEF_STK のエントリがある場合 228 229 # 静的API「DEF_STK」が複数ある(E_OBJ) 254 230 if $cfgData[:DEF_STK].size > 1 255 231 $defstk_success = false … … 259 235 params = $cfgData[:DEF_STK][1] 260 236 261 # DEF_STK ã® stksz ã§ 0 ãæå®ããå ´å(E_PAR)237 # DEF_STK の stksz で 0 を指定した場合(E_PAR) 262 238 if params[:stksz] == 0 263 239 $defstk_success = false … … 268 244 269 245 if params[:stk] == "NULL" 270 # stk ã NULL ã®å ´åï¼ã¹ã¿ãã¯é åãèªåå²ä»ã246 # stk が NULL の場合,スタック領域を自動割付け 271 247 stk_str = "_kernel_stack" 272 248 stksz_str = AllocStack(stk_str, "#{$stksz}") 273 249 else 274 # stk ã NULL 以å¤ã®å ´åï¼ã¢ããªå´ã§ã¹ã¿ãã¯é åãç¨æããå ´åï¼275 276 # stksz ãã¿ã¼ã²ããæ¯ã«å®ã¾ãã¢ã©ã¤ã¡ã³ããµã¤ãºã®åæ°ã«ã¢ã©ã¤ã¡ã³ãããã¦ããªãå ´åï¼E_PARï¼250 # stk が NULL 以外の場合(アプリ側でスタック領域を用意する場合) 251 252 # stksz がターゲット毎に定まるアライメントサイズの倍数にアライメントされていない場合(E_PAR) 277 253 if (defined? $CHECK_STKSZ_ALIGN) && (($stksz & ($CHECK_STKSZ_ALIGN - 1)) != 0) 278 254 $defstk_success = false … … 286 262 287 263 # 288 # å 289 ±æã¹ã¿ãã¯ã®ã¹ã¿ãã¯é å 264 # 共有スタックのスタック領域 290 265 # 291 266 $kernelCfgC.add(<<EOS) … … 302 277 303 278 # 304 # åªå 305 度å²ãå½ã¦ããã³ã¹ã¿ãã¯è¨å®ã«é¢ããçµæãæ¨æºåºåã¸è¡¨ç¤º 306 # ãã®éï¼ã¹ã¿ãã¯ãµã¤ãºã®æå®å¤ãå®éã®å²å½ã¦ãµã¤ãºãã大ãããã確èªããï¼ 279 # 優先度割り当ておよびスタック設定に関する結果を標準出力へ表示 280 # その際,スタックサイズの指定値が実際の割当てサイズより大きいかを確認する. 307 281 # 308 282 if $defepr_success && $defstk_success … … 324 298 325 299 # 326 # ã¿ã¤ã ã¤ãã³ã管ç300 # タイムイベント管理 327 301 # 328 302 tnum_tmevt = $cfgData[:CRE_CYC].size + $cfgData[:CRE_ALM].size … … 340 314 341 315 if tnum_tmevt > 0 342 # ãªãã¸ã§ã¯ãåæå颿°ã®è¿½å316 # オブジェクト初期化関数の追加 343 317 $initializeFunctions.unshift("_kernel_initialize_time_event();") 344 318 end 345 319 346 320 # 347 # åã¢ã¸ã¥ã¼ã«ã®åæå颿°321 # 各モジュールの初期化関数 348 322 # 349 323 $kernelCfgC.comment_header("Module Initialization Function") … … 359 333 360 334 # 361 # åæåã«ã¼ãã³æ©è½335 # 初期化ルーチン機能 362 336 # 363 337 $kernelCfgC.comment_header("Initialization Routine") 364 338 365 # ã¨ã©ã¼ãã§ãã¯339 # エラーチェック 366 340 $cfgData[:ATT_INI].each do |key, params| 367 # iniatr ãç¡å¹ã®å ´åï¼E_RSATRï¼368 # ï¼TA_NULLã§ãªãå ´åï¼341 # iniatrが無効の場合(E_RSATR) 342 #(TA_NULLでない場合) 369 343 if (params[:iniatr] != $TA_NULL) 370 344 error_illegal_sym("E_RSATR", params, :iniatr, :inirtn) … … 372 346 end 373 347 374 # åæåã«ã¼ãã³ã®å®è¡é¢æ°ã®çæ348 # 初期化ルーチンの実行関数の生成 375 349 $kernelCfgC.append(<<EOS) 376 350 void … … 385 359 386 360 # 387 # çµäºå¦çã«ã¼ãã³æ©è½361 # 終了処理ルーチン機能 388 362 # 389 363 $kernelCfgC.comment_header("Termination Routine") 390 364 391 # ã¨ã©ã¼ãã§ãã¯365 # エラーチェック 392 366 $cfgData[:ATT_TER].each do |key, params| 393 # teratr ãç¡å¹ã®å ´åï¼E_RSATRï¼394 # ï¼TA_NULLã§ãªãå ´åï¼367 # teratrが無効の場合(E_RSATR) 368 #(TA_NULLでない場合) 395 369 if (params[:teratr] != $TA_NULL) 396 370 error_illegal_sym("E_RSATR", params, :teratr, :terrtn) … … 398 372 end 399 373 400 # çµäºå¦çã«ã¼ãã³ã®å®è¡é¢æ°ã®çæ374 # 終了処理ルーチンの実行関数の生成 401 375 $kernelCfgC.append(<<EOS) 402 376 void … … 411 385 412 386 # 413 # kernel_cfg.h ã®æ«å°¾é¨åã®çæ387 # kernel_cfg.hの末尾部分の生成 414 388 # 415 389 $kernelCfgH.append(<<EOS) -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/kernel_api.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/kernel_check.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 49 35 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: kernel_check.trb 662 2016-02-27 02:33:51Z ertl-hiro $ … … 59 44 60 45 # 61 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹3ã®çæã¹ã¯ãªãã46 # コンフィギュレータのパス3の生成スクリプト 62 47 # 63 48 64 49 # 65 # ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®æå®50 # タイムスタンプファイルの指定 66 51 # 67 52 $timeStampFileName = "check.timestamp" 68 53 69 54 # 70 # ã¿ã¹ã¯ã«é¢ãããã§ãã¯55 # タスクに関するチェック 71 56 # 72 57 tinib_task = SYMBOL("_kernel_tinib_task") … … 74 59 task = PEEK(tinib_task, $sizeof_TASK) 75 60 76 # ã¿ã¹ã¯ã®å 77 é çªå°ã®ãã§ã㯠61 # タスクの先頭番地のチェック 78 62 if (task & ($CHECK_FUNC_ALIGN - 1)) != 0 79 63 error_wrong_id("E_PAR", params, :task, :tskid, "not aligned") … … 87 71 88 72 # 89 # 卿éç¥ã«é¢ãããã§ãã¯73 # 周期通知に関するチェック 90 74 # 91 75 cycinib_cychdr = SYMBOL("_kernel_cycinib_cychdr") … … 93 77 cychdr = PEEK(cycinib_cychdr, $sizeof_CYCHDR) 94 78 95 # 卿ãã³ãã©å 96 é çªå°ã®ãã§ã㯠79 # 周期ハンドラ先頭番地のチェック 97 80 if (cychdr & ($CHECK_FUNC_ALIGN - 1)) != 0 98 81 error_wrong_id("E_PAR", params, :cychdr, :cycid, "not aligned") … … 106 89 107 90 # 108 # ã¢ã©ã¼ã éç¥ã«é¢ãããã§ãã¯91 # アラーム通知に関するチェック 109 92 # 110 93 alminib_almhdr = SYMBOL("_kernel_alminib_almhdr") … … 112 95 almhdr = PEEK(alminib_almhdr, $sizeof_ALMHDR) 113 96 114 # ã¢ã©ã¼ã ãã³ãã©å 115 é çªå°ã®ãã§ã㯠97 # アラームハンドラ先頭番地のチェック 116 98 if (almhdr & ($CHECK_FUNC_ALIGN - 1)) != 0 117 99 error_wrong_id("E_PAR", params, :almhdr, :almid, "not aligned") … … 125 107 126 108 # 127 # å 128 ±æã¹ã¿ãã¯é åã«é¢ãããã§ã㯠109 # 共有スタック領域に関するチェック 129 110 # 130 111 stkAddr = SYMBOL("_kernel_stk") … … 132 113 stk = PEEK(stkAddr, $sizeof_void_ptr) 133 114 134 # å 135 ±æã¹ã¿ãã¯é åã®å 136 é çªå°ã®ãã§ã㯠115 # 共有スタック領域の先頭番地のチェック 137 116 if (stk & ($CHECK_STACK_ALIGN - 1)) != 0 138 117 error_wrong("E_PAR", $cfgData[:DEF_STK][1], :stk, "not aligned") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/kernel_sym.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/prc_check.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹3ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼3 # パス3の生成スクリプトのコア依存部(ARM用) 4 4 # 5 5 # $Id: core_check.trb 730 2016-04-03 02:04:52Z ertl-hiro $ … … 7 7 8 8 # 9 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã9 # ターゲット非依存部のインクルード 10 10 # 11 11 IncludeTrb("kernel/kernel_check.trb") 12 12 13 13 # 14 # å²è¾¼ã¿ãã³ãã©ãã¼ãã«ã«é¢ãããã§ãã¯14 # 割込みハンドラテーブルに関するチェック 15 15 # 16 # DEF_INH ã§ç»é²ããå²è¾¼ã¿ãã³ãã©ã®ã¿ãã§ãã¯ããï¼éã«è¨ãã¨ï¼ã³ã³ãã£17 # ã®ã¥ã¬ã¼ã¿ã§çæããå²è¾¼ã¿ãã³ãã©ãï¼default_int_handlerã®ãã§ãã¯ã¯18 # è¡ããªãï¼16 # DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ 17 # ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは 18 # 行わない. 19 19 # 20 20 inhinib_entry = SYMBOL("_kernel_inhinib_entry") … … 22 22 inthdr = PEEK(inhinib_entry, $sizeof_FP) 23 23 24 # å²è¾¼ã¿ãã³ãã©ã®å 25 é çªå°ã®ãã§ã㯠24 # 割込みハンドラの先頭番地のチェック 26 25 if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0 27 26 error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned") … … 35 34 36 35 # 37 # CPU ä¾å¤ãã³ãã©ãã¼ãã«ã«é¢ãããã§ãã¯36 # CPU例外ハンドラテーブルに関するチェック 38 37 # 39 # DEF_EXC ã§ç»é²ããCPUä¾å¤ãã³ãã©ã®ã¿ãã§ãã¯ããï¼éã«è¨ãã¨ï¼40 # default_exc_handler ã®ãã§ãã¯ã¯è¡ããªãï¼38 # DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと, 39 # default_exc_handlerのチェックは行わない. 41 40 # 42 41 excinib_entry = SYMBOL("_kernel_excinib_entry") … … 44 43 exchdr = PEEK(excinib_entry, $sizeof_FP) 45 44 46 # CPUä¾å¤ãã³ãã©ã®å 47 é çªå°ã®ãã§ã㯠45 # CPU例外ハンドラの先頭番地のチェック 48 46 if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0 49 47 error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned") -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/prc_kernel.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 12 12 # 13 13 # 14 # ä¸è¨è使¨©è 15 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 16 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 17 # å¤ã»åé 18 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 19 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 20 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 21 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 22 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 23 # ç¨ã§ããå½¢ã§åé 24 å¸ããå ´åã«ã¯ï¼åé 25 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 26 # è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 28 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 30 # ç¨ã§ããªãå½¢ã§åé 31 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 32 # ã¨ï¼ 33 # (a) åé 34 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 35 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 36 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 37 # (b) åé 38 å¸ã®å½¢æ 39 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 40 # å ±åãããã¨ï¼ 41 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 42 # 害ãããï¼ä¸è¨è使¨©è 43 ããã³TOPPERSããã¸ã§ã¯ããå 44 責ãããã¨ï¼ 45 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 46 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 47 ããã³TOPPERSããã¸ã§ã¯ãã 48 # å 49 責ãããã¨ï¼ 14 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 15 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 16 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 17 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 18 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 19 # スコード中に含まれていること. 20 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 21 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 22 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 23 # の無保証規定を掲載すること. 24 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 25 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 26 # と. 27 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 28 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 29 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 30 # 報告すること. 31 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 32 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 33 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 34 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 35 # 免責すること. 50 36 # 51 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 52 ã 53 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 54 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 55 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 56 # ã®è²¬ä»»ãè² ããªãï¼ 37 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 38 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 39 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 40 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 41 # の責任を負わない. 57 42 # 58 43 # $Id: core_kernel.trb 662 2016-02-27 02:33:51Z ertl-hiro $ … … 60 45 61 46 # 62 # ãã¹2ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼47 # パス2の生成スクリプトのコア依存部(ARM用) 63 48 # 64 49 65 50 # 66 # æå¹ãªå²è¾¼ã¿çªå·ï¼å²è¾¼ã¿ãã³ãã©çªå·51 # 有効な割込み番号,割込みハンドラ番号 67 52 # 68 53 $INTNO_VALID = Array(15..$TMAX_INTNO) … … 70 55 71 56 # 72 # æå¹ãªCPUä¾å¤ãã³ãã©çªå·57 # 有効なCPU例外ハンドラ番号 73 58 # 74 59 $EXCNO_VALID = [ 2, 3, 4, 5, 6, 11, 12, 14 ] 75 60 76 61 # 77 # ATT_ISR ã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·62 # ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号 78 63 # 79 64 $INTNO_ATTISR_VALID = $INTNO_VALID … … 81 66 82 67 # 83 # DEF_INT/DEF_EXC ã§ä½¿ç¨ã§ããå²è¾¼ã¿ãã³ãã©çªå·ï¼CPUä¾å¤ãã³ãã©çªå·68 # DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号 84 69 # 85 70 $INHNO_DEFINH_VALID = $INHNO_VALID … … 87 72 88 73 # 89 # ãã§ãã¯æ¹æ³ã®æå®74 # チェック方法の指定 90 75 # 91 76 $CHECK_STKSZ_ALIGN = 8 92 77 93 78 # 94 # CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨å²è¾¼ã¿åªå 95 度 79 # CFG_INTで使用できる割込み番号と割込み優先度 96 80 # 97 81 $INTNO_CFGINT_VALID = $INTNO_VALID … … 99 83 100 84 # 101 # å²è¾¼ã¿å±æ§ä¸ã®ã¿ã¼ã²ããä¾åã«ç¨ããããã85 # 割込み属性中のターゲット依存に用いるビット 102 86 # 103 87 #$TARGET_INTATR = 104 88 105 89 # 106 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã90 # ターゲット非依存部のインクルード 107 91 # 108 92 IncludeTrb("kernel/kernel.trb") … … 111 95 112 96 # 113 # å²è¾¼ã¿ãã¯ã¿ãã¼ãã«97 # 割込みベクタテーブル 114 98 # 115 99 $kernelCfgC.comment_header("Interrupt Vector Table") … … 144 128 145 129 # 146 # CPU ä¾å¤ãã³ãã©ãã¼ãã«130 # CPU例外ハンドラテーブル 147 131 # 148 132 $kernelCfgC.comment_header("CPU Exception Handler Table") … … 171 155 172 156 # 173 # _kernel_bitpat_cfgint ã®çæ157 # _kernel_bitpat_cfgintの生成 174 158 # 175 159 -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/prc_sym.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/ssp_ruby.patch
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 4 4 @@ -18,17 +18,17 @@ LIBS := $(LIBS) -lgcc 5 5 # 6 # ã«ã¼ãã«ã«é¢ããå®ç¾©6 # カーネルに関する定義 7 7 # 8 8 -KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/$(PRC)_$(TOOL) … … 12 12 13 13 # 14 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©14 # コンフィギュレータ関係の変数の定義 15 15 # 16 16 -CFG_TABS := $(CFG_TABS) --cfg1-def-table $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv … … 18 18 19 19 # 20 # ä¾åé¢ä¿ã®å®ç¾©20 # 依存関係の定義 21 21 # 22 22 -cfg1_out.c: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv … … 40 40 +# Nagoya Municipal Industrial Research Institute, JAPAN 41 41 # 42 # ä¸è¨è使¨©è 43 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 44 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 42 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 43 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 45 44 @@ -108,7 +110,7 @@ TECSGEN = @(TECSGEN) 46 45 # 47 # ãªãã¸ã§ã¯ããã¡ã¤ã«åã®å®ç¾©46 # オブジェクトファイル名の定義 48 47 # 49 48 -OBJNAME = asp … … 80 79 81 80 # 82 +# æ¡å¼µããã±ã¼ã¸ã«é¢ããå®ç¾©81 +# 拡張パッケージに関する定義 83 82 +# 84 83 + … … 87 86 + 88 87 +# 89 # ã¿ã¼ã²ãããã¡ã¤ã«88 # ターゲットファイル 90 89 # 91 90 .PHONY: all 92 91 @@ -219,17 +228,6 @@ endif 93 ##### 以ä¸ã¯ç·¨éããªããã¨#####94 95 # 96 -# ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã«é¢ããå®ç¾©92 ##### 以下は編集しないこと ##### 93 94 # 95 -# コンフィギュレータに関する定義 97 96 -# 98 97 -CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ … … 105 104 - 106 105 -# 107 # ã«ã¼ãã«ã«é¢ããå®ç¾©108 # 109 # KERNEL_ASMOBJS: ã«ã¼ãã«ã©ã¤ãã©ãªã«å«ããï¼ã½ã¼ã¹ãã¢ã»ã³ããªè¨èªã®106 # カーネルに関する定義 107 # 108 # KERNEL_ASMOBJS: カーネルライブラリに含める,ソースがアセンブリ言語の 110 109 @@ -244,7 +242,7 @@ CFG_CFLAGS := -DTOPPERS_CB_TYPE_ONLY $(C 111 110 KERNEL_DIRS := $(KERNEL_DIRS) $(SRCDIR)/kernel … … 116 115 117 116 # 118 # ã«ã¼ãã«ã®ãã¡ã¤ã«æ§æã®å®ç¾©117 # カーネルのファイル構成の定義 119 118 @@ -277,12 +275,24 @@ ifndef TARGET_KERNEL_CFG 120 119 endif 121 120 122 121 # 123 +# ã³ã³ãã£ãï¾ã¥ã¬ã¼ã¿ã«é¢ããå®ç¾©122 +# コンフィギュレータに関する定義 124 123 +# 125 124 +CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ … … 133 132 + 134 133 +# 135 # ã½ã¼ã¹ãã¡ã¤ã«ã®ãããã£ã¬ã¯ããªã«é¢ããå®ç¾©134 # ソースファイルのあるディレクトリに関する定義 136 135 # 137 136 -vpath %.c $(KERNEL_DIRS) $(SYSSVC_DIRS) $(APPL_DIRS) … … 145 144 146 145 # 147 # ã³ã³ãã¤ã«ã®ããã®å¤æ°ã®å®ç¾©146 # コンパイルのための変数の定義 148 147 @@ -330,7 +340,7 @@ $(TECSGEN_TIMESTAMP): $(APPL_CDL) $(TECS 149 148 # … … 163 162 164 163 # 165 # ãªãã»ãããã¡ã¤ã«ï¼offset.hï¼ã®çæè¦å164 # オフセットファイル(offset.h)の生成規則 166 165 # 167 166 $(OFFSET_H): offset.timestamp ; … … 197 196 @@ -1,6 +1,7 @@ 198 197 # 199 # Makefile ã®ã¿ã¼ã²ããä¾åé¨(CQ-FRM-FM3ç¨)198 # Makefile のターゲット依存部(CQ-FRM-FM3用) 200 199 # 201 200 +OMIT_OFFSET_H = true 202 201 203 202 # 204 # ãã¼ãåï¼ããã»ããµåï¼éçºç°å¢åã®å®ç¾©203 # ボード名,プロセッサ名,開発環境名の定義 205 204 @@ -39,7 +40,7 @@ COPTS := $(COPTS) -mcpu=cortex-m3 -mthum 206 205 # 207 # ã«ã¼ãã«ã«é¢ããå®ç¾©206 # カーネルに関する定義 208 207 # 209 208 -KERNEL_DIR := $(KERNEL_DIR) $(TARGETDIR) … … 214 213 @@ -47,21 +48,21 @@ KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fno-s 215 214 # 216 # ã·ã¹ãã ãµã¼ãã¹ã«é¢ããå®ç¾©215 # システムサービスに関する定義 217 216 # 218 217 -SYSSVC_DIR := $(SYSSVC_DIR) … … 222 221 223 222 # 224 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©223 # コンフィギュレータ関係の変数の定義 225 224 # 226 225 -CFG_TABS := $(CFG_TABS) --cfg1-def-table $(TARGETDIR)/target_def.csv … … 228 227 229 228 # 230 # ãã¬ã¼ã¹ãã°ã«é¢ããè¨å®229 # トレースログに関する設定 231 230 # 232 231 ifeq ($(ENABLE_TRACE),true) … … 248 247 249 248 # 250 # ä¾åé¢ä¿ã®å®ç¾©249 # 依存関係の定義 251 250 # 252 251 -cfg1_out.c: $(TARGETDIR)/target_def.csv … … 257 256 258 257 # 259 # ããã»ããµä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã258 # プロセッサ依存部のインクルード -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/syssvc_sym.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/target_check.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹3ã®çæã¹ã¯ãªããã®ã¿ã¼ã²ããä¾åé¨3 # パス3の生成スクリプトのターゲット依存部 4 4 # 5 5 -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/target_kernel.cfg
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/target_kernel.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹2ã®çæã¹ã¯ãªããã®ã¿ã¼ã²ããä¾åé¨3 # パス2の生成スクリプトのターゲット依存部 4 4 # 5 5 -
Property svn:mime-type
set to
-
rubycfg_ssp/trunk/task.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r284 r285 11 11 # Nagoya Municipal Industrial Research Institute, JAPAN 12 12 # 13 # ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 # å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 # ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 # è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 # ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 # ã¨ï¼ 32 # (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 # (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 # å ±åãããã¨ï¼ 40 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 # 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 # å 48 責ãããã¨ï¼ 49 # 50 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 # ã®è²¬ä»»ãè² ããªãï¼ 13 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 # スコード中に含まれていること. 19 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 # の無保証規定を掲載すること. 23 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 # と. 26 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 # 報告すること. 30 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 # 免責すること. 35 # 36 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 # の責任を負わない. 56 41 # 57 42 # $Id: task.trb 668 2016-03-03 13:57:53Z ertl-hiro $ … … 59 44 60 45 # 61 # ã¿ã¹ã¯ç®¡çã¢ã¸ã¥ã¼ã«ã®çæã¹ã¯ãªãã46 # タスク管理モジュールの生成スクリプト 62 47 # 63 48 … … 73 58 end 74 59 75 # ãªãã¸ã§ã¯ãã®IDçªå·ã®ãã¯ãå®ç¾©ã®çæ60 # オブジェクトのID番号のマクロ定義の生成 76 61 def generateIdMacro() 77 # ã¿ã¹ã¯IDãèµ·ååªå 78 度(atskpri)ã®é«ãé ã« reallocate_atskpri ã¸å²ãå½ã¦ã¦å®ç¾©ã kernel_cfg.h ã¸åºå 62 # タスクIDを起動優先度(atskpri)の高い順に reallocate_atskpri へ割り当てて定義を kernel_cfg.h へ出力 79 63 80 64 ($cfgData[:CRE_TSK].sort_by {|e| e[1][:atskpri].val}).each.with_index(1) do |e, index| … … 83 67 $kernelCfgH.add("#define #{e[1][:tskid].str} #{index}") 84 68 85 # DEF_EPR ã§å®ç¾©ããã¦ããªãã¿ã¹ã¯ã®å®è¡æåªå 86 度ãèµ·ååªå 87 度ã«è¨å®ãã 69 # DEF_EPR で定義されていないタスクの実行時優先度を起動優先度に設定する 88 70 epri = $cfgData[:DEF_EPR].find {|i| i[1][:tskid].val == e[1][:tskid].val} 89 71 if epri … … 98 80 99 81 # 100 # æå®ããã¿ã¹ã¯ã«å¯¾ããã¹ã¿ãã¯ä½¿ç¨éã®æå¤§ãè¨ç® 101 # 弿°ï¼tskidï¼ã¿ã¹ã¯ID(å 102 é¨è¡¨ç¾ï¼èµ·åæåªå 103 度ã®å 104 é¨è¡¨ç¾ã«çãã) 105 # è¿å¤ï¼å½è©²ã¿ã¹ã¯ã«è¶³ãããã¹ã¿ãã¯ä½¿ç¨éã®æå¤§å¤ï¼ 106 # ãã®å¤ã¯ï¼å½è©²ã¿ã¹ã¯ã®å®è¡éå§ããçµäºã¾ã§ã®éã« 107 # ãã®ã¿ã¹ã¯ã«å¯¾ããããªã¨ã³ãããèæ 108 ®ãã¦ã¹ã¿ãã¯ä½¿ç¨éã 109 # è¨ç®ããå ´åã«ï¼å¯è½æ§ã®ããçµã¿åããã®ä¸ã§æå¤§ã¨ãªãå¤ãè¿ãï¼ 82 # 指定したタスクに対するスタック使用量の最大を計算 83 # 引数:tskid:タスクID(内部表現.起動時優先度の内部表現に等しい) 84 # 返値:当該タスクに足しするスタック使用量の最大値. 85 # この値は,当該タスクの実行開始から終了までの間に 86 # そのタスクに対するプリエンプトを考慮してスタック使用量を 87 # 計算した場合に,可能性のある組み合わせの中で最大となる値を返す. 110 88 # 111 89 def calc_stksz(tskid, nest_level=1) … … 118 96 119 97 if @stacksize_of_tasks[tskid] 120 # è¨ç®ãæ¢ã«å®äºãã¦ããå ´åï¼è¨ç®ãã¹ããããã98 # 計算が既に完了している場合,計算をスキップする 121 99 $kernelCfgC.add(" * " + ("\t" * nest_level) + "SKIP(max_stksz[#{taskEntry[:tskid].str}] = #{@stacksize_of_tasks[tskid]})") 122 100 stksz = @stacksize_of_tasks[tskid] 123 101 else 124 # å®äºãã¦ããªãå ´å102 # 完了していない場合 125 103 $kernelCfgC.append(" * " + ("\t" * nest_level) + "Task list with higher priority than #{taskEntry[:tskid].str} = ") 126 104 @higher_pri_tsklist[tskid].each.with_index do |id, index| … … 130 108 $kernelCfgC.add() 131 109 132 # 夿°ã®åæå110 # 変数の初期化 133 111 higher_pri_maxstksz = 0 134 112 135 # å½è©²ã¿ã¹ã¯ID ã®å®è¡æåªå 136 度ããé«ãèµ·ååªå 137 度ãæã¤ã¿ã¹ã¯ãåå¨ããå ´å 113 # 当該タスクID の実行時優先度より高い起動優先度を持つタスクが存在する場合 138 114 if @higher_pri_tsklist[tskid].size > 0 139 # ããããã®é«åªå 140 度ã¿ã¹ã¯ã«å¯¾ãï¼ã¹ã¿ãã¯è¨ç®ãå®è¡ãã 115 # それぞれの高優先度タスクに対し,スタック計算を実行する 141 116 @higher_pri_tsklist[tskid].each do |id| 142 117 calculated_stack_size = calc_stksz(id, nest_level+1) 143 # æããµã¤ãºã大ãããã®ã ããè¦ãã¦ãã118 # 最もサイズが大きいものだけを覚えておく 144 119 if higher_pri_maxstksz < calculated_stack_size 145 120 higher_pri_maxstksz = calculated_stack_size … … 150 125 $kernelCfgC.add(" * " + ("\t" * nest_level) + "higher_pri_maxstksz[#{taskEntry[:tskid].str}] = #{higher_pri_maxstksz}") 151 126 152 # é«åªå 153 度ã¿ã¹ã¯ã®ã¹ã¿ãã¯ä½¿ç¨éã«ï¼å½è©²ã¿ã¹ã¯ã®ä½¿ç¨éãå ç®ãã 127 # 高優先度タスクのスタック使用量に,当該タスクの使用量を加算する 154 128 stksz = higher_pri_maxstksz + taskEntry[:stksz] 155 129 156 # å½è©²ã¿ã¹ã¯IDã«å¯¾ãã¦è¨ç®æ¸ã¿ã§ãããã¨ãè¨é²130 # 当該タスクIDに対して計算済みであることを記録 157 131 @stacksize_of_tasks[tskid] = stksz 158 132 $kernelCfgC.add(" * " + ("\t" * nest_level) + "DONE(stksz[#{taskEntry[:tskid].str}] = #{stksz})") 159 133 end 160 134 161 # è¦ç©ããã®æå¤§ãè¿ã135 # 見積もりの最大を返す 162 136 return stksz 163 137 end 164 138 165 # äºåã®ãã§ãã¯139 # 事前のチェック 166 140 def prepare() 167 141 168 142 $cfgData[@api].sort.each do |key, params| 169 143 170 # tskatr ãç¡å¹ï¼E_RSATRï¼171 # ï¼TA_ACTï¼TA_RSTRï¼TA_NULLï¼TARGET_TSKATR以å¤ã®ããããã»ããããã¦ããå ´åï¼144 # tskatrが無効(E_RSATR) 145 #(TA_ACT,TA_RSTR,TA_NULL,TARGET_TSKATR以外のビットがセットされている場合) 172 146 if (params[:tskatr] & ~($TA_ACT|$TA_RSTR|$TARGET_TSKATR)) != 0 173 147 error_illegal_id("E_RSATR", params, :tskatr, :tskid) 174 148 end 175 149 176 # (TMIN_TPRI <= atskpri && atskpri <= TMAX_TPRI) ã§ãªãå ´å150 # (TMIN_TPRI <= atskpri && atskpri <= TMAX_TPRI)でない場合 177 151 if !($TMIN_TPRI <= params[:atskpri] && params[:atskpri] <= $TMAX_TPRI) 178 152 error_illegal_id("E_PAR", params, :atskpri, :tskid) 179 153 end 180 154 181 # atskpri ãéè¤ããå ´å(E_PAR)155 # atskpri が重複する場合 (E_PAR) 182 156 @tsk_apri_list.each do |id| 183 157 if (params[:tskid].val != id) && (params[:atskpri] == $cfgData[@api][id][:atskpri]) … … 186 160 end 187 161 188 # å®è¡æåªå 189 度 162 # 実行時優先度 190 163 if $cfgData[:DEF_EPR][params[:tskid].val] 191 # exepri 㯠TMIN_TPRI ä»¥ä¸ ã㤠TMAX_TPRI 以ä¸(E_PAR)164 # exepri は TMIN_TPRI 以上 かつ TMAX_TPRI 以下(E_PAR) 192 165 exepri = $cfgData[:DEF_EPR][params[:tskid].val][:exepri] 193 166 if $TMIN_TPRI > exepri || $TMAX_TPRI < exepri … … 196 169 end 197 170 198 # exepri 㯠atskpri 以ä¸ã®å¤ããã¤(åªå 199 度ãé«ã) (E_ILUSE) 171 # exepri は atskpri 以下の値をもつ(優先度が高い) (E_ILUSE) 200 172 if exepri > params[:atskpri] 201 173 $defepr_success = false … … 204 176 end 205 177 206 # stksz ãã¿ã¼ã²ããå®ç¾©ã®æå°å¤ï¼TARGET_MIN_STKSZï¼æªå®ç¾©ã®å ´åã¯1ï¼207 # ãããå°ããå ´å178 # stkszがターゲット定義の最小値(TARGET_MIN_STKSZ,未定義の場合は1) 179 # よりも小さい場合 208 180 if params[:stksz] < $TARGET_MIN_STKSZ 209 181 error_ercd("E_PAR", params, "stksz is too small.") 210 182 end 211 183 212 # ã¹ã¿ãã¯ã®å 213 é çªå°(stk) 214 # å 215 ¨ã¦ã®å¦çåä½ã®ã¹ã¿ãã¯ã¯å 216 ±æãããï¼ 217 # ãã®ããï¼ã¹ã¿ãã¯ãµã¤ãºã«é¢ãããã§ãã¯ã¯ 218 # å 219 ±æã¹ã¿ãã¯è¨å®ã®ã¨ããã§ã¾ã¨ãã¦è¡ãï¼ 184 # スタックの先頭番地(stk) 185 # 全ての処理単位のスタックは共有される. 186 # そのため,スタックサイズに関するチェックは 187 # 共有スタック設定のところでまとめて行う. 220 188 if params[:stk] != "NULL" 221 189 error_ercd("E_PAR", params, "stk must be NULL.") … … 224 192 end 225 193 226 # ãã¼ã¿æ§é ã®çæ194 # データ構造の生成 227 195 def generateData() 228 196 229 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼197 # 事前準備(エラーチェック,メモリ領域の生成) 230 198 prepare() 231 199 232 200 # 233 # ãªãã¸ã§ã¯ãåæåãããã¯ã®çæ201 # オブジェクト初期化ブロックの生成 234 202 # 235 203 init_rdypmap = 0 236 204 237 # ã¿ã¹ã¯å±æ§(tskatr)205 # タスク属性(tskatr) 238 206 $kernelCfgC.append("const ATR\t_kernel_tinib_tskatr[TNUM_TSKID] = {") 239 207 @tsk_apri_list.each.with_index do |id, index| … … 249 217 $kernelCfgC.add("const uint_t\t_kernel_init_rdypmap = #{init_rdypmap}U;") 250 218 251 # æ¡å¼µæ 252 å ±(exinf) 219 # 拡張情報(exinf) 253 220 $kernelCfgC.append("const intptr_t\t_kernel_tinib_exinf[TNUM_TSKID] = {") 254 221 @tsk_apri_list.each.with_index do |id, index| … … 259 226 $kernelCfgC.add("};") 260 227 261 # èµ·åçªå°(task)228 # 起動番地(task) 262 229 $kernelCfgC.append("const TASK\t_kernel_tinib_task[TNUM_TSKID] = {") 263 230 @tsk_apri_list.each.with_index do |id, index| … … 268 235 $kernelCfgC.add("};") 269 236 270 # å®è¡æåªå 271 度(etskpri) 237 # 実行時優先度(etskpri) 272 238 $kernelCfgC.append("const uint_t\t_kernel_tinib_epriority[TNUM_TSKID] = {") 273 239 @tsk_apri_list.each.with_index do |id, index| … … 290 256 291 257 # 292 # åªå 293 度å²ãå½ã¦çµæãåºå 258 # 優先度割り当て結果を出力 294 259 # 295 260 $kernelCfgC.add("/*") … … 302 267 303 268 # 304 # ã¿ã¹ã¯ã®æå¤§ã¹ã¿ãã¯ä½¿ç¨éã®è¨ç®269 # タスクの最大スタック使用量の計算 305 270 # 306 271 307 # æ¨æ§é ã®ãã¼ã¿ä½æ272 # 木構造のデータ作成 308 273 $root_apri = [] 309 274 (@reallocate_atskpri.sort_by {|id| id[1]}).reverse_each do |id| 310 # åã¿ã¹ã¯æ¯ã«ï¼ãã®å®è¡æåªå 311 度ãããé«ãèµ·åæåªå 312 度ããã¤ã¿ã¹ã¯ã®ãªã¹ããä½ã 313 # ããã¯ããªã¨ã³ãããããå¯è½æ§ã®ããã¿ã¹ã¯ã®ãªã¹ãã¨ãªãï¼ 275 # 各タスク毎に,その実行時優先度よりも高い起動時優先度をもつタスクのリストを作る 276 # それはプリエンプトされる可能性のあるタスクのリストとなる. 314 277 @higher_pri_tsklist[id[0]] = [] 315 278 (@reallocate_atskpri.sort_by {|id| id[1]}).reverse_each do |id2| … … 320 283 end 321 284 322 # ããªã¨ã³ããããã»ãããé¢ä¿ãç¤ºãæ¨æ§é ã®æ ¹(root)ã¨ãªãã¿ã¹ã¯ã®æ¢ç´¢ 323 # 対象ã¿ã¹ã¯(id)ã®èµ·åæåªå 324 度(reallocate_atskpri[id]ããä½ã 325 # (å¤ã¨ãã¦ã¯å¤§ãã)èµ·åæåªå 326 度ããã¤ã¿ã¹ã¯ã® higher_pri_tsklist ã« 327 # 対象ã¿ã¹ã¯(id)ãå«ã¾ããªããã°ï¼æ ¹ã¨ãªã 285 # プリエンプトする・される関係を示す木構造の根(root)となるタスクの探索 286 # 対象タスク(id)の起動時優先度(reallocate_atskpri[id]より低い 287 # (値としては大きい)起動時優先度をもつタスクの higher_pri_tsklist に 288 # 対象タスク(id)が含まれなければ,根となる 328 289 (@reallocate_atskpri.sort_by {|id| id[1]}).reverse_each do |id| 329 290 $is_root = true … … 341 302 342 303 # 343 # åºåéå§304 # 出力開始 344 305 # 345 306 $kernelCfgC.add("/* \n * Task Stack Size Estimation:") 346 307 347 # æ ¹ã¨ãªãã¿ã¹ã¯ã«å¯¾ãï¼ãã®æå¤§ã¿ã¹ã¯ä½¿ç¨éãè¨ç®ãï¼ãªã¹ãã¸è¿½å ãã308 # 根となるタスクに対し,その最大タスク使用量を計算し,リストへ追加する 348 309 $tstksz = 0 349 310 $stksz_estimated = [] … … 352 313 end 353 314 354 # ã¿ã¹ã¯ã®ã¹ã¿ãã¯ä½¿ç¨éã®æå¤§å¤ã決å®355 # ãªã¹ãä¸ã®è¦ç´ ã®æå¤§å¤ãã¿ã¹ã¯ã®æå¤§ã¹ã¿ãã¯ä½¿ç¨éã¨ãªãï¼315 # タスクのスタック使用量の最大値を決定 316 # リスト中の要素の最大値がタスクの最大スタック使用量となる. 356 317 $tstksz = 0 357 318 $stksz_estimated.each do |size| … … 361 322 end 362 323 363 # 確èª324 # 確認 364 325 $kernelCfgC.add2(<<EOS) 365 326 * List of Estimated Total Stack Sizes of Tasks = #{$stksz_estimated} … … 370 331 371 332 # 372 # åªå 373 度å²ãå½ã¦çµæãæ¨æºåºåã¸è¡¨ç¤º 333 # 優先度割り当て結果を標準出力へ表示 374 334 # 375 335 puts <<~EOS … … 387 347 388 348 # 389 # ã¿ã¹ã¯ç®¡çã«é¢ããæ 390 å ±ã®çæ 391 # 392 393 # å®è¡æåªå 394 度ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã«æåãããã©ãã 349 # タスク管理に関する情報の生成 350 # 351 352 # 実行時優先度のコンフィギュレーションに成功したかどうか 395 353 $defepr_success = true 396 354 -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.