summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2013-06-03 20:55:58 -0700
committerBernard Xiong <[email protected]>2013-06-03 20:55:58 -0700
commit03e8d24688ae56c6c53db81e42d40109026d1aac (patch)
treec55949bd1bd9e4df5c54eba67d0feb68382a31a6
parentd80a47168038a1759a5881315a19fdffa06c70e6 (diff)
parent480ac3444510fc7303f738a81f64314557366b8d (diff)
Merge pull request #99 from grissiom/rm48x50
Rm48x50 updates
-rw-r--r--bsp/rm48x50/application/application.c20
-rw-r--r--bsp/rm48x50/application/reg_test.asm472
-rw-r--r--include/rtdef.h11
3 files changed, 11 insertions, 492 deletions
diff --git a/bsp/rm48x50/application/application.c b/bsp/rm48x50/application/application.c
index d9ffaf4754..a1c115c793 100644
--- a/bsp/rm48x50/application/application.c
+++ b/bsp/rm48x50/application/application.c
@@ -17,9 +17,6 @@
#include "system.h"
#include "het.h"
-int ulRegTest1Counter;
-int ulRegTest2Counter;
-
static rt_uint8_t user_thread_stack[512];
static struct rt_thread user_thread;
static void user_thread_entry(void *p)
@@ -35,28 +32,11 @@ static void user_thread_entry(void *p)
}
}
-static rt_uint8_t test_thread_stack[512];
-static struct rt_thread test_thread;
-void vRegTestTask1(void*);
-
-static rt_uint8_t test_thread_stack2[512];
-static struct rt_thread test_thread2;
-void vRegTestTask2(void*);
-
int rt_application_init()
{
rt_thread_init(&user_thread, "user1", user_thread_entry, RT_NULL,
user_thread_stack, sizeof(user_thread_stack), 21, 20);
rt_thread_startup(&user_thread);
-
- rt_thread_init(&test_thread, "test1", vRegTestTask1, RT_NULL,
- test_thread_stack, sizeof(test_thread_stack), 21, 20);
- rt_thread_startup(&test_thread);
-
- rt_thread_init(&test_thread2, "test2", vRegTestTask2, RT_NULL,
- test_thread_stack2, sizeof(test_thread_stack2), 22, 20);
- rt_thread_startup(&test_thread2);
-
return 0;
}
diff --git a/bsp/rm48x50/application/reg_test.asm b/bsp/rm48x50/application/reg_test.asm
deleted file mode 100644
index 6b68164604..0000000000
--- a/bsp/rm48x50/application/reg_test.asm
+++ /dev/null
@@ -1,472 +0,0 @@
-;/*
-; FreeRTOS V7.4.2 - Copyright (C) 2013 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!
-;
-; ***************************************************************************
-; * *
-; * Having a problem? Start by reading the FAQ "My application does *
-; * not run, what could be wrong? *
-; * *
-; * http://www.FreeRTOS.org/FAQHelp.html *
-; * *
-; ***************************************************************************
-;
-;
-; http://www.FreeRTOS.org - Documentation, training, latest information,
-; license and contact details.
-;
-; http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
-; including FreeRTOS+Trace - an indispensable productivity tool.
-;
-; Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
-; the code with commercial support, indemnification, and middleware, under
-; the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
-; provide a safety engineered and independently SIL3 certified version under
-; the SafeRTOS brand: http://www.SafeRTOS.com.
-;*/
-
-;-------------------------------------------------
-; port to RT-Thread by Grissiom
-;
- .def vRegTestTask1
- .ref ulRegTest1Counter
- .ref rt_thread_delay
-
- .text
- .arm
-
-vRegTestTask1:
- ; Fill each general purpose register with a known value.
- mov r0, #0xFF
- mov r1, #0x11
- mov r2, #0x22
- mov r3, #0x33
- mov r4, #0x44
- mov r5, #0x55
- mov r6, #0x66
- mov r7, #0x77
- mov r8, #0x88
- mov r9, #0x99
- mov r10, #0xAA
- mov r11, #0xBB
- mov r12, #0xCC
- mov r14, #0xEE
-
- .if (__TI_VFP_SUPPORT__)
- ; Fill each FPU register with a known value.
- vmov d0, r0, r1
- vmov d1, r2, r3
- vmov d2, r4, r5
- vmov d3, r6, r7
- vmov d4, r8, r9
- vmov d5, r10, r11
- vmov d6, r0, r1
- vmov d7, r2, r3
- vmov d8, r4, r5
- vmov d9, r6, r7
- vmov d10, r8, r9
- vmov d11, r10, r11
- vmov d12, r0, r1
- vmov d13, r2, r3
- vmov d14, r4, r5
- vmov d15, r6, r7
- .endif
-
-
-vRegTestLoop1:
-
- STMFD sp!, {r0-r3, r12}
- ; Force yeild
- MOV r0, #5
- BL rt_thread_delay
- LDMFD sp!, {r0-r3, r12}
-
- .if (__TI_VFP_SUPPORT__)
- ; Check all the VFP registers still contain the values set above.
- ; First save registers that are clobbered by the test.
- STMFD sp!, { r0-r1 }
-
- vmov r0, r1, d0
- cmp r0, #0xFF
- bne reg1_error_loopf
- cmp r1, #0x11
- bne reg1_error_loopf
- vmov r0, r1, d1
- cmp r0, #0x22
- bne reg1_error_loopf
- cmp r1, #0x33
- bne reg1_error_loopf
- vmov r0, r1, d2
- cmp r0, #0x44
- bne reg1_error_loopf
- cmp r1, #0x55
- bne reg1_error_loopf
- vmov r0, r1, d3
- cmp r0, #0x66
- bne reg1_error_loopf
- cmp r1, #0x77
- bne reg1_error_loopf
- vmov r0, r1, d4
- cmp r0, #0x88
- bne reg1_error_loopf
- cmp r1, #0x99
- bne reg1_error_loopf
- vmov r0, r1, d5
- cmp r0, #0xAA
- bne reg1_error_loopf
- cmp r1, #0xBB
- bne reg1_error_loopf
- vmov r0, r1, d6
- cmp r0, #0xFF
- bne reg1_error_loopf
- cmp r1, #0x11
- bne reg1_error_loopf
- vmov r0, r1, d7
- cmp r0, #0x22
- bne reg1_error_loopf
- cmp r1, #0x33
- bne reg1_error_loopf
- vmov r0, r1, d8
- cmp r0, #0x44
- bne reg1_error_loopf
- cmp r1, #0x55
- bne reg1_error_loopf
- vmov r0, r1, d9
- cmp r0, #0x66
- bne reg1_error_loopf
- cmp r1, #0x77
- bne reg1_error_loopf
- vmov r0, r1, d10
- cmp r0, #0x88
- bne reg1_error_loopf
- cmp r1, #0x99
- bne reg1_error_loopf
- vmov r0, r1, d11
- cmp r0, #0xAA
- bne reg1_error_loopf
- cmp r1, #0xBB
- bne reg1_error_loopf
- vmov r0, r1, d12
- cmp r0, #0xFF
- bne reg1_error_loopf
- cmp r1, #0x11
- bne reg1_error_loopf
- vmov r0, r1, d13
- cmp r0, #0x22
- bne reg1_error_loopf
- cmp r1, #0x33
- bne reg1_error_loopf
- vmov r0, r1, d14
- cmp r0, #0x44
- bne reg1_error_loopf
- cmp r1, #0x55
- bne reg1_error_loopf
- vmov r0, r1, d15
- cmp r0, #0x66
- bne reg1_error_loopf
- cmp r1, #0x77
- bne reg1_error_loopf
-
- ; Restore the registers that were clobbered by the test.
- LDMFD sp!, {r0-r1}
-
- ; VFP register test passed. Jump to the core register test.
- b reg1_loopf_pass
-
-reg1_error_loopf:
- ; If this line is hit then a VFP register value was found to be
- ; incorrect.
- b reg1_error_loopf
-
-reg1_loopf_pass:
-
- .endif ;__TI_VFP_SUPPORT__
-
- ; Test each general purpose register to check that it still contains the
- ; expected known value, jumping to vRegTestError1 if any register contains
- ; an unexpected value.
- cmp r0, #0xFF
- bne vRegTestError1
- cmp r1, #0x11
- bne vRegTestError1
- cmp r2, #0x22
- bne vRegTestError1
- cmp r3, #0x33
- bne vRegTestError1
- cmp r4, #0x44
- bne vRegTestError1
- cmp r5, #0x55
- bne vRegTestError1
- cmp r6, #0x66
- bne vRegTestError1
- cmp r7, #0x77
- bne vRegTestError1
- cmp r8, #0x88
- bne vRegTestError1
- cmp r9, #0x99
- bne vRegTestError1
- cmp r10, #0xAA
- bne vRegTestError1
- cmp r11, #0xBB
- bne vRegTestError1
- cmp r12, #0xCC
- bne vRegTestError1
-
- ; This task is still running without jumping to vRegTestError1, so increment
- ; the loop counter so the check task knows the task is running error free.
- stmfd sp!, { r0-r1 }
- ldr r0, Count1Const
- ldr r1, [r0]
- add r1, r1, #1
- str r1, [r0]
- ldmfd sp!, { r0-r1 }
-
- ; Loop again, performing the same tests.
- b vRegTestLoop1
-
-Count1Const .word ulRegTest1Counter
-
-vRegTestError1:
- b vRegTestError1
-
-
-;-------------------------------------------------
-;
- .def vRegTestTask2
- .ref ulRegTest2Counter
- .text
- .arm
-;
-vRegTestTask2:
- ; Fill each general purpose register with a known value.
- mov r0, #0xFF000000
- mov r1, #0x11000000
- mov r2, #0x22000000
- mov r3, #0x33000000
- mov r4, #0x44000000
- mov r5, #0x55000000
- mov r6, #0x66000000
- mov r7, #0x77000000
- mov r8, #0x88000000
- mov r9, #0x99000000
- mov r10, #0xAA000000
- mov r11, #0xBB000000
- mov r12, #0xCC000000
- mov r14, #0xEE000000
-
- .if (__TI_VFP_SUPPORT__)
-
- ; Fill each FPU register with a known value.
- vmov d0, r0, r1
- vmov d1, r2, r3
- vmov d2, r4, r5
- vmov d3, r6, r7
- vmov d4, r8, r9
- vmov d5, r10, r11
- vmov d6, r0, r1
- vmov d7, r2, r3
- vmov d8, r4, r5
- vmov d9, r6, r7
- vmov d10, r8, r9
- vmov d11, r10, r11
- vmov d12, r0, r1
- vmov d13, r2, r3
- vmov d14, r4, r5
- vmov d15, r6, r7
- .endif
-
-vRegTestLoop2:
-
- .if (__TI_VFP_SUPPORT__)
- ; Check all the VFP registers still contain the values set above.
- ; First save registers that are clobbered by the test.
- STMFD sp!, { r0-r1 }
-
- vmov r0, r1, d0
- cmp r0, #0xFF000000
- bne reg2_error_loopf
- cmp r1, #0x11000000
- bne reg2_error_loopf
- vmov r0, r1, d1
- cmp r0, #0x22000000
- bne reg2_error_loopf
- cmp r1, #0x33000000
- bne reg2_error_loopf
- vmov r0, r1, d2
- cmp r0, #0x44000000
- bne reg2_error_loopf
- cmp r1, #0x55000000
- bne reg2_error_loopf
- vmov r0, r1, d3
- cmp r0, #0x66000000
- bne reg2_error_loopf
- cmp r1, #0x77000000
- bne reg2_error_loopf
- vmov r0, r1, d4
- cmp r0, #0x88000000
- bne reg2_error_loopf
- cmp r1, #0x99000000
- bne reg2_error_loopf
- vmov r0, r1, d5
- cmp r0, #0xAA000000
- bne reg2_error_loopf
- cmp r1, #0xBB000000
- bne reg2_error_loopf
- vmov r0, r1, d6
- cmp r0, #0xFF000000
- bne reg2_error_loopf
- cmp r1, #0x11000000
- bne reg2_error_loopf
- vmov r0, r1, d7
- cmp r0, #0x22000000
- bne reg2_error_loopf
- cmp r1, #0x33000000
- bne reg2_error_loopf
- vmov r0, r1, d8
- cmp r0, #0x44000000
- bne reg2_error_loopf
- cmp r1, #0x55000000
- bne reg2_error_loopf
- vmov r0, r1, d9
- cmp r0, #0x66000000
- bne reg2_error_loopf
- cmp r1, #0x77000000
- bne reg2_error_loopf
- vmov r0, r1, d10
- cmp r0, #0x88000000
- bne reg2_error_loopf
- cmp r1, #0x99000000
- bne reg2_error_loopf
- vmov r0, r1, d11
- cmp r0, #0xAA000000
- bne reg2_error_loopf
- cmp r1, #0xBB000000
- bne reg2_error_loopf
- vmov r0, r1, d12
- cmp r0, #0xFF000000
- bne reg2_error_loopf
- cmp r1, #0x11000000
- bne reg2_error_loopf
- vmov r0, r1, d13
- cmp r0, #0x22000000
- bne reg2_error_loopf
- cmp r1, #0x33000000
- bne reg2_error_loopf
- vmov r0, r1, d14
- cmp r0, #0x44000000
- bne reg2_error_loopf
- cmp r1, #0x55000000
- bne reg2_error_loopf
- vmov r0, r1, d15
- cmp r0, #0x66000000
- bne reg2_error_loopf
- cmp r1, #0x77000000
- bne reg2_error_loopf
-
- ; Restore the registers that were clobbered by the test.
- LDMFD sp!, {r0-r1}
-
- ; VFP register test passed. Jump to the core register test.
- b reg2_loopf_pass
-
-reg2_error_loopf:
- ; If this line is hit then a VFP register value was found to be
- ; incorrect.
- b reg2_error_loopf
-
-reg2_loopf_pass:
-
- .endif ;__TI_VFP_SUPPORT__
-
- ; Test each general purpose register to check that it still contains the
- ; expected known value, jumping to vRegTestError2 if any register contains
- ; an unexpected value.
- cmp r0, #0xFF000000
- bne vRegTestError2
- cmp r1, #0x11000000
- bne vRegTestError2
- cmp r2, #0x22000000
- bne vRegTestError2
- cmp r3, #0x33000000
- bne vRegTestError2
- cmp r4, #0x44000000
- bne vRegTestError2
- cmp r5, #0x55000000
- bne vRegTestError2
- cmp r6, #0x66000000
- bne vRegTestError2
- cmp r7, #0x77000000
- bne vRegTestError2
- cmp r8, #0x88000000
- bne vRegTestError2
- cmp r9, #0x99000000
- bne vRegTestError2
- cmp r10, #0xAA000000
- bne vRegTestError2
- cmp r11, #0xBB000000
- bne vRegTestError2
- cmp r12, #0xCC000000
- bne vRegTestError2
- cmp r14, #0xEE000000
- bne vRegTestError2
-
- ; This task is still running without jumping to vRegTestError2, so increment
- ; the loop counter so the check task knows the task is running error free.
- stmfd sp!, { r0-r1 }
- ldr r0, Count2Const
- ldr r1, [r0]
- add r1, r1, #1
- str r1, [r0]
- ldmfd sp!, { r0-r1 }
-
- ; Loop again, performing the same tests.
- b vRegTestLoop2
-
-Count2Const .word ulRegTest2Counter
-
-vRegTestError2:
- b vRegTestError2
-
-;-------------------------------------------------
-
-
-
diff --git a/include/rtdef.h b/include/rtdef.h
index 7a983efb65..c55327b2d2 100644
--- a/include/rtdef.h
+++ b/include/rtdef.h
@@ -145,6 +145,17 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#define ALIGN(n) __declspec(align(n))
#define rt_inline static __inline
#define RTT_API
+#elif defined (__TI_COMPILER_VERSION__)
+ /* The way that TI compiler set section is different from other(at least
+ * GCC and MDK) compilers. See ARM Optimizing C/C++ Compiler 5.9.3 for more
+ * details. */
+ #define SECTION(x)
+ #define UNUSED
+ #define ALIGN(n)
+ #define rt_inline static inline
+ #define RTT_API
+#else
+ #error not supported tool chain
#endif
/* event length */