1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
;/*
; FreeRTOS V7.2.0 - Copyright (C) 2012 Real Time Engineers Ltd.
;
;
; ***************************************************************************
; * *
; * FreeRTOS tutorial books are available in pdf and paperback. *
; * Complete, revised, and edited pdf reference manuals are also *
; * available. *
; * *
; * Purchasing FreeRTOS documentation will not only help you, by *
; * ensuring you get running as quickly as possible and with an *
; * in-depth knowledge of how to use FreeRTOS, it will also help *
; * the FreeRTOS project to continue with its mission of providing *
; * professional grade, cross platform, de facto standard solutions *
; * for microcontrollers - completely free of charge! *
; * *
; * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
; * *
; * Thank you for using FreeRTOS, and thank you for your support! *
; * *
; ***************************************************************************
;
;
; This file is part of the FreeRTOS distribution.
;
; FreeRTOS is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License (version 2) as published by the
; Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
; >>>NOTE<<< The modification to the GPL is included to allow you to
; distribute a combined work that includes FreeRTOS without being obliged to
; provide the source code for proprietary components outside of the FreeRTOS
; kernel. FreeRTOS is distributed in the hope that it will be useful, but
; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
; more details. You should have received a copy of the GNU General Public
; License and the FreeRTOS license exception along with FreeRTOS; if not it
; can be viewed here: http://www.freertos.org/a00114.html and also obtained
; by writing to Richard Barry, contact details for whom are available on the
; FreeRTOS WEB site.
;
; 1 tab == 4 spaces!
;
; http://www.FreeRTOS.org - Documentation, latest information, license and
; contact details.
;
; http://www.SafeRTOS.com - A version that is certified for use in safety
; critical systems.
;
; http://www.OpenRTOS.com - Commercial support, development, porting,
; licensing and training services.
;*/
;
; This file defines the RegTest tasks as described at the top of main.c
;
;------------------------------------------------------------------------------
#if __CORE__ != __RL78_1__
#error "This file is only for RL78 Devices"
#endif
; Functions implemented in this file
;------------------------------------------------------------------------------
PUBLIC vRegTest1
PUBLIC vRegTest2
; Functions used by this file
;------------------------------------------------------------------------------
EXTERN vRegTestError
;------------------------------------------------------------------------------
; Fill all the registers with known values, then check that the registers
; contain the expected value. An incorrect value being indicative of an
; error in the context switch mechanism.
;
; Input: NONE
;
; Call: Created as a task.
;
; Output: NONE
;
;------------------------------------------------------------------------------
RSEG CODE:CODE
vRegTest1:
; First fill the registers.
MOVW AX, #0x1122
MOVW BC, #0x3344
MOVW DE, #0x5566
MOVW HL, #0x7788
MOV CS, #0x01
#if __DATA_MODEL__ == __DATA_MODEL_FAR__
; ES is not saved or restored when using the near memory model so only
; test it when using the far model.
MOV ES, #0x02
#endif
loop1:
; Continuously check that the register values remain at their expected
; values. The BRK is to test the yield. This task runs at low priority
; so will also regularly get preempted.
BRK
; Compare with the expected value.
CMPW AX, #0x1122
BZ +5
; Jump over the branch to vRegTestError() if the register contained the
; expected value - otherwise flag an error by executing vRegTestError().
BR vRegTestError
; Repeat for all the registers.
MOVW AX, BC
CMPW AX, #0x3344
BZ +5
BR vRegTestError
MOVW AX, DE
CMPW AX, #0x5566
BZ +5
BR vRegTestError
MOVW AX, HL
CMPW AX, #0x7788
BZ +5
BR vRegTestError
MOV A, CS
CMP A, #0x01
BZ +5
BR vRegTestError
#if __DATA_MODEL__ == __DATA_MODEL_FAR__
; ES is not saved or restored when using the near memory model so only
; test it when using the far model.
MOV A, ES
CMP A, #0x02
BZ +5
BR vRegTestError
#endif
MOVW AX, #0x1122
BR loop1
;------------------------------------------------------------------------------
; Fill all the registers with known values, then check that the registers
; contain the expected value. An incorrect value being indicative of an
; error in the context switch mechanism.
;
; Input: NONE
;
; Call: Created as a task.
;
; Output: NONE
;
;------------------------------------------------------------------------------
RSEG CODE:CODE
vRegTest2:
MOVW AX, #0x99aa
MOVW BC, #0xbbcc
MOVW DE, #0xddee
MOVW HL, #0xff12
MOV CS, #0x03
#if __DATA_MODEL__ == __DATA_MODEL_FAR__
MOV ES, #0x04
#endif
loop2:
CMPW AX, #0x99aa
BZ +5
BR vRegTestError
MOVW AX, BC
CMPW AX, #0xbbcc
BZ +5
BR vRegTestError
MOVW AX, DE
CMPW AX, #0xddee
BZ +5
BR vRegTestError
MOVW AX, HL
CMPW AX, #0xff12
BZ +5
BR vRegTestError
MOV A, CS
CMP A, #0x03
BZ +5
BR vRegTestError
#if __DATA_MODEL__ == __DATA_MODEL_FAR__
MOV A, ES
CMP A, #0x04
BZ +5
BR vRegTestError
#endif
MOVW AX, #0x99aa
BR loop2
END
|