</tool>\r
<tool command="riscv64-unknown-elf-gcc.exe" id="cdt.managedbuild.tool.gnu.cross.c.linker.25704515" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">\r
<option id="gnu.c.link.option.nostart.547444896" name="Do not use standard start files (-nostartfiles)" superClass="gnu.c.link.option.nostart" useByScannerDiscovery="false" value="true" valueType="boolean"/>\r
- <option id="gnu.c.link.option.ldflags.385740302" name="Linker flags" superClass="gnu.c.link.option.ldflags" useByScannerDiscovery="false" value="--specs=nano.specs -Xlinker --gc-sections -Wl,-Map,RTOSDemo.map -T../freedom-e-sdk/env/freedom-e300-hifive1/flash.lds -march=rv32imac -mabi=ilp32 -mcmodel=medlow -Xlinker --defsym=__stack_size=400 -Wl,--start-group -Wl,--end-group -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=open -Wl,--wrap=lseek -Wl,--wrap=read -Wl,--wrap=write -Wl,--wrap=fstat -Wl,--wrap=stat -Wl,--wrap=close -Wl,--wrap=link -Wl,--wrap=unlink -Wl,--wrap=execve -Wl,--wrap=fork -Wl,--wrap=getpid -Wl,--wrap=kill -Wl,--wrap=wait -Wl,--wrap=isatty -Wl,--wrap=times -Wl,--wrap=sbrk -Wl,--wrap=_exit -Wl,--wrap=puts -Wl,--wrap=_malloc -Wl,--wrap=_free -Wl,--wrap=_open -Wl,--wrap=_lseek -Wl,--wrap=_read -Wl,--wrap=_write -Wl,--wrap=_fstat -Wl,--wrap=_stat -Wl,--wrap=_close -Wl,--wrap=_link -Wl,--wrap=_unlink -Wl,--wrap=_execve -Wl,--wrap=_fork -Wl,--wrap=_getpid -Wl,--wrap=_kill -Wl,--wrap=_wait -Wl,--wrap=_isatty -Wl,--wrap=_times -Wl,--wrap=_sbrk -Wl,--wrap=__exit -Wl,--wrap=_puts" valueType="string"/>\r
+ <option id="gnu.c.link.option.ldflags.385740302" name="Linker flags" superClass="gnu.c.link.option.ldflags" useByScannerDiscovery="false" value="--specs=nano.specs -Xlinker --gc-sections -Wl,-Map,RTOSDemo.map -T../freedom-e-sdk/env/freedom-e300-hifive1/flash.lds -march=rv32imac -mabi=ilp32 -mcmodel=medlow -Xlinker --defsym=__stack_size=350 -Wl,--start-group -Wl,--end-group -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=open -Wl,--wrap=lseek -Wl,--wrap=read -Wl,--wrap=write -Wl,--wrap=fstat -Wl,--wrap=stat -Wl,--wrap=close -Wl,--wrap=link -Wl,--wrap=unlink -Wl,--wrap=execve -Wl,--wrap=fork -Wl,--wrap=getpid -Wl,--wrap=kill -Wl,--wrap=wait -Wl,--wrap=isatty -Wl,--wrap=times -Wl,--wrap=sbrk -Wl,--wrap=_exit -Wl,--wrap=puts -Wl,--wrap=_malloc -Wl,--wrap=_free -Wl,--wrap=_open -Wl,--wrap=_lseek -Wl,--wrap=_read -Wl,--wrap=_write -Wl,--wrap=_fstat -Wl,--wrap=_stat -Wl,--wrap=_close -Wl,--wrap=_link -Wl,--wrap=_unlink -Wl,--wrap=_execve -Wl,--wrap=_fork -Wl,--wrap=_getpid -Wl,--wrap=_kill -Wl,--wrap=_wait -Wl,--wrap=_isatty -Wl,--wrap=_times -Wl,--wrap=_sbrk -Wl,--wrap=__exit -Wl,--wrap=_puts" valueType="string"/>\r
<option id="gnu.c.link.option.nostdlibs.1587538414" name="No startup or default libs (-nostdlib)" superClass="gnu.c.link.option.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>\r
<option id="gnu.c.link.option.nodeflibs.49453984" name="Do not use default libraries (-nodefaultlibs)" superClass="gnu.c.link.option.nodeflibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>\r
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1563926647" superClass="cdt.managedbuild.tool.gnu.c.linker.input">\r
<type>1</type>\r
<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal/EventGroupsDemo.c</locationURI>\r
</link>\r
- <link>\r
- <name>full_demo/standard_demo_tasks/GenQTest.c</name>\r
- <type>1</type>\r
- <locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal/GenQTest.c</locationURI>\r
- </link>\r
<link>\r
<name>full_demo/standard_demo_tasks/TaskNotify.c</name>\r
<type>1</type>\r
#define configCPU_CLOCK_HZ ( 10000000 ) /*QEMU*/\r
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )\r
#define configMAX_PRIORITIES ( 7 )\r
-#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 )\r
+#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 105 )\r
#define configTOTAL_HEAP_SIZE ( ( size_t ) 14500 )\r
#define configMAX_TASK_NAME_LEN ( 16 )\r
#define configUSE_TRACE_FACILITY 0\r
#define configUSE_TIMERS 1\r
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )\r
#define configTIMER_QUEUE_LENGTH 4\r
-#define configTIMER_TASK_STACK_DEPTH ( 120 )\r
+#define configTIMER_TASK_STACK_DEPTH ( 110 )\r
\r
/* Task priorities. Allow these to be overridden. */\r
#ifndef uartPRIMARY_PRIORITY\r
/* Overwrite some of the stack sizes allocated to various test and demo tasks.\r
Like all task stack sizes, the value is the number of words, not bytes. */\r
#define bktBLOCK_TIME_TASK_STACK_SIZE 100\r
-#define notifyNOTIFIED_TASK_STACK_SIZE 120\r
+#define notifyNOTIFIED_TASK_STACK_SIZE 110\r
#define priSUSPENDED_RX_TASK_STACK_SIZE 90\r
#define tmrTIMER_TEST_TASK_STACK_SIZE 100\r
#define ebRENDESVOUS_TEST_TASK_STACK_SIZE 100\r
#define ebEVENT_GROUP_SET_BITS_TEST_TASK_STACK_SIZE 115\r
#define genqMUTEX_TEST_TASK_STACK_SIZE 90\r
-#define genqGENERIC_QUEUE_TEST_TASK_STACK_SIZE 100\r
-#define recmuRECURSIVE_MUTEX_TEST_TASK_STACK_SIZE 90\r
+#define recmuRECURSIVE_MUTEX_TEST_TASK_STACK_SIZE 110\r
\r
#endif /* FREERTOS_CONFIG_H */\r
\r
SECTIONS\r
{\r
- __stack_size = DEFINED(__stack_size) ? __stack_size : 400;\r
+ __stack_size = DEFINED(__stack_size) ? __stack_size : 350;\r
\r
.init :\r
{\r
* main_full.c.\r
*/\r
\r
-.align( 8 )\r
+.align( 4 )\r
vRegTest1Implementation:\r
\r
/* Fill the core registers with known values. */\r
reg1_error_loop:\r
/* Jump here if a register contains an uxpected value. This stops the loop\r
counter being incremented so the check task knows an error was found. */\r
- ebreak\r
jal reg1_error_loop\r
\r
-.align( 16 )\r
+.align( 4 )\r
ulRegTest1LoopCounterConst: .word ulRegTest1LoopCounter\r
\r
/*-----------------------------------------------------------*/\r
\r
-.align( 8 )\r
+.align( 4 )\r
vRegTest2Implementation:\r
\r
/* Fill the core registers with known values. */\r
reg2_error_loop:\r
/* Jump here if a register contains an uxpected value. This stops the loop\r
counter being incremented so the check task knows an error was found. */\r
- ebreak\r
jal reg2_error_loop\r
\r
-.align( 16 )\r
+.align( 4 )\r
ulRegTest2LoopCounterConst: .word ulRegTest2LoopCounter\r
\r
\r
/* Standard demo application includes. */\r
#include "dynamic.h"\r
#include "blocktim.h"\r
-#include "GenQTest.h"\r
#include "recmutex.h"\r
#include "TimerDemo.h"\r
#include "EventGroupsDemo.h"\r
kernel port. */\r
vStartDynamicPriorityTasks();\r
vCreateBlockTimeTasks();\r
- vStartGenericQueueTasks( tskIDLE_PRIORITY );\r
vStartRecursiveMutexTasks();\r
vStartTimerDemoTask( mainTIMER_TEST_PERIOD );\r
vStartEventGroupTasks();\r
const TickType_t xDelayPeriod = mainNO_ERROR_CHECK_TASK_PERIOD;\r
TickType_t xLastExecutionTime;\r
static unsigned long ulLastRegTest1Value = 0, ulLastRegTest2Value = 0;\r
-const char * const pcPassMessage = "Pass";\r
const char * pcStatusMessage = ".";\r
extern void vSendString( const char * pcString );\r
\r
pcStatusMessage = "ERROR: Block time demo/tests.\r\n";\r
}\r
\r
- if ( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
- {\r
- pcStatusMessage = "ERROR: Generic queue demo/tests.\r\n";\r
- }\r
-\r
if ( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
{\r
pcStatusMessage = "ERROR: Recursive mutex demo/tests.\r\n";\r
* This project has only been tested in the QEMU emulation of the HiFive board\r
* from SiFive.\r
*\r
- * Start QEMU using the following command line:\r
+ * NOTE - Requires QEMU 1908xx or higher. Start QEMU using the following command \r
+ * line:\r
*\r
* [your_path_1]\qemu-system-riscv32 -kernel [your_path_2]\FreeRTOS\Demo\RISC-V-Qemu-sifive_e-FreedomStudio\Debug\RTOSDemo.elf -S -s -machine sifive_e\r
*\r
\r
void vSendString( const char * pcString )\r
{\r
+const uint32_t ulTxFifoFullBit = 0x80000000UL;\r
+\r
while( *pcString != 0x00 )\r
{\r
- while( UART0_REG( UART_REG_TXFIFO ) & 0x80000000 );\r
+ while( ( UART0_REG( UART_REG_TXFIFO ) & ulTxFifoFullBit ) != 0UL );\r
UART0_REG( UART_REG_TXFIFO ) = *pcString;\r
- *pcString++;\r
+ pcString++;\r
}\r
}\r
\r