Add instructions on building the Cortex-M33 secure and non secure projects into the comments of that project and into a readme.txt file.

Enable configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES setting to be used in statically allocated systems.
This commit is contained in:
Richard Barry 2019-02-20 17:55:59 +00:00
parent ceeff14524
commit 8b6ab5f197
15 changed files with 144 additions and 55 deletions

View file

@ -65,6 +65,38 @@ const uint32_t * __unprivileged_sram_end__ = ( uint32_t * ) ( 0x20220000 - 0x1
static void prvCreateTasks( void ); static void prvCreateTasks( void );
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/*
Instructions to Build and Run:
- The Keil multi-project workspace FreeRTOSDemo.uvmpw contains projects for
both the secure project, and non secure project.
- Set the FreeRTOSDemo_s project as Active - Right click on
"Project: FreeRTOSDemo_s" and select "Set as Active Project".
- Build the FreeRTOSDemo_s project using "Project --> Build" or by pressing
F7.
- Set the FreeRTOSDemo_ns project as Active Right click on
"Project: FreeRTOSDemo_ns" and select "Set as Active Project".
- Build the FreeRTOSDemo_ns project using "Project --> Build" or by
pressing "F7".
- Start Debug Session using "Debug -> Start/Stop Debug Session" or by
pressing "Ctrl+F5".
*/
/* Non-Secure main. */
int main( void )
{
/* Create tasks. */
prvCreateTasks();
/* Start scheduler. */
vTaskStartScheduler();
/* Should not reach here as the scheduler is already started. */
for( ; ; )
{
}
}
/*-----------------------------------------------------------*/
static void prvCreateTasks( void ) static void prvCreateTasks( void )
{ {
/* Create tasks for the MPU Demo. */ /* Create tasks for the MPU Demo. */
@ -84,22 +116,6 @@ void vApplicationStackOverflowHook( TaskHandle_t xTask, signed char *pcTaskName
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* Non-Secure main. */
int main( void )
{
/* Create tasks. */
prvCreateTasks();
/* Start scheduler. */
vTaskStartScheduler();
/* Should not reach here as the schedular is already started. */
for( ; ; )
{
}
}
/*-----------------------------------------------------------*/
/* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an /* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an
* implementation of vApplicationGetIdleTaskMemory() to provide the memory that * implementation of vApplicationGetIdleTaskMemory() to provide the memory that
* is used by the Idle task. */ * is used by the Idle task. */

View file

@ -0,0 +1,8 @@
Instructions to Build and Run:
- The Keil multi-project workspace FreeRTOSDemo.uvmpw contains projects for both the secure project, and non secure project.
- Set the FreeRTOSDemo_s project as Active - Right click on "Project: FreeRTOSDemo_s" and select "Set as Active Project".
- Build the FreeRTOSDemo_s project using "Project --> Build" or by pressing F7.
- Set the FreeRTOSDemo_ns project as Active Right click on "Project: FreeRTOSDemo_ns" and select "Set as Active Project".
- Build the FreeRTOSDemo_ns project using "Project --> Build" or by pressing "F7".
- Start Debug Session using "Debug -> Start/Stop Debug Session" or by pressing "Ctrl+F5".

View file

@ -44,6 +44,36 @@ typedef void ( *NonSecureResetHandler_t ) ( void ) __attribute__( ( cmse_nonsecu
void BootNonSecure( uint32_t ulNonSecureStartAddress ); void BootNonSecure( uint32_t ulNonSecureStartAddress );
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/*
Instructions to Build and Run:
- The Keil multi-project workspace FreeRTOSDemo.uvmpw contains projects for
both the secure project, and non secure project.
- Set the FreeRTOSDemo_s project as Active - Right click on
"Project: FreeRTOSDemo_s" and select "Set as Active Project".
- Build the FreeRTOSDemo_s project using "Project --> Build" or by pressing
F7.
- Set the FreeRTOSDemo_ns project as Active Right click on
"Project: FreeRTOSDemo_ns" and select "Set as Active Project".
- Build the FreeRTOSDemo_ns project using "Project --> Build" or by
pressing "F7".
- Start Debug Session using "Debug -> Start/Stop Debug Session" or by
pressing "Ctrl+F5".
*/
/* Secure main() */
int main( void )
{
/* Boot the non-secure code. */
BootNonSecure( mainNONSECURE_APP_START_ADDRESS );
/* Non-secure software does not return, this code is not executed. */
for( ; ; )
{
/* Should not reach here. */
}
}
/*-----------------------------------------------------------*/
void BootNonSecure( uint32_t ulNonSecureStartAddress ) void BootNonSecure( uint32_t ulNonSecureStartAddress )
{ {
NonSecureResetHandler_t pxNonSecureResetHandler; NonSecureResetHandler_t pxNonSecureResetHandler;
@ -64,16 +94,3 @@ void BootNonSecure( uint32_t ulNonSecureStartAddress )
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* Secure main() */
int main( void )
{
/* Boot the non-secure code. */
BootNonSecure( mainNONSECURE_APP_START_ADDRESS );
/* Non-secure software does not return, this code is not executed. */
for( ; ; )
{
/* Should not reach here. */
}
}
/*-----------------------------------------------------------*/

View file

@ -47,7 +47,7 @@
#define configUSE_DAEMON_TASK_STARTUP_HOOK 1 #define configUSE_DAEMON_TASK_STARTUP_HOOK 1
#define configTICK_RATE_HZ ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */ #define configTICK_RATE_HZ ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */ #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 45 * 1024 ) ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 52 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 12 ) #define configMAX_TASK_NAME_LEN ( 12 )
#define configUSE_TRACE_FACILITY 1 #define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0

View file

@ -75,9 +75,9 @@ that make up the total heap. heap_5 is only used for test and example purposes
as this demo could easily create one large heap region instead of multiple as this demo could easily create one large heap region instead of multiple
smaller heap regions - in which case heap_4.c would be the more appropriate smaller heap regions - in which case heap_4.c would be the more appropriate
choice. See http://www.freertos.org/a00111.html for an explanation. */ choice. See http://www.freertos.org/a00111.html for an explanation. */
#define mainREGION_1_SIZE 7201 #define mainREGION_1_SIZE 8201
#define mainREGION_2_SIZE 29905 #define mainREGION_2_SIZE 29905
#define mainREGION_3_SIZE 6407 #define mainREGION_3_SIZE 7607
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -1039,25 +1039,40 @@ the Secure Side only. */
*/ */
struct xSTATIC_LIST_ITEM struct xSTATIC_LIST_ITEM
{ {
#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
TickType_t xDummy1; TickType_t xDummy1;
void *pvDummy2[ 4 ]; #endif
TickType_t xDummy2;
void *pvDummy3[ 4 ];
#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
TickType_t xDummy4;
#endif
}; };
typedef struct xSTATIC_LIST_ITEM StaticListItem_t; typedef struct xSTATIC_LIST_ITEM StaticListItem_t;
/* See the comments above the struct xSTATIC_LIST_ITEM definition. */ /* See the comments above the struct xSTATIC_LIST_ITEM definition. */
struct xSTATIC_MINI_LIST_ITEM struct xSTATIC_MINI_LIST_ITEM
{ {
#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
TickType_t xDummy1; TickType_t xDummy1;
void *pvDummy2[ 2 ]; #endif
TickType_t xDummy2;
void *pvDummy3[ 2 ];
}; };
typedef struct xSTATIC_MINI_LIST_ITEM StaticMiniListItem_t; typedef struct xSTATIC_MINI_LIST_ITEM StaticMiniListItem_t;
/* See the comments above the struct xSTATIC_LIST_ITEM definition. */ /* See the comments above the struct xSTATIC_LIST_ITEM definition. */
typedef struct xSTATIC_LIST typedef struct xSTATIC_LIST
{ {
UBaseType_t uxDummy1; #if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
void *pvDummy2; TickType_t xDummy1;
StaticMiniListItem_t xDummy3; #endif
UBaseType_t uxDummy2;
void *pvDummy3;
StaticMiniListItem_t xDummy4;
#if( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
TickType_t xDummy5;
#endif
} StaticList_t; } StaticList_t;
/* /*

View file

@ -0,0 +1,10 @@
This directory tree contains the master copy of the FreeeRTOS Cortex-M33 port.
Do not use the files located here! These file are copied into separate
FreeRTOS/Source/portable/[compiler]/ARM_CM33_NNN directories prior to each
FreeRTOS release.
If your Cortex-M33 application uses TrustZone then use the files from the
FreeRTOS/Source/portable/[compiler]/ARM_CM33 directories.
If you Cortex-M33 application is not going to use TrustZone then use the files
from the FreeRTOS/Source/portable/[compiler]/ARM_CM33_NTZ directories.

View file

@ -0,0 +1,10 @@
This directory tree contains the master copy of the FreeeRTOS Cortex-M33 port.
Do not use the files located here! These file are copied into separate
FreeRTOS/Source/portable/[compiler]/ARM_CM33_NNN directories prior to each
FreeRTOS release.
If your Cortex-M33 application uses TrustZone then use the files from the
FreeRTOS/Source/portable/[compiler]/ARM_CM33 directories.
If you Cortex-M33 application is not going to use TrustZone then use the files
from the FreeRTOS/Source/portable/[compiler]/ARM_CM33_NTZ directories.

View file

@ -43,16 +43,17 @@ extern "C" {
*/ */
#ifndef configENABLE_FPU #ifndef configENABLE_FPU
#error configENABLE_FPU must be defined in FreeRTOSConfig.h. #error configENABLE_FPU must be defined in FreeRTOSConfig.h. Set configENABLE_FPU to 1 to enable the FPU or 0 to disable the FPU.
#endif /* configENABLE_FPU */ #endif /* configENABLE_FPU */
#ifndef configENABLE_MPU #ifndef configENABLE_MPU
#error configENABLE_MPU must be defined in FreeRTOSConfig.h. #error configENABLE_MPU must be defined in FreeRTOSConfig.h. Set configENABLE_MPU to 1 to enable the MPU or 0 to disable the MPU.
#endif /* configENABLE_MPU */ #endif /* configENABLE_MPU */
#ifndef configENABLE_TRUSTZONE #ifndef configENABLE_TRUSTZONE
#error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. #error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. Set configENABLE_TRUSTZONE to 1 to enable TrustZone or 0 to disable TrustZone.
#endif /* configENABLE_TRUSTZONE */ #endif /* configENABLE_TRUSTZONE */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/** /**

View file

@ -0,0 +1,10 @@
This directory tree contains the master copy of the FreeeRTOS Cortex-M33 port.
Do not use the files located here! These file are copied into separate
FreeRTOS/Source/portable/[compiler]/ARM_CM33_NNN directories prior to each
FreeRTOS release.
If your Cortex-M33 application uses TrustZone then use the files from the
FreeRTOS/Source/portable/[compiler]/ARM_CM33 directories.
If you Cortex-M33 application is not going to use TrustZone then use the files
from the FreeRTOS/Source/portable/[compiler]/ARM_CM33_NTZ directories.

View file

@ -43,16 +43,17 @@ extern "C" {
*/ */
#ifndef configENABLE_FPU #ifndef configENABLE_FPU
#error configENABLE_FPU must be defined in FreeRTOSConfig.h. #error configENABLE_FPU must be defined in FreeRTOSConfig.h. Set configENABLE_FPU to 1 to enable the FPU or 0 to disable the FPU.
#endif /* configENABLE_FPU */ #endif /* configENABLE_FPU */
#ifndef configENABLE_MPU #ifndef configENABLE_MPU
#error configENABLE_MPU must be defined in FreeRTOSConfig.h. #error configENABLE_MPU must be defined in FreeRTOSConfig.h. Set configENABLE_MPU to 1 to enable the MPU or 0 to disable the MPU.
#endif /* configENABLE_MPU */ #endif /* configENABLE_MPU */
#ifndef configENABLE_TRUSTZONE #ifndef configENABLE_TRUSTZONE
#error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. #error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. Set configENABLE_TRUSTZONE to 1 to enable TrustZone or 0 to disable TrustZone.
#endif /* configENABLE_TRUSTZONE */ #endif /* configENABLE_TRUSTZONE */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/** /**

View file

@ -43,16 +43,17 @@ extern "C" {
*/ */
#ifndef configENABLE_FPU #ifndef configENABLE_FPU
#error configENABLE_FPU must be defined in FreeRTOSConfig.h. #error configENABLE_FPU must be defined in FreeRTOSConfig.h. Set configENABLE_FPU to 1 to enable the FPU or 0 to disable the FPU.
#endif /* configENABLE_FPU */ #endif /* configENABLE_FPU */
#ifndef configENABLE_MPU #ifndef configENABLE_MPU
#error configENABLE_MPU must be defined in FreeRTOSConfig.h. #error configENABLE_MPU must be defined in FreeRTOSConfig.h. Set configENABLE_MPU to 1 to enable the MPU or 0 to disable the MPU.
#endif /* configENABLE_MPU */ #endif /* configENABLE_MPU */
#ifndef configENABLE_TRUSTZONE #ifndef configENABLE_TRUSTZONE
#error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. #error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. Set configENABLE_TRUSTZONE to 1 to enable TrustZone or 0 to disable TrustZone.
#endif /* configENABLE_TRUSTZONE */ #endif /* configENABLE_TRUSTZONE */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/** /**

View file

@ -43,15 +43,15 @@ extern "C" {
*/ */
#ifndef configENABLE_FPU #ifndef configENABLE_FPU
#error configENABLE_FPU must be defined in FreeRTOSConfig.h. #error configENABLE_FPU must be defined in FreeRTOSConfig.h. Set configENABLE_FPU to 1 to enable the FPU or 0 to disable the FPU.
#endif /* configENABLE_FPU */ #endif /* configENABLE_FPU */
#ifndef configENABLE_MPU #ifndef configENABLE_MPU
#error configENABLE_MPU must be defined in FreeRTOSConfig.h. #error configENABLE_MPU must be defined in FreeRTOSConfig.h. Set configENABLE_MPU to 1 to enable the MPU or 0 to disable the MPU.
#endif /* configENABLE_MPU */ #endif /* configENABLE_MPU */
#ifndef configENABLE_TRUSTZONE #ifndef configENABLE_TRUSTZONE
#error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. #error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. Set configENABLE_TRUSTZONE to 1 to enable TrustZone or 0 to disable TrustZone.
#endif /* configENABLE_TRUSTZONE */ #endif /* configENABLE_TRUSTZONE */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -43,15 +43,15 @@ extern "C" {
*/ */
#ifndef configENABLE_FPU #ifndef configENABLE_FPU
#error configENABLE_FPU must be defined in FreeRTOSConfig.h. #error configENABLE_FPU must be defined in FreeRTOSConfig.h. Set configENABLE_FPU to 1 to enable the FPU or 0 to disable the FPU.
#endif /* configENABLE_FPU */ #endif /* configENABLE_FPU */
#ifndef configENABLE_MPU #ifndef configENABLE_MPU
#error configENABLE_MPU must be defined in FreeRTOSConfig.h. #error configENABLE_MPU must be defined in FreeRTOSConfig.h. Set configENABLE_MPU to 1 to enable the MPU or 0 to disable the MPU.
#endif /* configENABLE_MPU */ #endif /* configENABLE_MPU */
#ifndef configENABLE_TRUSTZONE #ifndef configENABLE_TRUSTZONE
#error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. #error configENABLE_TRUSTZONE must be defined in FreeRTOSConfig.h. Set configENABLE_TRUSTZONE to 1 to enable TrustZone or 0 to disable TrustZone.
#endif /* configENABLE_TRUSTZONE */ #endif /* configENABLE_TRUSTZONE */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/