source: rtos_arduino/trunk/asp_1.9.2/kernel/genoffset.tf@ 136

Last change on this file since 136 was 136, checked in by ertl-honda, 8 years ago

ライブラリとOS及びベーシックなサンプルの追加.

File size: 5.0 KB
Line 
1$ ======================================================================
2$
3$ TOPPERS/ASP Kernel
4$ Toyohashi Open Platform for Embedded Real-Time Systems/
5$ Advanced Standard Profile Kernel
6$
7$ Copyright (C) 2011 by Embedded and Real-Time Systems Laboratory
8$ Graduate School of Information Science, Nagoya Univ., JAPAN
9$
10$ 上記著作権者
11は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
12$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13$ 変・再é…
14å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
15$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17$ スコード中に含まれていること.
18$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19$ 用できる形で再é…
20å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
21å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
22$ 者
23マニュアルなど)に,上記の著作権表示,この利用条件および下記
24$ の無保証規定を掲載すること.
25$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
26$ 用できない形で再é…
27å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
28$ と.
29$ (a) 再é…
30å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
31マニュアルなど)に,上記の著
32$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
33$ (b) 再é…
34å¸ƒã®å½¢æ…
35‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
36$ 報告すること.
37$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
38$ 害からも,上記著作権者
39およびTOPPERSプロジェクトをå…
40è²¬ã™ã‚‹ã“と.
41$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
42$ 由に基づく請求からも,上記著作権者
43およびTOPPERSプロジェクトを
44$ å…
45è²¬ã™ã‚‹ã“と.
46$
47$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者
48お
49$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
50$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
51$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
52$ の責任を負わない.
53$
54$ $Id: genoffset.tf 2046 2011-04-03 02:33:08Z ertl-hiro $
55$
56$ =====================================================================
57
58$
59$ #defineディレクティブの生成
60$
61$FUNCTION DEFINE$
62 #define $ARGV[1]$$TAB$$FORMAT("%d", +ARGV[2])$$NL$
63$END$
64
65$
66$ ビットのサーチ
67$
68$FUNCTION SEARCH_BIT$
69 $_val = ARGV[1]$
70 $FOREACH _val_bit RANGE(0,7)$
71 $IF (_val & 1) != 0$
72 $RESULT = _val_bit$
73 $END$
74 $_val = _val >> 1$
75 $END$
76$END$
77
78$
79$ ビットフィールドのオフセットとビット位置の定義の生成
80$
81$FUNCTION DEFINE_BIT$
82 $label = ARGV[1]$
83 $struct_size = ARGV[2]$
84 $output_size = ARGV[3]$
85
86 $top = SYMBOL(label)$
87 $IF !LENGTH(top)$
88 $ERROR$$FORMAT("label %1% not found", label)$$END$
89 $ELSE$
90 $val = 0$
91 $FOREACH i RANGE(0,struct_size-1)$
92 $tmp_val = PEEK(top + i, 1)$
93 $IF val == 0 && tmp_val != 0$
94 $val = tmp_val$
95 $offset = i$
96 $END$
97 $END$
98
99 $IF val == 0$
100 $ERROR$$FORMAT("bit not found in %1%", ARGV[1])$$END$
101 $ELSE$
102 $val_bit = SEARCH_BIT(val)$
103 $RESULT = {}$
104 $IF EQ(output_size, "W")$
105 $IF SIL_ENDIAN_BIG$
106 $val_bit = val_bit + 24 - ((offset & 0x03) << 3)$
107 $ELSE$
108 $val_bit = val_bit + ((offset & 0x03) << 3)$
109 $END$
110 $offset = offset & ~0x03$
111 $ELSE$$IF EQ(output_size, "H")$
112 $IF SIL_ENDIAN_BIG$
113 $val_bit = val_bit + 8 - ((offset & 0x01) << 3)$
114 $ELSE$
115 $val_bit = val_bit + ((offset & 0x01) << 3)$
116 $END$
117 $offset = offset & ~0x01$
118 $END$$END$
119 $END$
120
121 #define $label$$TAB$$FORMAT("%d", +offset)$$NL$
122 #define $label$_bit$TAB$$FORMAT("%d", +val_bit)$$NL$
123 #define $label$_mask$TAB$$FORMAT("0x%x", 1 << val_bit)$$NL$
124 $END$
125$END$
126
127$
128$ バイトé…
129ç½®ã®ãƒã‚§ãƒƒã‚¯
130$
131$FUNCTION MAGIC_CHECK$
132 $size = ARGV[1]$
133 $check = ARGV[2]$
134
135 $label = FORMAT("MAGIC_%d", +size)$
136 $top = SYMBOL(label)$
137 $IF !LENGTH(top)$
138 $ERROR$$FORMAT("label %1% not found", label)$$END$
139 $ELSE$
140 $FOREACH offset RANGE(1,size)$
141 $IF SIL_ENDIAN_BIG$
142 $val = PEEK(top + offset - 1, 1)$
143 $ELSE$
144 $val = PEEK(top + size - offset, 1)$
145 $END$
146 $IF val != AT(check, offset - 1)$
147 $ERROR$$FORMAT("value check of %1% failed", label)$$END$
148 $END$
149 $END$
150 $END$
151$END$
152
153$MAGIC_CHECK(1, { 0x12 })$
154$MAGIC_CHECK(2, { 0x12, 0x34 })$
155$MAGIC_CHECK(4, { 0x12, 0x34, 0x56, 0x78 })$
156
157$
158$ ファイルヘッダの生成
159$
160$FILE "offset.h"$
161/* offset.h */$NL$
162$NL$
Note: See TracBrowser for help on using the repository browser.