source: asp3_tinet_ecnl_arm/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2PostHook.rb@ 352

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

arm向けASP3版ECNLを追加

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