source: asp3_tinet_ecnl_arm/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PostHook.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.1 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# TECS Generator
4# Generator for TOPPERS Embedded Component System
5#
6# Copyright (C) 2017 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
40#require "HRP2KernelObjectPlugin"
41require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
42
43class HRP2PostHook
44 #@celltype:: Celltype
45 def initialize( celltype )
46 puts "new post hook #{celltype.get_name}"
47 @celltype = celltype
48 end
49
50 def generate
51 # カーネルオブジェクトのセルタイプはメモリ保護しない
52#=begin
53 # TODO: テストのために無効化
54 if HRP2KernelObjectPlugin.include_celltype?( @celltype )
55 puts "nothing is generated for kernel object component"
56 return
57 end
58#=end
59
60 rlist = @celltype.get_region_list
61 if @celltype.is_singleton?
62 # singletonの場合
63 puts "<singleton>"
64
65 if rlist.length == 0
66 file = AppFile.open( "#{$gen}/tecsgen.cfg" )
67 else
68 file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
69 end
70 # セル管理ブロックとスケルトンのメモリ保護
71 file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
72 if !@celltype.is_all_entry_inline?
73 # セルタイプコードのメモリ保護
74 file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
75 end
76
77 file.close
78
79 else
80 # singletonでない場合
81 puts "<non-singleton>"
82
83 # スケルトンとセルタイプコードの保護
84 if (rlist.length == 1) &&
85 (@celltype.get_n_cell_gen == @celltype.get_n_cell_gen_r( rlist[0] ))
86 # 所属する保護ドメインが1つの場合
87 puts "<private celltype>"
88 file = AppFile.open( "#{$gen}/tecsgen_#{rlist[0].get_param.to_s}.cfg" )
89 else
90 # 無所属 or 所属する保護ドメインが複数の場合
91 puts "<shared celltype>"
92 file = AppFile.open( "#{$gen}/tecsgen.cfg" )
93 end
94
95 # スケルトンのメモリ保護
96 file.print "ATT_MOD(\"#{@celltype.get_global_name}_tecsgen.o\");\n"
97 if !@celltype.is_all_entry_inline?
98 # セルタイプコードのメモリ保護
99 file.print "ATT_MOD(\"#{@celltype.get_global_name}.o\");\n"
100 end
101 file.close
102
103 # セル管理ブロックの保護
104 rlist.each { |reg|
105 file = AppFile.open( "#{$gen}/tecsgen_#{reg.get_param.to_s}.cfg" )
106 file.print "ATT_MOD(\"#{@celltype.get_global_name}_#{reg.get_name.to_s}_tecsgen.o\");\n"
107 file.close
108 }
109
110 end
111 end
112end
113
Note: See TracBrowser for help on using the repository browser.