Cleaning up LPC51U68 projects:

- user playable settings are all in FreeRTOSConfig.h.
- removed reference to IntQueue.h in main_full.c
- readme.txt wording.
This commit is contained in:
Yuhui.Zheng 2020-01-24 07:53:14 +00:00
parent 2415dc26b0
commit f5b5b2db04
9 changed files with 37 additions and 33 deletions

View file

@ -38,7 +38,7 @@
<link> <link>
<name>Demo_tasks/IntQueue.c</name> <name>Demo_tasks/IntQueue.c</name>
<type>1</type> <type>1</type>
<locationURI>PARENT-1-PROJECT_LOC/Common/Minimal/IntQueue.c</locationURI> <location>C:/Users/yuhzheng/Documents/freertos-code/FreeRTOS/Demo/Common/Minimal/IntQueue.c</location>
</link> </link>
<link> <link>
<name>Demo_tasks/blocktim.c</name> <name>Demo_tasks/blocktim.c</name>

View file

@ -162,7 +162,7 @@
<DebugFlag> <DebugFlag>
<trace>0</trace> <trace>0</trace>
<periodic>1</periodic> <periodic>1</periodic>
<aLwin>1</aLwin> <aLwin>0</aLwin>
<aCover>0</aCover> <aCover>0</aCover>
<aSer1>0</aSer1> <aSer1>0</aSer1>
<aSer2>0</aSer2> <aSer2>0</aSer2>
@ -210,7 +210,7 @@
<Group> <Group>
<GroupName>Application_Code</GroupName> <GroupName>Application_Code</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -854,7 +854,7 @@
<Group> <Group>
<GroupName>startup</GroupName> <GroupName>startup</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>

View file

@ -29,4 +29,9 @@
todo: todo:
this is commented out intentionally, as it doesn't seem to work. this is commented out intentionally, as it doesn't seem to work.
Clean up is needed*/ Clean up is needed*/
#define COMPILER_ATTRIBUTE_PLACE_IN_2ND_MEMORY_BANK //__attribute__((section("m_data_start")))
/* Attribute to place the second FreeRTOS heap in another memory bank, if present.
This is defined as empty, as the linker file (LPC51U68_flash.scf) provided only
one bank as heap. Could still have two FreeRTOS heap regions, as long as they fit.
*/
#define COMPILER_ATTRIBUTE_PLACE_IN_2ND_MEMORY_BANK

View file

@ -41,6 +41,22 @@
* See http://www.freertos.org/a00110.html * See http://www.freertos.org/a00110.html
*----------------------------------------------------------*/ *----------------------------------------------------------*/
/* Demo related settings. */
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to
* 0 -- to run the more comprehensive test and demo application,
* 1 -- to run the simple blinky demo.
*/
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 1
/* When mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0,
* set mainNO_TASK_NO_CHECK to
* 0 -- to include all predefined test tasks and checks,
* 1 -- to exclude all predefined test tasks and checks.
* When set to 1 (with few tasks in system), user could observe
* fewer tick interrupts thus reduce overall MCU power consumption. */
#define mainNO_TASK_NO_CHECK 0
/* Prevent C code being included by the IAR assembler. */ /* Prevent C code being included by the IAR assembler. */
#ifndef __IASMARM__ #ifndef __IASMARM__
#include <stdint.h> #include <stdint.h>
@ -52,8 +68,8 @@
#define configUSE_TICK_HOOK 1 #define configUSE_TICK_HOOK 1
#define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configCPU_CLOCK_HZ ( SystemCoreClock )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES ( 5 ) #define configMAX_PRIORITIES 5
#define configMAX_TASK_NAME_LEN ( 5 ) #define configMAX_TASK_NAME_LEN 8
#define configUSE_TRACE_FACILITY 1 #define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0 #define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1 #define configIDLE_SHOULD_YIELD 1
@ -80,7 +96,7 @@
/* Software timer definitions. */ /* Software timer definitions. */
#define configUSE_TIMERS 1 #define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY ( 2 ) #define configTIMER_TASK_PRIORITY 2
#define configTIMER_QUEUE_LENGTH 2 #define configTIMER_QUEUE_LENGTH 2
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE ) #define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )

View file

@ -48,12 +48,6 @@
#include "compiler_attributes.h" #include "compiler_attributes.h"
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to
* 0 -- to run the more comprehensive test and demo application,
* 1 -- to run the simple blinky demo.
*/
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
typedef enum LED_STATE { typedef enum LED_STATE {
LED_RED_BLINK_ON = 1, LED_RED_BLINK_ON = 1,

View file

@ -83,8 +83,6 @@
#include "blocktim.h" #include "blocktim.h"
#include "countsem.h" #include "countsem.h"
#include "recmutex.h" #include "recmutex.h"
#include "IntQueue.h"
/* The period after which the check timer will expire provided no errors have /* The period after which the check timer will expire provided no errors have
been reported by any of the standard demo tasks. ms are converted to the been reported by any of the standard demo tasks. ms are converted to the
@ -99,12 +97,6 @@ in ticks using the portTICK_PERIOD_MS constant. */
/* A block time of zero simply means "don't block". */ /* A block time of zero simply means "don't block". */
#define mainDONT_BLOCK ( 0UL ) #define mainDONT_BLOCK ( 0UL )
/* Set mainNO_TASK_NO_CHECK to
* 0 -- to include all predefined test tasks and checks,
* 1 -- to exclude all predefined test tasks and checks.
* When set to 1 (with few tasks in system), user could observe how tickless
* idle could minimize tick interrupt. */
#define mainNO_TASK_NO_CHECK ( 1 )
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
/* /*
@ -155,7 +147,6 @@ TimerHandle_t xCheckTimer = NULL;
#if ( mainNO_TASK_NO_CHECK == 0 ) #if ( mainNO_TASK_NO_CHECK == 0 )
/* Create the standard demo tasks, including the interrupt nesting test /* Create the standard demo tasks, including the interrupt nesting test
tasks. */ tasks. */
vStartInterruptQueueTasks();
vCreateBlockTimeTasks(); vCreateBlockTimeTasks();
vStartCountingSemaphoreTasks(); vStartCountingSemaphoreTasks();
vStartRecursiveMutexTasks(); vStartRecursiveMutexTasks();
@ -222,11 +213,6 @@ unsigned long ulErrorFound = pdFALSE;
/* Check all the demo and test tasks to ensure that they are all still /* Check all the demo and test tasks to ensure that they are all still
running, and that none have detected an error. */ running, and that none have detected an error. */
if( xAreIntQueueTasksStillRunning() != pdPASS )
{
ulErrorFound |= ( 0x01UL << 0UL );
}
if( xAreBlockTimeTestTasksStillRunning() != pdPASS ) if( xAreBlockTimeTestTasksStillRunning() != pdPASS )
{ {
ulErrorFound |= ( 0x01UL << 1UL ); ulErrorFound |= ( 0x01UL << 1UL );

View file

@ -1,6 +1,9 @@
This directory contains projects for GCC/IAR/Keil compilers. The targeted MCU is NXP LPC51U68, which is CM0+. This directory contains three projects for LPCXpresso board for LPC51U68.
todo: MCUXpresso IDE (GCC compiler) -- .cproject and .project.
- clean up IAR compiler warnings. (Though the warnings are in vendor's driver code, see if we can clean it up. ) IAR for ARM IDE (IAR compiler) -- CORTEX_M0+_LPC51U68_IAR.*
- finalize Keil linker script.(Two heap blocks shall be placed in intended RAM banks. Currently, both goes to a same RAM bank.) Keil uVision (ARM Keil compiler) -- CORTEX_M0+_LPC51U68_Keil.*
- GCC project folder directory name is not consistent with the other two.
Known facts:
- IAR compiler shows Pa082 warning with SDK provided system_LPC51U68.c and fsl_usart.c. Since the warnings are legitimate, they are not ignored.
Refer to https://www.iar.com/support/tech-notes/compiler/warningpa082-undefined-behavior-the-order-of-volatile-accesses-is-undefined-in-this-statement/