Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/kernel/kernel_check.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     11#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     12#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     13#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     15#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     16#       スコード中に含まれていること.
     17#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     18#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     19#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     20#       の無保証規定を掲載すること.
     21#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     22#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     23#       と.
     24#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     25#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     26#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     27#         報告すること.
     28#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     29#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     30#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     31#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32#       免責すること.
    4733
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    5540#   $Id$
     
    5742
    5843#
    59 #               ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿ã®ãƒ‘ス3の生成スクリプト
    60 #
    61 
    62 #
    63 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの指定
     44#               コンフィギュレータのパス3の生成スクリプト
     45#
     46
     47#
     48タイムスタンプファイルの指定
    6449#
    6550$timeStampFileName = "check.timestamp"
    6651
    6752#
    68 ãƒ‡ãƒ¼ã‚¿ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®LMAからVMAへのコピー
     53データセクションのLMAからVMAへのコピー
    6954#
    7055if !$lmaList.nil?
     
    8671
    8772#
    88 #  通知æƒ
    89 å ±ã®ãƒã‚§ãƒƒã‚¯é–¢æ•°
     73#  通知情報のチェック関数
    9074#
    9175$tmax_tskid = $TMIN_TSKID + $cfgData[:CRE_TSK].size - 1
     
    9579
    9680def checkNotifyHandler(key, params, objid, exinf, nfyhdr)
    97   # パラメータを変数に格納
     81  # パラメータを変数に格納
    9882  nfymode = params[:nfymode]
    9983  nfymode1 = nfymode & 0x0f
     
    10387  funcname = "_kernel_nfyhdr_#{params[objid]}"
    10488
    105   # 通知処理のパラメータ数による補正処理
     89  # 通知処理のパラメータ数による補正処理
    10690  if nfymode1 == $TNFY_SETVAR || nfymode1 == $TNFY_SETFLG \
    10791                                                                || nfymode1 == $TNFY_SNDDTQ
    108     # 通知処理のパラメータが2つの場合
     92    # 通知処理のパラメータが2つの場合
    10993    epar1 = params[:par3]
    11094    epar2 = params[:par4]
    11195  else
    112     # 通知処理のパラメータが1つの場合
     96    # 通知処理のパラメータが1つの場合
    11397    epar1 = params[:par2]
    11498    epar2 = params[:par3]
    11599  end
    116100
    117   #     ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ã®å
    118 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3693ï¼½
     101  #     タイムイベントハンドラの先頭番地のチェック[NGKI3693]
    119102  if nfymode == $TNFY_HANDLER
    120103    tmehdr = nfyhdr
     
    129112  end
    130113
    131   #     ã‚¤ãƒ™ãƒ³ãƒˆé€šçŸ¥å‡¦ç†ã®å¤‰æ•°ã®ç•ªåœ°ã¨ã‚ªãƒ–ジェクトIDのチェック
     114  #     イベント通知処理の変数の番地とオブジェクトIDのチェック
    132115  if nfymode1 == $TNFY_SETVAR || nfymode1 == $TNFY_INCVAR
    133     # 変数の設定/インクリメントによるタイムイベントの通知
     116    # 変数の設定/インクリメントによるタイムイベントの通知
    134117        p_var = exinf
    135118    params1 = params.dup
    136119    params1[:p_var] = par1
    137120
    138     # 変数の番地のチェック[NGKI3699][NGKI3897ï¼½
     121    # 変数の番地のチェック[NGKI3699][NGKI3897]
    139122    if (p_var & ($CHECK_INTPTR_ALIGN - 1)) != 0
    140123      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
     
    144127    end
    145128  elsif (nfymode1 == $TNFY_ACTTSK || nfymode1 == $TNFY_WUPTSK)
    146     # タスクの起動/起床によるタイムイベントの通知
     129    # タスクの起動/起床によるタイムイベントの通知
    147130    tskid = exinf
    148131    params1 = params.dup
    149132    params1[:tskid] = par1
    150133
    151     # タスクIDのチェック[NGKI3704ï¼½
     134    # タスクIDのチェック[NGKI3704]
    152135    if !($TMIN_TSKID <= tskid && tskid <= $tmax_tskid)
    153136      error_illegal_id("E_ID", params1, :tskid, objid)
    154137    end
    155138  elsif nfymode1 == $TNFY_SIGSEM
    156     # セマフォの資源の返却によるタイムイベントの通知
     139    # セマフォの資源の返却によるタイムイベントの通知
    157140    semid = exinf
    158141    params1 = params.dup
    159142    params1[:semid] = par1
    160143
    161     # セマフォIDのチェック[NGKI3707ï¼½
     144    # セマフォIDのチェック[NGKI3707]
    162145    if !($TMIN_SEMID <= semid && semid <= $tmax_semid)
    163146      error_illegal_id("E_ID", params1, :semid, objid)
    164147    end
    165148  elsif nfymode1 == $TNFY_SETFLG
    166     # イベントフラグのセットによるタイムイベントの通知
     149    # イベントフラグのセットによるタイムイベントの通知
    167150    flgid = exinf
    168151    params1 = params.dup
    169152    params1[:flgid] = par1
    170153
    171     # イベントフラグIDのチェック[NGKI3710ï¼½
     154    # イベントフラグIDのチェック[NGKI3710]
    172155    if !($TMIN_FLGID <= flgid && flgid <= $tmax_flgid)
    173156      error_illegal_id("E_ID", params1, :flgid, objid)
    174157    end
    175158  elsif nfymode1 == $TNFY_SNDDTQ
    176     # データキューへの送信によるタイムイベントの通知
     159    # データキューへの送信によるタイムイベントの通知
    177160    dtqid = exinf
    178161    params1 = params.dup
    179162    params1[:dtqid] = par1
    180163
    181     # データキューIDのチェック[NGKI3713ï¼½
     164    # データキューIDのチェック[NGKI3713]
    182165    if !($TMIN_DTQID <= dtqid && dtqid <= $tmax_dtqid)
    183166      error_illegal_id("E_ID", params1, :dtqid, objid)
     
    185168  end
    186169
    187   # エラー通知処理の変数の番地とオブジェクトIDのチェック
     170  # エラー通知処理の変数の番地とオブジェクトIDのチェック
    188171  if (nfymode2 == $TENFY_SETVAR || nfymode2 == $TENFY_INCVAR)
    189     # 変数の設定/インクリメントによるエラーの通知
     172    # 変数の設定/インクリメントによるエラーの通知
    190173    p_var = PEEK(SYMBOL(funcname + "_p_evar"), $sizeof_intptr_t)
    191174    params1 = params.dup
    192175    params1[:p_var] = epar1
    193176
    194     # 変数の番地のチェック[NGKI3701][NGKI3897ï¼½
     177    # 変数の番地のチェック[NGKI3701][NGKI3897]
    195178    if (p_var & ($CHECK_INTPTR_ALIGN - 1)) != 0
    196179      error_wrong_id("E_PAR", params1, :p_var, objid, "not aligned")
     
    200183    end
    201184  elsif nfymode2 == $TENFY_ACTTSK || nfymode2 == $TENFY_WUPTSK
    202     # タスクの起動/起床によるエラーの通知
     185    # タスクの起動/起床によるエラーの通知
    203186    tskid = PEEK(SYMBOL(funcname + "_etskid"), $sizeof_ID)
    204187    params1 = params.dup
    205188    params1[:tskid] = epar1
    206189
    207     # タスクIDのチェック[NGKI3704ï¼½
     190    # タスクIDのチェック[NGKI3704]
    208191    if !($TMIN_TSKID <= tskid && tskid <= $tmax_tskid)
    209192      error_illegal_id("E_ID", params1, :tskid, objid)
    210193    end
    211194  elsif nfymode2 == $TENFY_SIGSEM
    212     # セマフォの資源の返却によるエラーの通知
     195    # セマフォの資源の返却によるエラーの通知
    213196        semid = PEEK(SYMBOL(funcname + "_esemid"), $sizeof_ID)
    214197    params1 = params.dup
    215198    params1[:semid] = epar1
    216199
    217     # セマフォIDのチェック[NGKI3707ï¼½
     200    # セマフォIDのチェック[NGKI3707]
    218201    if !($TMIN_SEMID <= semid && semid <= $tmax_semid)
    219202      error_illegal_id("E_ID", params1, :semid, objid)
    220203    end
    221204  elsif nfymode2 == $TENFY_SETFLG
    222     # イベントフラグのセットによるエラーの通知
     205    # イベントフラグのセットによるエラーの通知
    223206    flgid = PEEK(SYMBOL(funcname + "_eflgid"), $sizeof_ID)
    224207    params1 = params.dup
    225208    params1[:flgid] = epar1
    226209
    227     # イベントフラグIDのチェック[NGKI3710ï¼½
     210    # イベントフラグIDのチェック[NGKI3710]
    228211    if !($TMIN_FLGID <= flgid && flgid <= $tmax_flgid)
    229212      error_illegal_id("E_ID", params1, :flgid, objid)
    230213    end
    231214  elsif nfymode2 == $TENFY_SNDDTQ
    232     # データキューへの送信によるエラーの通知
     215    # データキューへの送信によるエラーの通知
    233216    dtqid = PEEK(SYMBOL(funcname + "_edtqid"), $sizeof_ID)
    234217    params1 = params.dup
    235218    params1[:dtqid] = epar1
    236219
    237     # データキューIDのチェック[NGKI3715ï¼½
     220    # データキューIDのチェック[NGKI3715]
    238221    if !($TMIN_DTQID <= dtqid && dtqid <= $tmax_dtqid)
    239222      error_illegal_id("E_ID", params1, :dtqid, objid)
     
    243226
    244227#
    245 ã‚¿ã‚¹ã‚¯ã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     228タスクに関するチェック
    246229#
    247230tinib = SYMBOL("_kernel_tinib_table")
     
    249232  task = PEEK(tinib + $offsetof_TINIB_task, $sizeof_TASK)
    250233
    251   # タスクのå
    252 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1033ï¼½
     234  # タスクの先頭番地のチェック[NGKI1033]
    253235  if (task & ($CHECK_FUNC_ALIGN - 1)) != 0
    254236    error_wrong_id("E_PAR", params, :task, :tskid, "not aligned")
     
    258240  end
    259241
    260   # タスクのスタック領域のå
    261 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI1056ï¼½
     242  # タスクのスタック領域の先頭番地のチェック[NGKI1056]
    262243  if $USE_TSKINICTXB
    263244    stk = GetStackTskinictxb(key, params, tinib)
     
    276257
    277258#
    278 å›ºå®šé•·ãƒ¡ãƒ¢ãƒªãƒ—ールに関するチェック
     259固定長メモリプールに関するチェック
    279260#
    280261mpfinib = SYMBOL("_kernel_mpfinib_table")
     
    282263  mpf = PEEK(mpfinib + $offsetof_MPFINIB_mpf, $sizeof_void_ptr)
    283264
    284   # 固定長メモリプール領域のå
    285 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI2249ï¼½
     265  # 固定長メモリプール領域の先頭番地のチェック[NGKI2249]
    286266  if (mpf & ($CHECK_MPF_ALIGN - 1)) != 0
    287267    error_wrong_id("E_PAR", params, :mpf, :mpfid, "not aligned")
     
    295275
    296276#
    297 å‘¨æœŸé€šçŸ¥ã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     277周期通知に関するチェック
    298278#
    299279cycinib = SYMBOL("_kernel_cycinib_table")
     
    302282  nfyhdr = PEEK(cycinib + $offsetof_CYCINIB_nfyhdr, $sizeof_NFYHDR)
    303283
    304   #     é€šçŸ¥æƒ
    305 å ±ã®ãƒã‚§ãƒƒã‚¯
     284  #     通知情報のチェック
    306285  checkNotifyHandler(key, params, :cycid, exinf, nfyhdr)
    307286
     
    310289
    311290#
    312 ã‚¢ãƒ©ãƒ¼ãƒ é€šçŸ¥ã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     291アラーム通知に関するチェック
    313292#
    314293alminib = SYMBOL("_kernel_alminib_table")
     
    317296  nfyhdr = PEEK(alminib + $offsetof_ALMINIB_nfyhdr, $sizeof_NFYHDR)
    318297
    319   #     é€šçŸ¥æƒ
    320 å ±ã®ãƒã‚§ãƒƒã‚¯
     298  #     通知情報のチェック
    321299  checkNotifyHandler(key, params, :almid, exinf, nfyhdr)
    322300
     
    325303
    326304#
    327 å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチンに関するチェック
     305割込みサービスルーチンに関するチェック
    328306#
    329307isrinib = SYMBOL("_kernel_isrinib_table")
     
    331309  isr = PEEK(isrinib + $offsetof_ISRINIB_isr, $sizeof_ISR)
    332310
    333   # 割込みサービスルーチンのå
    334 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3004ï¼½
     311  # 割込みサービスルーチンの先頭番地のチェック[NGKI3004]
    335312  if (isr & ($CHECK_FUNC_ALIGN - 1)) != 0
    336313    error_wrong_id("E_PAR", params, :isr, :isrid, "not aligned")
     
    344321
    345322#
    346 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸã«é–¢ã™ã‚‹ãƒã‚§ãƒƒã‚¯
     323非タスクコンテキスト用のスタック領域に関するチェック
    347324#
    348325istkAddr = SYMBOL("_kernel_istk")
     
    350327  istk = PEEK(istkAddr, $sizeof_void_ptr)
    351328
    352   # 非タスクコンテキスト用のスタック領域のå
    353 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3222ï¼½
     329  # 非タスクコンテキスト用のスタック領域の先頭番地のチェック[NGKI3222]
    354330  if (istk & ($CHECK_STACK_ALIGN - 1)) != 0
    355331    error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned")
     
    361337
    362338#
    363 ã‚«ãƒ¼ãƒãƒ«ãŒå‰²ã‚Šä»˜ã‘るメモリ領域に関するチェック
     339カーネルが割り付けるメモリ領域に関するチェック
    364340#
    365341kmmAddr = SYMBOL("_kernel_kmm")
     
    367343  kmm = PEEK(kmmAddr, $sizeof_void_ptr)
    368344
    369   # カーネルが割り付けるメモリ領域のå
    370 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
     345  # カーネルが割り付けるメモリ領域の先頭番地のチェック
    371346  if (kmm & ($CHECK_MB_ALIGN - 1)) != 0
    372347    error_wrong("E_PAR", $cfgData[:DEF_KMM][1], :kmm, "not aligned")
Note: See TracChangeset for help on using the changeset viewer.