source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecs/mruby/tMruby.cdl@ 389

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

ビルドが通るよう更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/plain;charset=UTF-8
File size: 5.8 KB
Line 
1/*
2 * Copyright (C) 2012 by Ubiquitous Computing and Networking Laboratory
3 * Ritsumeikan Univ., JAPAN
4 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
5 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
6 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
7 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
8 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
9 * スコード中に含まれていること.
10 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
11 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
12 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
13 * の無保証規定を掲載すること.
14 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
15 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
16 * と.
17 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
18 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
19 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
20 * 報告すること.
21 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
22 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
23 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
24 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
25 * 免責すること.
26 *
27 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
28 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
29 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
30 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
31 * の責任を負わない.
32 *
33 * @(#) $Id$
34 */
35//import(<syssvc/tSerialPort.cdl>);
36//import(<kernel.cdl>);
37
38import(<mruby.cdl>);
39import(<sMruby.cdl>);
40import(<tTLSFMalloc.cdl>);
41
42namespace nMruby{
43
44/*** mruby VM ***/
45 celltype tMrubyVM{
46 entry sMrubyVM eMrubyVM;
47 attr{
48 [omit]char_t *mrubyFile;
49 const uint8_t *irep=C_EXP("$cell_global$_irep");
50 };
51 var{
52 mrb_irep *var_irep;
53 mrb_state *mrb;
54 struct RProc *rproc;
55 };
56
57 /* MrubyBridgePlugin の生成する VM_TECSInitializeer.eInitialize へ結合する */
58 [optional] call sInitializeBridge cInit;
59 /*
60 * アロケータ
61 * 他と共有しないのであれば、このアロケータは排他制御される必要はない
62 */
63 call sMalloc cMalloc;
64
65 FACTORY{
66 write("Makefile.tecsgen", "clean_mrb_c :");
67 write("Makefile.tecsgen", " rm -f $(MRB_C)");
68 };
69 factory{
70 write("Makefile.tecsgen", "POST_TECSGEN_TARGET := $(POST_TECSGEN_TARGET) $cell_global$_mrb.c");
71 write("Makefile.tecsgen", "$cell_global$_mrb.c : %s tecs.timestamp Makefile", mrubyFile);
72 write("Makefile.tecsgen", " $(MRBC) -B$cell_global$_irep -o$cell_global$_mrb.c %s", mrubyFile);
73 write("Makefile.tecsgen", "TECS_COBJS := $(TECS_COBJS) $cell_global$_mrb.o");
74 write("Makefile.tecsgen", "MRB_C := $(MRB_C) $cell_global$_mrb.c");
75 write("$ct_global$_factory.h","extern const uint8_t $cell_global$_irep[];");
76 };
77 };
78
79/*** Standard Task Versoin ***/
80 /*
81 * tMruby の eMrubyBody.main が、繰り返し起床されることは想定されていません。
82 */
83 celltype tMrubyTaskBody{
84 entry sTaskBody eMrubyBody;
85 call sMrubyVM cMrubyVM;
86 };
87 composite tMruby{
88 entry sTaskBody eMrubyBody;
89 [optional] call sInitializeBridge cInit;
90 attr{
91 [omit]char_t *mrubyFile;
92 size_t memoryPoolSize = 1024 * 1024; /** 1MB default **/
93 /* note: this requires enough memory */
94 /* please pay attention to memory layout */
95 };
96
97 /** **/
98 cell tMrubyVM MrubyVM{
99 mrubyFile = composite.mrubyFile;
100 cInit => composite.cInit;
101 cMalloc = TLSFMalloc.eMalloc;
102 };
103 cell tMrubyTaskBody MrubyTaskBody {
104 cMrubyVM = MrubyVM.eMrubyVM;
105 };
106 cell tTLSFMalloc TLSFMalloc {
107 memoryPoolSize = composite.memoryPoolSize;
108 };
109 composite.eMrubyBody => MrubyTaskBody.eMrubyBody;
110 };
111
112/*** Cyclic Task Versoin ***/
113 /*
114 * tMrubyCyclic の eMrubyBody.main が繰り返し呼び出されることが想定されています。
115 * この実装では mrb_close は呼び出されません (終了は、突然電源が切れることを想定)
116 */
117 celltype tMrubyCyclicTaskBody{
118 entry sTaskBody eMrubyBody;
119 call sMrubyVM cMrubyVM;
120 var {
121 bool_t b_init;
122 };
123 };
124 composite tMrubyCyclic{
125 entry sTaskBody eMrubyBody;
126 [optional] call sInitializeBridge cInit;
127 attr{
128 [omit]char_t *mrubyFile;
129 size_t memoryPoolSize = 1024 * 1024; /** 1MB default **/
130 /* note: this requires enough memory */
131 /* please pay attention to memory layout */
132 };
133
134 /** **/
135 cell tMrubyVM MrubyVM{
136 mrubyFile = composite.mrubyFile;
137 cInit => composite.cInit;
138 cMalloc = TLSFMalloc.eMalloc;
139 };
140 cell tMrubyCyclicTaskBody MrubyTaskBody {
141 cMrubyVM = MrubyVM.eMrubyVM;
142 };
143 cell tTLSFMalloc TLSFMalloc {
144 memoryPoolSize = composite.memoryPoolSize;
145 };
146 composite.eMrubyBody => MrubyTaskBody.eMrubyBody;
147 };
148};
Note: See TracBrowser for help on using the repository browser.