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.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 #               ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿ã®ãƒ‘ス2の生成スクリプト
    60 #
    61 
    62 #
    63 ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ファイルの指定
     44#               コンフィギュレータのパス2の生成スクリプト
     45#
     46
     47#
     48タイムスタンプファイルの指定
    6449#
    6550$timeStampFileName = "kernel_cfg.timestamp"
    6651
    6752#
    68 #  kernel_cfg.hのå
    69 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     53#  kernel_cfg.hの先頭部分の生成
    7054#
    7155$kernelCfgH = GenFile.new("kernel_cfg.h")
     
    7761
    7862#
    79 #  kernel_cfg.cのå
    80 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     63#  kernel_cfg.cの先頭部分の生成
    8164#
    8265$kernelCfgC = GenFile.new("kernel_cfg.c")
     
    9275
    9376#
    94 ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–(#include)
     77インクルードディレクティブ(#include)
    9578#
    9679$kernelCfgC.comment_header("Include Directives")
     
    10184
    10285#
    103 #  スタック領域の確保関数
    104 #
    105 #  スタック領域の定義分と,スタック領域のサイズ記述をé
    106 åˆ—で返す.
     86#  スタック領域の確保関数
     87#
     88#  スタック領域の定義分と,スタック領域のサイズ記述を配列で返す.
    10789#
    10890unless defined? AllocStack()
    10991  def AllocStack(stack, size, section)
    110     # 大きい方に丸めたサイズで確保する[NGKI1050][NGKI3220ï¼½
     92    # 大きい方に丸めたサイズで確保する[NGKI1050][NGKI3220]
    11193    $kernelCfgC.add("/*static*/ STK_T __attribute__((section(\"#{section}\"),aligned(16))) #{stack}[COUNT_STK_T(#{size})];")
    11294    return("ROUND_STK_T(#{size})")
     
    11597
    11698#
    117 #  カーネルオブジェクトに関するæƒ
    118 å ±ã®ç”Ÿæˆï¼ˆä»®æƒ³ã‚¯ãƒ©ã‚¹ï¼‰
     99#  カーネルオブジェクトに関する情報の生成(仮想クラス)
    119100#
    120101class KernelObject
     
    131112
    132113  def generate()
    133     # AID_@OBJの処理
     114    # AID_@OBJの処理
    134115    numAutoObjid = 0
    135116    $cfgData["AID_#{@OBJ}".to_sym].each do |key, params|
     
    138119    numObjid = $cfgData[@api].size + numAutoObjid
    139120
    140     # kernel_cfg.hの生成
     121    # kernel_cfg.hの生成
    141122    $kernelCfgH.add("#define TNUM_#{@OBJ}ID\t#{numObjid}")
    142123
    143     # オブジェクトのID番号のマクロ定義の生成
     124    # オブジェクトのID番号のマクロ定義の生成
    144125    $cfgData[@api].sort.each do |key, params|
    145126      $kernelCfgH.add("#define #{params[@objid]}\t#{params[@objid].val}")
     
    147128    $kernelCfgH.add()
    148129
    149     # オブジェクトのID番号を保持する変数
     130    # オブジェクトのID番号を保持する変数
    150131    if $USE_EXTERNAL_ID
    151132      $cfgData[@api].sort.each do |key, params|
     
    156137    end
    157138
    158     # 静的に生成されたオブジェクトの数
     139    # 静的に生成されたオブジェクトの数
    159140    $kernelCfgC.add("#define TNUM_S#{@OBJ}ID\t#{$cfgData[@api].size}")
    160141
    161     # オブジェクトID番号の最大値
     142    # オブジェクトID番号の最大値
    162143    $kernelCfgC.add("const ID _kernel_tmax_#{@obj}id" \
    163144                                                        " = (TMIN_#{@OBJ}ID + TNUM_#{@OBJ}ID - 1);")
     
    165146                                                        " = (TMIN_#{@OBJ}ID + TNUM_S#{@OBJ}ID - 1);")
    166147
    167     # データ構造
     148    # データ構造
    168149    if $cfgData[@api].size > 0
    169       # 事前準備(エラーチェック,メモリ領域の生成)
     150      # 事前準備(エラーチェック,メモリ領域の生成)
    170151      $cfgData[@api].sort.each do |key, params|
    171152        prepare(key, params)
    172153      end
    173154
    174       # オブジェクトå
    175 ¨ä½“に対してå¿
    176 è¦ãªãƒ¡ãƒ¢ãƒªé ˜åŸŸã®ç”Ÿæˆï¼ˆã‚ªãƒ—ション)
     155      # オブジェクト全体に対して必要なメモリ領域の生成(オプション)
    177156      if respond_to?(:generateData)
    178157        generateData()
    179158      end
    180159
    181       # オブジェクト初期化ブロックの生成
     160      # オブジェクト初期化ブロックの生成
    182161      $kernelCfgC.add("const #{@OBJ_S}INIB _kernel_#{@obj_s}inib_table" \
    183162                                                                                                        "[TNUM_S#{@OBJ}ID] = {")
     
    193172    end
    194173
    195     # 動的生成オブジェクト用のオブジェクト初期化ブロック
     174    # 動的生成オブジェクト用のオブジェクト初期化ブロック
    196175    @inibList.each do |type, array|
    197176      if numAutoObjid > 0
     
    203182
    204183    if numObjid > 0
    205       # オブジェクト管理ブロックの生成
     184      # オブジェクト管理ブロックの生成
    206185      $kernelCfgC.add2("#{@OBJ_S}CB _kernel_#{@obj_s}cb_table" \
    207186                                                                                                        "[TNUM_#{@OBJ}ID];")
    208187
    209       # オブジェクト初期化関数の追加
     188      # オブジェクト初期化関数の追加
    210189      $initializeFunctions.push("_kernel_initialize_#{@object}();")
    211190    else
     
    217196
    218197#
    219 é€šçŸ¥ãƒãƒ³ãƒ‰ãƒ©ã®ç”Ÿæˆé–¢æ•°
     198通知ハンドラの生成関数
    220199#
    221200def generateNotifyHandler(key, params, objid)
    222   # パラメータを変数に格納
     201  # パラメータを変数に格納
    223202  nfymode = params[:nfymode]
    224203  nfymode1 = nfymode & 0x0f
     
    227206  par2 = params[:par2]
    228207
    229   # 通知処理のパラメータ数による補正処理
     208  # 通知処理のパラメータ数による補正処理
    230209  if nfymode == $TNFY_HANDLER || nfymode1 == $TNFY_SETVAR \
    231210                                                                || nfymode1 == $TNFY_SETFLG \
    232211                                                                || nfymode1 == $TNFY_SNDDTQ
    233     # 通知処理のパラメータが2つの場合
     212    # 通知処理のパラメータが2つの場合
    234213        numpar = 2
    235214        epar1 = params[:par3]
    236215        epar2 = params[:par4]
    237216  else
    238     # 通知処理のパラメータが1つの場合
     217    # 通知処理のパラメータが1つの場合
    239218    numpar = 1
    240219    epar1 = params[:par2]
     
    242221  end
    243222
    244   # パラメータ数のチェック
     223  # パラメータ数のチェック
    245224  if (numpar == 2 && par2.nil?) || (nfymode2 != 0 && epar1.nil?) \
    246225                                                                || (nfymode2 == $TENFY_SETFLG && epar2.nil?)
    247     # パラメータが足りない場合
     226    # パラメータが足りない場合
    248227    error_api(params, "too few parameters for nfymode `#{nfymode}' " \
    249228                                                                                        "in %apiname of %#{objid}")
    250229  elsif (nfymode2 == 0 && !epar1.nil?) \
    251230                                        || (nfymode2 != $TENFY_SETFLG && !epar2.nil?)
    252     # パラメータが多すぎる場合
     231    # パラメータが多すぎる場合
    253232    error_api(params, "too many parameters for nfymode `#{nfymode}' " \
    254233                                                                                        "in %apiname of %#{objid}")
    255234  elsif nfymode == $TNFY_HANDLER
    256     # タイムイベントハンドラの呼出し
     235    # タイムイベントハンドラの呼出し
    257236    funcname = "(NFYHDR)(#{par2})"
    258237  else
    259     # 通知ハンドラの関数名
     238    # 通知ハンドラの関数名
    260239    funcname = "_kernel_nfyhdr_#{params[objid]}"
    261240
    262     # エラー通知のための変数のアドレスとオブジェクトIDを格納する
    263     # 変数の生成(エラーチェックのためにå¿
    264 è¦ï¼‰
     241    # エラー通知のための変数のアドレスとオブジェクトIDを格納する
     242    # 変数の生成(エラーチェックのために必要)
    265243    if nfymode2 == $TENFY_SETVAR || nfymode2 == $TENFY_INCVAR
    266244      $kernelCfgC.add2("intptr_t *const #{funcname}_p_evar =" \
     
    276254    end
    277255
    278     # 関数のå
    279 ˆé ­éƒ¨åˆ†ã®ç”Ÿæˆ
     256    # 関数の先頭部分の生成
    280257    $kernelCfgC.add("static void")
    281258    $kernelCfgC.add("#{funcname}(intptr_t exinf)")
     
    283260
    284261    if nfymode2 == 0
    285       # エラー通知がない場合
     262      # エラー通知がない場合
    286263      errorCode = "(void) "
    287264    else
    288       # エラー通知がある場合
     265      # エラー通知がある場合
    289266      $kernelCfgC.add2("\tER\tercd;")
    290267      errorCode = "ercd = "
    291268    end
    292269
    293     # イベント通知処理の処理
     270    # イベント通知処理の処理
    294271    if nfymode1 == $TNFY_SETVAR && nfymode2 == 0
    295       # 変数の設定
     272      # 変数の設定
    296273      $kernelCfgC.add("\t*((intptr_t *) exinf) = (#{par2});")
    297274    elsif nfymode1 == $TNFY_INCVAR && nfymode2 == 0
    298       # 変数のインクリメント
     275      # 変数のインクリメント
    299276      $kernelCfgC.add("\t(void) loc_cpu();")
    300277      $kernelCfgC.add("\t*((intptr_t *) exinf) += 1;")
    301278      $kernelCfgC.add("\t(void) unl_cpu();")
    302279    elsif nfymode1 == $TNFY_ACTTSK
    303       # タスクの起動
     280      # タスクの起動
    304281      $kernelCfgC.add("\t#{errorCode}act_tsk((ID) exinf);")
    305282    elsif nfymode1 == $TNFY_WUPTSK
    306       # タスクの起床
     283      # タスクの起床
    307284      $kernelCfgC.add("\t#{errorCode}wup_tsk((ID) exinf);")
    308285    elsif nfymode1 == $TNFY_SIGSEM
    309       # セマフォの返却
     286      # セマフォの返却
    310287      $kernelCfgC.add("\t#{errorCode}sig_sem((ID) exinf);")
    311288    elsif nfymode1 == $TNFY_SETFLG
    312       # イベントフラグのセット
     289      # イベントフラグのセット
    313290      $kernelCfgC.add("\t#{errorCode}set_flg(((ID) exinf), #{par2});")
    314291    elsif nfymode1 == $TNFY_SNDDTQ
    315       # データキューへの送信
     292      # データキューへの送信
    316293      $kernelCfgC.add("\t#{errorCode}psnd_dtq(((ID) exinf), #{par2});")
    317294    else
     
    320297                       
    321298    if nfymode2 != 0
    322       # エラー通知処理の処理
     299      # エラー通知処理の処理
    323300      $kernelCfgC.add("\tif (ercd != E_OK) {")
    324301
    325302
    326303      if nfymode2 == $TENFY_SETVAR
    327         # 変数の設定
     304        # 変数の設定
    328305        $kernelCfgC.add("\t\t*#{funcname}_p_evar = (intptr_t) ercd;")
    329306      elsif nfymode2 == $TENFY_INCVAR
    330         # 変数のインクリメント
     307        # 変数のインクリメント
    331308        $kernelCfgC.add("\t\t(void) loc_cpu();")
    332309        $kernelCfgC.add("\t\t*#{funcname}_p_evar += 1;")
    333310        $kernelCfgC.add("\t\t(void) unl_cpu();")
    334311      elsif nfymode2 == $TENFY_ACTTSK
    335         # タスクの起動
     312        # タスクの起動
    336313        $kernelCfgC.add("\t\t(void) act_tsk(#{funcname}_etskid);")
    337314      elsif nfymode2 == $TENFY_WUPTSK
    338         # タスクの起床
     315        # タスクの起床
    339316        $kernelCfgC.add("\t\t(void) wup_tsk(#{funcname}_etskid);")
    340317      elsif nfymode2 == $TENFY_SIGSEM
    341         # セマフォの返却
     318        # セマフォの返却
    342319        $kernelCfgC.add("\t\t(void) sig_sem(#{funcname}_esemid);")
    343320      elsif nfymode2 == $TENFY_SETFLG
    344         # イベントフラグのセット
     321        # イベントフラグのセット
    345322        $kernelCfgC.add("\t\t(void) set_flg(#{funcname}_eflgid, #{epar2});")
    346323      elsif nfymode2 == $TENFY_SNDDTQ
    347         # データキューへの送信
     324        # データキューへの送信
    348325        $kernelCfgC.add("\t\t(void) psnd_dtq(#{funcname}_edtqid," \
    349326                                                                                                        " (intptr_t) ercd);")
     
    354331    end
    355332
    356     # 関数の末尾部分の生成
     333    # 関数の末尾部分の生成
    357334    $kernelCfgC.add2("}")
    358335  end
     
    361338
    362339#
    363 å„機能モジュールのコンフィギュレーション
     340各機能モジュールのコンフィギュレーション
    364341#
    365342$initializeFunctions = []
     
    377354
    378355#
    379 éžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆç”¨ã®ã‚¹ã‚¿ãƒƒã‚¯é ˜åŸŸ
     356非タスクコンテキスト用のスタック領域
    380357#
    381358$kernelCfgC.comment_header("Stack Area for Non-task Context")
    382359
    383360if $cfgData[:DEF_ICS].size == 0
    384   # DEF_ICSがない場合のデフォルト値の設定
     361  # DEF_ICSがない場合のデフォルト値の設定
    385362  if $DEFAULT_ISTK.nil?
    386     # スタック領域の自動割付け
     363    # スタック領域の自動割付け
    387364    istksz = AllocStack("_kernel_istack", "DEFAULT_ISTKSZ", "SI")
    388365    istk = "_kernel_istack"
     
    392369  end
    393370else
    394   # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216ï¼½
     371  # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216]
    395372  if $cfgData[:DEF_ICS].size > 1
    396373    error("E_OBJ: too many DEF_ICS")
    397374  end
    398375
    399   # DEF_ICSがある場合の処理
     376  # DEF_ICSがある場合の処理
    400377  params = $cfgData[:DEF_ICS][1]
    401378
    402   # パラメータが省略された時のデフォルト値の設定
     379  # パラメータが省略された時のデフォルト値の設定
    403380  params[:istk] ||= "NULL"
    404381
    405   # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
    406   # よりも小さい場合(E_PAR)[NGKI3254ï¼½
     382  # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1)
     383  # よりも小さい場合(E_PAR)[NGKI3254]
    407384  if params[:istksz] < $TARGET_MIN_ISTKSZ
    408385    error_wrong("E_PAR", params, :istksz, "too small")
     
    410387
    411388  if params[:istk] == "NULL"
    412     # スタック領域の自動割付け
     389    # スタック領域の自動割付け
    413390    istksz = AllocStack("_kernel_istack", params[:istksz], "SI")
    414391    istk = "_kernel_istack"
    415392  else
    416     # istkszがスタック領域のサイズとして正しくない場合(E_PAR)[NGKI3222ï¼½
     393    # istkszがスタック領域のサイズとして正しくない場合(E_PAR)[NGKI3222]
    417394    if (params[:istksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0
    418395      error_wrong("E_PAR", params, :istksz, "not aligned")
     
    434411
    435412#
    436 ã‚«ãƒ¼ãƒãƒ«ãŒå‰²ã‚Šä»˜ã‘るメモリ領域
     413カーネルが割り付けるメモリ領域
    437414#
    438415$kernelCfgC.comment_header("Memory Area Allocated by Kernel")
    439416
    440417if $cfgData[:DEF_KMM].size == 0
    441   # DEF_KMMがない場合のデフォルト値の設定
     418  # DEF_KMMがない場合のデフォルト値の設定
    442419  kmmsz = "0"
    443420  kmm = "NULL"
    444421else
    445   # 静的API「DEF_KMM」が複数ある(E_OBJ)
     422  # 静的API「DEF_KMM」が複数ある(E_OBJ)
    446423  if ($cfgData[:DEF_KMM].size > 1)
    447424    error("E_OBJ: too many DEF_KMM")
    448425  end
    449426
    450   # DEF_KMMがある場合の処理
     427  # DEF_KMMがある場合の処理
    451428  params = $cfgData[:DEF_KMM][1]
    452429
    453   # パラメータが省略された時のデフォルト値の設定
     430  # パラメータが省略された時のデフォルト値の設定
    454431  params[:kmm] ||= "NULL"
    455432
    456   # kmmszが0の場合(E_PAR)
     433  # kmmszが0の場合(E_PAR)
    457434  if params[:kmmsz] == 0
    458435    error_wrong("E_PAR", params, :kmmsz, "zero")
     
    460437
    461438  if params[:kmm] == "NULL"
    462     # カーネルが割り付けるメモリ領域の自動割付け
     439    # カーネルが割り付けるメモリ領域の自動割付け
    463440    $kernelCfgC.add("static MB_T _kernel_memory" \
    464441                                        "[TOPPERS_COUNT_SZ(#{params[:kmmsz]}, sizeof(MB_T))];")
     
    466443    kmm = "_kernel_memory"
    467444  else
    468     # kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合
    469     # (E_PAR)
     445    # kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合
     446    # (E_PAR)
    470447    if (params[:kmmsz] & ($CHECK_MB_ALIGN - 1)) != 0
    471448      error_wrong("E_PAR", params, :kmmsz, "not aligned")
     
    483460
    484461#
    485 ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆç®¡ç†
     462タイムイベント管理
    486463#
    487464$kernelCfgC.comment_header("Time Event Management")
     
    491468
    492469#
    493 å„モジュールの初期化関数
     470各モジュールの初期化関数
    494471#
    495472$kernelCfgC.comment_header("Module Initialization Function")
     
    505482
    506483#
    507 åˆæœŸåŒ–ルーチン機能
     484初期化ルーチン機能
    508485#
    509486$kernelCfgC.comment_header("Initialization Routine")
    510487
    511 # エラーチェック
     488# エラーチェック
    512489$cfgData[:ATT_INI].each do |key, params|
    513   # iniatrが無効の場合(E_RSATR)[NGKI3241ï¼½
    514   #(TA_NULLでない場合)
     490  # iniatrが無効の場合(E_RSATR)[NGKI3241]
     491  #(TA_NULLでない場合)
    515492  if (params[:iniatr] != $TA_NULL)
    516493    error_illegal_sym("E_RSATR", params, :iniatr, :inirtn)
     
    518495end
    519496
    520 # 初期化ルーチンの実行関数の生成
     497# 初期化ルーチンの実行関数の生成
    521498$kernelCfgC.append(<<EOS)
    522499void
     
    531508
    532509#
    533 çµ‚了処理ルーチン機能
     510終了処理ルーチン機能
    534511#
    535512$kernelCfgC.comment_header("Termination Routine")
    536513
    537 # エラーチェック
     514# エラーチェック
    538515$cfgData[:ATT_TER].each do |key, params|
    539   # teratrが無効の場合(E_RSATR)[NGKI3248ï¼½
    540   #(TA_NULLでない場合)
     516  # teratrが無効の場合(E_RSATR)[NGKI3248]
     517  #(TA_NULLでない場合)
    541518  if (params[:teratr] != $TA_NULL)
    542519    error_illegal_sym("E_RSATR", params, :teratr, :terrtn)
     
    544521end
    545522
    546 # 終了処理ルーチンの実行関数の生成
     523# 終了処理ルーチンの実行関数の生成
    547524$kernelCfgC.append(<<EOS)
    548525void
     
    557534
    558535#
    559 #  kernel_cfg.hの末尾部分の生成
     536#  kernel_cfg.hの末尾部分の生成
    560537#
    561538$kernelCfgH.append(<<EOS)
Note: See TracChangeset for help on using the changeset viewer.