source: azure_iot_hub_f767zi/trunk/asp_baseplatform/kernel/genoffset.tf@ 457

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

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/plain;charset=UTF-8
File size: 5.2 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-2017 by Embedded and Real-Time Systems Laboratory
8$ Graduate School of Information Science, Nagoya Univ., JAPAN
9$
10$ 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
11$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
12$ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
13$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
14$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
15$ スコード中に含まれていること.
16$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
17$ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
18$ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
19$ の無保証規定を掲載すること.
20$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
21$ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
22$ と.
23$ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
24$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
25$ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
26$ 報告すること.
27$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
28$ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
29$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
30$ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
31$ 免責すること.
32$
33$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
35$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
36$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
37$ の責任を負わない.
38$
39$ $Id$
40$
41$ =====================================================================
42
43$
44$ SIL_ENDIANの誤定義の検出
45$
46$IF SIL_ENDIAN_BIG && SIL_ENDIAN_LITTLE$
47 $ERROR$Both SIL_ENDIAN_BIG and SIL_ENDIAN_LITTLE are defined.$END$
48 $DIE()$
49$END$
50$IF !SIL_ENDIAN_BIG && !SIL_ENDIAN_LITTLE$
51 $ERROR$Neither SIL_ENDIAN_BIG nor SIL_ENDIAN_LITTLE is defined.$END$
52 $DIE()$
53$END$
54
55$
56$ #defineディレクティブの生成
57$
58$FUNCTION DEFINE$
59 #define $ARGV[1]$$TAB$$FORMAT("%d", +ARGV[2])$$NL$
60$END$
61
62$
63$ ビットのサーチ
64$
65$FUNCTION SEARCH_BIT$
66 $_val = ARGV[1]$
67 $FOREACH _val_bit RANGE(0,7)$
68 $IF (_val & 1) != 0$
69 $RESULT = _val_bit$
70 $END$
71 $_val = _val >> 1$
72 $END$
73$END$
74
75$
76$ ビットフィールドのオフセットとビット位置の定義の生成
77$
78$FUNCTION DEFINE_BIT$
79 $label = ARGV[1]$
80 $struct_size = ARGV[2]$
81 $output_size = ARGV[3]$
82
83 $top = SYMBOL(label)$
84 $IF !LENGTH(top)$
85 $ERROR$$FORMAT("label %1% not found", label)$$END$
86 $ELSE$
87 $val = 0$
88 $FOREACH i RANGE(0,struct_size-1)$
89 $tmp_val = PEEK(top + i, 1)$
90 $IF val == 0 && tmp_val != 0$
91 $val = tmp_val$
92 $offset = i$
93 $END$
94 $END$
95
96 $IF val == 0$
97 $ERROR$$FORMAT("bit not found in %1%", ARGV[1])$$END$
98 $ELSE$
99 $val_bit = SEARCH_BIT(val)$
100 $RESULT = {}$
101 $IF EQ(output_size, "W")$
102 $IF SIL_ENDIAN_BIG$
103 $val_bit = val_bit + 24 - ((offset & 0x03) << 3)$
104 $ELSE$
105 $val_bit = val_bit + ((offset & 0x03) << 3)$
106 $END$
107 $offset = offset & ~0x03$
108 $ELSE$$IF EQ(output_size, "H")$
109 $IF SIL_ENDIAN_BIG$
110 $val_bit = val_bit + 8 - ((offset & 0x01) << 3)$
111 $ELSE$
112 $val_bit = val_bit + ((offset & 0x01) << 3)$
113 $END$
114 $offset = offset & ~0x01$
115 $END$$END$
116 $END$
117
118 #define $label$$TAB$$FORMAT("%d", +offset)$$NL$
119 #define $label$_bit$TAB$$FORMAT("%d", +val_bit)$$NL$
120 #define $label$_mask$TAB$$FORMAT("0x%x", 1 << val_bit)$$NL$
121 $END$
122$END$
123
124$
125$ バイト配置のチェック
126$
127$FUNCTION MAGIC_CHECK$
128 $size = ARGV[1]$
129 $check = ARGV[2]$
130
131 $label = FORMAT("MAGIC_%d", +size)$
132 $top = SYMBOL(label)$
133 $IF !LENGTH(top)$
134 $ERROR$$FORMAT("label %1% not found", label)$$END$
135 $ELSE$
136 $FOREACH offset RANGE(1,size)$
137 $IF SIL_ENDIAN_BIG$
138 $val = PEEK(top + offset - 1, 1)$
139 $ELSE$
140 $val = PEEK(top + size - offset, 1)$
141 $END$
142 $IF val != AT(check, offset - 1)$
143 $ERROR$$FORMAT("value check of %1% failed", label)$$END$
144 $END$
145 $END$
146 $END$
147$END$
148
149$MAGIC_CHECK(1, { 0x12 })$
150$MAGIC_CHECK(2, { 0x12, 0x34 })$
151$MAGIC_CHECK(4, { 0x12, 0x34, 0x56, 0x78 })$
152
153$
154$ ファイルヘッダの生成
155$
156$FILE "offset.h"$
157/* offset.h */$NL$
158$NL$
Note: See TracBrowser for help on using the repository browser.