mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Continue work on XMC1000 demos.
This commit is contained in:
parent
73606369c4
commit
b79d3de952
|
@ -57,6 +57,7 @@
|
|||
<option id="com.atollic.truestudio.common_options.target.endianess.1238437628" name="Endianess" superClass="com.atollic.truestudio.common_options.target.endianess"/>
|
||||
<option id="com.atollic.truestudio.gcc.optimization.prep_garbage.1914199267" name="Prepare dead code removal" superClass="com.atollic.truestudio.gcc.optimization.prep_garbage" value="true" valueType="boolean"/>
|
||||
<option id="com.atollic.truestudio.gcc.optimization.prep_data.989109200" name="Prepare dead data removal" superClass="com.atollic.truestudio.gcc.optimization.prep_data" value="true" valueType="boolean"/>
|
||||
<option id="com.atollic.truestudio.exe.debug.toolchain.gcc.optimization.level.47441462" name="Optimization Level" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc.optimization.level" value="com.atollic.truestudio.gcc.optimization.level.00" valueType="enumerated"/>
|
||||
<inputType id="com.atollic.truestudio.gcc.input.1008000819" superClass="com.atollic.truestudio.gcc.input"/>
|
||||
</tool>
|
||||
<tool id="com.atollic.truestudio.exe.debug.toolchain.ld.298485676" name="C Linker" superClass="com.atollic.truestudio.exe.debug.toolchain.ld">
|
||||
|
@ -105,9 +106,6 @@
|
|||
<tool id="com.atollic.truestudio.exe.debug.toolchain.secoutput.31389710" name="Other" superClass="com.atollic.truestudio.exe.debug.toolchain.secoutput"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<fileInfo id="com.atollic.truestudio.exe.debug.2093031755.1258798340" name="main-full.c" rcbsApplicability="disable" resourcePath="main-full.c" toolsToInvoke="com.atollic.truestudio.exe.debug.toolchain.gcc.37591077.227330701">
|
||||
<tool id="com.atollic.truestudio.exe.debug.toolchain.gcc.37591077.227330701" name="C Compiler" superClass="com.atollic.truestudio.exe.debug.toolchain.gcc.37591077"/>
|
||||
</fileInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="Keil_Specific|IAR_Specific" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
|
|
|
@ -34,6 +34,16 @@
|
|||
<type>2</type>
|
||||
<locationURI>virtual:/virtual</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>Common_Demo_Source/QueueOverwrite.c</name>
|
||||
<type>1</type>
|
||||
<locationURI>FREERTOS_BASE/Demo/Common/Minimal/QueueOverwrite.c</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>Common_Demo_Source/QueueSet.c</name>
|
||||
<type>1</type>
|
||||
<locationURI>FREERTOS_BASE/Demo/Common/Minimal/QueueSet.c</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>Common_Demo_Source/blocktim.c</name>
|
||||
<type>1</type>
|
||||
|
@ -95,6 +105,17 @@
|
|||
<locationURI>FREERTOS_BASE/Source/timers.c</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1378064141906</id>
|
||||
<name></name>
|
||||
<type>26</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-projectRelativePath-matches-true-false-.csdata/ci</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
<variableList>
|
||||
<variable>
|
||||
<name>FREERTOS_BASE</name>
|
||||
|
|
|
@ -131,6 +131,13 @@ void vRegTest1Task( void )
|
|||
" ldr r1, [r0] \n"
|
||||
" add r1, r1, #1 \n"
|
||||
" str r1, [r0] \n"
|
||||
" \n"
|
||||
" /* Yield to increase test coverage. */ \n"
|
||||
" movs r0, #0x01 \n"
|
||||
" ldr r1, =0xe000ed04 \n" /*NVIC_INT_CTRL */
|
||||
" lsl r0, #28 \n" /* Shift to PendSV bit */
|
||||
" str r0, [r1] \n"
|
||||
" dsb \n"
|
||||
" pop { r1 } \n"
|
||||
" \n"
|
||||
" /* Start again. */ \n"
|
||||
|
|
|
@ -86,12 +86,12 @@
|
|||
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 0
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configCPU_CLOCK_HZ ( SystemCoreClock )
|
||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 60 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 6000 ) )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 12000 ) )
|
||||
#define configMAX_TASK_NAME_LEN ( 5 )
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
|
@ -104,6 +104,7 @@
|
|||
#define configUSE_APPLICATION_TASK_TAG 0
|
||||
#define configUSE_COUNTING_SEMAPHORES 1
|
||||
#define configGENERATE_RUN_TIME_STATS 0
|
||||
#define configUSE_QUEUE_SETS 1
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
|
@ -124,6 +125,7 @@ to exclude the API function. */
|
|||
#define INCLUDE_vTaskSuspend 1
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_eTaskGetState 1
|
||||
|
||||
/* Normal assert() semantics without relying on the provision of an assert.h
|
||||
header file. */
|
||||
|
|
|
@ -136,6 +136,13 @@ reg1_loop
|
|||
ldr r1, [r0]
|
||||
adds r1, r1, #1
|
||||
str r1, [r0]
|
||||
|
||||
/* Yield to increase test coverage. */
|
||||
movs r0, #0x01
|
||||
ldr r1, =0xe000ed04 /* NVIC_INT_CTRL */
|
||||
lsls r0 ,r0, #28 /* Shift to PendSV bit */
|
||||
str r0, [r1]
|
||||
dsb
|
||||
pop { r1 }
|
||||
|
||||
/* Start again. */
|
||||
|
|
|
@ -64,16 +64,14 @@
|
|||
|
||||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
|
||||
|
||||
IMPORT ulRegTest1LoopCounter
|
||||
IMPORT ulRegTest2LoopCounter
|
||||
|
||||
EXTERN vPortYield ;////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
EXPORT vRegTest1Task
|
||||
EXPORT vRegTest2Task
|
||||
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
|
||||
;/*-----------------------------------------------------------*/
|
||||
|
@ -140,15 +138,18 @@ reg1_loop
|
|||
ldr r1, [r0]
|
||||
adds r1, r1, #1
|
||||
str r1, [r0]
|
||||
|
||||
;/* Yield to increase test coverage. */
|
||||
movs r0, #0x01
|
||||
ldr r1, =0xe000ed04 ; NVIC_INT_CTRL
|
||||
lsls r0 ,r0, #28 ; Shift to PendSV bit
|
||||
str r0, [r1]
|
||||
dsb
|
||||
pop { r1 }
|
||||
|
||||
;/* Start again. */
|
||||
movs r0, #100
|
||||
|
||||
push {r0-r1}
|
||||
bl vPortYield ;;///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
pop {r0-r1}
|
||||
|
||||
|
||||
b reg1_loop
|
||||
|
||||
reg1_error_loop
|
||||
|
|
|
@ -1251,7 +1251,7 @@
|
|||
</plugin>
|
||||
<plugin>
|
||||
<file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
|
||||
<loadFlag>0</loadFlag>
|
||||
<loadFlag>1</loadFlag>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
|
||||
|
|
|
@ -229,7 +229,7 @@
|
|||
<option>
|
||||
<name>CCAllowList</name>
|
||||
<version>1</version>
|
||||
<state>0000000</state>
|
||||
<state>1111111</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCDebugInfo</name>
|
||||
|
@ -321,7 +321,7 @@
|
|||
</option>
|
||||
<option>
|
||||
<name>CCOptLevel</name>
|
||||
<state>1</state>
|
||||
<state>3</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCOptStrategy</name>
|
||||
|
@ -330,7 +330,7 @@
|
|||
</option>
|
||||
<option>
|
||||
<name>CCOptLevelSlave</name>
|
||||
<state>1</state>
|
||||
<state>3</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CompilerMisraRules98</name>
|
||||
|
@ -949,6 +949,12 @@
|
|||
<file>
|
||||
<name>$PROJ_DIR$\..\Common\Minimal\dynamic.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\Common\Minimal\QueueOverwrite.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\Common\Minimal\QueueSet.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\Common\Minimal\recmutex.c</name>
|
||||
</file>
|
||||
|
|
|
@ -436,8 +436,8 @@
|
|||
<Focus>0</Focus>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>90</TopLine>
|
||||
<CurrentLine>128</CurrentLine>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\system_XMC1200.c</PathWithFileName>
|
||||
<FilenameWithoutPath>system_XMC1200.c</FilenameWithoutPath>
|
||||
|
@ -452,8 +452,8 @@
|
|||
<Focus>0</Focus>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
<TopLine>120</TopLine>
|
||||
<CurrentLine>132</CurrentLine>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Keil_Specific\startup_XMC1300.s</PathWithFileName>
|
||||
<FilenameWithoutPath>startup_XMC1300.s</FilenameWithoutPath>
|
||||
|
@ -464,7 +464,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>FreeRTOS source</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
@ -506,7 +506,7 @@
|
|||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<ColumnNumber>26</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
|
@ -522,7 +522,7 @@
|
|||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<ColumnNumber>9</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
|
@ -538,10 +538,10 @@
|
|||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<ColumnNumber>2</ColumnNumber>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
<TopLine>244</TopLine>
|
||||
<CurrentLine>259</CurrentLine>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\Source\portable\RVDS\ARM_CM0\port.c</PathWithFileName>
|
||||
<FilenameWithoutPath>port.c</FilenameWithoutPath>
|
||||
|
@ -580,8 +580,8 @@
|
|||
<Focus>0</Focus>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>134</TopLine>
|
||||
<CurrentLine>142</CurrentLine>
|
||||
<TopLine>114</TopLine>
|
||||
<CurrentLine>122</CurrentLine>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\main.c</PathWithFileName>
|
||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||
|
@ -610,7 +610,7 @@
|
|||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<ColumnNumber>2</ColumnNumber>
|
||||
<ColumnNumber>5</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
|
@ -660,8 +660,8 @@
|
|||
<Focus>0</Focus>
|
||||
<ColumnNumber>0</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
<TopLine>191</TopLine>
|
||||
<CurrentLine>199</CurrentLine>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Keil_Specific\RegTest_Keil.s</PathWithFileName>
|
||||
<FilenameWithoutPath>RegTest_Keil.s</FilenameWithoutPath>
|
||||
|
@ -740,6 +740,38 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<ColumnNumber>35</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Common\Minimal\QueueSet.c</PathWithFileName>
|
||||
<FilenameWithoutPath>QueueSet.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<ColumnNumber>47</ColumnNumber>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<TopLine>0</TopLine>
|
||||
<CurrentLine>0</CurrentLine>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Common\Minimal\QueueOverwrite.c</PathWithFileName>
|
||||
<FilenameWithoutPath>QueueOverwrite.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
||||
|
|
|
@ -537,6 +537,16 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>..\Common\Minimal\countsem.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>QueueSet.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Common\Minimal\QueueSet.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>QueueOverwrite.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Common\Minimal\QueueOverwrite.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
|
@ -883,7 +893,7 @@
|
|||
<uThumb>0</uThumb>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<VariousControls>
|
||||
<MiscControls>--c99</MiscControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>.;..\Common\include;..\..\Source\include;..\..\Source\portable\RVDS\ARM_CM0;.\CMSIS</IncludePath>
|
||||
|
@ -1072,6 +1082,16 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>..\Common\Minimal\countsem.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>QueueSet.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Common\Minimal\QueueSet.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>QueueOverwrite.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Common\Minimal\QueueOverwrite.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
|
|
|
@ -90,11 +90,15 @@
|
|||
* containing an unexpected value is indicative of an error in the context
|
||||
* switching mechanism.
|
||||
*
|
||||
* "Semaphore take task" - This task does nothing but block on a semaphore that
|
||||
* is 'given' from the tick hook function (which is defined in main.c). It
|
||||
* toggles the fourth LED each time it receives the semaphore. The Semahore is
|
||||
* given every 50ms, so LED 4 toggles every 50ms.
|
||||
*
|
||||
* "Flash timers" - A software timer callback function is defined that does
|
||||
* nothing but toggle an LED. Three software timers are created that each
|
||||
* use the same callback function, but each toggles a different LED at a
|
||||
* different frequency. One software timer uses LED1, another LED2 and the
|
||||
* third LED3.
|
||||
* different frequency. The timers control the first three LEDs.
|
||||
*
|
||||
* "Check" software timer - The check timer period is initially set to three
|
||||
* seconds. Its callback function checks that all the standard demo tasks, and
|
||||
|
@ -102,16 +106,17 @@
|
|||
* without reporting any errors. If the check timer callback discovers that a
|
||||
* task has either stalled, or reported an error, then it changes the period of
|
||||
* the check timer from the initial three seconds, to just 200ms. The callback
|
||||
* function also toggles LED 4 each time it is called. This provides a visual
|
||||
* indication of the system status: If the LED toggles every three seconds,
|
||||
* then no issues have been discovered. If the LED toggles every 200ms, then
|
||||
* an issue has been discovered with at least one task.
|
||||
* function also toggles the fifth LED each time it is called. This provides a
|
||||
* visual indication of the system status: If the LED toggles every three
|
||||
* seconds then no issues have been discovered. If the LED toggles every 200ms,
|
||||
* then an issue has been discovered with at least one task.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
#include "timers.h"
|
||||
|
||||
/* Common demo includes. */
|
||||
|
@ -120,6 +125,8 @@
|
|||
#include "recmutex.h"
|
||||
#include "ParTest.h"
|
||||
#include "dynamic.h"
|
||||
#include "QueueOverwrite.h"
|
||||
#include "QueueSet.h"
|
||||
|
||||
/* 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
|
||||
|
@ -141,6 +148,10 @@ multiple of this. */
|
|||
/* The LED toggle by the check timer. */
|
||||
#define mainCHECK_LED ( 4 )
|
||||
|
||||
/* The LED toggled each time the task implemented by the prvSemaphoreTakeTask()
|
||||
function takes the semaphore that is given by the tick hook function. */
|
||||
#define mainSEMAPHORE_LED ( 3 )
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
|
@ -166,6 +177,12 @@ static void prvCheckTimerCallback( xTimerHandle xTimer );
|
|||
*/
|
||||
static void prvFlashTimerCallback( xTimerHandle xTimer );
|
||||
|
||||
/*
|
||||
* The task that toggles an LED each time the semaphore 'given' by the tick
|
||||
* hook function (which is defined in main.c) is 'taken' in the task.
|
||||
*/
|
||||
static void prvSemaphoreTakeTask( void *pvParameters );
|
||||
|
||||
/*
|
||||
* Called by main() to create the comprehensive test/demo application if
|
||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is not set to 1.
|
||||
|
@ -180,6 +197,10 @@ incrementing, then the register check tasks has not discovered any errors. If
|
|||
a variable stops incrementing, then an error has been found. */
|
||||
volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;
|
||||
|
||||
/* The semaphore that is given by the tick hook function (defined in main.c)
|
||||
and taken by the task implemented by the prvSemaphoreTakeTask() function. The
|
||||
task toggles LED mainSEMAPHORE_LED each time the semaphore is taken. */
|
||||
xSemaphoreHandle xLEDSemaphore = NULL;
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void main_full( void )
|
||||
|
@ -198,6 +219,18 @@ const size_t xRegTestStackSize = 25U;
|
|||
vStartCountingSemaphoreTasks();
|
||||
vStartRecursiveMutexTasks();
|
||||
vStartDynamicPriorityTasks();
|
||||
vStartQueueSetTasks();
|
||||
vStartQueueOverwriteTask( tskIDLE_PRIORITY );
|
||||
|
||||
/* Create that is given from the tick hook function, and the task that
|
||||
toggles an LED each time the semaphore is given. */
|
||||
vSemaphoreCreateBinary( xLEDSemaphore );
|
||||
xTaskCreate( prvSemaphoreTakeTask, /* Function that implements the task. */
|
||||
( signed char * ) "Sem", /* Text name of the task. */
|
||||
configMINIMAL_STACK_SIZE, /* Stack allocated to the task (in words). */
|
||||
NULL, /* The task parameter is not used. */
|
||||
configMAX_PRIORITIES - 1, /* The priority of the task. */
|
||||
NULL ); /* Don't receive a handle back, it is not needed. */
|
||||
|
||||
/* Create the register test tasks as described at the top of this file.
|
||||
These are naked functions that don't use any stack. A stack still has
|
||||
|
@ -305,6 +338,16 @@ unsigned long ulErrorFound = pdFALSE;
|
|||
}
|
||||
ulLastRegTest2Value = ulRegTest2LoopCounter;
|
||||
|
||||
if( xAreQueueSetTasksStillRunning() != pdPASS )
|
||||
{
|
||||
ulErrorFound |= ( 0x01UL << 6UL );
|
||||
}
|
||||
|
||||
if( xIsQueueOverwriteTaskStillRunning() != pdPASS )
|
||||
{
|
||||
ulErrorFound |= ( 0x01UL << 7UL );
|
||||
}
|
||||
|
||||
/* Toggle the check LED to give an indication of the system status. If
|
||||
the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then
|
||||
everything is ok. A faster toggle indicates an error. */
|
||||
|
@ -329,6 +372,20 @@ unsigned long ulErrorFound = pdFALSE;
|
|||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvSemaphoreTakeTask( void *pvParameters )
|
||||
{
|
||||
configASSERT( xLEDSemaphore );
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait to obtain the semaphore - which is given by the tick hook
|
||||
function every 50ms. */
|
||||
xSemaphoreTake( xLEDSemaphore, portMAX_DELAY );
|
||||
vParTestToggleLED( mainSEMAPHORE_LED );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvFlashTimerCallback( xTimerHandle xTimer )
|
||||
{
|
||||
unsigned long ulLED;
|
||||
|
|
|
@ -85,9 +85,11 @@
|
|||
/* FreeRTOS includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* Demo application include. */
|
||||
#include "ParTest.h"
|
||||
#include "QueueSet.h"
|
||||
|
||||
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,
|
||||
or 0 to run the more comprehensive test and demo application. */
|
||||
|
@ -194,7 +196,39 @@ void vApplicationTickHook( void )
|
|||
configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h. User code can be
|
||||
added here, but the tick hook is called from an interrupt context, so
|
||||
code must not attempt to block, and only the interrupt safe FreeRTOS API
|
||||
functions can be used (those that end in FromISR()). */
|
||||
functions can be used (those that end in FromISR()). The code in this
|
||||
tick hook implementation is for demonstration only - it has no real
|
||||
purpose. It just gives a semaphore every 50ms. The semaphore unblocks a
|
||||
task that then toggles an LED. Additionally, the call to
|
||||
vQueueSetAccessQueueSetFromISR() is part of the "standard demo tasks"
|
||||
functionality. */
|
||||
|
||||
/* The semaphore and associated task are not created when the simple blinky
|
||||
demo is used. */
|
||||
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0
|
||||
{
|
||||
static unsigned long ulLastGiveTime = 0UL;
|
||||
const unsigned long ulRate = 50UL / portTICK_RATE_MS;
|
||||
extern xSemaphoreHandle xLEDSemaphore;
|
||||
|
||||
configASSERT( xLEDSemaphore );
|
||||
|
||||
if( ( xTaskGetTickCountFromISR() - ulLastGiveTime ) > ulRate )
|
||||
{
|
||||
/* The second parameter is normally used to determine if a context
|
||||
switch should be performed or not. In this case the function is
|
||||
being performed from the tick hook, so the scheduler will make that
|
||||
assessment before returning to a task anyway - so the parameter is
|
||||
not needed and is just set to NULL. */
|
||||
xSemaphoreGiveFromISR( xLEDSemaphore, NULL );
|
||||
ulLastGiveTime += ulRate;
|
||||
}
|
||||
|
||||
/* Write to a queue that is in use as part of the queue set demo to
|
||||
demonstrate using queue sets from an ISR. */
|
||||
vQueueSetAccessQueueSetFromISR();
|
||||
}
|
||||
#endif /* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[DebugChecksum]
|
||||
Checksum=-2111807952
|
||||
Checksum=-850785765
|
||||
[Stack]
|
||||
FillEnabled=0
|
||||
OverflowWarningsEnabled=1
|
||||
|
@ -107,7 +107,8 @@ Exclusions=
|
|||
[Disassemble mode]
|
||||
mode=0
|
||||
[Breakpoints2]
|
||||
Count=0
|
||||
Bp0=_ 1 "EMUL_CODE" "{$PROJ_DIR$\main-full.c}.362.3" 0 0 1 "" 0 "" 0
|
||||
Count=1
|
||||
[Aliases]
|
||||
Count=0
|
||||
SuppressDialog=0
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1216</ColumnWidth1><ColumnWidth2>324</ColumnWidth2><ColumnWidth3>81</ColumnWidth3></Build>
|
||||
<TerminalIO/>
|
||||
</Static>
|
||||
<Breakpoints><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><col-names><item>Breakpoint</item><item>_I0</item></col-names><col-widths><item>500</item><item>35</item></col-widths></Breakpoints></Static>
|
||||
<Windows>
|
||||
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
|||
<Factory>Workspace</Factory>
|
||||
<Session>
|
||||
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/System</ExpandedNode></NodeDict></Session>
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Common Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS Source</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS Source/portable</ExpandedNode><ExpandedNode>RTOSDemo/System</ExpandedNode></NodeDict></Session>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
|
@ -53,14 +53,14 @@
|
|||
|
||||
|
||||
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>99</YPos2><SelStart2>5509</SelStart2><SelEnd2>5509</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main-full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>111</YPos2><SelStart2>7445</SelStart2><SelEnd2>7445</SelEnd2></Tab><ActiveTab>1</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main-full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>343</YPos2><SelStart2>16403</SelStart2><SelEnd2>16403</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\ARM_CM0\portasm.s</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>107</YPos2><SelStart2>5084</SelStart2><SelEnd2>5084</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\ARM_CM0\portmacro.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>69</YPos2><SelStart2>4860</SelStart2><SelEnd2>4870</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\ARM_CM0\port.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>171</YPos2><SelStart2>7642</SelStart2><SelEnd2>7642</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\queue.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>1140</YPos2><SelStart2>40632</SelStart2><SelEnd2>40632</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\recmutex.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>335</YPos2><SelStart2>14526</SelStart2><SelEnd2>14526</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\tasks.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>109</YPos2><SelStart2>6901</SelStart2><SelEnd2>6912</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\dynamic.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>183</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\QueueSet.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>276</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>197</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><ActiveTab>9</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\IAR_Specific\RegTest_IAR.s</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>184</YPos2><SelStart2>6246</SelStart2><SelEnd2>6246</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>98</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Positions>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Top><Row0><Sizes><Toolbar-01348f40><key>iaridepm.enu1</key></Toolbar-01348f40></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</Bottom><Right>310</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>185714</sizeVertCX><sizeVertCY>755601</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
<Top><Row0><Sizes><Toolbar-01348f68><key>iaridepm.enu1</key></Toolbar-01348f68></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</Bottom><Right>310</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>185714</sizeVertCX><sizeVertCY>755601</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
</Desktop>
|
||||
</Workspace>
|
||||
|
||||
|
|
Loading…
Reference in a new issue