diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/.gitignore b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/.gitignore
index 09653aa29c..4e9d499738 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/.gitignore
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/.gitignore
@@ -11,8 +11,11 @@ EventRecorderStub.scvd
# STM32CubeIDE autogenerated files.
.settings/
+*.launch
# Build Artifacts
Debug/
Listings/
Objects/
+BrowseInfo/
+BuildLogs/
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Config/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Config/FreeRTOSConfig.h
index ab45ee9da8..bbfb3caf63 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Config/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Config/FreeRTOSConfig.h
@@ -139,4 +139,6 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
* used. TEX=0, S=0, C=1, B=1. */
#define configTEX_S_C_B_SRAM ( 0x03UL )
+/* Do not allow critical sections from unprivileged tasks. */
+#define configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS 0
#endif /* FREERTOS_CONFIG_H */
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/GCC/reg_tests_asm.c b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/GCC/reg_tests_asm.c
new file mode 100644
index 0000000000..3c02e6921f
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/GCC/reg_tests_asm.c
@@ -0,0 +1,988 @@
+/*
+ * FreeRTOS V202212.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+/*
+ * "Reg test" tasks - These fill the registers with known values, then check
+ * that each register maintains its expected value for the lifetime of the
+ * task. Each task uses a different set of values. The reg test tasks execute
+ * with a very low priority, so get preempted very frequently. A register
+ * containing an unexpected value is indicative of an error in the context
+ * switching mechanism.
+ */
+/*-----------------------------------------------------------*/
+
+/* Functions that implement reg tests. */
+void vRegTest1Asm( void ) __attribute__( ( naked ) );
+void vRegTest2Asm( void ) __attribute__( ( naked ) );
+void vRegTest3Asm( void ) __attribute__( ( naked ) );
+void vRegTest4Asm( void ) __attribute__( ( naked ) );
+/*-----------------------------------------------------------*/
+
+void vRegTest1Asm( void ) /* __attribute__( ( naked ) ) */
+{
+ __asm volatile
+ (
+ ".extern ulRegTest1LoopCounter \n"
+ ".syntax unified \n"
+ " \n"
+ " /* Fill the core registers with known values. */ \n"
+ " movs r0, #100 \n"
+ " movs r1, #101 \n"
+ " movs r2, #102 \n"
+ " movs r3, #103 \n"
+ " movs r4, #104 \n"
+ " movs r5, #105 \n"
+ " movs r6, #106 \n"
+ " movs r7, #107 \n"
+ " mov r8, #108 \n"
+ " mov r9, #109 \n"
+ " mov r10, #110 \n"
+ " mov r11, #111 \n"
+ " mov r12, #112 \n"
+ " \n"
+ " /* Fill the FPU registers with known values. */ \n"
+ " vmov.f32 s1, #1.5 \n"
+ " vmov.f32 s2, #2.5 \n"
+ " vmov.f32 s3, #3.5 \n"
+ " vmov.f32 s4, #4.5 \n"
+ " vmov.f32 s5, #5.5 \n"
+ " vmov.f32 s6, #6.5 \n"
+ " vmov.f32 s7, #7.5 \n"
+ " vmov.f32 s8, #8.5 \n"
+ " vmov.f32 s9, #9.5 \n"
+ " vmov.f32 s10, #10.5 \n"
+ " vmov.f32 s11, #11.5 \n"
+ " vmov.f32 s12, #12.5 \n"
+ " vmov.f32 s13, #13.5 \n"
+ " vmov.f32 s14, #14.5 \n"
+ " vmov.f32 s15, #1.0 \n"
+ " vmov.f32 s16, #2.0 \n"
+ " vmov.f32 s17, #3.0 \n"
+ " vmov.f32 s18, #4.0 \n"
+ " vmov.f32 s19, #5.0 \n"
+ " vmov.f32 s20, #6.0 \n"
+ " vmov.f32 s21, #7.0 \n"
+ " vmov.f32 s22, #8.0 \n"
+ " vmov.f32 s23, #9.0 \n"
+ " vmov.f32 s24, #10.0 \n"
+ " vmov.f32 s25, #11.0 \n"
+ " vmov.f32 s26, #12.0 \n"
+ " vmov.f32 s27, #13.0 \n"
+ " vmov.f32 s28, #14.0 \n"
+ " vmov.f32 s29, #1.5 \n"
+ " vmov.f32 s30, #2.5 \n"
+ " vmov.f32 s31, #3.5 \n"
+ " \n"
+ "reg1_loop: \n"
+ " \n"
+ " /* Verify that core registers contain correct values. */ \n"
+ " cmp r0, #100 \n"
+ " bne reg1_error_loop \n"
+ " cmp r1, #101 \n"
+ " bne reg1_error_loop \n"
+ " cmp r2, #102 \n"
+ " bne reg1_error_loop \n"
+ " cmp r3, #103 \n"
+ " bne reg1_error_loop \n"
+ " cmp r4, #104 \n"
+ " bne reg1_error_loop \n"
+ " cmp r5, #105 \n"
+ " bne reg1_error_loop \n"
+ " cmp r6, #106 \n"
+ " bne reg1_error_loop \n"
+ " cmp r7, #107 \n"
+ " bne reg1_error_loop \n"
+ " cmp r8, #108 \n"
+ " bne reg1_error_loop \n"
+ " cmp r9, #109 \n"
+ " bne reg1_error_loop \n"
+ " cmp r10, #110 \n"
+ " bne reg1_error_loop \n"
+ " cmp r11, #111 \n"
+ " bne reg1_error_loop \n"
+ " cmp r12, #112 \n"
+ " bne reg1_error_loop \n"
+ " \n"
+ " /* Verify that FPU registers contain correct values. */ \n"
+ " vmov.f32 s0, #1.5 \n" /* s0 = 1.5. */
+ " vcmp.f32 s1, s0 \n" /* Compare s0 and s1. */
+ " vmrs APSR_nzcv, FPSCR \n" /* Copy floating point flags (FPSCR flags) to ASPR flags - needed for next bne to work. */
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #2.5 \n"
+ " vcmp.f32 s2, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #3.5 \n"
+ " vcmp.f32 s3, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #4.5 \n"
+ " vcmp.f32 s4, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #5.5 \n"
+ " vcmp.f32 s5, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #6.5 \n"
+ " vcmp.f32 s6, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #7.5 \n"
+ " vcmp.f32 s7, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #8.5 \n"
+ " vcmp.f32 s8, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #9.5 \n"
+ " vcmp.f32 s9, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #10.5 \n"
+ " vcmp.f32 s10, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #11.5 \n"
+ " vcmp.f32 s11, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #12.5 \n"
+ " vcmp.f32 s12, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #13.5 \n"
+ " vcmp.f32 s13, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #14.5 \n"
+ " vcmp.f32 s14, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #1.0 \n"
+ " vcmp.f32 s15, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #2.0 \n"
+ " vcmp.f32 s16, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #3.0 \n"
+ " vcmp.f32 s17, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #4.0 \n"
+ " vcmp.f32 s18, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #5.0 \n"
+ " vcmp.f32 s19, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #6.0 \n"
+ " vcmp.f32 s20, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #7.0 \n"
+ " vcmp.f32 s21, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #8.0 \n"
+ " vcmp.f32 s22, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #9.0 \n"
+ " vcmp.f32 s23, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #10.0 \n"
+ " vcmp.f32 s24, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #11.0 \n"
+ " vcmp.f32 s25, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #12.0 \n"
+ " vcmp.f32 s26, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #13.0 \n"
+ " vcmp.f32 s27, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #14.0 \n"
+ " vcmp.f32 s28, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #1.5 \n"
+ " vcmp.f32 s29, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #2.5 \n"
+ " vcmp.f32 s30, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " vmov.f32 s0, #3.5 \n"
+ " vcmp.f32 s31, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg1_error_loop \n"
+ " \n"
+ " /* Everything passed, inc the loop counter. */ \n"
+ " push { r0, r1 } \n"
+ " ldr r0, =ulRegTest1LoopCounter \n"
+ " ldr r1, [r0] \n"
+ " adds r1, r1, #1 \n"
+ " str r1, [r0] \n"
+ " \n"
+ " /* Yield to increase test coverage. */ \n"
+ " movs r0, #0x01 \n"
+ " ldr r1, =0xe000ed04 \n" /* NVIC_ICSR */
+ " lsls r0, #28 \n" /* Shift to PendSV bit */
+ " str r0, [r1] \n"
+ " dsb \n"
+ " pop { r0, r1 } \n"
+ " \n"
+ " /* Start again. */ \n"
+ " b reg1_loop \n"
+ " \n"
+ "reg1_error_loop: \n"
+ " /* If this line is hit then there was an error in \n"
+ " * a core register value. The loop ensures the \n"
+ " * loop counter stops incrementing. */ \n"
+ " b reg1_error_loop \n"
+ " nop \n"
+ ".ltorg \n"
+ );
+}
+/*-----------------------------------------------------------*/
+
+void vRegTest2Asm( void ) /* __attribute__( ( naked ) ) */
+{
+ __asm volatile
+ (
+ ".extern ulRegTest2LoopCounter \n"
+ ".syntax unified \n"
+ " \n"
+ " /* Fill the core registers with known values. */ \n"
+ " movs r0, #0 \n"
+ " movs r1, #1 \n"
+ " movs r2, #2 \n"
+ " movs r3, #3 \n"
+ " movs r4, #4 \n"
+ " movs r5, #5 \n"
+ " movs r6, #6 \n"
+ " movs r7, #7 \n"
+ " mov r8, #8 \n"
+ " mov r9, #9 \n"
+ " movs r10, #10 \n"
+ " movs r11, #11 \n"
+ " movs r12, #12 \n"
+ " \n"
+ " /* Fill the FPU registers with known values. */ \n"
+ " vmov.f32 s1, #1.0 \n"
+ " vmov.f32 s2, #2.0 \n"
+ " vmov.f32 s3, #3.0 \n"
+ " vmov.f32 s4, #4.0 \n"
+ " vmov.f32 s5, #5.0 \n"
+ " vmov.f32 s6, #6.0 \n"
+ " vmov.f32 s7, #7.0 \n"
+ " vmov.f32 s8, #8.0 \n"
+ " vmov.f32 s9, #9.0 \n"
+ " vmov.f32 s10, #10.0 \n"
+ " vmov.f32 s11, #11.0 \n"
+ " vmov.f32 s12, #12.0 \n"
+ " vmov.f32 s13, #13.0 \n"
+ " vmov.f32 s14, #14.0 \n"
+ " vmov.f32 s15, #1.5 \n"
+ " vmov.f32 s16, #2.5 \n"
+ " vmov.f32 s17, #3.5 \n"
+ " vmov.f32 s18, #4.5 \n"
+ " vmov.f32 s19, #5.5 \n"
+ " vmov.f32 s20, #6.5 \n"
+ " vmov.f32 s21, #7.5 \n"
+ " vmov.f32 s22, #8.5 \n"
+ " vmov.f32 s23, #9.5 \n"
+ " vmov.f32 s24, #10.5 \n"
+ " vmov.f32 s25, #11.5 \n"
+ " vmov.f32 s26, #12.5 \n"
+ " vmov.f32 s27, #13.5 \n"
+ " vmov.f32 s28, #14.5 \n"
+ " vmov.f32 s29, #1.0 \n"
+ " vmov.f32 s30, #2.0 \n"
+ " vmov.f32 s31, #3.0 \n"
+ " \n"
+ "reg2_loop: \n"
+ " \n"
+ " /* Verify that core registers contain correct values. */ \n"
+ " cmp r0, #0 \n"
+ " bne reg2_error_loop \n"
+ " cmp r1, #1 \n"
+ " bne reg2_error_loop \n"
+ " cmp r2, #2 \n"
+ " bne reg2_error_loop \n"
+ " cmp r3, #3 \n"
+ " bne reg2_error_loop \n"
+ " cmp r4, #4 \n"
+ " bne reg2_error_loop \n"
+ " cmp r5, #5 \n"
+ " bne reg2_error_loop \n"
+ " cmp r6, #6 \n"
+ " bne reg2_error_loop \n"
+ " cmp r7, #7 \n"
+ " bne reg2_error_loop \n"
+ " cmp r8, #8 \n"
+ " bne reg2_error_loop \n"
+ " cmp r9, #9 \n"
+ " bne reg2_error_loop \n"
+ " cmp r10, #10 \n"
+ " bne reg2_error_loop \n"
+ " cmp r11, #11 \n"
+ " bne reg2_error_loop \n"
+ " cmp r12, #12 \n"
+ " bne reg2_error_loop \n"
+ " \n"
+ " /* Verify that FPU registers contain correct values. */ \n"
+ " vmov.f32 s0, #1.0 \n"
+ " vcmp.f32 s1, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #2.0 \n"
+ " vcmp.f32 s2, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #3.0 \n"
+ " vcmp.f32 s3, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #4.0 \n"
+ " vcmp.f32 s4, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #5.0 \n"
+ " vcmp.f32 s5, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #6.0 \n"
+ " vcmp.f32 s6, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #7.0 \n"
+ " vcmp.f32 s7, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #8.0 \n"
+ " vcmp.f32 s8, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #9.0 \n"
+ " vcmp.f32 s9, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #10.0 \n"
+ " vcmp.f32 s10, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #11.0 \n"
+ " vcmp.f32 s11, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #12.0 \n"
+ " vcmp.f32 s12, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #13.0 \n"
+ " vcmp.f32 s13, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #14.0 \n"
+ " vcmp.f32 s14, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #1.5 \n"
+ " vcmp.f32 s15, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #2.5 \n"
+ " vcmp.f32 s16, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #3.5 \n"
+ " vcmp.f32 s17, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #4.5 \n"
+ " vcmp.f32 s18, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #5.5 \n"
+ " vcmp.f32 s19, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #6.5 \n"
+ " vcmp.f32 s20, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #7.5 \n"
+ " vcmp.f32 s21, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #8.5 \n"
+ " vcmp.f32 s22, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #9.5 \n"
+ " vcmp.f32 s23, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #10.5 \n"
+ " vcmp.f32 s24, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #11.5 \n"
+ " vcmp.f32 s25, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #12.5 \n"
+ " vcmp.f32 s26, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #13.5 \n"
+ " vcmp.f32 s27, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #14.5 \n"
+ " vcmp.f32 s28, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #1.0 \n"
+ " vcmp.f32 s29, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #2.0 \n"
+ " vcmp.f32 s30, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " vmov.f32 s0, #3.0 \n"
+ " vcmp.f32 s31, s0 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg2_error_loop \n"
+ " \n"
+ " /* Everything passed, inc the loop counter. */ \n"
+ " push { r0, r1 } \n"
+ " ldr r0, =ulRegTest2LoopCounter \n"
+ " ldr r1, [r0] \n"
+ " adds r1, r1, #1 \n"
+ " str r1, [r0] \n"
+ " pop { r0, r1 } \n"
+ " \n"
+ " /* Start again. */ \n"
+ " b reg2_loop \n"
+ " \n"
+ "reg2_error_loop: \n"
+ " /* If this line is hit then there was an error in \n"
+ " * a core register value. The loop ensures the \n"
+ " * loop counter stops incrementing. */ \n"
+ " b reg2_error_loop \n"
+ " nop \n"
+ ".ltorg \n"
+ );
+}
+/*-----------------------------------------------------------*/
+
+void vRegTest3Asm( void ) /* __attribute__( ( naked ) ) */
+{
+ __asm volatile
+ (
+ ".extern ulRegTest3LoopCounter \n"
+ ".syntax unified \n"
+ " \n"
+ " /* Fill the core registers with known values. */ \n"
+ " movs r0, #100 \n"
+ " movs r1, #101 \n"
+ " movs r2, #102 \n"
+ " movs r3, #103 \n"
+ " movs r4, #104 \n"
+ " movs r5, #105 \n"
+ " movs r6, #106 \n"
+ " movs r7, #107 \n"
+ " mov r8, #108 \n"
+ " mov r9, #109 \n"
+ " mov r10, #110 \n"
+ " mov r11, #111 \n"
+ " mov r12, #112 \n"
+ " \n"
+ " /* Fill the FPU registers with known values. */ \n"
+ " vmov.f32 s0, #1.5 \n"
+ " vmov.f32 s2, #2.0 \n"
+ " vmov.f32 s3, #3.5 \n"
+ " vmov.f32 s4, #4.0 \n"
+ " vmov.f32 s5, #5.5 \n"
+ " vmov.f32 s6, #6.0 \n"
+ " vmov.f32 s7, #7.5 \n"
+ " vmov.f32 s8, #8.0 \n"
+ " vmov.f32 s9, #9.5 \n"
+ " vmov.f32 s10, #10.0 \n"
+ " vmov.f32 s11, #11.5 \n"
+ " vmov.f32 s12, #12.0 \n"
+ " vmov.f32 s13, #13.5 \n"
+ " vmov.f32 s14, #14.0 \n"
+ " vmov.f32 s15, #1.5 \n"
+ " vmov.f32 s16, #2.0 \n"
+ " vmov.f32 s17, #3.5 \n"
+ " vmov.f32 s18, #4.0 \n"
+ " vmov.f32 s19, #5.5 \n"
+ " vmov.f32 s20, #6.0 \n"
+ " vmov.f32 s21, #7.5 \n"
+ " vmov.f32 s22, #8.0 \n"
+ " vmov.f32 s23, #9.5 \n"
+ " vmov.f32 s24, #10.0 \n"
+ " vmov.f32 s25, #11.5 \n"
+ " vmov.f32 s26, #12.0 \n"
+ " vmov.f32 s27, #13.5 \n"
+ " vmov.f32 s28, #14.0 \n"
+ " vmov.f32 s29, #1.5 \n"
+ " vmov.f32 s30, #2.0 \n"
+ " vmov.f32 s31, #3.5 \n"
+ " \n"
+ "reg3_loop: \n"
+ " \n"
+ " /* Verify that core registers contain correct values. */ \n"
+ " cmp r0, #100 \n"
+ " bne reg3_error_loop \n"
+ " cmp r1, #101 \n"
+ " bne reg3_error_loop \n"
+ " cmp r2, #102 \n"
+ " bne reg3_error_loop \n"
+ " cmp r3, #103 \n"
+ " bne reg3_error_loop \n"
+ " cmp r4, #104 \n"
+ " bne reg3_error_loop \n"
+ " cmp r5, #105 \n"
+ " bne reg3_error_loop \n"
+ " cmp r6, #106 \n"
+ " bne reg3_error_loop \n"
+ " cmp r7, #107 \n"
+ " bne reg3_error_loop \n"
+ " cmp r8, #108 \n"
+ " bne reg3_error_loop \n"
+ " cmp r9, #109 \n"
+ " bne reg3_error_loop \n"
+ " cmp r10, #110 \n"
+ " bne reg3_error_loop \n"
+ " cmp r11, #111 \n"
+ " bne reg3_error_loop \n"
+ " cmp r12, #112 \n"
+ " bne reg3_error_loop \n"
+ " \n"
+ " /* Verify that FPU registers contain correct values. */ \n"
+ " vmov.f32 s1, #1.5 \n"
+ " vcmp.f32 s0, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #2.0 \n"
+ " vcmp.f32 s2, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #3.5 \n"
+ " vcmp.f32 s3, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #4.0 \n"
+ " vcmp.f32 s4, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #5.5 \n"
+ " vcmp.f32 s5, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #6.0 \n"
+ " vcmp.f32 s6, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #7.5 \n"
+ " vcmp.f32 s7, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #8.0 \n"
+ " vcmp.f32 s8, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #9.5 \n"
+ " vcmp.f32 s9, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #10.0 \n"
+ " vcmp.f32 s10, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #11.5 \n"
+ " vcmp.f32 s11, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #12.0 \n"
+ " vcmp.f32 s12, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #13.5 \n"
+ " vcmp.f32 s13, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #14.0 \n"
+ " vcmp.f32 s14, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #1.5 \n"
+ " vcmp.f32 s15, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #2.0 \n"
+ " vcmp.f32 s16, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #3.5 \n"
+ " vcmp.f32 s17, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #4.0 \n"
+ " vcmp.f32 s18, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #5.5 \n"
+ " vcmp.f32 s19, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #6.0 \n"
+ " vcmp.f32 s20, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #7.5 \n"
+ " vcmp.f32 s21, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #8.0 \n"
+ " vcmp.f32 s22, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #9.5 \n"
+ " vcmp.f32 s23, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #10.0 \n"
+ " vcmp.f32 s24, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #11.5 \n"
+ " vcmp.f32 s25, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #12.0 \n"
+ " vcmp.f32 s26, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #13.5 \n"
+ " vcmp.f32 s27, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #14.0 \n"
+ " vcmp.f32 s28, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #1.5 \n"
+ " vcmp.f32 s29, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #2.0 \n"
+ " vcmp.f32 s30, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " vmov.f32 s1, #3.5 \n"
+ " vcmp.f32 s31, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg3_error_loop \n"
+ " \n"
+ " /* Everything passed, inc the loop counter. */ \n"
+ " push { r0, r1 } \n"
+ " ldr r0, =ulRegTest3LoopCounter \n"
+ " ldr r1, [r0] \n"
+ " adds r1, r1, #1 \n"
+ " str r1, [r0] \n"
+ " \n"
+ " /* Yield to increase test coverage. */ \n"
+ " movs r0, #0x01 \n"
+ " ldr r1, =0xe000ed04 \n" /* NVIC_ICSR */
+ " lsls r0, #28 \n" /* Shift to PendSV bit */
+ " str r0, [r1] \n"
+ " dsb \n"
+ " pop { r0, r1 } \n"
+ " \n"
+ " /* Start again. */ \n"
+ " b reg3_loop \n"
+ " \n"
+ "reg3_error_loop: \n"
+ " /* If this line is hit then there was an error in \n"
+ " * a core register value. The loop ensures the \n"
+ " * loop counter stops incrementing. */ \n"
+ " b reg3_error_loop \n"
+ " nop \n"
+ ".ltorg \n"
+ );
+}
+/*-----------------------------------------------------------*/
+
+void vRegTest4Asm( void ) /* __attribute__( ( naked ) ) */
+{
+ __asm volatile
+ (
+ ".extern ulRegTest4LoopCounter \n"
+ ".syntax unified \n"
+ " \n"
+ " /* Fill the core registers with known values. */ \n"
+ " movs r0, #0 \n"
+ " movs r1, #1 \n"
+ " movs r2, #2 \n"
+ " movs r3, #3 \n"
+ " movs r4, #4 \n"
+ " movs r5, #5 \n"
+ " movs r6, #6 \n"
+ " movs r7, #7 \n"
+ " mov r8, #8 \n"
+ " mov r9, #9 \n"
+ " movs r10, #10 \n"
+ " movs r11, #11 \n"
+ " movs r12, #12 \n"
+ " \n"
+ " /* Fill the FPU registers with known values. */ \n"
+ " vmov.f32 s0, #1.5 \n"
+ " vmov.f32 s2, #2.0 \n"
+ " vmov.f32 s3, #3.0 \n"
+ " vmov.f32 s4, #4.5 \n"
+ " vmov.f32 s5, #5.0 \n"
+ " vmov.f32 s6, #6.0 \n"
+ " vmov.f32 s7, #7.5 \n"
+ " vmov.f32 s8, #8.0 \n"
+ " vmov.f32 s9, #9.0 \n"
+ " vmov.f32 s10, #10.5 \n"
+ " vmov.f32 s11, #11.0 \n"
+ " vmov.f32 s12, #12.0 \n"
+ " vmov.f32 s13, #13.5 \n"
+ " vmov.f32 s14, #14.0 \n"
+ " vmov.f32 s15, #1.0 \n"
+ " vmov.f32 s16, #2.5 \n"
+ " vmov.f32 s17, #3.0 \n"
+ " vmov.f32 s18, #4.0 \n"
+ " vmov.f32 s19, #5.5 \n"
+ " vmov.f32 s20, #6.0 \n"
+ " vmov.f32 s21, #7.0 \n"
+ " vmov.f32 s22, #8.5 \n"
+ " vmov.f32 s23, #9.0 \n"
+ " vmov.f32 s24, #10.0 \n"
+ " vmov.f32 s25, #11.5 \n"
+ " vmov.f32 s26, #12.0 \n"
+ " vmov.f32 s27, #13.0 \n"
+ " vmov.f32 s28, #14.5 \n"
+ " vmov.f32 s29, #1.0 \n"
+ " vmov.f32 s30, #2.0 \n"
+ " vmov.f32 s31, #3.5 \n"
+ " \n"
+ "reg4_loop: \n"
+ " \n"
+ " /* Verify that core registers contain correct values. */ \n"
+ " cmp r0, #0 \n"
+ " bne reg4_error_loop \n"
+ " cmp r1, #1 \n"
+ " bne reg4_error_loop \n"
+ " cmp r2, #2 \n"
+ " bne reg4_error_loop \n"
+ " cmp r3, #3 \n"
+ " bne reg4_error_loop \n"
+ " cmp r4, #4 \n"
+ " bne reg4_error_loop \n"
+ " cmp r5, #5 \n"
+ " bne reg4_error_loop \n"
+ " cmp r6, #6 \n"
+ " bne reg4_error_loop \n"
+ " cmp r7, #7 \n"
+ " bne reg4_error_loop \n"
+ " cmp r8, #8 \n"
+ " bne reg4_error_loop \n"
+ " cmp r9, #9 \n"
+ " bne reg4_error_loop \n"
+ " cmp r10, #10 \n"
+ " bne reg4_error_loop \n"
+ " cmp r11, #11 \n"
+ " bne reg4_error_loop \n"
+ " cmp r12, #12 \n"
+ " bne reg4_error_loop \n"
+ " \n"
+ " /* Verify that FPU registers contain correct values. */ \n"
+ " vmov.f32 s1, #1.5 \n"
+ " vcmp.f32 s0, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #2.0 \n"
+ " vcmp.f32 s2, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #3.0 \n"
+ " vcmp.f32 s3, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #4.5 \n"
+ " vcmp.f32 s4, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #5.0 \n"
+ " vcmp.f32 s5, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #6.0 \n"
+ " vcmp.f32 s6, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #7.5 \n"
+ " vcmp.f32 s7, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #8.0 \n"
+ " vcmp.f32 s8, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #9.0 \n"
+ " vcmp.f32 s9, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #10.5 \n"
+ " vcmp.f32 s10, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #11.0 \n"
+ " vcmp.f32 s11, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #12.0 \n"
+ " vcmp.f32 s12, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #13.5 \n"
+ " vcmp.f32 s13, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #14.0 \n"
+ " vcmp.f32 s14, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #1.0 \n"
+ " vcmp.f32 s15, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #2.5 \n"
+ " vcmp.f32 s16, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #3.0 \n"
+ " vcmp.f32 s17, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #4.0 \n"
+ " vcmp.f32 s18, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #5.5 \n"
+ " vcmp.f32 s19, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #6.0 \n"
+ " vcmp.f32 s20, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #7.0 \n"
+ " vcmp.f32 s21, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #8.5 \n"
+ " vcmp.f32 s22, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #9.0 \n"
+ " vcmp.f32 s23, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #10.0 \n"
+ " vcmp.f32 s24, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #11.5 \n"
+ " vcmp.f32 s25, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #12.0 \n"
+ " vcmp.f32 s26, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #13.0 \n"
+ " vcmp.f32 s27, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #14.5 \n"
+ " vcmp.f32 s28, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #1.0 \n"
+ " vcmp.f32 s29, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #2.0 \n"
+ " vcmp.f32 s30, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " vmov.f32 s1, #3.5 \n"
+ " vcmp.f32 s31, s1 \n"
+ " vmrs APSR_nzcv, FPSCR \n"
+ " bne reg4_error_loop \n"
+ " \n"
+ " /* Everything passed, inc the loop counter. */ \n"
+ " push { r0, r1 } \n"
+ " ldr r0, =ulRegTest4LoopCounter \n"
+ " ldr r1, [r0] \n"
+ " adds r1, r1, #1 \n"
+ " str r1, [r0] \n"
+ " pop { r0, r1 } \n"
+ " \n"
+ " /* Start again. */ \n"
+ " b reg4_loop \n"
+ " \n"
+ "reg4_error_loop: \n"
+ " /* If this line is hit then there was an error in \n"
+ " * a core register value. The loop ensures the \n"
+ " * loop counter stops incrementing. */ \n"
+ " b reg4_error_loop \n"
+ " nop \n"
+ ".ltorg \n"
+ );
+}
+/*-----------------------------------------------------------*/
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/IAR/reg_tests_asm.s b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/IAR/reg_tests_asm.s
new file mode 100644
index 0000000000..8e3345994b
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/IAR/reg_tests_asm.s
@@ -0,0 +1,956 @@
+/*
+ * FreeRTOS V202212.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+/*
+ * "Reg test" - These fill the registers with known values, then check
+ * that each register maintains its expected value for the lifetime of the
+ * task. Each task uses a different set of values. The reg test tasks execute
+ * with a very low priority, so get preempted very frequently. A register
+ * containing an unexpected value is indicative of an error in the context
+ * switching mechanism.
+ */
+
+/*-----------------------------------------------------------*/
+
+ SECTION .text:CODE:NOROOT(2)
+ THUMB
+
+ EXTERN ulRegTest1LoopCounter
+ EXTERN ulRegTest2LoopCounter
+ EXTERN ulRegTest3LoopCounter
+ EXTERN ulRegTest4LoopCounter
+
+ PUBLIC vRegTest1Asm
+ PUBLIC vRegTest2Asm
+ PUBLIC vRegTest3Asm
+ PUBLIC vRegTest4Asm
+/*-----------------------------------------------------------*/
+
+vRegTest1Asm:
+ /* Fill the core registers with known values. */
+ movs r0, #100
+ movs r1, #101
+ movs r2, #102
+ movs r3, #103
+ movs r4, #104
+ movs r5, #105
+ movs r6, #106
+ movs r7, #107
+ movs r8, #108
+ movs r9, #109
+ movs r10, #110
+ movs r11, #111
+ movs r12, #112
+
+ vmov.f32 s1, #1.5
+ vmov.f32 s2, #2.5
+ vmov.f32 s3, #3.5
+ vmov.f32 s4, #4.5
+ vmov.f32 s5, #5.5
+ vmov.f32 s6, #6.5
+ vmov.f32 s7, #7.5
+ vmov.f32 s8, #8.5
+ vmov.f32 s9, #9.5
+ vmov.f32 s10, #10.5
+ vmov.f32 s11, #11.5
+ vmov.f32 s12, #12.5
+ vmov.f32 s13, #13.5
+ vmov.f32 s14, #14.5
+ vmov.f32 s15, #1.0
+ vmov.f32 s16, #2.0
+ vmov.f32 s17, #3.0
+ vmov.f32 s18, #4.0
+ vmov.f32 s19, #5.0
+ vmov.f32 s20, #6.0
+ vmov.f32 s21, #7.0
+ vmov.f32 s22, #8.0
+ vmov.f32 s23, #9.0
+ vmov.f32 s24, #10.0
+ vmov.f32 s25, #11.0
+ vmov.f32 s26, #12.0
+ vmov.f32 s27, #13.0
+ vmov.f32 s28, #14.0
+ vmov.f32 s29, #1.5
+ vmov.f32 s30, #2.5
+ vmov.f32 s31, #3.5
+
+ reg1_loop:
+ cmp r0, #100
+ bne reg1_error_loop
+ cmp r1, #101
+ bne reg1_error_loop
+ cmp r2, #102
+ bne reg1_error_loop
+ cmp r3, #103
+ bne reg1_error_loop
+ cmp r4, #104
+ bne reg1_error_loop
+ cmp r5, #105
+ bne reg1_error_loop
+ cmp r6, #106
+ bne reg1_error_loop
+ cmp r7, #107
+ bne reg1_error_loop
+ cmp r8, #108
+ bne reg1_error_loop
+ cmp r9, #109
+ bne reg1_error_loop
+ cmp r10, #110
+ bne reg1_error_loop
+ cmp r11, #111
+ bne reg1_error_loop
+ cmp r12, #112
+ bne reg1_error_loop
+
+ /* Verify that FPU registers contain correct values. */
+ vmov.f32 s0, #1.5
+ vcmp.f32 s1, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #2.5
+ vcmp.f32 s2, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #3.5
+ vcmp.f32 s3, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #4.5
+ vcmp.f32 s4, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #5.5
+ vcmp.f32 s5, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #6.5
+ vcmp.f32 s6, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #7.5
+ vcmp.f32 s7, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #8.5
+ vcmp.f32 s8, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #9.5
+ vcmp.f32 s9, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #10.5
+ vcmp.f32 s10, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #11.5
+ vcmp.f32 s11, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #12.5
+ vcmp.f32 s12, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #13.5
+ vcmp.f32 s13, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #14.5
+ vcmp.f32 s14, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #1.0
+ vcmp.f32 s15, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #2.0
+ vcmp.f32 s16, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #3.0
+ vcmp.f32 s17, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #4.0
+ vcmp.f32 s18, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #5.0
+ vcmp.f32 s19, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #6.0
+ vcmp.f32 s20, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #7.0
+ vcmp.f32 s21, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #8.0
+ vcmp.f32 s22, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #9.0
+ vcmp.f32 s23, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #10.0
+ vcmp.f32 s24, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #11.0
+ vcmp.f32 s25, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #12.0
+ vcmp.f32 s26, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #13.0
+ vcmp.f32 s27, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #14.0
+ vcmp.f32 s28, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #1.5
+ vcmp.f32 s29, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #2.5
+ vcmp.f32 s30, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+ vmov.f32 s0, #3.5
+ vcmp.f32 s31, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg1_error_loop
+
+ /* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest1LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+
+ /* Yield to increase test coverage. */
+ movs r0, #0x01
+ ldr r1, =0xe000ed04 /* NVIC_ICSR. */
+ lsls r0, r0, #28 /* Shift to PendSV bit. */
+ str r0, [r1]
+ dsb
+ pop { r0, r1 }
+
+ /* Start again. */
+ b reg1_loop
+
+ reg1_error_loop:
+ b reg1_error_loop
+ nop
+ ltorg /* Create a literal pool to ensure that the constants accessed in the above
+ * code are not out of range. */
+
+/*-----------------------------------------------------------*/
+
+vRegTest2Asm:
+ /* Fill the core registers with known values. */
+ movs r0, #0
+ movs r1, #1
+ movs r2, #2
+ movs r3, #3
+ movs r4, #4
+ movs r5, #5
+ movs r6, #6
+ movs r7, #7
+ mov r8, #8
+ mov r9, #9
+ movs r10, #10
+ movs r11, #11
+ movs r12, #12
+
+ /* Fill the FPU registers with known values. */
+ vmov.f32 s1, #1.0
+ vmov.f32 s2, #2.0
+ vmov.f32 s3, #3.0
+ vmov.f32 s4, #4.0
+ vmov.f32 s5, #5.0
+ vmov.f32 s6, #6.0
+ vmov.f32 s7, #7.0
+ vmov.f32 s8, #8.0
+ vmov.f32 s9, #9.0
+ vmov.f32 s10, #10.0
+ vmov.f32 s11, #11.0
+ vmov.f32 s12, #12.0
+ vmov.f32 s13, #13.0
+ vmov.f32 s14, #14.0
+ vmov.f32 s15, #1.5
+ vmov.f32 s16, #2.5
+ vmov.f32 s17, #3.5
+ vmov.f32 s18, #4.5
+ vmov.f32 s19, #5.5
+ vmov.f32 s20, #6.5
+ vmov.f32 s21, #7.5
+ vmov.f32 s22, #8.5
+ vmov.f32 s23, #9.5
+ vmov.f32 s24, #10.5
+ vmov.f32 s25, #11.5
+ vmov.f32 s26, #12.5
+ vmov.f32 s27, #13.5
+ vmov.f32 s28, #14.5
+ vmov.f32 s29, #1.0
+ vmov.f32 s30, #2.0
+ vmov.f32 s31, #3.0
+
+ reg2_loop:
+ /* Verify that core registers contain correct values. */
+ cmp r0, #0
+ bne reg2_error_loop
+ cmp r1, #1
+ bne reg2_error_loop
+ cmp r2, #2
+ bne reg2_error_loop
+ cmp r3, #3
+ bne reg2_error_loop
+ cmp r4, #4
+ bne reg2_error_loop
+ cmp r5, #5
+ bne reg2_error_loop
+ cmp r6, #6
+ bne reg2_error_loop
+ cmp r7, #7
+ bne reg2_error_loop
+ cmp r8, #8
+ bne reg2_error_loop
+ cmp r9, #9
+ bne reg2_error_loop
+ cmp r10, #10
+ bne reg2_error_loop
+ cmp r11, #11
+ bne reg2_error_loop
+ cmp r12, #12
+ bne reg2_error_loop
+
+ /* Verify that FPU registers contain correct values. */
+ vmov.f32 s0, #1.0
+ vcmp.f32 s1, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #2.0
+ vcmp.f32 s2, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #3.0
+ vcmp.f32 s3, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #4.0
+ vcmp.f32 s4, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #5.0
+ vcmp.f32 s5, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #6.0
+ vcmp.f32 s6, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #7.0
+ vcmp.f32 s7, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #8.0
+ vcmp.f32 s8, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #9.0
+ vcmp.f32 s9, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #10.0
+ vcmp.f32 s10, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #11.0
+ vcmp.f32 s11, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #12.0
+ vcmp.f32 s12, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #13.0
+ vcmp.f32 s13, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #14.0
+ vcmp.f32 s14, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #1.5
+ vcmp.f32 s15, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #2.5
+ vcmp.f32 s16, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #3.5
+ vcmp.f32 s17, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #4.5
+ vcmp.f32 s18, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #5.5
+ vcmp.f32 s19, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #6.5
+ vcmp.f32 s20, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #7.5
+ vcmp.f32 s21, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #8.5
+ vcmp.f32 s22, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #9.5
+ vcmp.f32 s23, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #10.5
+ vcmp.f32 s24, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #11.5
+ vcmp.f32 s25, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #12.5
+ vcmp.f32 s26, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #13.5
+ vcmp.f32 s27, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #14.5
+ vcmp.f32 s28, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #1.0
+ vcmp.f32 s29, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #2.0
+ vcmp.f32 s30, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+ vmov.f32 s0, #3.0
+ vcmp.f32 s31, s0
+ vmrs APSR_nzcv, FPSCR
+ bne reg2_error_loop
+
+ /* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest2LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+ pop { r0, r1 }
+
+ /* Start again. */
+ b reg2_loop
+
+ reg2_error_loop:
+ b reg2_error_loop
+ nop
+ ltorg /* Create a literal pool to ensure that the constants accessed in the above
+ * code are not out of range. */
+
+/*-----------------------------------------------------------*/
+
+vRegTest3Asm:
+ /* Fill the core registers with known values. */
+ movs r0, #100
+ movs r1, #101
+ movs r2, #102
+ movs r3, #103
+ movs r4, #104
+ movs r5, #105
+ movs r6, #106
+ movs r7, #107
+ mov r8, #108
+ mov r9, #109
+ mov r10, #110
+ mov r11, #111
+ mov r12, #112
+
+ /* Fill the FPU registers with known values. */
+ vmov.f32 s0, #1.5
+ vmov.f32 s2, #2.0
+ vmov.f32 s3, #3.5
+ vmov.f32 s4, #4.0
+ vmov.f32 s5, #5.5
+ vmov.f32 s6, #6.0
+ vmov.f32 s7, #7.5
+ vmov.f32 s8, #8.0
+ vmov.f32 s9, #9.5
+ vmov.f32 s10, #10.0
+ vmov.f32 s11, #11.5
+ vmov.f32 s12, #12.0
+ vmov.f32 s13, #13.5
+ vmov.f32 s14, #14.0
+ vmov.f32 s15, #1.5
+ vmov.f32 s16, #2.0
+ vmov.f32 s17, #3.5
+ vmov.f32 s18, #4.0
+ vmov.f32 s19, #5.5
+ vmov.f32 s20, #6.0
+ vmov.f32 s21, #7.5
+ vmov.f32 s22, #8.0
+ vmov.f32 s23, #9.5
+ vmov.f32 s24, #10.0
+ vmov.f32 s25, #11.5
+ vmov.f32 s26, #12.0
+ vmov.f32 s27, #13.5
+ vmov.f32 s28, #14.0
+ vmov.f32 s29, #1.5
+ vmov.f32 s30, #2.0
+ vmov.f32 s31, #3.5
+
+ reg3_loop:
+ /* Verify that core registers contain correct values. */
+ cmp r0, #100
+ bne reg3_error_loop
+ cmp r1, #101
+ bne reg3_error_loop
+ cmp r2, #102
+ bne reg3_error_loop
+ cmp r3, #103
+ bne reg3_error_loop
+ cmp r4, #104
+ bne reg3_error_loop
+ cmp r5, #105
+ bne reg3_error_loop
+ cmp r6, #106
+ bne reg3_error_loop
+ cmp r7, #107
+ bne reg3_error_loop
+ cmp r8, #108
+ bne reg3_error_loop
+ cmp r9, #109
+ bne reg3_error_loop
+ cmp r10, #110
+ bne reg3_error_loop
+ cmp r11, #111
+ bne reg3_error_loop
+ cmp r12, #112
+ bne reg3_error_loop
+
+ /* Verify that FPU registers contain correct values. */
+ vmov.f32 s1, #1.5
+ vcmp.f32 s0, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s2, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s3, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #4.0
+ vcmp.f32 s4, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #5.5
+ vcmp.f32 s5, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s6, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #7.5
+ vcmp.f32 s7, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #8.0
+ vcmp.f32 s8, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #9.5
+ vcmp.f32 s9, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #10.0
+ vcmp.f32 s10, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #11.5
+ vcmp.f32 s11, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s12, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #13.5
+ vcmp.f32 s13, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #14.0
+ vcmp.f32 s14, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #1.5
+ vcmp.f32 s15, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s16, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s17, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #4.0
+ vcmp.f32 s18, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #5.5
+ vcmp.f32 s19, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s20, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #7.5
+ vcmp.f32 s21, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #8.0
+ vcmp.f32 s22, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #9.5
+ vcmp.f32 s23, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #10.0
+ vcmp.f32 s24, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #11.5
+ vcmp.f32 s25, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s26, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #13.5
+ vcmp.f32 s27, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #14.0
+ vcmp.f32 s28, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #1.5
+ vcmp.f32 s29, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s30, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s31, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg3_error_loop
+
+ /* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest3LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+
+ /* Yield to increase test coverage. */
+ movs r0, #0x01
+ ldr r1, =0xe000ed04 /* NVIC_ICSR. */
+ lsl r0, r0, #28 /* Shift to PendSV bit. */
+ str r0, [r1]
+ dsb
+ pop { r0, r1 }
+
+ /* Start again. */
+ b reg3_loop
+
+ reg3_error_loop:
+ b reg3_error_loop
+ nop
+ ltorg /* Create a literal pool to ensure that the constants accessed in the above
+ * code are not out of range. */
+
+/*-----------------------------------------------------------*/
+
+vRegTest4Asm:
+ /* Fill the core registers with known values. */
+ movs r0, #0
+ movs r1, #1
+ movs r2, #2
+ movs r3, #3
+ movs r4, #4
+ movs r5, #5
+ movs r6, #6
+ movs r7, #7
+ mov r8, #8
+ mov r9, #9
+ movs r10, #10
+ movs r11, #11
+ movs r12, #12
+
+ /* Fill the FPU registers with known values. */
+ vmov.f32 s0, #1.5
+ vmov.f32 s2, #2.0
+ vmov.f32 s3, #3.0
+ vmov.f32 s4, #4.5
+ vmov.f32 s5, #5.0
+ vmov.f32 s6, #6.0
+ vmov.f32 s7, #7.5
+ vmov.f32 s8, #8.0
+ vmov.f32 s9, #9.0
+ vmov.f32 s10, #10.5
+ vmov.f32 s11, #11.0
+ vmov.f32 s12, #12.0
+ vmov.f32 s13, #13.5
+ vmov.f32 s14, #14.0
+ vmov.f32 s15, #1.0
+ vmov.f32 s16, #2.5
+ vmov.f32 s17, #3.0
+ vmov.f32 s18, #4.0
+ vmov.f32 s19, #5.5
+ vmov.f32 s20, #6.0
+ vmov.f32 s21, #7.0
+ vmov.f32 s22, #8.5
+ vmov.f32 s23, #9.0
+ vmov.f32 s24, #10.0
+ vmov.f32 s25, #11.5
+ vmov.f32 s26, #12.0
+ vmov.f32 s27, #13.0
+ vmov.f32 s28, #14.5
+ vmov.f32 s29, #1.0
+ vmov.f32 s30, #2.0
+ vmov.f32 s31, #3.5
+
+ reg4_loop:
+ /* Verify that core registers contain correct values. */
+ cmp r0, #0
+ bne reg4_error_loop
+ cmp r1, #1
+ bne reg4_error_loop
+ cmp r2, #2
+ bne reg4_error_loop
+ cmp r3, #3
+ bne reg4_error_loop
+ cmp r4, #4
+ bne reg4_error_loop
+ cmp r5, #5
+ bne reg4_error_loop
+ cmp r6, #6
+ bne reg4_error_loop
+ cmp r7, #7
+ bne reg4_error_loop
+ cmp r8, #8
+ bne reg4_error_loop
+ cmp r9, #9
+ bne reg4_error_loop
+ cmp r10, #10
+ bne reg4_error_loop
+ cmp r11, #11
+ bne reg4_error_loop
+ cmp r12, #12
+ bne reg4_error_loop
+
+ /* Verify that FPU registers contain correct values. */
+ vmov.f32 s1, #1.5
+ vcmp.f32 s0, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s2, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #3.0
+ vcmp.f32 s3, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #4.5
+ vcmp.f32 s4, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #5.0
+ vcmp.f32 s5, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s6, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #7.5
+ vcmp.f32 s7, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #8.0
+ vcmp.f32 s8, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #9.0
+ vcmp.f32 s9, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #10.5
+ vcmp.f32 s10, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #11.0
+ vcmp.f32 s11, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s12, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #13.5
+ vcmp.f32 s13, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #14.0
+ vcmp.f32 s14, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #1.0
+ vcmp.f32 s15, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #2.5
+ vcmp.f32 s16, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #3.0
+ vcmp.f32 s17, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #4.0
+ vcmp.f32 s18, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #5.5
+ vcmp.f32 s19, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s20, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #7.0
+ vcmp.f32 s21, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #8.5
+ vcmp.f32 s22, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #9.0
+ vcmp.f32 s23, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #10.0
+ vcmp.f32 s24, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #11.5
+ vcmp.f32 s25, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s26, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #13.0
+ vcmp.f32 s27, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #14.5
+ vcmp.f32 s28, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #1.0
+ vcmp.f32 s29, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s30, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s31, s1
+ vmrs APSR_nzcv, FPSCR
+ bne reg4_error_loop
+
+ /* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest4LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+ pop { r0, r1 }
+
+ /* Start again. */
+ b reg4_loop
+
+ reg4_error_loop:
+ b reg4_error_loop
+ nop
+ ltorg /* Create a literal pool to ensure that the constants accessed in the above
+ * code are not out of range. */
+
+/*-----------------------------------------------------------*/
+
+ END
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/RVDS/reg_tests_asm.s b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/RVDS/reg_tests_asm.s
new file mode 100644
index 0000000000..7bf441fdf3
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/RVDS/reg_tests_asm.s
@@ -0,0 +1,956 @@
+;/*
+; * FreeRTOS V202212.00
+; * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+; *
+; * Permission is hereby granted, free of charge, to any person obtaining a copy of
+; * this software and associated documentation files (the "Software"), to deal in
+; * the Software without restriction, including without limitation the rights to
+; * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+; * the Software, and to permit persons to whom the Software is furnished to do so,
+; * subject to the following conditions:
+; *
+; * The above copyright notice and this permission notice shall be included in all
+; * copies or substantial portions of the Software.
+; *
+; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+; * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+; * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+; * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+; * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+; * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+; *
+; * https://www.FreeRTOS.org
+; * https://github.com/FreeRTOS
+; *
+; */
+
+;/*
+; * "Reg test" tasks - These fill the registers with known values, then check
+; * that each register maintains its expected value for the lifetime of the
+; * task. Each task uses a different set of values. The reg test tasks execute
+; * with a very low priority, so get preempted very frequently. A register
+; * containing an unexpected value is indicative of an error in the context
+; * switching mechanism.
+; */
+;/*-----------------------------------------------------------*/
+
+ IMPORT ulRegTest1LoopCounter
+ IMPORT ulRegTest2LoopCounter
+ IMPORT ulRegTest3LoopCounter
+ IMPORT ulRegTest4LoopCounter
+
+ EXPORT vRegTest1Asm
+ EXPORT vRegTest2Asm
+ EXPORT vRegTest3Asm
+ EXPORT vRegTest4Asm
+
+ AREA REG_TESTS_ASM, CODE, READONLY
+;/*-----------------------------------------------------------*/
+
+vRegTest1Asm
+
+ PRESERVE8
+
+ ;/* Fill the core registers with known values. */
+ movs r0, #100
+ movs r1, #101
+ movs r2, #102
+ movs r3, #103
+ movs r4, #104
+ movs r5, #105
+ movs r6, #106
+ movs r7, #107
+ mov r8, #108
+ mov r9, #109
+ mov r10, #110
+ mov r11, #111
+ mov r12, #112
+
+ ;/* Fill the FPU registers with known values. */
+ vmov.f32 s1, #1.5
+ vmov.f32 s2, #2.5
+ vmov.f32 s3, #3.5
+ vmov.f32 s4, #4.5
+ vmov.f32 s5, #5.5
+ vmov.f32 s6, #6.5
+ vmov.f32 s7, #7.5
+ vmov.f32 s8, #8.5
+ vmov.f32 s9, #9.5
+ vmov.f32 s10, #10.5
+ vmov.f32 s11, #11.5
+ vmov.f32 s12, #12.5
+ vmov.f32 s13, #13.5
+ vmov.f32 s14, #14.5
+ vmov.f32 s15, #1.0
+ vmov.f32 s16, #2.0
+ vmov.f32 s17, #3.0
+ vmov.f32 s18, #4.0
+ vmov.f32 s19, #5.0
+ vmov.f32 s20, #6.0
+ vmov.f32 s21, #7.0
+ vmov.f32 s22, #8.0
+ vmov.f32 s23, #9.0
+ vmov.f32 s24, #10.0
+ vmov.f32 s25, #11.0
+ vmov.f32 s26, #12.0
+ vmov.f32 s27, #13.0
+ vmov.f32 s28, #14.0
+ vmov.f32 s29, #1.5
+ vmov.f32 s30, #2.5
+ vmov.f32 s31, #3.5
+
+reg1_loop
+ ;/* Verify that core registers contain correct values. */
+ cmp r0, #100
+ bne.w reg1_error_loop
+ cmp r1, #101
+ bne.w reg1_error_loop
+ cmp r2, #102
+ bne.w reg1_error_loop
+ cmp r3, #103
+ bne.w reg1_error_loop
+ cmp r4, #104
+ bne.w reg1_error_loop
+ cmp r5, #105
+ bne.w reg1_error_loop
+ cmp r6, #106
+ bne.w reg1_error_loop
+ cmp r7, #107
+ bne.w reg1_error_loop
+ cmp r8, #108
+ bne.w reg1_error_loop
+ cmp r9, #109
+ bne.w reg1_error_loop
+ cmp r10, #110
+ bne.w reg1_error_loop
+ cmp r11, #111
+ bne.w reg1_error_loop
+ cmp r12, #112
+ bne.w reg1_error_loop
+
+ ;/* Verify that FPU registers contain correct values. */
+ vmov.f32 s0, #1.5 ;/* s0 = 1.5. */
+ vcmp.f32 s1, s0 ;/* Compare s0 and s1. */
+ vmrs APSR_nzcv, FPSCR ;/* Copy floating point flags (FPSCR flags) to ASPR flags - needed for next bne.w to work. */
+ bne.w reg1_error_loop
+ vmov.f32 s0, #2.5
+ vcmp.f32 s2, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #3.5
+ vcmp.f32 s3, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #4.5
+ vcmp.f32 s4, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #5.5
+ vcmp.f32 s5, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #6.5
+ vcmp.f32 s6, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #7.5
+ vcmp.f32 s7, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #8.5
+ vcmp.f32 s8, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #9.5
+ vcmp.f32 s9, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #10.5
+ vcmp.f32 s10, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #11.5
+ vcmp.f32 s11, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #12.5
+ vcmp.f32 s12, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #13.5
+ vcmp.f32 s13, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #14.5
+ vcmp.f32 s14, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #1.0
+ vcmp.f32 s15, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #2.0
+ vcmp.f32 s16, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #3.0
+ vcmp.f32 s17, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #4.0
+ vcmp.f32 s18, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #5.0
+ vcmp.f32 s19, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #6.0
+ vcmp.f32 s20, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #7.0
+ vcmp.f32 s21, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #8.0
+ vcmp.f32 s22, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #9.0
+ vcmp.f32 s23, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #10.0
+ vcmp.f32 s24, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #11.0
+ vcmp.f32 s25, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #12.0
+ vcmp.f32 s26, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #13.0
+ vcmp.f32 s27, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #14.0
+ vcmp.f32 s28, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #1.5
+ vcmp.f32 s29, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #2.5
+ vcmp.f32 s30, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+ vmov.f32 s0, #3.5
+ vcmp.f32 s31, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg1_error_loop
+
+ ;/* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest1LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+
+ ;/* Yield to increase test coverage. */
+ movs r0, #0x01
+ ldr r1, =0xe000ed04 ;/* NVIC_ICSR. */
+ lsls r0, #28 ;/* Shift to PendSV bit. */
+ str r0, [r1]
+ dsb
+ pop { r0, r1 }
+
+ ;/* Start again. */
+ b reg1_loop
+
+reg1_error_loop
+ b reg1_error_loop
+ LTORG
+;/*-----------------------------------------------------------*/
+
+vRegTest2Asm
+
+ PRESERVE8
+
+ ;/* Fill the core registers with known values. */
+ movs r0, #0
+ movs r1, #1
+ movs r2, #2
+ movs r3, #3
+ movs r4, #4
+ movs r5, #5
+ movs r6, #6
+ movs r7, #7
+ mov r8, #8
+ mov r9, #9
+ movs r10, #10
+ movs r11, #11
+ movs r12, #12
+
+ ;/* Fill the FPU registers with known values. */
+ vmov.f32 s1, #1.0
+ vmov.f32 s2, #2.0
+ vmov.f32 s3, #3.0
+ vmov.f32 s4, #4.0
+ vmov.f32 s5, #5.0
+ vmov.f32 s6, #6.0
+ vmov.f32 s7, #7.0
+ vmov.f32 s8, #8.0
+ vmov.f32 s9, #9.0
+ vmov.f32 s10, #10.0
+ vmov.f32 s11, #11.0
+ vmov.f32 s12, #12.0
+ vmov.f32 s13, #13.0
+ vmov.f32 s14, #14.0
+ vmov.f32 s15, #1.5
+ vmov.f32 s16, #2.5
+ vmov.f32 s17, #3.5
+ vmov.f32 s18, #4.5
+ vmov.f32 s19, #5.5
+ vmov.f32 s20, #6.5
+ vmov.f32 s21, #7.5
+ vmov.f32 s22, #8.5
+ vmov.f32 s23, #9.5
+ vmov.f32 s24, #10.5
+ vmov.f32 s25, #11.5
+ vmov.f32 s26, #12.5
+ vmov.f32 s27, #13.5
+ vmov.f32 s28, #14.5
+ vmov.f32 s29, #1.0
+ vmov.f32 s30, #2.0
+ vmov.f32 s31, #3.0
+
+reg2_loop
+ ;/* Verify that core registers contain correct values. */
+ cmp r0, #0
+ bne.w reg2_error_loop
+ cmp r1, #1
+ bne.w reg2_error_loop
+ cmp r2, #2
+ bne.w reg2_error_loop
+ cmp r3, #3
+ bne.w reg2_error_loop
+ cmp r4, #4
+ bne.w reg2_error_loop
+ cmp r5, #5
+ bne.w reg2_error_loop
+ cmp r6, #6
+ bne.w reg2_error_loop
+ cmp r7, #7
+ bne.w reg2_error_loop
+ cmp r8, #8
+ bne.w reg2_error_loop
+ cmp r9, #9
+ bne.w reg2_error_loop
+ cmp r10, #10
+ bne.w reg2_error_loop
+ cmp r11, #11
+ bne.w reg2_error_loop
+ cmp r12, #12
+ bne.w reg2_error_loop
+
+ ;/* Verify that FPU registers contain correct values. */
+ vmov.f32 s0, #1.0
+ vcmp.f32 s1, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #2.0
+ vcmp.f32 s2, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #3.0
+ vcmp.f32 s3, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #4.0
+ vcmp.f32 s4, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #5.0
+ vcmp.f32 s5, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #6.0
+ vcmp.f32 s6, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #7.0
+ vcmp.f32 s7, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #8.0
+ vcmp.f32 s8, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #9.0
+ vcmp.f32 s9, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #10.0
+ vcmp.f32 s10, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #11.0
+ vcmp.f32 s11, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #12.0
+ vcmp.f32 s12, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #13.0
+ vcmp.f32 s13, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #14.0
+ vcmp.f32 s14, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #1.5
+ vcmp.f32 s15, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #2.5
+ vcmp.f32 s16, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #3.5
+ vcmp.f32 s17, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #4.5
+ vcmp.f32 s18, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #5.5
+ vcmp.f32 s19, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #6.5
+ vcmp.f32 s20, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #7.5
+ vcmp.f32 s21, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #8.5
+ vcmp.f32 s22, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #9.5
+ vcmp.f32 s23, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #10.5
+ vcmp.f32 s24, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #11.5
+ vcmp.f32 s25, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #12.5
+ vcmp.f32 s26, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #13.5
+ vcmp.f32 s27, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #14.5
+ vcmp.f32 s28, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #1.0
+ vcmp.f32 s29, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #2.0
+ vcmp.f32 s30, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+ vmov.f32 s0, #3.0
+ vcmp.f32 s31, s0
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg2_error_loop
+
+ ;/* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest2LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+ pop { r0, r1 }
+
+ ;/* Start again. */
+ b reg2_loop
+
+reg2_error_loop
+ b reg2_error_loop
+ LTORG
+;/*-----------------------------------------------------------*/
+
+vRegTest3Asm
+
+ PRESERVE8
+
+ ;/* Fill the core registers with known values. */
+ movs r0, #100
+ movs r1, #101
+ movs r2, #102
+ movs r3, #103
+ movs r4, #104
+ movs r5, #105
+ movs r6, #106
+ movs r7, #107
+ mov r8, #108
+ mov r9, #109
+ mov r10, #110
+ mov r11, #111
+ mov r12, #112
+
+ ;/* Fill the FPU registers with known values. */
+ vmov.f32 s0, #1.5
+ vmov.f32 s2, #2.0
+ vmov.f32 s3, #3.5
+ vmov.f32 s4, #4.0
+ vmov.f32 s5, #5.5
+ vmov.f32 s6, #6.0
+ vmov.f32 s7, #7.5
+ vmov.f32 s8, #8.0
+ vmov.f32 s9, #9.5
+ vmov.f32 s10, #10.0
+ vmov.f32 s11, #11.5
+ vmov.f32 s12, #12.0
+ vmov.f32 s13, #13.5
+ vmov.f32 s14, #14.0
+ vmov.f32 s15, #1.5
+ vmov.f32 s16, #2.0
+ vmov.f32 s17, #3.5
+ vmov.f32 s18, #4.0
+ vmov.f32 s19, #5.5
+ vmov.f32 s20, #6.0
+ vmov.f32 s21, #7.5
+ vmov.f32 s22, #8.0
+ vmov.f32 s23, #9.5
+ vmov.f32 s24, #10.0
+ vmov.f32 s25, #11.5
+ vmov.f32 s26, #12.0
+ vmov.f32 s27, #13.5
+ vmov.f32 s28, #14.0
+ vmov.f32 s29, #1.5
+ vmov.f32 s30, #2.0
+ vmov.f32 s31, #3.5
+
+reg3_loop
+ ;/* Verify that core registers contain correct values. */
+ cmp r0, #100
+ bne.w reg3_error_loop
+ cmp r1, #101
+ bne.w reg3_error_loop
+ cmp r2, #102
+ bne.w reg3_error_loop
+ cmp r3, #103
+ bne.w reg3_error_loop
+ cmp r4, #104
+ bne.w reg3_error_loop
+ cmp r5, #105
+ bne.w reg3_error_loop
+ cmp r6, #106
+ bne.w reg3_error_loop
+ cmp r7, #107
+ bne.w reg3_error_loop
+ cmp r8, #108
+ bne.w reg3_error_loop
+ cmp r9, #109
+ bne.w reg3_error_loop
+ cmp r10, #110
+ bne.w reg3_error_loop
+ cmp r11, #111
+ bne.w reg3_error_loop
+ cmp r12, #112
+ bne.w reg3_error_loop
+
+ ;/* Verify that FPU registers contain correct values. */
+ vmov.f32 s1, #1.5
+ vcmp.f32 s0, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s2, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s3, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #4.0
+ vcmp.f32 s4, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #5.5
+ vcmp.f32 s5, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s6, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #7.5
+ vcmp.f32 s7, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #8.0
+ vcmp.f32 s8, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #9.5
+ vcmp.f32 s9, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #10.0
+ vcmp.f32 s10, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #11.5
+ vcmp.f32 s11, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s12, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #13.5
+ vcmp.f32 s13, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #14.0
+ vcmp.f32 s14, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #1.5
+ vcmp.f32 s15, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s16, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s17, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #4.0
+ vcmp.f32 s18, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #5.5
+ vcmp.f32 s19, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s20, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #7.5
+ vcmp.f32 s21, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #8.0
+ vcmp.f32 s22, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #9.5
+ vcmp.f32 s23, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #10.0
+ vcmp.f32 s24, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #11.5
+ vcmp.f32 s25, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s26, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #13.5
+ vcmp.f32 s27, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #14.0
+ vcmp.f32 s28, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #1.5
+ vcmp.f32 s29, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s30, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s31, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg3_error_loop
+
+ ;/* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest3LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+
+ ;/* Yield to increase test coverage. */
+ movs r0, #0x01
+ ldr r1, =0xe000ed04 ;/* NVIC_ICSR. */
+ lsls r0, #28 ;/* Shift to PendSV bit. */
+ str r0, [r1]
+ dsb
+ pop { r0, r1 }
+
+ ;/* Start again. */
+ b reg3_loop
+
+reg3_error_loop
+ b reg3_error_loop
+ LTORG
+;/*-----------------------------------------------------------*/
+
+vRegTest4Asm
+
+ PRESERVE8
+
+ ;/* Fill the core registers with known values. */
+ movs r0, #0
+ movs r1, #1
+ movs r2, #2
+ movs r3, #3
+ movs r4, #4
+ movs r5, #5
+ movs r6, #6
+ movs r7, #7
+ mov r8, #8
+ mov r9, #9
+ movs r10, #10
+ movs r11, #11
+ movs r12, #12
+
+ ;/* Fill the FPU registers with known values. */
+ vmov.f32 s0, #1.5
+ vmov.f32 s2, #2.0
+ vmov.f32 s3, #3.0
+ vmov.f32 s4, #4.5
+ vmov.f32 s5, #5.0
+ vmov.f32 s6, #6.0
+ vmov.f32 s7, #7.5
+ vmov.f32 s8, #8.0
+ vmov.f32 s9, #9.0
+ vmov.f32 s10, #10.5
+ vmov.f32 s11, #11.0
+ vmov.f32 s12, #12.0
+ vmov.f32 s13, #13.5
+ vmov.f32 s14, #14.0
+ vmov.f32 s15, #1.0
+ vmov.f32 s16, #2.5
+ vmov.f32 s17, #3.0
+ vmov.f32 s18, #4.0
+ vmov.f32 s19, #5.5
+ vmov.f32 s20, #6.0
+ vmov.f32 s21, #7.0
+ vmov.f32 s22, #8.5
+ vmov.f32 s23, #9.0
+ vmov.f32 s24, #10.0
+ vmov.f32 s25, #11.5
+ vmov.f32 s26, #12.0
+ vmov.f32 s27, #13.0
+ vmov.f32 s28, #14.5
+ vmov.f32 s29, #1.0
+ vmov.f32 s30, #2.0
+ vmov.f32 s31, #3.5
+
+reg4_loop
+ ;/* Verify that core registers contain correct values. */
+ cmp r0, #0
+ bne.w reg4_error_loop
+ cmp r1, #1
+ bne.w reg4_error_loop
+ cmp r2, #2
+ bne.w reg4_error_loop
+ cmp r3, #3
+ bne.w reg4_error_loop
+ cmp r4, #4
+ bne.w reg4_error_loop
+ cmp r5, #5
+ bne.w reg4_error_loop
+ cmp r6, #6
+ bne.w reg4_error_loop
+ cmp r7, #7
+ bne.w reg4_error_loop
+ cmp r8, #8
+ bne.w reg4_error_loop
+ cmp r9, #9
+ bne.w reg4_error_loop
+ cmp r10, #10
+ bne.w reg4_error_loop
+ cmp r11, #11
+ bne.w reg4_error_loop
+ cmp r12, #12
+ bne.w reg4_error_loop
+
+ ;/* Verify that FPU registers contain correct values. */
+ vmov.f32 s1, #1.5
+ vcmp.f32 s0, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s2, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #3.0
+ vcmp.f32 s3, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #4.5
+ vcmp.f32 s4, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #5.0
+ vcmp.f32 s5, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s6, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #7.5
+ vcmp.f32 s7, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #8.0
+ vcmp.f32 s8, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #9.0
+ vcmp.f32 s9, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #10.5
+ vcmp.f32 s10, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #11.0
+ vcmp.f32 s11, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s12, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #13.5
+ vcmp.f32 s13, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #14.0
+ vcmp.f32 s14, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #1.0
+ vcmp.f32 s15, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #2.5
+ vcmp.f32 s16, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #3.0
+ vcmp.f32 s17, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #4.0
+ vcmp.f32 s18, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #5.5
+ vcmp.f32 s19, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #6.0
+ vcmp.f32 s20, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #7.0
+ vcmp.f32 s21, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #8.5
+ vcmp.f32 s22, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #9.0
+ vcmp.f32 s23, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #10.0
+ vcmp.f32 s24, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #11.5
+ vcmp.f32 s25, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #12.0
+ vcmp.f32 s26, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #13.0
+ vcmp.f32 s27, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #14.5
+ vcmp.f32 s28, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #1.0
+ vcmp.f32 s29, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #2.0
+ vcmp.f32 s30, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+ vmov.f32 s1, #3.5
+ vcmp.f32 s31, s1
+ vmrs APSR_nzcv, FPSCR
+ bne.w reg4_error_loop
+
+ ;/* Everything passed, inc the loop counter. */
+ push { r0, r1 }
+ ldr r0, =ulRegTest4LoopCounter
+ ldr r1, [r0]
+ adds r1, r1, #1
+ str r1, [r0]
+ pop { r0, r1 }
+
+ ;/* Start again. */
+ b reg4_loop
+
+reg4_error_loop
+ b reg4_error_loop
+ LTORG
+;/*-----------------------------------------------------------*/
+
+ END
\ No newline at end of file
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/app_main.c b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/app_main.c
index 2677c86f06..761b1ba237 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/app_main.c
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/app_main.c
@@ -32,12 +32,16 @@
/* Demo includes. */
#include "mpu_demo.h"
+#include "reg_tests.h"
void app_main( void )
{
/* Start the MPU demo. */
vStartMPUDemo();
+ /* Start register tests. */
+ vStartRegTests();
+
/* Start the scheduler. */
vTaskStartScheduler();
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/reg_tests.c b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/reg_tests.c
new file mode 100644
index 0000000000..d4efebfb67
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/reg_tests.c
@@ -0,0 +1,376 @@
+/*
+ * FreeRTOS V202212.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+/* Scheduler includes. */
+#include "FreeRTOS.h"
+#include "task.h"
+
+/* Reg test includes. */
+#include "reg_tests.h"
+
+/* Hardware includes. */
+#include "main.h"
+
+/*
+ * Functions that implement reg test tasks.
+ */
+static void prvRegTest1Task( void * pvParameters );
+static void prvRegTest2Task( void * pvParameters );
+static void prvRegTest3Task( void * pvParameters );
+static void prvRegTest4Task( void * pvParameters );
+
+/*
+ * Check task periodically checks that reg tests tasks
+ * are running fine.
+ */
+static void prvCheckTask( void * pvParameters );
+
+/*
+ * Functions implemented in assembly.
+ */
+extern void vRegTest1Asm( void );
+extern void vRegTest2Asm( void );
+extern void vRegTest3Asm( void );
+extern void vRegTest4Asm( void );
+/*-----------------------------------------------------------*/
+
+/*
+ * Priority of the check task.
+ */
+#define CHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
+
+/*
+ * Frequency of check task.
+ */
+#define NO_ERROR_CHECK_TASK_PERIOD ( pdMS_TO_TICKS( 5000UL ) )
+#define ERROR_CHECK_TASK_PERIOD ( pdMS_TO_TICKS( 200UL ) )
+
+/*
+ * Parameters passed to reg test tasks.
+ */
+#define REG_TEST_TASK_1_PARAMETER ( ( void * ) 0x12345678 )
+#define REG_TEST_TASK_2_PARAMETER ( ( void * ) 0x87654321 )
+#define REG_TEST_TASK_3_PARAMETER ( ( void * ) 0x12348765 )
+#define REG_TEST_TASK_4_PARAMETER ( ( void * ) 0x43215678 )
+/*-----------------------------------------------------------*/
+
+/*
+ * The following variables are used to communicate the status of the register
+ * test tasks to the check task. If the variables keep incrementing, then the
+ * register test tasks have not discovered any errors. If a variable stops
+ * incrementing, then an error has been found.
+ */
+volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;
+volatile unsigned long ulRegTest3LoopCounter = 0UL, ulRegTest4LoopCounter = 0UL;
+
+/**
+ * Counter to keep a count of how may times the check task loop has detected
+ * error.
+ */
+volatile unsigned long ulCheckTaskLoops = 0UL;
+/*-----------------------------------------------------------*/
+
+void vStartRegTests( void )
+{
+static StackType_t xRegTest1TaskStack[ configMINIMAL_STACK_SIZE ] __attribute__( ( aligned( configMINIMAL_STACK_SIZE * sizeof( StackType_t ) ) ) );
+static StackType_t xRegTest2TaskStack[ configMINIMAL_STACK_SIZE ] __attribute__( ( aligned( configMINIMAL_STACK_SIZE * sizeof( StackType_t ) ) ) );
+static StackType_t xRegTest3TaskStack[ configMINIMAL_STACK_SIZE ] __attribute__( ( aligned( configMINIMAL_STACK_SIZE * sizeof( StackType_t ) ) ) );
+static StackType_t xRegTest4TaskStack[ configMINIMAL_STACK_SIZE ] __attribute__( ( aligned( configMINIMAL_STACK_SIZE * sizeof( StackType_t ) ) ) );
+static StackType_t xCheckTaskStack[ configMINIMAL_STACK_SIZE ] __attribute__( ( aligned( configMINIMAL_STACK_SIZE * sizeof( StackType_t ) ) ) );
+
+TaskParameters_t xRegTest1TaskParameters =
+{
+ .pvTaskCode = prvRegTest1Task,
+ .pcName = "RegTest1",
+ .usStackDepth = configMINIMAL_STACK_SIZE,
+ .pvParameters = REG_TEST_TASK_1_PARAMETER,
+ .uxPriority = tskIDLE_PRIORITY | portPRIVILEGE_BIT,
+ .puxStackBuffer = xRegTest1TaskStack,
+ .xRegions = {
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 }
+ }
+};
+TaskParameters_t xRegTest2TaskParameters =
+{
+ .pvTaskCode = prvRegTest2Task,
+ .pcName = "RegTest2",
+ .usStackDepth = configMINIMAL_STACK_SIZE,
+ .pvParameters = REG_TEST_TASK_2_PARAMETER,
+ .uxPriority = tskIDLE_PRIORITY | portPRIVILEGE_BIT,
+ .puxStackBuffer = xRegTest2TaskStack,
+ .xRegions = {
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 }
+ }
+};
+TaskParameters_t xRegTest3TaskParameters =
+{
+ .pvTaskCode = prvRegTest3Task,
+ .pcName = "RegTest3",
+ .usStackDepth = configMINIMAL_STACK_SIZE,
+ .pvParameters = REG_TEST_TASK_3_PARAMETER,
+ .uxPriority = tskIDLE_PRIORITY | portPRIVILEGE_BIT,
+ .puxStackBuffer = xRegTest3TaskStack,
+ .xRegions = {
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 }
+ }
+};
+TaskParameters_t xRegTest4TaskParameters =
+{
+ .pvTaskCode = prvRegTest4Task,
+ .pcName = "RegTest4",
+ .usStackDepth = configMINIMAL_STACK_SIZE,
+ .pvParameters = REG_TEST_TASK_4_PARAMETER,
+ .uxPriority = tskIDLE_PRIORITY | portPRIVILEGE_BIT,
+ .puxStackBuffer = xRegTest4TaskStack,
+ .xRegions = {
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 }
+ }
+};
+
+TaskParameters_t xCheckTaskParameters =
+{
+ .pvTaskCode = prvCheckTask,
+ .pcName = "Check",
+ .usStackDepth = configMINIMAL_STACK_SIZE,
+ .pvParameters = NULL,
+ .uxPriority = ( CHECK_TASK_PRIORITY | portPRIVILEGE_BIT ),
+ .puxStackBuffer = xCheckTaskStack,
+ .xRegions = {
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 },
+ { 0, 0, 0 }
+ }
+};
+
+ xTaskCreateRestricted( &( xRegTest1TaskParameters ), NULL );
+ xTaskCreateRestricted( &( xRegTest2TaskParameters ), NULL );
+ xTaskCreateRestricted( &( xRegTest3TaskParameters ), NULL );
+ xTaskCreateRestricted( &( xRegTest4TaskParameters ), NULL );
+ xTaskCreateRestricted( &( xCheckTaskParameters ), NULL );
+}
+/*-----------------------------------------------------------*/
+
+static void prvRegTest1Task( void * pvParameters )
+{
+ /* Although the reg tests are written in assembly, its entry
+ * point is written in C for convenience of checking that the
+ * task parameter is being passed in correctly. */
+ if( pvParameters == REG_TEST_TASK_1_PARAMETER )
+ {
+ /* Start the part of the test that is written in assembler. */
+ vRegTest1Asm();
+ }
+
+ /* The following line will only execute if the task parameter
+ * is found to be incorrect. The check task will detect that
+ * the reg test loop counter is not being incremented and flag
+ * an error. */
+ vTaskDelete( NULL );
+}
+/*-----------------------------------------------------------*/
+
+static void prvRegTest2Task( void * pvParameters )
+{
+ /* Although the reg tests are written in assembly, its entry
+ * point is written in C for convenience of checking that the
+ * task parameter is being passed in correctly. */
+ if( pvParameters == REG_TEST_TASK_2_PARAMETER )
+ {
+ /* Start the part of the test that is written in assembler. */
+ vRegTest2Asm();
+ }
+
+ /* The following line will only execute if the task parameter
+ * is found to be incorrect. The check task will detect that
+ * the reg test loop counter is not being incremented and flag
+ * an error. */
+ vTaskDelete( NULL );
+}
+/*-----------------------------------------------------------*/
+
+static void prvRegTest3Task( void * pvParameters )
+{
+ /* Although the reg tests are written in assembly, its entry
+ * point is written in C for convenience of checking that the
+ * task parameter is being passed in correctly. */
+ if( pvParameters == REG_TEST_TASK_3_PARAMETER )
+ {
+ /* Start the part of the test that is written in assembler. */
+ vRegTest3Asm();
+ }
+
+ /* The following line will only execute if the task parameter
+ * is found to be incorrect. The check task will detect that
+ * the reg test loop counter is not being incremented and flag
+ * an error. */
+ vTaskDelete( NULL );
+}
+/*-----------------------------------------------------------*/
+
+static void prvRegTest4Task( void * pvParameters )
+{
+ /* Although the reg tests are written in assembly, its entry
+ * point is written in C for convenience of checking that the
+ * task parameter is being passed in correctly. */
+ if( pvParameters == REG_TEST_TASK_4_PARAMETER )
+ {
+ /* Start the part of the test that is written in assembler. */
+ vRegTest4Asm();
+ }
+
+ /* The following line will only execute if the task parameter
+ * is found to be incorrect. The check task will detect that
+ * the reg test loop counter is not being incremented and flag
+ * an error. */
+ vTaskDelete( NULL );
+}
+/*-----------------------------------------------------------*/
+
+static void prvCheckTask( void * pvParameters )
+{
+TickType_t xDelayPeriod = NO_ERROR_CHECK_TASK_PERIOD;
+TickType_t xLastExecutionTime;
+unsigned long ulErrorFound = pdFALSE;
+static unsigned long ulLastRegTest1Value = 0, ulLastRegTest2Value = 0;
+static unsigned long ulLastRegTest3Value = 0, ulLastRegTest4Value = 0;
+
+ /* Just to stop compiler warnings. */
+ ( void ) pvParameters;
+
+ /* Initialize xLastExecutionTime so the first call to vTaskDelayUntil()
+ * works correctly. */
+ xLastExecutionTime = xTaskGetTickCount();
+
+ /* Cycle for ever, delaying then checking all the other tasks are still
+ * operating without error. The onboard LED is toggled on each iteration.
+ * If an error is detected then the delay period is decreased from
+ * mainNO_ERROR_CHECK_TASK_PERIOD to mainERROR_CHECK_TASK_PERIOD. This has
+ * the effect of increasing the rate at which the onboard LED toggles, and
+ * in so doing gives visual feedback of the system status. */
+ for( ;; )
+ {
+ /* Delay until it is time to execute again. */
+ vTaskDelayUntil( &xLastExecutionTime, xDelayPeriod );
+
+ /* Check that the register test 1 task is still running. */
+ if( ulLastRegTest1Value == ulRegTest1LoopCounter )
+ {
+ ulErrorFound |= 1UL << 0UL;
+ }
+ ulLastRegTest1Value = ulRegTest1LoopCounter;
+
+ /* Check that the register test 2 task is still running. */
+ if( ulLastRegTest2Value == ulRegTest2LoopCounter )
+ {
+ ulErrorFound |= 1UL << 1UL;
+ }
+ ulLastRegTest2Value = ulRegTest2LoopCounter;
+
+ /* Check that the register test 3 task is still running. */
+ if( ulLastRegTest3Value == ulRegTest3LoopCounter )
+ {
+ ulErrorFound |= 1UL << 2UL;
+ }
+ ulLastRegTest3Value = ulRegTest3LoopCounter;
+
+ /* Check that the register test 4 task is still running. */
+ if( ulLastRegTest4Value == ulRegTest4LoopCounter )
+ {
+ ulErrorFound |= 1UL << 3UL;
+ }
+ ulLastRegTest4Value = ulRegTest4LoopCounter;
+
+
+ /* Toggle the green LED to give an indication of the system status.
+ * If the LED toggles every NO_ERROR_CHECK_TASK_PERIOD milliseconds
+ * then everything is ok. A faster toggle indicates an error. */
+ HAL_GPIO_TogglePin( LD1_GPIO_Port, LD1_Pin );
+
+ if( ulErrorFound != pdFALSE )
+ {
+ /* An error has been detected in one of the tasks - flash the LED
+ * at a higher frequency to give visible feedback that something has
+ * gone wrong (it might just be that the loop back connector required
+ * by the comtest tasks has not been fitted). */
+ xDelayPeriod = ERROR_CHECK_TASK_PERIOD;
+
+ /* Turn on Red LED to indicate error. */
+ HAL_GPIO_WritePin( LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET );
+
+ /* Increment error detection count. */
+ ulCheckTaskLoops++;
+ }
+ }
+}
+/*-----------------------------------------------------------*/
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/reg_tests.h b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/reg_tests.h
new file mode 100644
index 0000000000..0837aad72d
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Demo/reg_tests.h
@@ -0,0 +1,35 @@
+/*
+ * FreeRTOS V202212.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+#ifndef REG_TESTS_H
+#define REG_TESTS_H
+
+/**
+ * @brief Creates all the tasks for reg tests.
+ */
+void vStartRegTests( void );
+
+#endif /* REG_TESTS_H */
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.cproject b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.cproject
index 852a26954b..55f883f974 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.cproject
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.cproject
@@ -10,6 +10,7 @@
+
@@ -18,9 +19,9 @@
-
-
-
+
+
+
@@ -76,6 +77,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -122,6 +149,7 @@
+
@@ -152,4 +180,4 @@
-
+
\ No newline at end of file
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.project b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.project
index 21d9ba2d4b..23501c2b08 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.project
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/GCC/.project
@@ -53,6 +53,15 @@
+
+ 1680067487361
+ Demo
+ 9
+
+ org.eclipse.ui.ide.multiFilter
+ 1.0-name-matches-false-false-GCC
+
+
1594591511105
FreeRTOS
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewd b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewd
index 926cc66f86..e380c1f250 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewd
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewd
@@ -1,1419 +1,1546 @@
- 3
-
- FreeRTOSDemo
-
- ARM
-
- 1
-
- C-SPY
- 2
-
- 29
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ARMSIM_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
- CADI_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
-
- CMSISDAP_ID
- 2
-
- 4
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GDBSERVER_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
-
-
-
- IJET_ID
- 2
-
- 8
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JLINK_ID
- 2
-
- 16
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- LMIFTDI_ID
- 2
-
- 2
- 1
- 1
-
-
-
-
-
-
-
-
-
- PEMICRO_ID
- 2
-
- 3
- 1
- 1
-
-
-
-
-
-
-
- STLINK_ID
- 2
-
- 4
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- THIRDPARTY_ID
- 2
-
- 0
- 1
- 1
-
-
-
-
-
-
-
- TIFET_ID
- 2
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- XDS100_ID
- 2
-
- 6
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin
- 0
-
-
- $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin
- 1
-
-
- $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin
- 0
-
-
- $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin
- 0
-
-
-
+ 3
+
+ FreeRTOSDemo
+
+ ARM
+
+ 1
+
+ C-SPY
+ 2
+
+ 32
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ARMSIM_ID
+ 2
+
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+ CADI_ID
+ 2
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+
+
+ CMSISDAP_ID
+ 2
+
+ 4
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GDBSERVER_ID
+ 2
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+ IJET_ID
+ 2
+
+ 9
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ JLINK_ID
+ 2
+
+ 16
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LMIFTDI_ID
+ 2
+
+ 3
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ NULINK_ID
+ 2
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+ PEMICRO_ID
+ 2
+
+ 3
+ 1
+ 1
+
+
+
+
+
+
+
+ STLINK_ID
+ 2
+
+ 7
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ THIRDPARTY_ID
+ 2
+
+ 0
+ 1
+ 1
+
+
+
+
+
+
+
+ TIFET_ID
+ 2
+
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XDS100_ID
+ 2
+
+ 9
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin
+ 0
+
+
+ $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin
+ 0
+
+
+ $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin
+ 0
+
+
+ $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin
+ 0
+
+
+ $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin
+ 0
+
+
+
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewp b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewp
index 22a161f088..e7f646ee74 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewp
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/IAR/FreeRTOSDemo.ewp
@@ -11,9 +11,13 @@
General
3
- 31
+ 34
1
1
+
-
-
-
-
-
+
+
+
ICCARM
2
- 36
+ 37
1
1
-
-
-
@@ -682,13 +666,9 @@
0
+ inputOutputBased
-
- BICOMP
- 0
-
-
BUILDACTION
1
@@ -701,17 +681,13 @@
ILINK
0
- 23
+ 26
1
1
IlinkLibIOConfig
1
-
- XLinkMisraHandler
- 0
-
IlinkInputFileSlave
0
@@ -1037,6 +1013,34 @@
IlinkRawBinaryAlign2
+
+ IlinkLogCrtRoutineSelection
+ 0
+
+
+ IlinkLogFragmentInfo
+ 0
+
+
+ IlinkLogInlining
+ 0
+
+
+ IlinkLogMerging
+ 0
+
+
+ IlinkDemangle
+ 0
+
+
+ IlinkWrapperFileEnable
+ 0
+
+
+ IlinkWrapperFile
+
+
@@ -1060,11 +1064,6 @@
-
- BILINK
- 0
-
-
Config
@@ -1074,6 +1073,12 @@
Demo
+
+ IAR
+
+ $PROJ_DIR$\..\..\Demo\IAR\reg_tests_asm.s
+
+
$PROJ_DIR$\..\..\Demo\app_main.c
@@ -1086,6 +1091,12 @@
$PROJ_DIR$\..\..\Demo\mpu_demo.h
+
+ $PROJ_DIR$\..\..\Demo\reg_tests.c
+
+
+ $PROJ_DIR$\..\..\Demo\reg_tests.h
+
FreeRTOS
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvoptx b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvoptx
index c6e38d3ca2..fce0ba11e9 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvoptx
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvoptx
@@ -10,7 +10,7 @@
*.s*; *.src; *.a*
*.obj; *.o
*.lib
- *.txt; *.h; *.inc
+ *.txt; *.h; *.inc; *.md
*.plm
*.cpp
0
@@ -103,7 +103,7 @@
1
0
0
- 5
+ 6
@@ -275,6 +275,42 @@
0
0
+
+ 2
+ 6
+ 1
+ 0
+ 0
+ 0
+ ..\..\Demo\GCC\reg_tests_asm.c
+ reg_tests_asm.c
+ 0
+ 0
+
+
+ 2
+ 7
+ 1
+ 0
+ 0
+ 0
+ ..\..\Demo\reg_tests.c
+ reg_tests.c
+ 0
+ 0
+
+
+ 2
+ 8
+ 5
+ 0
+ 0
+ 0
+ ..\..\Demo\reg_tests.h
+ reg_tests.h
+ 0
+ 0
+
@@ -285,7 +321,7 @@
0
3
- 6
+ 9
1
0
0
@@ -297,7 +333,7 @@
3
- 7
+ 10
1
0
0
@@ -309,7 +345,7 @@
3
- 8
+ 11
1
0
0
@@ -321,7 +357,7 @@
3
- 9
+ 12
1
0
0
@@ -333,7 +369,7 @@
3
- 10
+ 13
1
0
0
@@ -345,7 +381,7 @@
3
- 11
+ 14
1
0
0
@@ -357,7 +393,7 @@
3
- 12
+ 15
1
0
0
@@ -369,7 +405,7 @@
3
- 13
+ 16
5
0
0
@@ -381,7 +417,7 @@
3
- 14
+ 17
1
0
0
@@ -393,7 +429,7 @@
3
- 15
+ 18
1
0
0
@@ -413,7 +449,7 @@
0
4
- 16
+ 19
1
0
0
@@ -425,7 +461,7 @@
4
- 17
+ 20
1
0
0
@@ -437,7 +473,7 @@
4
- 18
+ 21
1
0
0
@@ -449,7 +485,7 @@
4
- 19
+ 22
1
0
0
@@ -461,7 +497,7 @@
4
- 20
+ 23
1
0
0
@@ -481,7 +517,7 @@
0
5
- 21
+ 24
1
0
0
@@ -493,7 +529,7 @@
5
- 22
+ 25
1
0
0
@@ -505,7 +541,7 @@
5
- 23
+ 26
1
0
0
@@ -517,7 +553,7 @@
5
- 24
+ 27
1
0
0
@@ -529,7 +565,7 @@
5
- 25
+ 28
1
0
0
@@ -541,7 +577,7 @@
5
- 26
+ 29
1
0
0
@@ -553,7 +589,7 @@
5
- 27
+ 30
1
0
0
@@ -565,7 +601,7 @@
5
- 28
+ 31
1
0
0
@@ -577,7 +613,7 @@
5
- 29
+ 32
1
0
0
@@ -589,7 +625,7 @@
5
- 30
+ 33
1
0
0
@@ -601,7 +637,7 @@
5
- 31
+ 34
1
0
0
@@ -613,7 +649,7 @@
5
- 32
+ 35
1
0
0
@@ -625,7 +661,7 @@
5
- 33
+ 36
1
0
0
@@ -637,7 +673,7 @@
5
- 34
+ 37
1
0
0
@@ -649,7 +685,7 @@
5
- 35
+ 38
1
0
0
@@ -661,7 +697,7 @@
5
- 36
+ 39
1
0
0
@@ -673,7 +709,7 @@
5
- 37
+ 40
1
0
0
@@ -685,7 +721,7 @@
5
- 38
+ 41
1
0
0
@@ -697,7 +733,7 @@
5
- 39
+ 42
1
0
0
@@ -709,7 +745,7 @@
5
- 40
+ 43
1
0
0
@@ -721,7 +757,7 @@
5
- 41
+ 44
1
0
0
@@ -733,7 +769,7 @@
5
- 42
+ 45
1
0
0
@@ -745,7 +781,7 @@
5
- 43
+ 46
1
0
0
@@ -757,7 +793,7 @@
5
- 44
+ 47
1
0
0
@@ -769,7 +805,7 @@
5
- 45
+ 48
1
0
0
@@ -781,7 +817,7 @@
5
- 46
+ 49
1
0
0
@@ -793,7 +829,7 @@
5
- 47
+ 50
1
0
0
@@ -805,7 +841,7 @@
5
- 48
+ 51
1
0
0
@@ -817,7 +853,7 @@
5
- 49
+ 52
1
0
0
@@ -829,7 +865,7 @@
5
- 50
+ 53
1
0
0
@@ -841,7 +877,7 @@
5
- 51
+ 54
1
0
0
@@ -853,7 +889,7 @@
5
- 52
+ 55
1
0
0
@@ -865,7 +901,7 @@
5
- 53
+ 56
1
0
0
@@ -877,7 +913,7 @@
5
- 54
+ 57
1
0
0
@@ -889,7 +925,7 @@
5
- 55
+ 58
1
0
0
@@ -901,7 +937,7 @@
5
- 56
+ 59
1
0
0
@@ -913,7 +949,7 @@
5
- 57
+ 60
1
0
0
@@ -925,7 +961,7 @@
5
- 58
+ 61
1
0
0
@@ -937,7 +973,7 @@
5
- 59
+ 62
1
0
0
@@ -949,7 +985,7 @@
5
- 60
+ 63
1
0
0
@@ -961,7 +997,7 @@
5
- 61
+ 64
1
0
0
@@ -973,7 +1009,7 @@
5
- 62
+ 65
1
0
0
@@ -985,7 +1021,7 @@
5
- 63
+ 66
1
0
0
@@ -997,7 +1033,7 @@
5
- 64
+ 67
1
0
0
@@ -1009,7 +1045,7 @@
5
- 65
+ 68
1
0
0
@@ -1021,7 +1057,7 @@
5
- 66
+ 69
1
0
0
@@ -1033,7 +1069,7 @@
5
- 67
+ 70
1
0
0
@@ -1045,7 +1081,7 @@
5
- 68
+ 71
1
0
0
@@ -1057,7 +1093,7 @@
5
- 69
+ 72
1
0
0
@@ -1069,7 +1105,7 @@
5
- 70
+ 73
1
0
0
@@ -1081,7 +1117,7 @@
5
- 71
+ 74
1
0
0
@@ -1093,7 +1129,7 @@
5
- 72
+ 75
1
0
0
@@ -1105,7 +1141,7 @@
5
- 73
+ 76
1
0
0
@@ -1117,7 +1153,7 @@
5
- 74
+ 77
1
0
0
@@ -1129,7 +1165,7 @@
5
- 75
+ 78
1
0
0
@@ -1141,7 +1177,7 @@
5
- 76
+ 79
1
0
0
@@ -1153,7 +1189,7 @@
5
- 77
+ 80
1
0
0
@@ -1165,7 +1201,7 @@
5
- 78
+ 81
1
0
0
@@ -1177,7 +1213,7 @@
5
- 79
+ 82
1
0
0
@@ -1189,7 +1225,7 @@
5
- 80
+ 83
1
0
0
@@ -1201,7 +1237,7 @@
5
- 81
+ 84
1
0
0
@@ -1213,7 +1249,7 @@
5
- 82
+ 85
1
0
0
@@ -1225,7 +1261,7 @@
5
- 83
+ 86
1
0
0
@@ -1237,7 +1273,7 @@
5
- 84
+ 87
1
0
0
@@ -1249,7 +1285,7 @@
5
- 85
+ 88
1
0
0
@@ -1261,7 +1297,7 @@
5
- 86
+ 89
1
0
0
@@ -1273,7 +1309,7 @@
5
- 87
+ 90
1
0
0
@@ -1285,7 +1321,7 @@
5
- 88
+ 91
1
0
0
@@ -1297,7 +1333,7 @@
5
- 89
+ 92
1
0
0
@@ -1309,7 +1345,7 @@
5
- 90
+ 93
1
0
0
@@ -1321,7 +1357,7 @@
5
- 91
+ 94
1
0
0
@@ -1333,7 +1369,7 @@
5
- 92
+ 95
1
0
0
@@ -1345,7 +1381,7 @@
5
- 93
+ 96
1
0
0
@@ -1357,7 +1393,7 @@
5
- 94
+ 97
1
0
0
@@ -1369,7 +1405,7 @@
5
- 95
+ 98
1
0
0
@@ -1381,7 +1417,7 @@
5
- 96
+ 99
1
0
0
@@ -1393,7 +1429,7 @@
5
- 97
+ 100
1
0
0
@@ -1405,7 +1441,7 @@
5
- 98
+ 101
1
0
0
@@ -1417,7 +1453,7 @@
5
- 99
+ 102
1
0
0
@@ -1429,7 +1465,7 @@
5
- 100
+ 103
1
0
0
@@ -1441,7 +1477,7 @@
5
- 101
+ 104
1
0
0
@@ -1453,7 +1489,7 @@
5
- 102
+ 105
1
0
0
@@ -1465,7 +1501,7 @@
5
- 103
+ 106
1
0
0
@@ -1477,7 +1513,7 @@
5
- 104
+ 107
1
0
0
@@ -1489,7 +1525,7 @@
5
- 105
+ 108
1
0
0
@@ -1501,7 +1537,7 @@
5
- 106
+ 109
1
0
0
@@ -1513,7 +1549,7 @@
5
- 107
+ 110
1
0
0
@@ -1525,7 +1561,7 @@
5
- 108
+ 111
1
0
0
@@ -1537,7 +1573,7 @@
5
- 109
+ 112
1
0
0
@@ -1549,7 +1585,7 @@
5
- 110
+ 113
1
0
0
@@ -1561,7 +1597,7 @@
5
- 111
+ 114
1
0
0
@@ -1573,7 +1609,7 @@
5
- 112
+ 115
1
0
0
@@ -1585,7 +1621,7 @@
5
- 113
+ 116
1
0
0
@@ -1597,7 +1633,7 @@
5
- 114
+ 117
1
0
0
@@ -1609,7 +1645,7 @@
5
- 115
+ 118
1
0
0
@@ -1621,7 +1657,7 @@
5
- 116
+ 119
1
0
0
@@ -1633,7 +1669,7 @@
5
- 117
+ 120
1
0
0
@@ -1645,7 +1681,7 @@
5
- 118
+ 121
1
0
0
@@ -1657,7 +1693,7 @@
5
- 119
+ 122
1
0
0
@@ -1669,7 +1705,7 @@
5
- 120
+ 123
1
0
0
@@ -1681,7 +1717,7 @@
5
- 121
+ 124
1
0
0
@@ -1693,7 +1729,7 @@
5
- 122
+ 125
1
0
0
@@ -1705,7 +1741,7 @@
5
- 123
+ 126
1
0
0
@@ -1717,7 +1753,7 @@
5
- 124
+ 127
1
0
0
@@ -1729,7 +1765,7 @@
5
- 125
+ 128
1
0
0
@@ -1741,7 +1777,7 @@
5
- 126
+ 129
1
0
0
@@ -1753,7 +1789,7 @@
5
- 127
+ 130
1
0
0
@@ -1765,7 +1801,7 @@
5
- 128
+ 131
1
0
0
@@ -1777,7 +1813,7 @@
5
- 129
+ 132
1
0
0
@@ -1789,7 +1825,7 @@
5
- 130
+ 133
1
0
0
@@ -1801,7 +1837,7 @@
5
- 131
+ 134
1
0
0
@@ -1813,7 +1849,7 @@
5
- 132
+ 135
1
0
0
@@ -1825,7 +1861,7 @@
5
- 133
+ 136
1
0
0
@@ -1837,7 +1873,7 @@
5
- 134
+ 137
1
0
0
@@ -1857,7 +1893,7 @@
0
6
- 135
+ 138
1
0
0
@@ -1869,7 +1905,7 @@
6
- 136
+ 139
2
0
0
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvprojx b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvprojx
index d3c763b3da..ab02655a84 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvprojx
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil/FreeRTOSDemo.uvprojx
@@ -10,14 +10,14 @@
FreeRTOSDemo
0x4
ARM-ADS
- 6130001::V6.13.1::.\ARMCLANG
+ 6180000::V6.18::ARMCLANG
1
STM32H743ZITx
STMicroelectronics
- Keil.STM32H7xx_DFP.2.4.0
- https://www.keil.com/pack/
+ Keil.STM32H7xx_DFP.3.0.0
+ http://www.keil.com/pack/
IRAM(0x20000000-0x2001FFFF) IRAM2(0x24000000-0x2407FFFF) IROM(0x8000000-0x81FFFFF) CLOCK(12000000) FPU3(DFPU) CPUTYPE("Cortex-M7") ELITTLE
@@ -185,6 +185,8 @@
0
3
0
+ 0
+ 0
1
0
8
@@ -351,7 +353,7 @@
0
0
0
- 0
+ 4
@@ -412,6 +414,21 @@
5
..\..\Demo\mpu_demo.h
+
+ reg_tests_asm.c
+ 1
+ ..\..\Demo\GCC\reg_tests_asm.c
+
+
+ reg_tests.c
+ 1
+ ..\..\Demo\reg_tests.c
+
+
+ reg_tests.h
+ 5
+ ..\..\Demo\reg_tests.h
+
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.sct b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.sct
new file mode 100644
index 0000000000..333a44cc2c
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.sct
@@ -0,0 +1,45 @@
+; Flash Layout
+;
+; ---------------------
+; | Privileged Code |
+; ---------------------
+; | Unprivileged Code |
+; ---------------------
+;
+; RAM Layout
+;
+; ---------------------
+; | Privileged Data |
+; ---------------------
+; | Unprivileged Data |
+; ---------------------
+
+LR_APP 0x08000000 0x00200000 ; load region size_region
+{
+ ER_IROM_PRIVILEGED 0x08000000
+ {
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ *(privileged_functions)
+ }
+
+ ER_IROM_FREERTOS_SYSTEM_CALLS 0x08008000 FIXED
+ {
+ *(freertos_system_calls)
+ }
+
+ ER_IROM_UNPRIVILEGED +0
+ {
+ .ANY (+RO)
+ }
+
+ RW_IRAM_PRIVILEGED 0x20000000
+ {
+ *(privileged_data)
+ }
+
+ RW_IRAM_UNPRIVILEGED 0x20008000
+ {
+ .ANY (+RW +ZI)
+ }
+}
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.uvoptx b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.uvoptx
new file mode 100644
index 0000000000..5d0b06c3ed
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.uvoptx
@@ -0,0 +1,1928 @@
+
+
+
+ 1.0
+
+ ### uVision Project, (C) Keil Software
+
+
+ *.c
+ *.s*; *.src; *.a*
+ *.obj; *.o
+ *.lib
+ *.txt; *.h; *.inc; *.md
+ *.plm
+ *.cpp
+ 0
+
+
+
+ 0
+ 0
+
+
+
+ FreeRTOSDemo
+ 0x4
+ ARM-ADS
+
+ 64000000
+
+ 1
+ 1
+ 0
+ 1
+ 0
+
+
+ 1
+ 65535
+ 0
+ 0
+ 0
+
+
+ 79
+ 66
+ 8
+ .\Listings\
+
+
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+
+
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+
+
+ 1
+ 0
+ 1
+
+ 18
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 6
+
+
+
+
+
+
+
+
+
+
+ STLink\ST-LINKIII-KEIL_SWO.dll
+
+
+
+ 0
+ ARMRTXEVENTFLAGS
+ -L70 -Z18 -C0 -M0 -T1
+
+
+ 0
+ DLGTARM
+ (1010=1611,104,2061,661,0)(6017=1641,137,1830,473,0)(1008=-1,-1,-1,-1,0)(6016=-1,-1,-1,-1,0)(1012=1671,169,2148,484,0)
+
+
+ 0
+ ARMDBGFLAGS
+
+
+
+ 0
+ DLGUARM
+ (105=-1,-1,-1,-1,0)
+
+
+ 0
+ UL2CM3
+ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC8000 -FN1 -FF0STM32H7x_2048 -FS08000000 -FL0200000 -FP0($$Device:STM32H743ZITx$CMSIS\Flash\STM32H7x_2048.FLM))
+
+
+ 0
+ ST-LINKIII-KEIL_SWO
+ -U-O142 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(6BA02477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32H7x_2048.FLM -FS08000000 -FL0200000 -FP0($$Device:STM32H743ZITx$CMSIS\Flash\STM32H7x_2048.FLM)
+
+
+
+
+ 0
+
+
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+ 0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+ 1
+ 0
+ 0
+ 2
+ 10000000
+
+
+
+
+
+ Config
+ 0
+ 0
+ 0
+ 0
+
+ 1
+ 1
+ 5
+ 0
+ 0
+ 0
+ ..\..\Config\FreeRTOSConfig.h
+ FreeRTOSConfig.h
+ 0
+ 0
+
+
+
+
+ Demo
+ 0
+ 0
+ 0
+ 0
+
+ 2
+ 2
+ 1
+ 0
+ 0
+ 0
+ ..\..\Demo\app_main.c
+ app_main.c
+ 0
+ 0
+
+
+ 2
+ 3
+ 5
+ 0
+ 0
+ 0
+ ..\..\Demo\app_main.h
+ app_main.h
+ 0
+ 0
+
+
+ 2
+ 4
+ 1
+ 0
+ 0
+ 0
+ ..\..\Demo\mpu_demo.c
+ mpu_demo.c
+ 0
+ 0
+
+
+ 2
+ 5
+ 5
+ 0
+ 0
+ 0
+ ..\..\Demo\mpu_demo.h
+ mpu_demo.h
+ 0
+ 0
+
+
+ 2
+ 6
+ 1
+ 0
+ 0
+ 0
+ ..\..\Demo\reg_tests.c
+ reg_tests.c
+ 0
+ 0
+
+
+ 2
+ 7
+ 5
+ 0
+ 0
+ 0
+ ..\..\Demo\reg_tests.h
+ reg_tests.h
+ 0
+ 0
+
+
+ 2
+ 8
+ 2
+ 0
+ 0
+ 0
+ ..\..\Demo\RVDS\reg_tests_asm.s
+ reg_tests_asm.s
+ 0
+ 0
+
+
+
+
+ FreeRTOS
+ 0
+ 0
+ 0
+ 0
+
+ 3
+ 9
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\event_groups.c
+ event_groups.c
+ 0
+ 0
+
+
+ 3
+ 10
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\list.c
+ list.c
+ 0
+ 0
+
+
+ 3
+ 11
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\queue.c
+ queue.c
+ 0
+ 0
+
+
+ 3
+ 12
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\stream_buffer.c
+ stream_buffer.c
+ 0
+ 0
+
+
+ 3
+ 13
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\tasks.c
+ tasks.c
+ 0
+ 0
+
+
+ 3
+ 14
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\timers.c
+ timers.c
+ 0
+ 0
+
+
+ 3
+ 15
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\portable\Common\mpu_wrappers.c
+ mpu_wrappers.c
+ 0
+ 0
+
+
+ 3
+ 16
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\portable\MemMang\heap_4.c
+ heap_4.c
+ 0
+ 0
+
+
+ 3
+ 17
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\portable\RVDS\ARM_CM4_MPU\port.c
+ port.c
+ 0
+ 0
+
+
+ 3
+ 18
+ 5
+ 0
+ 0
+ 0
+ ..\..\..\..\Source\portable\RVDS\ARM_CM4_MPU\portmacro.h
+ portmacro.h
+ 0
+ 0
+
+
+
+
+ ST_Code/Core
+ 0
+ 0
+ 0
+ 0
+
+ 4
+ 19
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Core\Src\main.c
+ main.c
+ 0
+ 0
+
+
+ 4
+ 20
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Core\Src\stm32h7xx_hal_msp.c
+ stm32h7xx_hal_msp.c
+ 0
+ 0
+
+
+ 4
+ 21
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Core\Src\stm32h7xx_hal_timebase_tim.c
+ stm32h7xx_hal_timebase_tim.c
+ 0
+ 0
+
+
+ 4
+ 22
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Core\Src\stm32h7xx_it.c
+ stm32h7xx_it.c
+ 0
+ 0
+
+
+ 4
+ 23
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Core\Src\system_stm32h7xx.c
+ system_stm32h7xx.c
+ 0
+ 0
+
+
+
+
+ ST_Code/Drivers
+ 0
+ 0
+ 0
+ 0
+
+ 5
+ 24
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c
+ stm32h7xx_hal.c
+ 0
+ 0
+
+
+ 5
+ 25
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_adc.c
+ stm32h7xx_hal_adc.c
+ 0
+ 0
+
+
+ 5
+ 26
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_adc_ex.c
+ stm32h7xx_hal_adc_ex.c
+ 0
+ 0
+
+
+ 5
+ 27
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cec.c
+ stm32h7xx_hal_cec.c
+ 0
+ 0
+
+
+ 5
+ 28
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_comp.c
+ stm32h7xx_hal_comp.c
+ 0
+ 0
+
+
+ 5
+ 29
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c
+ stm32h7xx_hal_cortex.c
+ 0
+ 0
+
+
+ 5
+ 30
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_crc.c
+ stm32h7xx_hal_crc.c
+ 0
+ 0
+
+
+ 5
+ 31
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_crc_ex.c
+ stm32h7xx_hal_crc_ex.c
+ 0
+ 0
+
+
+ 5
+ 32
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cryp.c
+ stm32h7xx_hal_cryp.c
+ 0
+ 0
+
+
+ 5
+ 33
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cryp_ex.c
+ stm32h7xx_hal_cryp_ex.c
+ 0
+ 0
+
+
+ 5
+ 34
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dac.c
+ stm32h7xx_hal_dac.c
+ 0
+ 0
+
+
+ 5
+ 35
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dac_ex.c
+ stm32h7xx_hal_dac_ex.c
+ 0
+ 0
+
+
+ 5
+ 36
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dcmi.c
+ stm32h7xx_hal_dcmi.c
+ 0
+ 0
+
+
+ 5
+ 37
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dfsdm.c
+ stm32h7xx_hal_dfsdm.c
+ 0
+ 0
+
+
+ 5
+ 38
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dfsdm_ex.c
+ stm32h7xx_hal_dfsdm_ex.c
+ 0
+ 0
+
+
+ 5
+ 39
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c
+ stm32h7xx_hal_dma.c
+ 0
+ 0
+
+
+ 5
+ 40
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c
+ stm32h7xx_hal_dma_ex.c
+ 0
+ 0
+
+
+ 5
+ 41
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma2d.c
+ stm32h7xx_hal_dma2d.c
+ 0
+ 0
+
+
+ 5
+ 42
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dsi.c
+ stm32h7xx_hal_dsi.c
+ 0
+ 0
+
+
+ 5
+ 43
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dts.c
+ stm32h7xx_hal_dts.c
+ 0
+ 0
+
+
+ 5
+ 44
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c
+ stm32h7xx_hal_eth.c
+ 0
+ 0
+
+
+ 5
+ 45
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c
+ stm32h7xx_hal_eth_ex.c
+ 0
+ 0
+
+
+ 5
+ 46
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c
+ stm32h7xx_hal_exti.c
+ 0
+ 0
+
+
+ 5
+ 47
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_fdcan.c
+ stm32h7xx_hal_fdcan.c
+ 0
+ 0
+
+
+ 5
+ 48
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c
+ stm32h7xx_hal_flash.c
+ 0
+ 0
+
+
+ 5
+ 49
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c
+ stm32h7xx_hal_flash_ex.c
+ 0
+ 0
+
+
+ 5
+ 50
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gfxmmu.c
+ stm32h7xx_hal_gfxmmu.c
+ 0
+ 0
+
+
+ 5
+ 51
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c
+ stm32h7xx_hal_gpio.c
+ 0
+ 0
+
+
+ 5
+ 52
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hash.c
+ stm32h7xx_hal_hash.c
+ 0
+ 0
+
+
+ 5
+ 53
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hash_ex.c
+ stm32h7xx_hal_hash_ex.c
+ 0
+ 0
+
+
+ 5
+ 54
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hcd.c
+ stm32h7xx_hal_hcd.c
+ 0
+ 0
+
+
+ 5
+ 55
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hrtim.c
+ stm32h7xx_hal_hrtim.c
+ 0
+ 0
+
+
+ 5
+ 56
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c
+ stm32h7xx_hal_hsem.c
+ 0
+ 0
+
+
+ 5
+ 57
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c
+ stm32h7xx_hal_i2c.c
+ 0
+ 0
+
+
+ 5
+ 58
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c
+ stm32h7xx_hal_i2c_ex.c
+ 0
+ 0
+
+
+ 5
+ 59
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s.c
+ stm32h7xx_hal_i2s.c
+ 0
+ 0
+
+
+ 5
+ 60
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c
+ stm32h7xx_hal_i2s_ex.c
+ 0
+ 0
+
+
+ 5
+ 61
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_irda.c
+ stm32h7xx_hal_irda.c
+ 0
+ 0
+
+
+ 5
+ 62
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_iwdg.c
+ stm32h7xx_hal_iwdg.c
+ 0
+ 0
+
+
+ 5
+ 63
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_jpeg.c
+ stm32h7xx_hal_jpeg.c
+ 0
+ 0
+
+
+ 5
+ 64
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_lptim.c
+ stm32h7xx_hal_lptim.c
+ 0
+ 0
+
+
+ 5
+ 65
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ltdc.c
+ stm32h7xx_hal_ltdc.c
+ 0
+ 0
+
+
+ 5
+ 66
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ltdc_ex.c
+ stm32h7xx_hal_ltdc_ex.c
+ 0
+ 0
+
+
+ 5
+ 67
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdios.c
+ stm32h7xx_hal_mdios.c
+ 0
+ 0
+
+
+ 5
+ 68
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c
+ stm32h7xx_hal_mdma.c
+ 0
+ 0
+
+
+ 5
+ 69
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mmc.c
+ stm32h7xx_hal_mmc.c
+ 0
+ 0
+
+
+ 5
+ 70
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mmc_ex.c
+ stm32h7xx_hal_mmc_ex.c
+ 0
+ 0
+
+
+ 5
+ 71
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_nand.c
+ stm32h7xx_hal_nand.c
+ 0
+ 0
+
+
+ 5
+ 72
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_nor.c
+ stm32h7xx_hal_nor.c
+ 0
+ 0
+
+
+ 5
+ 73
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_opamp.c
+ stm32h7xx_hal_opamp.c
+ 0
+ 0
+
+
+ 5
+ 74
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_opamp_ex.c
+ stm32h7xx_hal_opamp_ex.c
+ 0
+ 0
+
+
+ 5
+ 75
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ospi.c
+ stm32h7xx_hal_ospi.c
+ 0
+ 0
+
+
+ 5
+ 76
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_otfdec.c
+ stm32h7xx_hal_otfdec.c
+ 0
+ 0
+
+
+ 5
+ 77
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pcd.c
+ stm32h7xx_hal_pcd.c
+ 0
+ 0
+
+
+ 5
+ 78
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pcd_ex.c
+ stm32h7xx_hal_pcd_ex.c
+ 0
+ 0
+
+
+ 5
+ 79
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pssi.c
+ stm32h7xx_hal_pssi.c
+ 0
+ 0
+
+
+ 5
+ 80
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c
+ stm32h7xx_hal_pwr.c
+ 0
+ 0
+
+
+ 5
+ 81
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c
+ stm32h7xx_hal_pwr_ex.c
+ 0
+ 0
+
+
+ 5
+ 82
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_qspi.c
+ stm32h7xx_hal_qspi.c
+ 0
+ 0
+
+
+ 5
+ 83
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ramecc.c
+ stm32h7xx_hal_ramecc.c
+ 0
+ 0
+
+
+ 5
+ 84
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c
+ stm32h7xx_hal_rcc.c
+ 0
+ 0
+
+
+ 5
+ 85
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c
+ stm32h7xx_hal_rcc_ex.c
+ 0
+ 0
+
+
+ 5
+ 86
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rng.c
+ stm32h7xx_hal_rng.c
+ 0
+ 0
+
+
+ 5
+ 87
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rng_ex.c
+ stm32h7xx_hal_rng_ex.c
+ 0
+ 0
+
+
+ 5
+ 88
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rtc.c
+ stm32h7xx_hal_rtc.c
+ 0
+ 0
+
+
+ 5
+ 89
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rtc_ex.c
+ stm32h7xx_hal_rtc_ex.c
+ 0
+ 0
+
+
+ 5
+ 90
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sai.c
+ stm32h7xx_hal_sai.c
+ 0
+ 0
+
+
+ 5
+ 91
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sai_ex.c
+ stm32h7xx_hal_sai_ex.c
+ 0
+ 0
+
+
+ 5
+ 92
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sd.c
+ stm32h7xx_hal_sd.c
+ 0
+ 0
+
+
+ 5
+ 93
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sd_ex.c
+ stm32h7xx_hal_sd_ex.c
+ 0
+ 0
+
+
+ 5
+ 94
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sdram.c
+ stm32h7xx_hal_sdram.c
+ 0
+ 0
+
+
+ 5
+ 95
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_smartcard.c
+ stm32h7xx_hal_smartcard.c
+ 0
+ 0
+
+
+ 5
+ 96
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_smartcard_ex.c
+ stm32h7xx_hal_smartcard_ex.c
+ 0
+ 0
+
+
+ 5
+ 97
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_smbus.c
+ stm32h7xx_hal_smbus.c
+ 0
+ 0
+
+
+ 5
+ 98
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_spdifrx.c
+ stm32h7xx_hal_spdifrx.c
+ 0
+ 0
+
+
+ 5
+ 99
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_spi.c
+ stm32h7xx_hal_spi.c
+ 0
+ 0
+
+
+ 5
+ 100
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_spi_ex.c
+ stm32h7xx_hal_spi_ex.c
+ 0
+ 0
+
+
+ 5
+ 101
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sram.c
+ stm32h7xx_hal_sram.c
+ 0
+ 0
+
+
+ 5
+ 102
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_swpmi.c
+ stm32h7xx_hal_swpmi.c
+ 0
+ 0
+
+
+ 5
+ 103
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c
+ stm32h7xx_hal_tim.c
+ 0
+ 0
+
+
+ 5
+ 104
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c
+ stm32h7xx_hal_tim_ex.c
+ 0
+ 0
+
+
+ 5
+ 105
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c
+ stm32h7xx_hal_uart.c
+ 0
+ 0
+
+
+ 5
+ 106
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c
+ stm32h7xx_hal_uart_ex.c
+ 0
+ 0
+
+
+ 5
+ 107
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_usart.c
+ stm32h7xx_hal_usart.c
+ 0
+ 0
+
+
+ 5
+ 108
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_usart_ex.c
+ stm32h7xx_hal_usart_ex.c
+ 0
+ 0
+
+
+ 5
+ 109
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_wwdg.c
+ stm32h7xx_hal_wwdg.c
+ 0
+ 0
+
+
+ 5
+ 110
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_adc.c
+ stm32h7xx_ll_adc.c
+ 0
+ 0
+
+
+ 5
+ 111
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_bdma.c
+ stm32h7xx_ll_bdma.c
+ 0
+ 0
+
+
+ 5
+ 112
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_comp.c
+ stm32h7xx_ll_comp.c
+ 0
+ 0
+
+
+ 5
+ 113
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_crc.c
+ stm32h7xx_ll_crc.c
+ 0
+ 0
+
+
+ 5
+ 114
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_crs.c
+ stm32h7xx_ll_crs.c
+ 0
+ 0
+
+
+ 5
+ 115
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_dac.c
+ stm32h7xx_ll_dac.c
+ 0
+ 0
+
+
+ 5
+ 116
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_delayblock.c
+ stm32h7xx_ll_delayblock.c
+ 0
+ 0
+
+
+ 5
+ 117
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_dma.c
+ stm32h7xx_ll_dma.c
+ 0
+ 0
+
+
+ 5
+ 118
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_dma2d.c
+ stm32h7xx_ll_dma2d.c
+ 0
+ 0
+
+
+ 5
+ 119
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_exti.c
+ stm32h7xx_ll_exti.c
+ 0
+ 0
+
+
+ 5
+ 120
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_fmc.c
+ stm32h7xx_ll_fmc.c
+ 0
+ 0
+
+
+ 5
+ 121
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_gpio.c
+ stm32h7xx_ll_gpio.c
+ 0
+ 0
+
+
+ 5
+ 122
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_hrtim.c
+ stm32h7xx_ll_hrtim.c
+ 0
+ 0
+
+
+ 5
+ 123
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_i2c.c
+ stm32h7xx_ll_i2c.c
+ 0
+ 0
+
+
+ 5
+ 124
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_lptim.c
+ stm32h7xx_ll_lptim.c
+ 0
+ 0
+
+
+ 5
+ 125
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_lpuart.c
+ stm32h7xx_ll_lpuart.c
+ 0
+ 0
+
+
+ 5
+ 126
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_mdma.c
+ stm32h7xx_ll_mdma.c
+ 0
+ 0
+
+
+ 5
+ 127
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_opamp.c
+ stm32h7xx_ll_opamp.c
+ 0
+ 0
+
+
+ 5
+ 128
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_pwr.c
+ stm32h7xx_ll_pwr.c
+ 0
+ 0
+
+
+ 5
+ 129
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_rcc.c
+ stm32h7xx_ll_rcc.c
+ 0
+ 0
+
+
+ 5
+ 130
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_rng.c
+ stm32h7xx_ll_rng.c
+ 0
+ 0
+
+
+ 5
+ 131
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_rtc.c
+ stm32h7xx_ll_rtc.c
+ 0
+ 0
+
+
+ 5
+ 132
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_sdmmc.c
+ stm32h7xx_ll_sdmmc.c
+ 0
+ 0
+
+
+ 5
+ 133
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_spi.c
+ stm32h7xx_ll_spi.c
+ 0
+ 0
+
+
+ 5
+ 134
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_swpmi.c
+ stm32h7xx_ll_swpmi.c
+ 0
+ 0
+
+
+ 5
+ 135
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_tim.c
+ stm32h7xx_ll_tim.c
+ 0
+ 0
+
+
+ 5
+ 136
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_usart.c
+ stm32h7xx_ll_usart.c
+ 0
+ 0
+
+
+ 5
+ 137
+ 1
+ 0
+ 0
+ 0
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_usb.c
+ stm32h7xx_ll_usb.c
+ 0
+ 0
+
+
+
+
+ Startup
+ 0
+ 0
+ 0
+ 0
+
+ 6
+ 138
+ 1
+ 0
+ 0
+ 0
+ .\memfault_handler.c
+ memfault_handler.c
+ 0
+ 0
+
+
+ 6
+ 139
+ 2
+ 0
+ 0
+ 0
+ .\startup_stm32h743xx.s
+ startup_stm32h743xx.s
+ 0
+ 0
+
+
+
+
+ ::CMSIS
+ 0
+ 0
+ 0
+ 1
+
+
+
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.uvprojx b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.uvprojx
new file mode 100644
index 0000000000..ba0ab789ce
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/FreeRTOSDemo.uvprojx
@@ -0,0 +1,1129 @@
+
+
+
+ 2.1
+
+ ### uVision Project, (C) Keil Software
+
+
+
+ FreeRTOSDemo
+ 0x4
+ ARM-ADS
+ 5060960::V5.06 update 7 (build 960)::.\ARM_Compiler_5.06u7
+ 0
+
+
+ STM32H743ZITx
+ STMicroelectronics
+ Keil.STM32H7xx_DFP.3.0.0
+ http://www.keil.com/pack/
+ IRAM(0x20000000-0x2001FFFF) IRAM2(0x24000000-0x2407FFFF) IROM(0x8000000-0x81FFFFF) CLOCK(12000000) FPU3(DFPU) CPUTYPE("Cortex-M7") ELITTLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $$Device:STM32H743ZITx$CMSIS\SVD\STM32H743.svd
+ 0
+ 0
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+
+ .\Debug\
+ FreeRTOSDemo
+ 1
+ 0
+ 1
+ 1
+ 1
+ .\Listings\
+ 1
+ 0
+ 0
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 0
+
+ 0
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+
+
+ 0
+
+
+ SARMCM3.DLL
+ -REMAP -MPU
+ DCM.DLL
+ -pCM7
+ SARMCM3.DLL
+ -MPU
+ TCM.DLL
+ -pCM7
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 16
+
+
+
+
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4107
+
+ 1
+ STLink\ST-LINKIII-KEIL_SWO.dll
+
+
+
+
+
+ 0
+
+
+
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ "Cortex-M7"
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 3
+ 0
+ 0
+ 0
+ 1
+ 0
+ 8
+ 1
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x20000
+
+
+ 1
+ 0x8000000
+ 0x200000
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 1
+ 0x8000000
+ 0x200000
+
+
+ 1
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x0
+ 0x0
+
+
+ 0
+ 0x20000000
+ 0x20000
+
+
+ 0
+ 0x24000000
+ 0x80000
+
+
+
+
+
+ 1
+ 4
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+ 0
+ 0
+ 3
+ 3
+ 1
+ 1
+ 0
+ 0
+ 0
+
+
+ USE_HAL_DRIVER,STM32H743xx
+
+ ..\..\Config;..\..\Demo;..\..\ST_Code\Core\Inc;..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Inc;..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Inc\Legacy;..\..\ST_Code\Drivers\CMSIS\Device\ST\STM32H7xx\Include;..\..\ST_Code\Drivers\CMSIS\Include;..\..\..\..\Source\include;..\..\..\..\Source\portable\RVDS\ARM_CM4_MPU
+
+
+
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+
+
+
+
+ ..\..\ST_Code\Core\Inc
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0x08000000
+ 0x20000000
+
+ .\FreeRTOSDemo.sct
+
+
+
+
+
+
+
+
+
+
+ Config
+
+
+ FreeRTOSConfig.h
+ 5
+ ..\..\Config\FreeRTOSConfig.h
+
+
+
+
+ Demo
+
+
+ app_main.c
+ 1
+ ..\..\Demo\app_main.c
+
+
+ app_main.h
+ 5
+ ..\..\Demo\app_main.h
+
+
+ mpu_demo.c
+ 1
+ ..\..\Demo\mpu_demo.c
+
+
+ mpu_demo.h
+ 5
+ ..\..\Demo\mpu_demo.h
+
+
+ reg_tests.c
+ 1
+ ..\..\Demo\reg_tests.c
+
+
+ reg_tests.h
+ 5
+ ..\..\Demo\reg_tests.h
+
+
+ reg_tests_asm.s
+ 2
+ ..\..\Demo\RVDS\reg_tests_asm.s
+
+
+
+
+ FreeRTOS
+
+
+ event_groups.c
+ 1
+ ..\..\..\..\Source\event_groups.c
+
+
+ list.c
+ 1
+ ..\..\..\..\Source\list.c
+
+
+ queue.c
+ 1
+ ..\..\..\..\Source\queue.c
+
+
+ stream_buffer.c
+ 1
+ ..\..\..\..\Source\stream_buffer.c
+
+
+ tasks.c
+ 1
+ ..\..\..\..\Source\tasks.c
+
+
+ timers.c
+ 1
+ ..\..\..\..\Source\timers.c
+
+
+ mpu_wrappers.c
+ 1
+ ..\..\..\..\Source\portable\Common\mpu_wrappers.c
+
+
+ heap_4.c
+ 1
+ ..\..\..\..\Source\portable\MemMang\heap_4.c
+
+
+ port.c
+ 1
+ ..\..\..\..\Source\portable\RVDS\ARM_CM4_MPU\port.c
+
+
+ portmacro.h
+ 5
+ ..\..\..\..\Source\portable\RVDS\ARM_CM4_MPU\portmacro.h
+
+
+
+
+ ST_Code/Core
+
+
+ main.c
+ 1
+ ..\..\ST_Code\Core\Src\main.c
+
+
+ stm32h7xx_hal_msp.c
+ 1
+ ..\..\ST_Code\Core\Src\stm32h7xx_hal_msp.c
+
+
+ stm32h7xx_hal_timebase_tim.c
+ 1
+ ..\..\ST_Code\Core\Src\stm32h7xx_hal_timebase_tim.c
+
+
+ stm32h7xx_it.c
+ 1
+ ..\..\ST_Code\Core\Src\stm32h7xx_it.c
+
+
+ system_stm32h7xx.c
+ 1
+ ..\..\ST_Code\Core\Src\system_stm32h7xx.c
+
+
+
+
+ ST_Code/Drivers
+
+
+ stm32h7xx_hal.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal.c
+
+
+ stm32h7xx_hal_adc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_adc.c
+
+
+ stm32h7xx_hal_adc_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_adc_ex.c
+
+
+ stm32h7xx_hal_cec.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cec.c
+
+
+ stm32h7xx_hal_comp.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_comp.c
+
+
+ stm32h7xx_hal_cortex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cortex.c
+
+
+ stm32h7xx_hal_crc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_crc.c
+
+
+ stm32h7xx_hal_crc_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_crc_ex.c
+
+
+ stm32h7xx_hal_cryp.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cryp.c
+
+
+ stm32h7xx_hal_cryp_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_cryp_ex.c
+
+
+ stm32h7xx_hal_dac.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dac.c
+
+
+ stm32h7xx_hal_dac_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dac_ex.c
+
+
+ stm32h7xx_hal_dcmi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dcmi.c
+
+
+ stm32h7xx_hal_dfsdm.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dfsdm.c
+
+
+ stm32h7xx_hal_dfsdm_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dfsdm_ex.c
+
+
+ stm32h7xx_hal_dma.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma.c
+
+
+ stm32h7xx_hal_dma_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma_ex.c
+
+
+ stm32h7xx_hal_dma2d.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dma2d.c
+
+
+ stm32h7xx_hal_dsi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dsi.c
+
+
+ stm32h7xx_hal_dts.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_dts.c
+
+
+ stm32h7xx_hal_eth.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth.c
+
+
+ stm32h7xx_hal_eth_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_eth_ex.c
+
+
+ stm32h7xx_hal_exti.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_exti.c
+
+
+ stm32h7xx_hal_fdcan.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_fdcan.c
+
+
+ stm32h7xx_hal_flash.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash.c
+
+
+ stm32h7xx_hal_flash_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_flash_ex.c
+
+
+ stm32h7xx_hal_gfxmmu.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gfxmmu.c
+
+
+ stm32h7xx_hal_gpio.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_gpio.c
+
+
+ stm32h7xx_hal_hash.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hash.c
+
+
+ stm32h7xx_hal_hash_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hash_ex.c
+
+
+ stm32h7xx_hal_hcd.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hcd.c
+
+
+ stm32h7xx_hal_hrtim.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hrtim.c
+
+
+ stm32h7xx_hal_hsem.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_hsem.c
+
+
+ stm32h7xx_hal_i2c.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c.c
+
+
+ stm32h7xx_hal_i2c_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2c_ex.c
+
+
+ stm32h7xx_hal_i2s.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s.c
+
+
+ stm32h7xx_hal_i2s_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c
+
+
+ stm32h7xx_hal_irda.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_irda.c
+
+
+ stm32h7xx_hal_iwdg.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_iwdg.c
+
+
+ stm32h7xx_hal_jpeg.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_jpeg.c
+
+
+ stm32h7xx_hal_lptim.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_lptim.c
+
+
+ stm32h7xx_hal_ltdc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ltdc.c
+
+
+ stm32h7xx_hal_ltdc_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ltdc_ex.c
+
+
+ stm32h7xx_hal_mdios.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdios.c
+
+
+ stm32h7xx_hal_mdma.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mdma.c
+
+
+ stm32h7xx_hal_mmc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mmc.c
+
+
+ stm32h7xx_hal_mmc_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_mmc_ex.c
+
+
+ stm32h7xx_hal_nand.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_nand.c
+
+
+ stm32h7xx_hal_nor.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_nor.c
+
+
+ stm32h7xx_hal_opamp.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_opamp.c
+
+
+ stm32h7xx_hal_opamp_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_opamp_ex.c
+
+
+ stm32h7xx_hal_ospi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ospi.c
+
+
+ stm32h7xx_hal_otfdec.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_otfdec.c
+
+
+ stm32h7xx_hal_pcd.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pcd.c
+
+
+ stm32h7xx_hal_pcd_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pcd_ex.c
+
+
+ stm32h7xx_hal_pssi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pssi.c
+
+
+ stm32h7xx_hal_pwr.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr.c
+
+
+ stm32h7xx_hal_pwr_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_pwr_ex.c
+
+
+ stm32h7xx_hal_qspi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_qspi.c
+
+
+ stm32h7xx_hal_ramecc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_ramecc.c
+
+
+ stm32h7xx_hal_rcc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc.c
+
+
+ stm32h7xx_hal_rcc_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rcc_ex.c
+
+
+ stm32h7xx_hal_rng.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rng.c
+
+
+ stm32h7xx_hal_rng_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rng_ex.c
+
+
+ stm32h7xx_hal_rtc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rtc.c
+
+
+ stm32h7xx_hal_rtc_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_rtc_ex.c
+
+
+ stm32h7xx_hal_sai.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sai.c
+
+
+ stm32h7xx_hal_sai_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sai_ex.c
+
+
+ stm32h7xx_hal_sd.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sd.c
+
+
+ stm32h7xx_hal_sd_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sd_ex.c
+
+
+ stm32h7xx_hal_sdram.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sdram.c
+
+
+ stm32h7xx_hal_smartcard.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_smartcard.c
+
+
+ stm32h7xx_hal_smartcard_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_smartcard_ex.c
+
+
+ stm32h7xx_hal_smbus.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_smbus.c
+
+
+ stm32h7xx_hal_spdifrx.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_spdifrx.c
+
+
+ stm32h7xx_hal_spi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_spi.c
+
+
+ stm32h7xx_hal_spi_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_spi_ex.c
+
+
+ stm32h7xx_hal_sram.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_sram.c
+
+
+ stm32h7xx_hal_swpmi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_swpmi.c
+
+
+ stm32h7xx_hal_tim.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim.c
+
+
+ stm32h7xx_hal_tim_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_tim_ex.c
+
+
+ stm32h7xx_hal_uart.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart.c
+
+
+ stm32h7xx_hal_uart_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_uart_ex.c
+
+
+ stm32h7xx_hal_usart.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_usart.c
+
+
+ stm32h7xx_hal_usart_ex.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_usart_ex.c
+
+
+ stm32h7xx_hal_wwdg.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_wwdg.c
+
+
+ stm32h7xx_ll_adc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_adc.c
+
+
+ stm32h7xx_ll_bdma.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_bdma.c
+
+
+ stm32h7xx_ll_comp.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_comp.c
+
+
+ stm32h7xx_ll_crc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_crc.c
+
+
+ stm32h7xx_ll_crs.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_crs.c
+
+
+ stm32h7xx_ll_dac.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_dac.c
+
+
+ stm32h7xx_ll_delayblock.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_delayblock.c
+
+
+ stm32h7xx_ll_dma.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_dma.c
+
+
+ stm32h7xx_ll_dma2d.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_dma2d.c
+
+
+ stm32h7xx_ll_exti.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_exti.c
+
+
+ stm32h7xx_ll_fmc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_fmc.c
+
+
+ stm32h7xx_ll_gpio.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_gpio.c
+
+
+ stm32h7xx_ll_hrtim.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_hrtim.c
+
+
+ stm32h7xx_ll_i2c.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_i2c.c
+
+
+ stm32h7xx_ll_lptim.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_lptim.c
+
+
+ stm32h7xx_ll_lpuart.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_lpuart.c
+
+
+ stm32h7xx_ll_mdma.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_mdma.c
+
+
+ stm32h7xx_ll_opamp.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_opamp.c
+
+
+ stm32h7xx_ll_pwr.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_pwr.c
+
+
+ stm32h7xx_ll_rcc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_rcc.c
+
+
+ stm32h7xx_ll_rng.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_rng.c
+
+
+ stm32h7xx_ll_rtc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_rtc.c
+
+
+ stm32h7xx_ll_sdmmc.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_sdmmc.c
+
+
+ stm32h7xx_ll_spi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_spi.c
+
+
+ stm32h7xx_ll_swpmi.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_swpmi.c
+
+
+ stm32h7xx_ll_tim.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_tim.c
+
+
+ stm32h7xx_ll_usart.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_usart.c
+
+
+ stm32h7xx_ll_usb.c
+ 1
+ ..\..\ST_Code\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_ll_usb.c
+
+
+
+
+ Startup
+
+
+ memfault_handler.c
+ 1
+ .\memfault_handler.c
+
+
+ startup_stm32h743xx.s
+ 2
+ .\startup_stm32h743xx.s
+
+
+
+
+ ::CMSIS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/memfault_handler.c b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/memfault_handler.c
new file mode 100644
index 0000000000..6c14c6ff08
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/memfault_handler.c
@@ -0,0 +1,66 @@
+/*
+ * FreeRTOS V202212.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+#include
+
+extern uint32_t Image$$ER_IROM_FREERTOS_SYSTEM_CALLS$$Base;
+extern uint32_t Image$$ER_IROM_FREERTOS_SYSTEM_CALLS$$Limit;
+
+/* Memory map needed for MPU setup. Must must match the one defined in
+ * the scatter-loading file (FreeRTOSDemo.sct). */
+const uint32_t * __FLASH_segment_start__ = ( uint32_t * ) 0x08000000;
+const uint32_t * __FLASH_segment_end__ = ( uint32_t * ) 0x08200000;
+const uint32_t * __SRAM_segment_start__ = ( uint32_t * ) 0x20000000;
+const uint32_t * __SRAM_segment_end__ = ( uint32_t * ) 0x20020000;
+
+const uint32_t * __privileged_functions_start__ = ( uint32_t * ) 0x08000000;
+const uint32_t * __privileged_functions_end__ = ( uint32_t * ) 0x08008000;
+const uint32_t * __privileged_data_start__ = ( uint32_t * ) 0x20000000;
+const uint32_t * __privileged_data_end__ = ( uint32_t * ) 0x20008000;
+
+const uint32_t * __syscalls_flash_start__ = ( uint32_t * ) &( Image$$ER_IROM_FREERTOS_SYSTEM_CALLS$$Base );
+const uint32_t * __syscalls_flash_end__ = ( uint32_t * ) &( Image$$ER_IROM_FREERTOS_SYSTEM_CALLS$$Limit );
+/*-----------------------------------------------------------*/
+
+/**
+ * @brief Mem fault handler.
+ */
+void MemManage_Handler( void );
+/*-----------------------------------------------------------*/
+
+__asm void MemManage_Handler( void )
+{
+ extern vHandleMemoryFault;
+
+ PRESERVE8
+
+ tst lr, #4
+ ite eq
+ mrseq r0, msp
+ mrsne r0, psp
+ b vHandleMemoryFault
+}
+/*-----------------------------------------------------------*/
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/startup_stm32h743xx.s b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/startup_stm32h743xx.s
new file mode 100644
index 0000000000..266479eef3
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_MPU_M7_NUCLEO_H743ZI2_GCC_IAR_Keil/Projects/Keil_V5/startup_stm32h743xx.s
@@ -0,0 +1,611 @@
+;******************** (C) COPYRIGHT 2017 STMicroelectronics ********************
+;* File Name : startup_stm32h743xx.s
+;* @author MCD Application Team
+;* Description : STM32H7xx devices vector table for MDK-ARM toolchain.
+;* This module performs:
+;* - Set the initial SP
+;* - Set the initial PC == Reset_Handler
+;* - Set the vector table entries with the exceptions ISR address
+;* - Branches to __main in the C library (which eventually
+;* calls main()).
+;* After Reset the Cortex-M processor is in Thread mode,
+;* priority is Privileged, and the Stack is set to Main.
+;* <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;* @attention
+;*
+;* Copyright (c) 2017 STMicroelectronics.
+;* All rights reserved.
+;*
+;* This software component is licensed by ST under BSD 3-Clause license,
+;* the "License"; You may not use this file except in compliance with the
+;* License. You may obtain a copy of the License at:
+;* opensource.org/licenses/BSD-3-Clause
+;*
+;******************************************************************************
+
+; Amount of memory (in bytes) allocated for Stack
+; Tailor this value to your application needs
+; Stack Configuration
+; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Stack_Size EQU 0x400
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; Heap Configuration
+; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Heap_Size EQU 0x200
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD MemManage_Handler ; MPU Fault Handler
+ DCD BusFault_Handler ; Bus Fault Handler
+ DCD UsageFault_Handler ; Usage Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD DebugMon_Handler ; Debug Monitor Handler
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD WWDG_IRQHandler ; Window WatchDog interrupt ( wwdg1_it)
+ DCD PVD_AVD_IRQHandler ; PVD/AVD through EXTI Line detection
+ DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
+ DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
+ DCD FLASH_IRQHandler ; FLASH
+ DCD RCC_IRQHandler ; RCC
+ DCD EXTI0_IRQHandler ; EXTI Line0
+ DCD EXTI1_IRQHandler ; EXTI Line1
+ DCD EXTI2_IRQHandler ; EXTI Line2
+ DCD EXTI3_IRQHandler ; EXTI Line3
+ DCD EXTI4_IRQHandler ; EXTI Line4
+ DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0
+ DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1
+ DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2
+ DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3
+ DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4
+ DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5
+ DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6
+ DCD ADC_IRQHandler ; ADC1, ADC2
+ DCD FDCAN1_IT0_IRQHandler ; FDCAN1 interrupt line 0
+ DCD FDCAN2_IT0_IRQHandler ; FDCAN2 interrupt line 0
+ DCD FDCAN1_IT1_IRQHandler ; FDCAN1 interrupt line 1
+ DCD FDCAN2_IT1_IRQHandler ; FDCAN2 interrupt line 1
+ DCD EXTI9_5_IRQHandler ; External Line[9:5]s
+ DCD TIM1_BRK_IRQHandler ; TIM1 Break interrupt
+ DCD TIM1_UP_IRQHandler ; TIM1 Update Interrupt
+ DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation Interrupt
+ DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
+ DCD TIM2_IRQHandler ; TIM2
+ DCD TIM3_IRQHandler ; TIM3
+ DCD TIM4_IRQHandler ; TIM4
+ DCD I2C1_EV_IRQHandler ; I2C1 Event
+ DCD I2C1_ER_IRQHandler ; I2C1 Error
+ DCD I2C2_EV_IRQHandler ; I2C2 Event
+ DCD I2C2_ER_IRQHandler ; I2C2 Error
+ DCD SPI1_IRQHandler ; SPI1
+ DCD SPI2_IRQHandler ; SPI2
+ DCD USART1_IRQHandler ; USART1
+ DCD USART2_IRQHandler ; USART2
+ DCD USART3_IRQHandler ; USART3
+ DCD EXTI15_10_IRQHandler ; External Line[15:10]
+ DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
+ DCD 0 ; Reserved
+ DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break Interrupt and TIM12 global interrupt
+ DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update Interrupt and TIM13 global interrupt
+ DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt
+ DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare Interrupt
+ DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7
+ DCD FMC_IRQHandler ; FMC
+ DCD SDMMC1_IRQHandler ; SDMMC1
+ DCD TIM5_IRQHandler ; TIM5
+ DCD SPI3_IRQHandler ; SPI3
+ DCD UART4_IRQHandler ; UART4
+ DCD UART5_IRQHandler ; UART5
+ DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
+ DCD TIM7_IRQHandler ; TIM7
+ DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0
+ DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1
+ DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2
+ DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3
+ DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4
+ DCD ETH_IRQHandler ; Ethernet
+ DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line
+ DCD FDCAN_CAL_IRQHandler ; FDCAN calibration unit interrupt
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5
+ DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6
+ DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7
+ DCD USART6_IRQHandler ; USART6
+ DCD I2C3_EV_IRQHandler ; I2C3 event
+ DCD I2C3_ER_IRQHandler ; I2C3 error
+ DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out
+ DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In
+ DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI
+ DCD OTG_HS_IRQHandler ; USB OTG HS
+ DCD DCMI_IRQHandler ; DCMI
+ DCD 0 ; Reserved
+ DCD RNG_IRQHandler ; Rng
+ DCD FPU_IRQHandler ; FPU
+ DCD UART7_IRQHandler ; UART7
+ DCD UART8_IRQHandler ; UART8
+ DCD SPI4_IRQHandler ; SPI4
+ DCD SPI5_IRQHandler ; SPI5
+ DCD SPI6_IRQHandler ; SPI6
+ DCD SAI1_IRQHandler ; SAI1
+ DCD LTDC_IRQHandler ; LTDC
+ DCD LTDC_ER_IRQHandler ; LTDC error
+ DCD DMA2D_IRQHandler ; DMA2D
+ DCD SAI2_IRQHandler ; SAI2
+ DCD QUADSPI_IRQHandler ; QUADSPI
+ DCD LPTIM1_IRQHandler ; LPTIM1
+ DCD CEC_IRQHandler ; HDMI_CEC
+ DCD I2C4_EV_IRQHandler ; I2C4 Event
+ DCD I2C4_ER_IRQHandler ; I2C4 Error
+ DCD SPDIF_RX_IRQHandler ; SPDIF_RX
+ DCD OTG_FS_EP1_OUT_IRQHandler ; USB OTG FS End Point 1 Out
+ DCD OTG_FS_EP1_IN_IRQHandler ; USB OTG FS End Point 1 In
+ DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI
+ DCD OTG_FS_IRQHandler ; USB OTG FS
+ DCD DMAMUX1_OVR_IRQHandler ; DMAMUX1 Overrun interrupt
+ DCD HRTIM1_Master_IRQHandler ; HRTIM Master Timer global Interrupts
+ DCD HRTIM1_TIMA_IRQHandler ; HRTIM Timer A global Interrupt
+ DCD HRTIM1_TIMB_IRQHandler ; HRTIM Timer B global Interrupt
+ DCD HRTIM1_TIMC_IRQHandler ; HRTIM Timer C global Interrupt
+ DCD HRTIM1_TIMD_IRQHandler ; HRTIM Timer D global Interrupt
+ DCD HRTIM1_TIME_IRQHandler ; HRTIM Timer E global Interrupt
+ DCD HRTIM1_FLT_IRQHandler ; HRTIM Fault global Interrupt
+ DCD DFSDM1_FLT0_IRQHandler ; DFSDM Filter0 Interrupt
+ DCD DFSDM1_FLT1_IRQHandler ; DFSDM Filter1 Interrupt
+ DCD DFSDM1_FLT2_IRQHandler ; DFSDM Filter2 Interrupt
+ DCD DFSDM1_FLT3_IRQHandler ; DFSDM Filter3 Interrupt
+ DCD SAI3_IRQHandler ; SAI3 global Interrupt
+ DCD SWPMI1_IRQHandler ; Serial Wire Interface 1 global interrupt
+ DCD TIM15_IRQHandler ; TIM15 global Interrupt
+ DCD TIM16_IRQHandler ; TIM16 global Interrupt
+ DCD TIM17_IRQHandler ; TIM17 global Interrupt
+ DCD MDIOS_WKUP_IRQHandler ; MDIOS Wakeup Interrupt
+ DCD MDIOS_IRQHandler ; MDIOS global Interrupt
+ DCD JPEG_IRQHandler ; JPEG global Interrupt
+ DCD MDMA_IRQHandler ; MDMA global Interrupt
+ DCD 0 ; Reserved
+ DCD SDMMC2_IRQHandler ; SDMMC2 global Interrupt
+ DCD HSEM1_IRQHandler ; HSEM1 global Interrupt
+ DCD 0 ; Reserved
+ DCD ADC3_IRQHandler ; ADC3 global Interrupt
+ DCD DMAMUX2_OVR_IRQHandler ; DMAMUX Overrun interrupt
+ DCD BDMA_Channel0_IRQHandler ; BDMA Channel 0 global Interrupt
+ DCD BDMA_Channel1_IRQHandler ; BDMA Channel 1 global Interrupt
+ DCD BDMA_Channel2_IRQHandler ; BDMA Channel 2 global Interrupt
+ DCD BDMA_Channel3_IRQHandler ; BDMA Channel 3 global Interrupt
+ DCD BDMA_Channel4_IRQHandler ; BDMA Channel 4 global Interrupt
+ DCD BDMA_Channel5_IRQHandler ; BDMA Channel 5 global Interrupt
+ DCD BDMA_Channel6_IRQHandler ; BDMA Channel 6 global Interrupt
+ DCD BDMA_Channel7_IRQHandler ; BDMA Channel 7 global Interrupt
+ DCD COMP1_IRQHandler ; COMP1 global Interrupt
+ DCD LPTIM2_IRQHandler ; LP TIM2 global interrupt
+ DCD LPTIM3_IRQHandler ; LP TIM3 global interrupt
+ DCD LPTIM4_IRQHandler ; LP TIM4 global interrupt
+ DCD LPTIM5_IRQHandler ; LP TIM5 global interrupt
+ DCD LPUART1_IRQHandler ; LP UART1 interrupt
+ DCD 0 ; Reserved
+ DCD CRS_IRQHandler ; Clock Recovery Global Interrupt
+ DCD ECC_IRQHandler ; ECC diagnostic Global Interrupt
+ DCD SAI4_IRQHandler ; SAI4 global interrupt
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD WAKEUP_PIN_IRQHandler ; Interrupt for all 6 wake-up pins
+
+
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+; Reset handler
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WWDG_IRQHandler [WEAK]
+ EXPORT PVD_AVD_IRQHandler [WEAK]
+ EXPORT TAMP_STAMP_IRQHandler [WEAK]
+ EXPORT RTC_WKUP_IRQHandler [WEAK]
+ EXPORT FLASH_IRQHandler [WEAK]
+ EXPORT RCC_IRQHandler [WEAK]
+ EXPORT EXTI0_IRQHandler [WEAK]
+ EXPORT EXTI1_IRQHandler [WEAK]
+ EXPORT EXTI2_IRQHandler [WEAK]
+ EXPORT EXTI3_IRQHandler [WEAK]
+ EXPORT EXTI4_IRQHandler [WEAK]
+ EXPORT DMA1_Stream0_IRQHandler [WEAK]
+ EXPORT DMA1_Stream1_IRQHandler [WEAK]
+ EXPORT DMA1_Stream2_IRQHandler [WEAK]
+ EXPORT DMA1_Stream3_IRQHandler [WEAK]
+ EXPORT DMA1_Stream4_IRQHandler [WEAK]
+ EXPORT DMA1_Stream5_IRQHandler [WEAK]
+ EXPORT DMA1_Stream6_IRQHandler [WEAK]
+ EXPORT DMA1_Stream7_IRQHandler [WEAK]
+ EXPORT ADC_IRQHandler [WEAK]
+ EXPORT FDCAN1_IT0_IRQHandler [WEAK]
+ EXPORT FDCAN2_IT0_IRQHandler [WEAK]
+ EXPORT FDCAN1_IT1_IRQHandler [WEAK]
+ EXPORT FDCAN2_IT1_IRQHandler [WEAK]
+ EXPORT EXTI9_5_IRQHandler [WEAK]
+ EXPORT TIM1_BRK_IRQHandler [WEAK]
+ EXPORT TIM1_UP_IRQHandler [WEAK]
+ EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
+ EXPORT TIM1_CC_IRQHandler [WEAK]
+ EXPORT TIM2_IRQHandler [WEAK]
+ EXPORT TIM3_IRQHandler [WEAK]
+ EXPORT TIM4_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+ EXPORT I2C2_EV_IRQHandler [WEAK]
+ EXPORT I2C2_ER_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT USART2_IRQHandler [WEAK]
+ EXPORT USART3_IRQHandler [WEAK]
+ EXPORT EXTI15_10_IRQHandler [WEAK]
+ EXPORT RTC_Alarm_IRQHandler [WEAK]
+ EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK]
+ EXPORT TIM8_UP_TIM13_IRQHandler [WEAK]
+ EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK]
+ EXPORT TIM8_CC_IRQHandler [WEAK]
+ EXPORT DMA1_Stream7_IRQHandler [WEAK]
+ EXPORT FMC_IRQHandler [WEAK]
+ EXPORT SDMMC1_IRQHandler [WEAK]
+ EXPORT TIM5_IRQHandler [WEAK]
+ EXPORT SPI3_IRQHandler [WEAK]
+ EXPORT UART4_IRQHandler [WEAK]
+ EXPORT UART5_IRQHandler [WEAK]
+ EXPORT TIM6_DAC_IRQHandler [WEAK]
+ EXPORT TIM7_IRQHandler [WEAK]
+ EXPORT DMA2_Stream0_IRQHandler [WEAK]
+ EXPORT DMA2_Stream1_IRQHandler [WEAK]
+ EXPORT DMA2_Stream2_IRQHandler [WEAK]
+ EXPORT DMA2_Stream3_IRQHandler [WEAK]
+ EXPORT DMA2_Stream4_IRQHandler [WEAK]
+ EXPORT ETH_IRQHandler [WEAK]
+ EXPORT ETH_WKUP_IRQHandler [WEAK]
+ EXPORT FDCAN_CAL_IRQHandler [WEAK]
+ EXPORT DMA2_Stream5_IRQHandler [WEAK]
+ EXPORT DMA2_Stream6_IRQHandler [WEAK]
+ EXPORT DMA2_Stream7_IRQHandler [WEAK]
+ EXPORT USART6_IRQHandler [WEAK]
+ EXPORT I2C3_EV_IRQHandler [WEAK]
+ EXPORT I2C3_ER_IRQHandler [WEAK]
+ EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK]
+ EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK]
+ EXPORT OTG_HS_WKUP_IRQHandler [WEAK]
+ EXPORT OTG_HS_IRQHandler [WEAK]
+ EXPORT DCMI_IRQHandler [WEAK]
+ EXPORT RNG_IRQHandler [WEAK]
+ EXPORT FPU_IRQHandler [WEAK]
+ EXPORT UART7_IRQHandler [WEAK]
+ EXPORT UART8_IRQHandler [WEAK]
+ EXPORT SPI4_IRQHandler [WEAK]
+ EXPORT SPI5_IRQHandler [WEAK]
+ EXPORT SPI6_IRQHandler [WEAK]
+ EXPORT SAI1_IRQHandler [WEAK]
+ EXPORT LTDC_IRQHandler [WEAK]
+ EXPORT LTDC_ER_IRQHandler [WEAK]
+ EXPORT DMA2D_IRQHandler [WEAK]
+ EXPORT SAI2_IRQHandler [WEAK]
+ EXPORT QUADSPI_IRQHandler [WEAK]
+ EXPORT LPTIM1_IRQHandler [WEAK]
+ EXPORT CEC_IRQHandler [WEAK]
+ EXPORT I2C4_EV_IRQHandler [WEAK]
+ EXPORT I2C4_ER_IRQHandler [WEAK]
+ EXPORT SPDIF_RX_IRQHandler [WEAK]
+ EXPORT OTG_FS_EP1_OUT_IRQHandler [WEAK]
+ EXPORT OTG_FS_EP1_IN_IRQHandler [WEAK]
+ EXPORT OTG_FS_WKUP_IRQHandler [WEAK]
+ EXPORT OTG_FS_IRQHandler [WEAK]
+ EXPORT DMAMUX1_OVR_IRQHandler [WEAK]
+ EXPORT HRTIM1_Master_IRQHandler [WEAK]
+ EXPORT HRTIM1_TIMA_IRQHandler [WEAK]
+ EXPORT HRTIM1_TIMB_IRQHandler [WEAK]
+ EXPORT HRTIM1_TIMC_IRQHandler [WEAK]
+ EXPORT HRTIM1_TIMD_IRQHandler [WEAK]
+ EXPORT HRTIM1_TIME_IRQHandler [WEAK]
+ EXPORT HRTIM1_FLT_IRQHandler [WEAK]
+ EXPORT DFSDM1_FLT0_IRQHandler [WEAK]
+ EXPORT DFSDM1_FLT1_IRQHandler [WEAK]
+ EXPORT DFSDM1_FLT2_IRQHandler [WEAK]
+ EXPORT DFSDM1_FLT3_IRQHandler [WEAK]
+ EXPORT SAI3_IRQHandler [WEAK]
+ EXPORT SWPMI1_IRQHandler [WEAK]
+ EXPORT TIM15_IRQHandler [WEAK]
+ EXPORT TIM16_IRQHandler [WEAK]
+ EXPORT TIM17_IRQHandler [WEAK]
+ EXPORT MDIOS_WKUP_IRQHandler [WEAK]
+ EXPORT MDIOS_IRQHandler [WEAK]
+ EXPORT JPEG_IRQHandler [WEAK]
+ EXPORT MDMA_IRQHandler [WEAK]
+ EXPORT SDMMC2_IRQHandler [WEAK]
+ EXPORT HSEM1_IRQHandler [WEAK]
+ EXPORT ADC3_IRQHandler [WEAK]
+ EXPORT DMAMUX2_OVR_IRQHandler [WEAK]
+ EXPORT BDMA_Channel0_IRQHandler [WEAK]
+ EXPORT BDMA_Channel1_IRQHandler [WEAK]
+ EXPORT BDMA_Channel2_IRQHandler [WEAK]
+ EXPORT BDMA_Channel3_IRQHandler [WEAK]
+ EXPORT BDMA_Channel4_IRQHandler [WEAK]
+ EXPORT BDMA_Channel5_IRQHandler [WEAK]
+ EXPORT BDMA_Channel6_IRQHandler [WEAK]
+ EXPORT BDMA_Channel7_IRQHandler [WEAK]
+ EXPORT COMP1_IRQHandler [WEAK]
+ EXPORT LPTIM2_IRQHandler [WEAK]
+ EXPORT LPTIM3_IRQHandler [WEAK]
+ EXPORT LPTIM4_IRQHandler [WEAK]
+ EXPORT LPTIM5_IRQHandler [WEAK]
+ EXPORT LPUART1_IRQHandler [WEAK]
+ EXPORT CRS_IRQHandler [WEAK]
+ EXPORT ECC_IRQHandler [WEAK]
+ EXPORT SAI4_IRQHandler [WEAK]
+ EXPORT WAKEUP_PIN_IRQHandler [WEAK]
+
+
+WWDG_IRQHandler
+PVD_AVD_IRQHandler
+TAMP_STAMP_IRQHandler
+RTC_WKUP_IRQHandler
+FLASH_IRQHandler
+RCC_IRQHandler
+EXTI0_IRQHandler
+EXTI1_IRQHandler
+EXTI2_IRQHandler
+EXTI3_IRQHandler
+EXTI4_IRQHandler
+DMA1_Stream0_IRQHandler
+DMA1_Stream1_IRQHandler
+DMA1_Stream2_IRQHandler
+DMA1_Stream3_IRQHandler
+DMA1_Stream4_IRQHandler
+DMA1_Stream5_IRQHandler
+DMA1_Stream6_IRQHandler
+ADC_IRQHandler
+FDCAN1_IT0_IRQHandler
+FDCAN2_IT0_IRQHandler
+FDCAN1_IT1_IRQHandler
+FDCAN2_IT1_IRQHandler
+EXTI9_5_IRQHandler
+TIM1_BRK_IRQHandler
+TIM1_UP_IRQHandler
+TIM1_TRG_COM_IRQHandler
+TIM1_CC_IRQHandler
+TIM2_IRQHandler
+TIM3_IRQHandler
+TIM4_IRQHandler
+I2C1_EV_IRQHandler
+I2C1_ER_IRQHandler
+I2C2_EV_IRQHandler
+I2C2_ER_IRQHandler
+SPI1_IRQHandler
+SPI2_IRQHandler
+USART1_IRQHandler
+USART2_IRQHandler
+USART3_IRQHandler
+EXTI15_10_IRQHandler
+RTC_Alarm_IRQHandler
+TIM8_BRK_TIM12_IRQHandler
+TIM8_UP_TIM13_IRQHandler
+TIM8_TRG_COM_TIM14_IRQHandler
+TIM8_CC_IRQHandler
+DMA1_Stream7_IRQHandler
+FMC_IRQHandler
+SDMMC1_IRQHandler
+TIM5_IRQHandler
+SPI3_IRQHandler
+UART4_IRQHandler
+UART5_IRQHandler
+TIM6_DAC_IRQHandler
+TIM7_IRQHandler
+DMA2_Stream0_IRQHandler
+DMA2_Stream1_IRQHandler
+DMA2_Stream2_IRQHandler
+DMA2_Stream3_IRQHandler
+DMA2_Stream4_IRQHandler
+ETH_IRQHandler
+ETH_WKUP_IRQHandler
+FDCAN_CAL_IRQHandler
+DMA2_Stream5_IRQHandler
+DMA2_Stream6_IRQHandler
+DMA2_Stream7_IRQHandler
+USART6_IRQHandler
+I2C3_EV_IRQHandler
+I2C3_ER_IRQHandler
+OTG_HS_EP1_OUT_IRQHandler
+OTG_HS_EP1_IN_IRQHandler
+OTG_HS_WKUP_IRQHandler
+OTG_HS_IRQHandler
+DCMI_IRQHandler
+RNG_IRQHandler
+FPU_IRQHandler
+UART7_IRQHandler
+UART8_IRQHandler
+SPI4_IRQHandler
+SPI5_IRQHandler
+SPI6_IRQHandler
+SAI1_IRQHandler
+LTDC_IRQHandler
+LTDC_ER_IRQHandler
+DMA2D_IRQHandler
+SAI2_IRQHandler
+QUADSPI_IRQHandler
+LPTIM1_IRQHandler
+CEC_IRQHandler
+I2C4_EV_IRQHandler
+I2C4_ER_IRQHandler
+SPDIF_RX_IRQHandler
+OTG_FS_EP1_OUT_IRQHandler
+OTG_FS_EP1_IN_IRQHandler
+OTG_FS_WKUP_IRQHandler
+OTG_FS_IRQHandler
+DMAMUX1_OVR_IRQHandler
+HRTIM1_Master_IRQHandler
+HRTIM1_TIMA_IRQHandler
+HRTIM1_TIMB_IRQHandler
+HRTIM1_TIMC_IRQHandler
+HRTIM1_TIMD_IRQHandler
+HRTIM1_TIME_IRQHandler
+HRTIM1_FLT_IRQHandler
+DFSDM1_FLT0_IRQHandler
+DFSDM1_FLT1_IRQHandler
+DFSDM1_FLT2_IRQHandler
+DFSDM1_FLT3_IRQHandler
+SAI3_IRQHandler
+SWPMI1_IRQHandler
+TIM15_IRQHandler
+TIM16_IRQHandler
+TIM17_IRQHandler
+MDIOS_WKUP_IRQHandler
+MDIOS_IRQHandler
+JPEG_IRQHandler
+MDMA_IRQHandler
+SDMMC2_IRQHandler
+HSEM1_IRQHandler
+ADC3_IRQHandler
+DMAMUX2_OVR_IRQHandler
+BDMA_Channel0_IRQHandler
+BDMA_Channel1_IRQHandler
+BDMA_Channel2_IRQHandler
+BDMA_Channel3_IRQHandler
+BDMA_Channel4_IRQHandler
+BDMA_Channel5_IRQHandler
+BDMA_Channel6_IRQHandler
+BDMA_Channel7_IRQHandler
+COMP1_IRQHandler
+LPTIM2_IRQHandler
+LPTIM3_IRQHandler
+LPTIM4_IRQHandler
+LPTIM5_IRQHandler
+LPUART1_IRQHandler
+CRS_IRQHandler
+ECC_IRQHandler
+SAI4_IRQHandler
+WAKEUP_PIN_IRQHandler
+
+ B .
+
+ ENDP
+
+ ALIGN
+
+;*******************************************************************************
+; User Stack and Heap initialization
+;*******************************************************************************
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+ END
+
+;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
diff --git a/lexicon.txt b/lexicon.txt
index f3574d5432..fe87f51d0e 100644
--- a/lexicon.txt
+++ b/lexicon.txt
@@ -64,6 +64,7 @@ ascii
asf
asm
asn
+aspr
ast
async
atmega
@@ -818,6 +819,7 @@ fpga
fpidiv
fprintf
fpu
+fpscr
fr
framming
france
@@ -1235,6 +1237,7 @@ lsb
lserialputstring
lsize
lsl
+lsls
lsr
lstringlength
ltd
@@ -3130,6 +3133,7 @@ vbuttonisrhandler
vcellularconnecttask
vcellulardemotask
vclearemactxbuffer
+vcmp
vconfiguretimerforruntimestats
vcore
vcreatesuicidaltask
@@ -3183,6 +3187,7 @@ vmaindeleteme
vmainpoststopprocessing
vmemchecktask
vmov
+vmrs
vodafone
votademotask
vpartestinitialise