source: asp3_tinet_ecnl_rx/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRPTaskPlugin.rb@ 374

Last change on this file since 374 was 374, checked in by coas-nagasima, 5 years ago

mbed関連を更新
シリアルドライバをmbedのHALを使うよう変更
ファイルディスクリプタの処理を更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 5.2 KB
Line 
1# coding: utf-8
2#
3# TECS Generator
4# Generator for TOPPERS Embedded Component System
5#
6# Copyright (C) 2008-2018 by TOPPERS Project
7#--
8# 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
9# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
10# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
11# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
12# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
13# スコード中に含まれていること.
14# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
15# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
16# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
17# の無保証規定を掲載すること.
18# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
19# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
20# と.
21# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
22# 作権表示,この利用条件および下記の無保証規定を掲載すること.
23# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
24# 報告すること.
25# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
26# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
27# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
28# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
29# 免責すること.
30#
31# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
32# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
33# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
34# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
35# の責任を負わない.
36#
37# $Id$
38#++
39
40require_tecsgen_lib "HRPKernelObjectPlugin.rb"
41require_tecsgen_lib "HRPKernelObjectManager.rb"
42#== celltype プラグインの共通の親クラス
43class HRPTaskPlugin < HRPKernelObjectPlugin
44 ##
45 # oyama: add to avoid Ruby exception in code generation phase.
46 def new_cell cell
47 region = cell.get_region
48 dbgPrint "HRPTaskCelltypePlugin new_cell=#{cell.get_name} region=#{region.get_name}\n"
49 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
50 if domainOption == "OutOfDomain"
51 cdl_error( "HRP9999 HRP task '$1' must belong to a domain", cell.get_name )
52 end
53 end
54
55 # # ATT_MODを生成済みかどうか # 2017.8.27
56 # @@generate_memory_module = false
57
58 #
59 # CRE_TSKの出力
60 # file:: FILE: 出力先ファイル
61 # cell :: Cell タスクセルインスタンス
62 # val :: Hash {attr => string}: カーネルオブジェクトの属性の解析結果
63 # tab :: string: タブ
64 #
65 def print_cfg_cre(file, cell, val, tab)
66 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
67 # $cbp$の代わり
68 cell_IDX = @celltype.get_name_array(cell)[7]
69 # CRE_TSKの生成
70 dbgPrint "assign task plugin\n"
71 domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
72 # if cell.get_region.get_region_type == :DOMAIN
73 if domainOption != "OutOfDomain"
74 if val[:systemStackSize] == "0"
75 #
76 # システムスタックの定義を省略
77 #
78 file.print <<EOT
79CRE_TSK(#{val[:id]}, { #{val[:attribute]}, #{cell_IDX}, tTask_start, #{val[:priority]}, #{val[:stackSize]}, NULL });
80EOT
81 else
82 #
83 # システムスタックの定義を追加
84 #
85 file.print <<EOT
86CRE_TSK(#{val[:id]}, { #{val[:attribute]}, #{cell_IDX}, tTask_start, #{val[:priority]}, #{val[:stackSize]}, NULL, #{val[:systemStackSize]}, NULL });
87EOT
88 end
89 else
90 #
91 # 無所属のタスクは存在してはならないため,エラーとする
92 #
93 raise "task #{val[:id]} must belong to a domain."
94 end
95 end
96
97 #
98 # SAC_TSKの出力
99 # file:: FILE: 出力先ファイル
100 # val :: Hash {attr => string}: カーネルオブジェクトの属性の解析結果
101 # acv :: Hash {accessPatternx => string}: アクセス許可ベクタ
102 #
103 def print_cfg_sac(file, val, acv)
104 # pp "SAC_TSK"
105 # pp val
106 file.puts "SAC_TSK(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });"
107 end
108end
109
Note: See TracBrowser for help on using the repository browser.