From 87eabd0658d4f4918a0de2a3c0580cd8a94404f7 Mon Sep 17 00:00:00 2001 From: richardbarry Date: Fri, 15 Feb 2008 20:08:30 +0000 Subject: [PATCH] Get the trace utility and co-routines working. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@193 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../MB91460_Softune/91460_template_91467d.dat | 21 +- Demo/MB91460_Softune/91467d_FreeRTOS.prj | 266 ++++++++-------- Demo/MB91460_Softune/91467d_FreeRTOS.wsp | 3 +- Demo/MB91460_Softune/SRC/FreeRTOSConfig.h | 2 +- Demo/MB91460_Softune/SRC/Start91460.asm | 2 +- Demo/MB91460_Softune/SRC/crflash_modified.c | 230 ++++++++++++++ Demo/MB91460_Softune/SRC/main.c | 17 +- Demo/MB91460_Softune/SRC/partest/partest.c | 82 +++++ .../SRC/utility/printf-stdarg.c | 286 ++++++++++++++++++ .../MB91460_Softune/SRC/utility/taskutility.c | 44 +-- .../STANDALONE/Mondeb_57K6_com1.sup | 56 ++-- 11 files changed, 780 insertions(+), 229 deletions(-) create mode 100644 Demo/MB91460_Softune/SRC/crflash_modified.c create mode 100644 Demo/MB91460_Softune/SRC/utility/printf-stdarg.c diff --git a/Demo/MB91460_Softune/91460_template_91467d.dat b/Demo/MB91460_Softune/91460_template_91467d.dat index ffa3fe96c..831c2d976 100644 --- a/Demo/MB91460_Softune/91460_template_91467d.dat +++ b/Demo/MB91460_Softune/91460_template_91467d.dat @@ -10,23 +10,24 @@ $0 -I "..\..\Source\include" -I "..\..\Source\portable\Softune\MB91460" -I ".\SRC\utility" --O 0 +-O 4 +-K SPEED -K SHORTADDRESS -B --K NOSCHEDULE +-K SCHEDULE -K A1 -K SARG -Xdof -INF STACK -x vTaskIncrementTick,vTaskSwitchContext --K NOEOPT --K NOLIB --K NOUNROLL +-K EOPT +-K LIB +-K UNROLL $other -Xalign -D__91467D $time -1202736093 +1202935848 $end $1 -g @@ -72,7 +73,7 @@ $2 -Xdof $other $time -1202753534 +1203105777 $end $3 -dt s,d,r,a @@ -82,7 +83,7 @@ $3 -Xdof $other $time -1202753534 +1203105777 $end $4 -Xdof @@ -156,7 +157,7 @@ $2 -Xdof $other $time -1202753534 +1203105777 $end $3 -dt s,d,r,a @@ -166,7 +167,7 @@ $3 -Xdof $other $time -1202753534 +1203105777 $end $4 -Xdof diff --git a/Demo/MB91460_Softune/91467d_FreeRTOS.prj b/Demo/MB91460_Softune/91467d_FreeRTOS.prj index ebf664f05..e993af73a 100644 --- a/Demo/MB91460_Softune/91467d_FreeRTOS.prj +++ b/Demo/MB91460_Softune/91467d_FreeRTOS.prj @@ -18,27 +18,27 @@ PrjInfo-1=MONDEB_INTERNAL Active=STANDALONE [MEMBER] -F0=38 +F0=37 F1=0 f Source Files -F2=0 c SRC\main.c -F3=0 a SRC\mb91467d.asm -F4=0 a SRC\Start91460.asm -F5=0 c SRC\vectors.c -F6=0 f Source Files\watchdog -F7=0 c SRC\watchdog\watchdog.c -F8=0 f Source Files\utility -F9=0 c SRC\utility\taskutility.c -F10=0 f Source Files\FreeRTOS Source -F11=0 c ..\..\Source\croutine.c -F12=0 c ..\..\Source\list.c -F13=0 c ..\..\Source\queue.c -F14=0 c ..\..\Source\tasks.c -F15=0 f Source Files\FreeRTOS Source\portable -F16=0 c ..\..\Source\portable\Softune\MB91460\__STD_LIB_sbrk.c -F17=0 c ..\..\Source\portable\Softune\MB91460\port.c -F18=0 f Source Files\FreeRTOS Source\portable\MemMang -F19=0 c ..\..\Source\portable\MemMang\heap_1.c -F20=0 c ..\..\Source\portable\MemMang\heap_2.c +F2=0 c SRC\crflash_modified.c +F3=0 c SRC\main.c +F4=0 a SRC\mb91467d.asm +F5=0 a SRC\Start91460.asm +F6=0 c SRC\vectors.c +F7=0 f Source Files\watchdog +F8=0 c SRC\watchdog\watchdog.c +F9=0 f Source Files\utility +F10=0 c SRC\utility\printf-stdarg.c +F11=0 c SRC\utility\taskutility.c +F12=0 f Source Files\FreeRTOS Source +F13=0 c ..\..\Source\croutine.c +F14=0 c ..\..\Source\list.c +F15=0 c ..\..\Source\queue.c +F16=0 c ..\..\Source\tasks.c +F17=0 f Source Files\FreeRTOS Source\portable +F18=0 c ..\..\Source\portable\Softune\MB91460\__STD_LIB_sbrk.c +F19=0 c ..\..\Source\portable\Softune\MB91460\port.c +F20=0 f Source Files\FreeRTOS Source\MemMang F21=0 c ..\..\Source\portable\MemMang\heap_3.c F22=0 f Source Files\Demo Source F23=0 c ..\Common\Minimal\BlockQ.c @@ -51,12 +51,11 @@ F29=0 c ..\Common\Minimal\flop.c F30=0 c ..\Common\Minimal\GenQTest.c F31=0 c ..\Common\Minimal\integer.c F32=0 c SRC\partest\partest.c -F33=0 c ..\Common\Minimal\PollQ.c -F34=0 c ..\Common\Minimal\QPeek.c -F35=0 c ..\Common\Minimal\semtest.c -F36=0 f Source Files\Demo Source\serial -F37=0 c SRC\serial\serial.c -F38=0 f Include Files +F33=0 c ..\Common\Minimal\QPeek.c +F34=0 c ..\Common\Minimal\semtest.c +F35=0 f Source Files\Demo Source\serial +F36=0 c SRC\serial\serial.c +F37=0 f Include Files [OPTIONFILE] FILE=91460_template_91467d.dat @@ -76,7 +75,7 @@ LST=STANDALONE\LST\ OPT=STANDALONE\OPT\ [MEMBER-STANDALONE] -F0=30 +F0=29 F1=0 m 1 STANDALONE\ABS\91467d_FreeRTOS.abs F2=9 c 1 ..\..\Source\portable\Softune\MB91460\port.c F2-1=- ..\..\Source\include\FreeRTOS.h @@ -265,7 +264,7 @@ F19-8=- ..\..\Source\include\list.h F19-9=- ..\Common\include\integer.h F19-10=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h F19-11=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F20=12 c 1 ..\Common\Minimal\PollQ.c +F20=13 c 1 ..\Common\Minimal\QPeek.c F20-1=- ..\..\Source\include\FreeRTOS.h F20-2=- ..\..\Source\include\projdefs.h F20-3=- SRC\FreeRTOSConfig.h @@ -275,10 +274,11 @@ F20-6=- SRC\mb91467d.h F20-7=- ..\..\Source\include\task.h F20-8=- ..\..\Source\include\list.h F20-9=- ..\..\Source\include\queue.h -F20-10=- ..\Common\include\PollQ.h +F20-10=- ..\Common\include\QPeek.h F20-11=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h F20-12=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F21=13 c 1 ..\Common\Minimal\QPeek.c +F20-13=- ..\..\Source\include\semphr.h +F21=13 c 1 ..\Common\Minimal\semtest.c F21-1=- ..\..\Source\include\FreeRTOS.h F21-2=- ..\..\Source\include\projdefs.h F21-3=- SRC\FreeRTOSConfig.h @@ -288,11 +288,11 @@ F21-6=- SRC\mb91467d.h F21-7=- ..\..\Source\include\task.h F21-8=- ..\..\Source\include\list.h F21-9=- ..\..\Source\include\queue.h -F21-10=- ..\Common\include\QPeek.h +F21-10=- ..\Common\include\semtest.h F21-11=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h F21-12=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h F21-13=- ..\..\Source\include\semphr.h -F22=13 c 1 ..\Common\Minimal\semtest.c +F22=10 c 1 ..\..\Source\portable\MemMang\heap_3.c F22-1=- ..\..\Source\include\FreeRTOS.h F22-2=- ..\..\Source\include\projdefs.h F22-3=- SRC\FreeRTOSConfig.h @@ -301,117 +301,94 @@ F22-5=- ..\..\Source\portable\Softune\MB91460\portmacro.h F22-6=- SRC\mb91467d.h F22-7=- ..\..\Source\include\task.h F22-8=- ..\..\Source\include\list.h -F22-9=- ..\..\Source\include\queue.h -F22-10=- ..\Common\include\semtest.h -F22-11=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h -F22-12=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F22-13=- ..\..\Source\include\semphr.h -F23=10 c 1 ..\..\Source\portable\MemMang\heap_3.c +F22-9=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h +F22-10=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h +F23=12 c 1 SRC\serial\serial.c F23-1=- ..\..\Source\include\FreeRTOS.h F23-2=- ..\..\Source\include\projdefs.h F23-3=- SRC\FreeRTOSConfig.h F23-4=- ..\..\Source\include\portable.h F23-5=- ..\..\Source\portable\Softune\MB91460\portmacro.h F23-6=- SRC\mb91467d.h -F23-7=- ..\..\Source\include\task.h -F23-8=- ..\..\Source\include\list.h -F23-9=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h -F23-10=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F24=10 c 0 ..\..\Source\portable\MemMang\heap_1.c -F24-1=- ..\..\Source\include\FreeRTOS.h -F24-2=- ..\..\Source\include\projdefs.h -F24-3=- SRC\FreeRTOSConfig.h -F24-4=- ..\..\Source\include\portable.h -F24-5=- ..\..\Source\portable\Softune\MB91460\portmacro.h -F24-6=- SRC\mb91467d.h +F23-7=- ..\..\Source\include\queue.h +F23-8=- ..\..\Source\include\task.h +F23-9=- ..\..\Source\include\list.h +F23-10=- ..\Common\include\serial.h +F23-11=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h +F23-12=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h +F24=10 c 1 SRC\watchdog\watchdog.c +F24-1=- SRC\mb91467d.h +F24-2=- ..\..\Source\include\FreeRTOS.h +F24-3=- ..\..\Source\include\projdefs.h +F24-4=- SRC\FreeRTOSConfig.h +F24-5=- ..\..\Source\include\portable.h +F24-6=- ..\..\Source\portable\Softune\MB91460\portmacro.h F24-7=- ..\..\Source\include\task.h F24-8=- ..\..\Source\include\list.h -F24-9=- ..\..\..\..\..\SoftuneV6_32bit_REV600008\LIB\911\INCLUDE\stdlib.h -F24-10=- ..\..\..\..\..\SoftuneV6_32bit_REV600008\LIB\911\INCLUDE\stddef.h -F25=10 c 0 ..\..\Source\portable\MemMang\heap_2.c -F25-1=- ..\..\Source\include\FreeRTOS.h -F25-2=- ..\..\Source\include\projdefs.h -F25-3=- SRC\FreeRTOSConfig.h -F25-4=- ..\..\Source\include\portable.h -F25-5=- ..\..\Source\portable\Softune\MB91460\portmacro.h -F25-6=- SRC\mb91467d.h -F25-7=- ..\..\Source\include\task.h -F25-8=- ..\..\Source\include\list.h -F25-9=- ..\..\..\..\..\SoftuneV6_32bit_REV600008\LIB\911\INCLUDE\stdlib.h -F25-10=- ..\..\..\..\..\SoftuneV6_32bit_REV600008\LIB\911\INCLUDE\stddef.h -F26=12 c 1 SRC\serial\serial.c -F26-1=- ..\..\Source\include\FreeRTOS.h -F26-2=- ..\..\Source\include\projdefs.h -F26-3=- SRC\FreeRTOSConfig.h -F26-4=- ..\..\Source\include\portable.h -F26-5=- ..\..\Source\portable\Softune\MB91460\portmacro.h -F26-6=- SRC\mb91467d.h -F26-7=- ..\..\Source\include\queue.h -F26-8=- ..\..\Source\include\task.h -F26-9=- ..\..\Source\include\list.h -F26-10=- ..\Common\include\serial.h -F26-11=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stdlib.h -F26-12=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F27=10 c 1 SRC\watchdog\watchdog.c +F24-9=- SRC\watchdog\watchdog.h +F24-10=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h +F25=11 c 1 SRC\utility\taskutility.c +F25-1=- SRC\mb91467d.h +F25-2=- SRC\vectors.h +F25-3=- ..\..\Source\include\FreeRTOS.h +F25-4=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h +F25-5=- ..\..\Source\include\projdefs.h +F25-6=- SRC\FreeRTOSConfig.h +F25-7=- ..\..\Source\include\portable.h +F25-8=- ..\..\Source\portable\Softune\MB91460\portmacro.h +F25-9=- ..\..\Source\include\task.h +F25-10=- ..\..\Source\include\list.h +F25-11=- ..\..\Source\include\queue.h +F26=25 c 1 SRC\main.c +F26-1=- SRC\mb91467d.h +F26-2=- SRC\vectors.h +F26-3=- SRC\watchdog\watchdog.h +F26-4=- ..\..\Source\include\FreeRTOS.h +F26-5=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h +F26-6=- ..\..\Source\include\projdefs.h +F26-7=- SRC\FreeRTOSConfig.h +F26-8=- ..\..\Source\include\portable.h +F26-9=- ..\..\Source\portable\Softune\MB91460\portmacro.h +F26-10=- ..\..\Source\include\task.h +F26-11=- ..\..\Source\include\list.h +F26-12=- ..\Common\include\flash.h +F26-13=- ..\Common\include\integer.h +F26-14=- ..\Common\include\comtest2.h +F26-15=- ..\Common\include\semtest.h +F26-16=- ..\Common\include\BlockQ.h +F26-17=- ..\Common\include\dynamic.h +F26-18=- ..\Common\include\flop.h +F26-19=- ..\Common\include\GenQTest.h +F26-20=- ..\Common\include\QPeek.h +F26-21=- ..\Common\include\blocktim.h +F26-22=- ..\Common\include\death.h +F26-23=- SRC\utility\taskutility.h +F26-24=- ..\Common\include\partest.h +F26-25=- ..\Common\include\crflash.h +F27=9 c 1 SRC\partest\partest.c F27-1=- SRC\mb91467d.h F27-2=- ..\..\Source\include\FreeRTOS.h -F27-3=- ..\..\Source\include\projdefs.h -F27-4=- SRC\FreeRTOSConfig.h -F27-5=- ..\..\Source\include\portable.h -F27-6=- ..\..\Source\portable\Softune\MB91460\portmacro.h -F27-7=- ..\..\Source\include\task.h -F27-8=- ..\..\Source\include\list.h -F27-9=- SRC\watchdog\watchdog.h -F27-10=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F28=12 c 1 SRC\utility\taskutility.c -F28-1=- SRC\mb91467d.h -F28-2=- SRC\vectors.h -F28-3=- ..\..\Source\include\FreeRTOS.h -F28-4=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F28-5=- ..\..\Source\include\projdefs.h -F28-6=- SRC\FreeRTOSConfig.h -F28-7=- ..\..\Source\include\portable.h -F28-8=- ..\..\Source\portable\Softune\MB91460\portmacro.h -F28-9=- ..\..\Source\include\task.h -F28-10=- ..\..\Source\include\list.h -F28-11=- ..\..\Source\include\semphr.h -F28-12=- ..\..\Source\include\queue.h -F29=25 c 1 SRC\main.c -F29-1=- SRC\mb91467d.h -F29-2=- SRC\vectors.h -F29-3=- SRC\watchdog\watchdog.h -F29-4=- ..\..\Source\include\FreeRTOS.h -F29-5=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F29-6=- ..\..\Source\include\projdefs.h -F29-7=- SRC\FreeRTOSConfig.h -F29-8=- ..\..\Source\include\portable.h -F29-9=- ..\..\Source\portable\Softune\MB91460\portmacro.h -F29-10=- ..\..\Source\include\task.h -F29-11=- ..\..\Source\include\list.h -F29-12=- ..\Common\include\flash.h -F29-13=- ..\Common\include\integer.h -F29-14=- ..\Common\include\comtest2.h -F29-15=- ..\Common\include\PollQ.h -F29-16=- ..\Common\include\semtest.h -F29-17=- ..\Common\include\BlockQ.h -F29-18=- ..\Common\include\dynamic.h -F29-19=- ..\Common\include\flop.h -F29-20=- ..\Common\include\GenQTest.h -F29-21=- ..\Common\include\QPeek.h -F29-22=- ..\Common\include\blocktim.h -F29-23=- ..\Common\include\death.h -F29-24=- SRC\utility\taskutility.h -F29-25=- ..\Common\include\partest.h -F30=9 c 1 SRC\partest\partest.c -F30-1=- SRC\mb91467d.h -F30-2=- ..\..\Source\include\FreeRTOS.h -F30-3=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h -F30-4=- ..\..\Source\include\projdefs.h -F30-5=- SRC\FreeRTOSConfig.h -F30-6=- ..\..\Source\include\portable.h -F30-7=- ..\..\Source\portable\Softune\MB91460\portmacro.h -F30-8=- ..\..\Source\include\task.h -F30-9=- ..\..\Source\include\list.h +F27-3=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h +F27-4=- ..\..\Source\include\projdefs.h +F27-5=- SRC\FreeRTOSConfig.h +F27-6=- ..\..\Source\include\portable.h +F27-7=- ..\..\Source\portable\Softune\MB91460\portmacro.h +F27-8=- ..\..\Source\include\task.h +F27-9=- ..\..\Source\include\list.h +F28=12 c 1 SRC\crflash_modified.c +F28-1=- ..\..\Source\include\FreeRTOS.h +F28-2=- ..\..\..\..\..\..\devtools\Softune6\LIB\911\INCLUDE\stddef.h +F28-3=- ..\..\Source\include\projdefs.h +F28-4=- SRC\FreeRTOSConfig.h +F28-5=- ..\..\Source\include\portable.h +F28-6=- ..\..\Source\portable\Softune\MB91460\portmacro.h +F28-7=- SRC\mb91467d.h +F28-8=- ..\..\Source\include\croutine.h +F28-9=- ..\..\Source\include\list.h +F28-10=- ..\..\Source\include\queue.h +F28-11=- ..\Common\include\partest.h +F28-12=- ..\Common\include\crflash.h +F29=0 c 1 SRC\utility\printf-stdarg.c [BUILDMODE-STANDALONE] kernel=1 @@ -446,7 +423,7 @@ LST=MONDEB_INTERNAL\LST\ OPT=MONDEB_INTERNAL\OPT\ [MEMBER-MONDEB_INTERNAL] -F0=30 +F0=29 F1=0 m 1 MONDEB_INTERNAL\ABS\91467d_FreeRTOS.abs F2=0 c 1 ..\..\Source\portable\Softune\MB91460\port.c F3=0 c 1 ..\..\Source\portable\Softune\MB91460\__STD_LIB_sbrk.c @@ -466,17 +443,16 @@ F16=0 c 1 ..\Common\Minimal\flash.c F17=0 c 1 ..\Common\Minimal\flop.c F18=0 c 1 ..\Common\Minimal\GenQTest.c F19=0 c 1 ..\Common\Minimal\integer.c -F20=0 c 1 ..\Common\Minimal\PollQ.c -F21=0 c 1 ..\Common\Minimal\QPeek.c -F22=0 c 1 ..\Common\Minimal\semtest.c -F23=0 c 1 ..\..\Source\portable\MemMang\heap_3.c -F24=0 c 1 ..\..\Source\portable\MemMang\heap_1.c -F25=0 c 1 ..\..\Source\portable\MemMang\heap_2.c -F26=0 c 1 SRC\serial\serial.c -F27=0 c 1 SRC\watchdog\watchdog.c -F28=0 c 1 SRC\utility\taskutility.c -F29=0 c 1 SRC\main.c -F30=0 c 1 SRC\partest\partest.c +F20=0 c 1 ..\Common\Minimal\QPeek.c +F21=0 c 1 ..\Common\Minimal\semtest.c +F22=0 c 1 ..\..\Source\portable\MemMang\heap_3.c +F23=0 c 1 SRC\serial\serial.c +F24=0 c 1 SRC\watchdog\watchdog.c +F25=0 c 1 SRC\utility\taskutility.c +F26=0 c 1 SRC\main.c +F27=0 c 1 SRC\partest\partest.c +F28=0 c 1 SRC\crflash_modified.c +F29=0 c 1 SRC\utility\printf-stdarg.c [BUILDMODE-MONDEB_INTERNAL] kernel=1 diff --git a/Demo/MB91460_Softune/91467d_FreeRTOS.wsp b/Demo/MB91460_Softune/91467d_FreeRTOS.wsp index 7052046af..d5ebf44d9 100644 --- a/Demo/MB91460_Softune/91467d_FreeRTOS.wsp +++ b/Demo/MB91460_Softune/91467d_FreeRTOS.wsp @@ -18,6 +18,5 @@ AutoLoad=1 WSP=C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\MB91460_Softune\ [EditState] -STATE-1=SRC\main.c:11 -Count=1 +Count=0 diff --git a/Demo/MB91460_Softune/SRC/FreeRTOSConfig.h b/Demo/MB91460_Softune/SRC/FreeRTOSConfig.h index 3eee30d06..496f9c337 100644 --- a/Demo/MB91460_Softune/SRC/FreeRTOSConfig.h +++ b/Demo/MB91460_Softune/SRC/FreeRTOSConfig.h @@ -62,7 +62,7 @@ #define configUSE_MUTEXES 1 /* Co-routine definitions. */ -#define configUSE_CO_ROUTINES 0 +#define configUSE_CO_ROUTINES 1 #define configMAX_CO_ROUTINE_PRIORITIES ( 4 ) diff --git a/Demo/MB91460_Softune/SRC/Start91460.asm b/Demo/MB91460_Softune/SRC/Start91460.asm index bf5de40ea..3e758b032 100644 --- a/Demo/MB91460_Softune/SRC/Start91460.asm +++ b/Demo/MB91460_Softune/SRC/Start91460.asm @@ -234,7 +234,7 @@ ; #set STACK_RESERVE ON ; <<< reserve stack area in ; ; this module -#set STACK_SYS_SIZE 2000 ; <<< byte size of System stack +#set STACK_SYS_SIZE 1000 ; <<< byte size of System stack #set STACK_USR_SIZE 4 ; <<< byte size of User stack ; #set STACK_FILL ON ; <<< fills the stack area with pattern diff --git a/Demo/MB91460_Softune/SRC/crflash_modified.c b/Demo/MB91460_Softune/SRC/crflash_modified.c new file mode 100644 index 000000000..908e5f213 --- /dev/null +++ b/Demo/MB91460_Softune/SRC/crflash_modified.c @@ -0,0 +1,230 @@ +/* + FreeRTOS.org V4.7.1 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* + * This demo application file demonstrates the use of queues to pass data + * between co-routines. + * + * N represents the number of 'fixed delay' co-routines that are created and + * is set during initialisation. + * + * N 'fixed delay' co-routines are created that just block for a fixed + * period then post the number of an LED onto a queue. Each such co-routine + * uses a different block period. A single 'flash' co-routine is also created + * that blocks on the same queue, waiting for the number of the next LED it + * should flash. Upon receiving a number it simply toggle the instructed LED + * then blocks on the queue once more. In this manner each LED from LED 0 to + * LED N-1 is caused to flash at a different rate. + * + * The 'fixed delay' co-routines are created with co-routine priority 0. The + * flash co-routine is created with co-routine priority 1. This means that + * the queue should never contain more than a single item. This is because + * posting to the queue will unblock the 'flash' co-routine, and as this has + * a priority greater than the tasks posting to the queue it is guaranteed to + * have emptied the queue and blocked once again before the queue can contain + * any more date. An error is indicated if an attempt to post data to the + * queue fails - indicating that the queue is already full. + * + */ + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "croutine.h" +#include "queue.h" + +/* Demo application includes. */ +#include "partest.h" +#include "crflash.h" + +/* The queue should only need to be of length 1. See the description at the +top of the file. */ +#define crfQUEUE_LENGTH 1 + +#define crfFIXED_DELAY_PRIORITY 0 +#define crfFLASH_PRIORITY 1 + +/* Only one flash co-routine is created so the index is not significant. */ +#define crfFLASH_INDEX 0 + +/* Don't allow more than crfMAX_FLASH_TASKS 'fixed delay' co-routines to be +created. */ +#define crfMAX_FLASH_TASKS 8 + +/* We don't want to block when posting to the queue. */ +#define crfPOSTING_BLOCK_TIME 0 + +/* Added by MPi, this define is added in order to make the vParTestToggleLED() +work. This basically differentiates the PDR09 from PDR00. 7-seg display LEDs connected +to PDR09 (SEG1) are used by the prvFlashCoRoutine() and PDR00 (SEG2) are used by tasks. */ +#define PDR00_Offset 8 + +/* + * The 'fixed delay' co-routine as described at the top of the file. + */ +static void prvFixedDelayCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex ); + +/* + * The 'flash' co-routine as described at the top of the file. + */ +static void prvFlashCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex ); + +/* The queue used to pass data between the 'fixed delay' co-routines and the +'flash' co-routine. */ +static xQueueHandle xFlashQueue; + +/* This will be set to pdFALSE if we detect an error. */ +static unsigned portBASE_TYPE uxCoRoutineFlashStatus = pdPASS; + +/*-----------------------------------------------------------*/ + +/* + * See the header file for details. + */ +void vStartFlashCoRoutines( unsigned portBASE_TYPE uxNumberToCreate ) +{ +unsigned portBASE_TYPE uxIndex; + + if( uxNumberToCreate > crfMAX_FLASH_TASKS ) + { + uxNumberToCreate = crfMAX_FLASH_TASKS; + } + + /* Create the queue used to pass data between the co-routines. */ + xFlashQueue = xQueueCreate( crfQUEUE_LENGTH, sizeof( unsigned portBASE_TYPE ) ); + + if( xFlashQueue ) + { + /* Create uxNumberToCreate 'fixed delay' co-routines. */ + for( uxIndex = 0; uxIndex < uxNumberToCreate; uxIndex++ ) + { + xCoRoutineCreate( prvFixedDelayCoRoutine, crfFIXED_DELAY_PRIORITY, uxIndex ); + } + + /* Create the 'flash' co-routine. */ + xCoRoutineCreate( prvFlashCoRoutine, crfFLASH_PRIORITY, crfFLASH_INDEX ); + } +} +/*-----------------------------------------------------------*/ + +static void prvFixedDelayCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex ) +{ +/* Even though this is a co-routine the xResult variable does not need to be +static as we do not need it to maintain its state between blocks. */ +signed portBASE_TYPE xResult; +/* The uxIndex parameter of the co-routine function is used as an index into +the xFlashRates array to obtain the delay period to use. */ +static const portTickType xFlashRates[ crfMAX_FLASH_TASKS ] = { 150 / portTICK_RATE_MS, + 200 / portTICK_RATE_MS, + 250 / portTICK_RATE_MS, + 300 / portTICK_RATE_MS, + 350 / portTICK_RATE_MS, + 400 / portTICK_RATE_MS, + 450 / portTICK_RATE_MS, + 500 / portTICK_RATE_MS }; + + /* Co-routines MUST start with a call to crSTART. */ + crSTART( xHandle ); + + for( ;; ) + { + /* Post our uxIndex value onto the queue. This is used as the LED to + flash. */ + crQUEUE_SEND( xHandle, xFlashQueue, ( void * ) &uxIndex, crfPOSTING_BLOCK_TIME, &xResult ); + + if( xResult != pdPASS ) + { + /* For the reasons stated at the top of the file we should always + find that we can post to the queue. If we could not then an error + has occurred. */ + uxCoRoutineFlashStatus = pdFAIL; + } + + crDELAY( xHandle, xFlashRates[ uxIndex ] ); + } + + /* Co-routines MUST end with a call to crEND. */ + crEND(); +} +/*-----------------------------------------------------------*/ + +static void prvFlashCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex ) +{ +/* Even though this is a co-routine the variable do not need to be +static as we do not need it to maintain their state between blocks. */ +signed portBASE_TYPE xResult; +unsigned portBASE_TYPE uxLEDToFlash; + + /* Co-routines MUST start with a call to crSTART. */ + crSTART( xHandle ); + ( void ) uxIndex; + + for( ;; ) + { + /* Block to wait for the number of the LED to flash. */ + crQUEUE_RECEIVE( xHandle, xFlashQueue, &uxLEDToFlash, portMAX_DELAY, &xResult ); + + if( xResult != pdPASS ) + { + /* We would not expect to wake unless we received something. */ + uxCoRoutineFlashStatus = pdFAIL; + } + else + { + /* We received the number of an LED to flash - flash it! */ + /* Added by MPi, PDR00_Offset is added in order to make the + vParTestToggleLED() work. */ + vParTestToggleLED( uxLEDToFlash + PDR00_Offset ); + } + } + + /* Co-routines MUST end with a call to crEND. */ + crEND(); +} +/*-----------------------------------------------------------*/ + +portBASE_TYPE xAreFlashCoRoutinesStillRunning( void ) +{ + /* Return pdPASS or pdFAIL depending on whether an error has been detected + or not. */ + return uxCoRoutineFlashStatus; +} + diff --git a/Demo/MB91460_Softune/SRC/main.c b/Demo/MB91460_Softune/SRC/main.c index 9ec92d97c..ddb26fdb5 100644 --- a/Demo/MB91460_Softune/SRC/main.c +++ b/Demo/MB91460_Softune/SRC/main.c @@ -83,7 +83,6 @@ #include "flash.h" #include "integer.h" #include "comtest2.h" -#include "PollQ.h" #include "semtest.h" #include "BlockQ.h" #include "dynamic.h" @@ -94,14 +93,14 @@ #include "death.h" #include "taskutility.h" #include "partest.h" +#include "crflash.h" /* Demo task priorities. */ #define mainWATCHDOG_TASK_PRIORITY ( tskIDLE_PRIORITY + 5 ) #define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 ) -#define mainUTILITY_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) +#define mainUTILITY_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 3 ) #define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 ) -#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 ) #define mainQUEUE_BLOCK_PRIORITY ( tskIDLE_PRIORITY + 2 ) #define mainDEATH_PRIORITY ( tskIDLE_PRIORITY + 1 ) #define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) @@ -130,6 +129,9 @@ LCD represent LEDs]*/ /* The number of interrupt levels to use. */ #define mainINTERRUPT_LEVELS ( 31 ) +/* The number of 'flash' co-routines to create - each toggles a different LED. */ +#define mainNUM_FLASH_CO_ROUTINES ( 8 ) + /*---------------------------------------------------------------------------*/ /* @@ -176,7 +178,6 @@ void main(void) vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); vStartIntegerMathTasks( tskIDLE_PRIORITY ); vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED - 1 ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); vStartBlockingQueueTasks ( mainQUEUE_BLOCK_PRIORITY ); vStartDynamicPriorityTasks(); @@ -184,6 +185,7 @@ void main(void) vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY ); vStartQueuePeekTasks(); vCreateBlockTimeTasks(); + vStartFlashCoRoutines( mainNUM_FLASH_CO_ROUTINES ); /* Start the 'Check' task which is defined in this file. */ xTaskCreate( prvErrorChecks, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); @@ -264,11 +266,6 @@ portBASE_TYPE lReturn = pdPASS; lReturn = pdFAIL; } - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - lReturn = pdFAIL; - } - if( xAreComTestTasksStillRunning() != pdTRUE ) { lReturn = pdFAIL; @@ -353,6 +350,8 @@ static void prvSetupHardware( void ) #if WATCHDOG == WTC_IN_IDLE Kick_Watchdog(); #endif + + vCoRoutineSchedule(); } #else #if WATCHDOG == WTC_IN_IDLE diff --git a/Demo/MB91460_Softune/SRC/partest/partest.c b/Demo/MB91460_Softune/SRC/partest/partest.c index 852e3ff57..65ce8ee7e 100644 --- a/Demo/MB91460_Softune/SRC/partest/partest.c +++ b/Demo/MB91460_Softune/SRC/partest/partest.c @@ -48,14 +48,25 @@ #define partstNUM_LEDs 8 static unsigned portCHAR sState[ 2 ] = { 0xFF, 0xFF }; +static unsigned portSHORT sState1[ partstNUM_LEDs ] = { pdFALSE }; /*-----------------------------------------------------------*/ void vParTestInitialise( void ) { +<<<<<<< .mine + /* Set port for LED outputs. */ + DDR16 = 0xFF; + DDR25=0xFF; + + /* Start with LEDs off. */ + PDR16 = 0x00; + PDR25 = 0x00; +======= DDR00 = 0xFF; PDR00 = 0xFF; DDR09 = 0xFF; PDR09 = 0xFF; +>>>>>>> .r192 } /*-----------------------------------------------------------*/ @@ -63,11 +74,30 @@ void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) { if( uxLED < partstNUM_LEDs ) { +<<<<<<< .mine + taskENTER_CRITICAL(); +======= vTaskSuspendAll(); /* Toggle the state of the single genuine on board LED. */ if( ( sState[ 0 ] & ( ( unsigned portCHAR ) ( 1 << uxLED ) ) ) == 0 ) +>>>>>>> .r192 { +<<<<<<< .mine + /* Toggle the state of the single genuine on board LED. */ + if( sState[ uxLED ]) + { + PDR25 |= ( 1 << uxLED ); + } + else + { + PDR25 &= ~( 1 << uxLED ); + } + + sState[ uxLED ] = !( sState[ uxLED ] ); + } + taskEXIT_CRITICAL(); +======= PDR09 |= ( 1 << uxLED ); sState[ 0 ] |= ( 1 << uxLED ); } @@ -78,7 +108,33 @@ void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) } xTaskResumeAll(); +>>>>>>> .r192 + } +<<<<<<< .mine + else + { + uxLED -= partstNUM_LEDs; + + if( uxLED < partstNUM_LEDs ) + { + taskENTER_CRITICAL(); + { + /* Toggle the state of the single genuine on board LED. */ + if( sState1[uxLED]) + { + PDR16 |= ( 1 << uxLED ); + } + else + { + PDR16 &= ~( 1 << uxLED ); + } + + sState1[ uxLED ] = !( sState1[ uxLED ] ); + } + taskEXIT_CRITICAL(); + } } +======= else { vTaskSuspendAll(); @@ -98,6 +154,7 @@ void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) xTaskResumeAll(); } +>>>>>>> .r192 } /*-----------------------------------------------------------*/ @@ -122,6 +179,30 @@ void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) xTaskResumeAll(); } +<<<<<<< .mine + else + { + uxLED -= partstNUM_LEDs; + + if( uxLED < partstNUM_LEDs ) + { + taskENTER_CRITICAL(); + { + if( xValue ) + { + PDR16 |= (1 << uxLED); + sState1[uxLED] = 1; + } + else + { + PDR16 &= ~(1 << uxLED); + sState1[uxLED] = 0; + } + } + taskEXIT_CRITICAL(); + } + } +======= else { vTaskSuspendAll(); @@ -140,5 +221,6 @@ void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) xTaskResumeAll(); } +>>>>>>> .r192 } diff --git a/Demo/MB91460_Softune/SRC/utility/printf-stdarg.c b/Demo/MB91460_Softune/SRC/utility/printf-stdarg.c new file mode 100644 index 000000000..8eb6da335 --- /dev/null +++ b/Demo/MB91460_Softune/SRC/utility/printf-stdarg.c @@ -0,0 +1,286 @@ +/* + Copyright 2001, 2002 Georges Menie (www.menie.org) + stdarg version contributed by Christian Ettinger + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* + putchar is the only external dependency for this file, + if you have a working putchar, leave it commented out. + If not, uncomment the define below and + replace outbyte(c) by your own function call. + +#define putchar(c) outbyte(c) +*/ + +#include + +static void printchar(char **str, int c) +{ + extern int putchar(int c); + + if (str) { + **str = c; + ++(*str); + } + else (void)putchar(c); +} + +#define PAD_RIGHT 1 +#define PAD_ZERO 2 + +static int prints(char **out, const char *string, int width, int pad) +{ + register int pc = 0, padchar = ' '; + + if (width > 0) { + register int len = 0; + register const char *ptr; + for (ptr = string; *ptr; ++ptr) ++len; + if (len >= width) width = 0; + else width -= len; + if (pad & PAD_ZERO) padchar = '0'; + } + if (!(pad & PAD_RIGHT)) { + for ( ; width > 0; --width) { + printchar (out, padchar); + ++pc; + } + } + for ( ; *string ; ++string) { + printchar (out, *string); + ++pc; + } + for ( ; width > 0; --width) { + printchar (out, padchar); + ++pc; + } + + return pc; +} + +/* the following should be enough for 32 bit int */ +#define PRINT_BUF_LEN 12 + +static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) +{ + char print_buf[PRINT_BUF_LEN]; + register char *s; + register int t, neg = 0, pc = 0; + register unsigned int u = i; + + if (i == 0) { + print_buf[0] = '0'; + print_buf[1] = '\0'; + return prints (out, print_buf, width, pad); + } + + if (sg && b == 10 && i < 0) { + neg = 1; + u = -i; + } + + s = print_buf + PRINT_BUF_LEN-1; + *s = '\0'; + + while (u) { + t = u % b; + if( t >= 10 ) + t += letbase - '0' - 10; + *--s = t + '0'; + u /= b; + } + + if (neg) { + if( width && (pad & PAD_ZERO) ) { + printchar (out, '-'); + ++pc; + --width; + } + else { + *--s = '-'; + } + } + + return pc + prints (out, s, width, pad); +} + +static int print( char **out, const char *format, va_list args ) +{ + register int width, pad; + register int pc = 0; + char scr[2]; + + for (; *format != 0; ++format) { + if (*format == '%') { + ++format; + width = pad = 0; + if (*format == '\0') break; + if (*format == '%') goto out; + if (*format == '-') { + ++format; + pad = PAD_RIGHT; + } + while (*format == '0') { + ++format; + pad |= PAD_ZERO; + } + for ( ; *format >= '0' && *format <= '9'; ++format) { + width *= 10; + width += *format - '0'; + } + if( *format == 's' ) { + register char *s = (char *)va_arg( args, int ); + pc += prints (out, s?s:"(null)", width, pad); + continue; + } + if( *format == 'd' ) { + pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); + continue; + } + if( *format == 'x' ) { + pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); + continue; + } + if( *format == 'X' ) { + pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); + continue; + } + if( *format == 'u' ) { + pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); + continue; + } + if( *format == 'c' ) { + /* char are converted to int then pushed on the stack */ + scr[0] = (char)va_arg( args, int ); + scr[1] = '\0'; + pc += prints (out, scr, width, pad); + continue; + } + } + else { + out: + printchar (out, *format); + ++pc; + } + } + if (out) **out = '\0'; + va_end( args ); + return pc; +} + +int printf(const char *format, ...) +{ + va_list args; + + va_start( args, format ); + return print( 0, format, args ); +} + +int sprintf(char *out, const char *format, ...) +{ + va_list args; + + va_start( args, format ); + return print( &out, format, args ); +} + + +int snprintf( char *buf, unsigned int count, const char *format, ... ) +{ + va_list args; + + ( void ) count; + + va_start( args, format ); + return print( &buf, format, args ); +} + + +#ifdef TEST_PRINTF +int main(void) +{ + char *ptr = "Hello world!"; + char *np = 0; + int i = 5; + unsigned int bs = sizeof(int)*8; + int mi; + char buf[80]; + + mi = (1 << (bs-1)) + 1; + printf("%s\n", ptr); + printf("printf test\n"); + printf("%s is null pointer\n", np); + printf("%d = 5\n", i); + printf("%d = - max int\n", mi); + printf("char %c = 'a'\n", 'a'); + printf("hex %x = ff\n", 0xff); + printf("hex %02x = 00\n", 0); + printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); + printf("%d %s(s)%", 0, "message"); + printf("\n"); + printf("%d %s(s) with %%\n", 0, "message"); + sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); + sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); + sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); + sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); + sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); + sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); + sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); + sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); + + return 0; +} + +/* + * if you compile this file with + * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c + * you will get a normal warning: + * printf.c:214: warning: spurious trailing `%' in format + * this line is testing an invalid % at the end of the format string. + * + * this should display (on 32bit int machine) : + * + * Hello world! + * printf test + * (null) is null pointer + * 5 = 5 + * -2147483647 = - max int + * char a = 'a' + * hex ff = ff + * hex 00 = 00 + * signed -3 = unsigned 4294967293 = hex fffffffd + * 0 message(s) + * 0 message(s) with % + * justif: "left " + * justif: " right" + * 3: 0003 zero padded + * 3: 3 left justif. + * 3: 3 right justif. + * -3: -003 zero padded + * -3: -3 left justif. + * -3: -3 right justif. + */ + +#endif + + +/* To keep linker happy. */ +int write( int i, char* c, int n) +{ + return 0; +} + diff --git a/Demo/MB91460_Softune/SRC/utility/taskutility.c b/Demo/MB91460_Softune/SRC/utility/taskutility.c index b23f633f2..3a756ca36 100644 --- a/Demo/MB91460_Softune/SRC/utility/taskutility.c +++ b/Demo/MB91460_Softune/SRC/utility/taskutility.c @@ -10,7 +10,7 @@ #include "vectors.h" #include "FreeRTOS.h" #include "task.h" -#include "semphr.h" +#include "queue.h" static void vUART5Task( void *pvParameters ); @@ -18,7 +18,8 @@ const char ASCII[] = "0123456789ABCDEF"; void vInitUart5( void ); -xSemaphoreHandle xSemaphore; + +static xQueueHandle xQueue; void vInitUart5( void ) { @@ -65,7 +66,7 @@ void Puts5( const char *Name5 ) /* Puts a String to UART */ volatile portSHORT i, len; len = strlen( Name5 ); - for( i = 0; i < strlen(Name5); i++ ) /* go through string */ + for( i = 0; i < len; i++ ) /* go through string */ { if( Name5[i] == 10 ) { @@ -124,25 +125,26 @@ void Putdec5( unsigned long x, int digits ) void vUtilityStartTraceTask( unsigned portBASE_TYPE uxPriority ) { - portENTER_CRITICAL(); - vInitUart5(); - portENTER_CRITICAL(); - - vSemaphoreCreateBinary( xSemaphore ); + xQueue = xQueueCreate( 5, sizeof( char ) ); - if( xSemaphore != NULL ) + if( xQueue != NULL ) { - xTaskCreate( vUART5Task, (signed portCHAR *) "UART4", ( unsigned portSHORT ) 2048, ( void * ) NULL, uxPriority, NULL ); + portENTER_CRITICAL(); + vInitUart5(); + portENTER_CRITICAL(); + + xTaskCreate( vUART5Task, (signed portCHAR *) "UART5", configMINIMAL_STACK_SIZE * 2, ( void * ) NULL, uxPriority, NULL ); } } static void vUART5Task( void *pvParameters ) { - portCHAR tasklist_buff[512], trace_buff[512]; + static portCHAR buff[ 900 ] = { 0 }; unsigned portLONG trace_len, j; unsigned portCHAR ch; + SSR05_RIE = 1; Puts5( "\n -------------MB91467D FreeRTOS DEMO Task List and Trace Utility----------- \n" ); for( ;; ) @@ -153,28 +155,24 @@ static void vUART5Task( void *pvParameters ) Puts5( "\n\r2: To call vTaskStartTrace() and to display trace results once the trace ends" ); - SSR05_RIE = 1; - /* Block on the semaphore. The UART interrupt will use the semaphore to wake this task when required. */ - xSemaphoreTake( xSemaphore, portMAX_DELAY ); - - ch = Getch5(); + xQueueReceive( xQueue, &ch, portMAX_DELAY ); switch( ch ) { case '1': - vTaskList( (signed char *) tasklist_buff ); + vTaskList( (signed char *) buff ); Puts5( "\n\rThe current task list is as follows...." ); Puts5( "\n\r----------------------------------------------" ); Puts5( "\n\rName State Priority Stack Number" ); Puts5( "\n\r----------------------------------------------" ); - Puts5( tasklist_buff ); + Puts5( buff ); Puts5( "\r----------------------------------------------" ); break; case '2': - vTaskStartTrace( (signed char *) trace_buff, 512 ); + vTaskStartTrace( (signed char *) buff, 512 ); Puts5( "\n\rThe trace started!!" ); vTaskDelay( (portTickType) 450 ); trace_len = ulTaskEndTrace(); @@ -185,7 +183,7 @@ static void vUART5Task( void *pvParameters ) Puts5( "\n\r--------------------------------------------------------\n\r" ); for( j = 0; j < trace_len; j++ ) { - Puthex5( trace_buff[j], 2 ); + Puthex5( buff[j], 2 ); if( j % 4 == 3 ) { Puts5( " | " ); @@ -210,6 +208,8 @@ static void vUART5Task( void *pvParameters ) __interrupt void UART5_RxISR( void ) { - SSR05_RIE = 0; - xSemaphoreGiveFromISR( xSemaphore, pdFALSE ); +unsigned portCHAR ch; + + ch = RDR05; + xQueueSendFromISR( xQueue, &ch, pdFALSE ); } diff --git a/Demo/MB91460_Softune/STANDALONE/Mondeb_57K6_com1.sup b/Demo/MB91460_Softune/STANDALONE/Mondeb_57K6_com1.sup index 9af36c8af..f5de1885c 100644 --- a/Demo/MB91460_Softune/STANDALONE/Mondeb_57K6_com1.sup +++ b/Demo/MB91460_Softune/STANDALONE/Mondeb_57K6_com1.sup @@ -25,12 +25,12 @@ Ondemand Load Condition=Disable Batch File= [Window] Flag=Enable -AssemblySize=325 90 1151 598 +AssemblySize=474 149 1300 657 AssemblyState=0 AssemblyFGColor=0 0 255 CommandSize=132 138 958 562 CommandState=0 -Assembly Address=H'00042412 +Assembly Address=H'000429FA Memory Address=H'0002F038 Memory Mode=H'00000003 Memory Ascii=H'00000001 @@ -96,18 +96,18 @@ Register Select34=H'00000022 Register Select35=H'00000027 MemorySize=66 69 892 493 MemoryState=0 -Layer0=1005, -Layer1=1004, -Layer2=2000,..\..\Source\tasks.c -Source0Name=..\..\Source\tasks.c -Source0Size=204 103 1030 527 +Layer0=1004, +Layer1=1003, +Layer2=1002, +Source0Name=SRC\main.c +Source0Size=16 54 1024 433 Source0State=0 -Source0Line=46C +Source0Line=A5 Source0Mode=2 -Source1Name=..\..\Source\portable\Softune\MB91460\port.c -Source1Size=310 3 1136 427 +Source1Name=..\..\Source\tasks.c +Source1Size=110 115 1009 480 Source1State=0 -Source1Line=DB +Source1Line=4D8 Source1Mode=2 SymbolSize=0 0 0 0 SymbolState=0 @@ -120,40 +120,18 @@ Memory Mark Color3=0 255 0 Memory Mark Color4=0 255 255 Memory Mark Color5=0 128 192 Memory Mark Color6=255 128 64 -Layer3=1006, -Layer4=1003, -Layer5=2000,..\..\Source\portable\Softune\MB91460\port.c -Layer6=2000,SRC\watchdog\watchdog.c -Layer7=1002, +Layer3=2000,SRC\main.c +Layer4=2000,..\..\Source\tasks.c +Layer5=2000,..\Common\Minimal\dynamic.c LocalSize=44 46 870 470 LocalState=0 WatchSize=0 0 826 424 WatchState=0 -Source2Name=SRC\main.c -Source2Size=66 69 1074 448 +Source2Name=..\Common\Minimal\dynamic.c +Source2Size=132 138 1031 503 Source2State=0 -Source2Line=124 +Source2Line=15D Source2Mode=2 -Source3Name=SRC\watchdog\watchdog.c -Source3Size=44 46 998 421 -Source3State=0 -Source3Line=1C -Source3Mode=2 -Layer8=2000,SRC\Start91460.asm -Watch Variable0=[ulCriticalNesting],82030000,1,-1 -1 -Layer9=1007, -Layer10=2000,SRC\main.c -Source4Name=SRC\Start91460.asm -Source4Size=198 207 1086 679 -Source4State=0 -Source4Line=913 -Source4Mode=2 -Layer11=2000,SRC\vectors.c -Source5Name=SRC\vectors.c -Source5Size=22 23 859 518 -Source5State=2 -Source5Line=49 -Source5Mode=2 [Path Environment] Flag=Enable Source= -- 2.39.5