2 ; FreeRTOS V8.2.0 - Copyright (C) 2015 Real Time Engineers Ltd.
\r
4 ; VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
\r
6 ; ***************************************************************************
\r
8 ; * FreeRTOS provides completely free yet professionally developed, *
\r
9 ; * robust, strictly quality controlled, supported, and cross *
\r
10 ; * platform software that has become a de facto standard. *
\r
12 ; * Help yourself get started quickly and support the FreeRTOS *
\r
13 ; * project by purchasing a FreeRTOS tutorial book, reference *
\r
14 ; * manual, or both from: http://www.FreeRTOS.org/Documentation *
\r
18 ; ***************************************************************************
\r
20 ; This file is part of the FreeRTOS distribution.
\r
22 ; FreeRTOS is free software; you can redistribute it and/or modify it under
\r
23 ; the terms of the GNU General Public License (version 2) as published by the
\r
24 ; Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
\r
26 ; >>! NOTE: The modification to the GPL is included to allow you to distribute
\r
27 ; >>! a combined work that includes FreeRTOS without being obliged to provide
\r
28 ; >>! the source code for proprietary components outside of the FreeRTOS
\r
31 ; FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
\r
32 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
33 ; FOR A PARTICULAR PURPOSE. Full license text is available from the following
\r
34 ; link: http://www.freertos.org/a00114.html
\r
36 ; 1 tab == 4 spaces!
\r
38 ; ***************************************************************************
\r
40 ; * Having a problem? Start by reading the FAQ "My application does *
\r
41 ; * not run, what could be wrong?" *
\r
43 ; * http://www.FreeRTOS.org/FAQHelp.html *
\r
45 ; ***************************************************************************
\r
47 ; http://www.FreeRTOS.org - Documentation, books, training, latest versions,
\r
48 ; license and Real Time Engineers Ltd. contact details.
\r
50 ; http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
\r
51 ; including FreeRTOS+Trace - an indispensable productivity tool, a DOS
\r
52 ; compatible FAT file system, and our tiny thread aware UDP/IP stack.
\r
54 ; http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
\r
55 ; Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
\r
56 ; licenses offer ticketed support, indemnification and middleware.
\r
58 ; http://www.SafeRTOS.com - High Integrity Systems also provide a safety
\r
59 ; engineered and independently SIL3 certified version for use in safety and
\r
60 ; mission critical applications that require provable dependability.
\r
62 ; 1 tab == 4 spaces!
\r
66 ; * "Reg test" tasks - These fill the registers with known values, then check
\r
67 ; * that each register maintains its expected value for the lifetime of the
\r
68 ; * task. Each task uses a different set of values. The reg test tasks execute
\r
69 ; * with a very low priority, so get preempted very frequently. A register
\r
70 ; * containing an unexpected value is indicative of an error in the context
\r
71 ; * switching mechanism.
\r
78 IMPORT ulRegTest1LoopCounter
\r
79 IMPORT ulRegTest2LoopCounter
\r
81 EXPORT vRegTest1Task
\r
82 EXPORT vRegTest2Task
\r
84 AREA |.text|, CODE, READONLY
\r
86 ;/*-----------------------------------------------------------*/
\r
89 ;/* Fill the core registers with known values. This is only done once. */
\r
110 ;/* Repeatedly check that each register still contains the value written to
\r
111 ;it when the task started. */
\r
113 bne reg1_error_loop
\r
115 bne reg1_error_loop
\r
117 bne reg1_error_loop
\r
119 bne reg1_error_loop
\r
121 bne reg1_error_loop
\r
123 bne reg1_error_loop
\r
125 bne reg1_error_loop
\r
127 bne reg1_error_loop
\r
130 bne reg1_error_loop
\r
133 bne reg1_error_loop
\r
136 bne reg1_error_loop
\r
139 bne reg1_error_loop
\r
142 bne reg1_error_loop
\r
144 ;/* Everything passed, increment the loop counter. */
\r
146 ldr r0, =ulRegTest1LoopCounter
\r
151 ;/* Yield to increase test coverage. */
\r
153 ldr r1, =0xe000ed04 ; NVIC_INT_CTRL
\r
154 lsls r0 ,r0, #28 ; Shift to PendSV bit
\r
159 ;/* Start again. */
\r
165 ;/* If this line is hit then there was an error in a core register value.
\r
166 ;The loop ensures the loop counter stops incrementing. */
\r
175 ;/* Fill the core registers with known values. This is only done once. */
\r
196 ;/* Repeatedly check that each register still contains the value written to
\r
197 ;it when the task started. */
\r
199 bne reg2_error_loop
\r
201 bne reg2_error_loop
\r
203 bne reg2_error_loop
\r
205 bne reg2_error_loop
\r
207 bne reg2_error_loop
\r
209 bne reg2_error_loop
\r
211 bne reg2_error_loop
\r
213 bne reg2_error_loop
\r
216 bne reg2_error_loop
\r
219 bne reg2_error_loop
\r
222 bne reg2_error_loop
\r
225 bne reg2_error_loop
\r
228 bne reg2_error_loop
\r
230 ;/* Everything passed, increment the loop counter. */
\r
232 ldr r0, =ulRegTest2LoopCounter
\r
238 ;/* Start again. */
\r
243 ;/* If this line is hit then there was an error in a core register value.
\r
244 ;The loop ensures the loop counter stops incrementing. */
\r