From ebffeb7ae4822db7adf317bbe408d0ddcd6dd197 Mon Sep 17 00:00:00 2001 From: Richard Barry Date: Sun, 17 Jan 2010 13:14:23 +0000 Subject: [PATCH] Added flop support. --- Demo/SuperH_SH7216_Renesas/RTOSDemo.tws | 26 +- .../RTOSDemo/FreeRTOSConfig.h | 6 +- .../RTOSDemo/ParTest/ParTest.c | 10 +- .../RTOSDemo/RTOSDemo.hwp | 52 +-- .../RTOSDemo/RTOSDemo.nav | Bin 64478 -> 66395 bytes .../SessionSH7216_E10A-USB_SYSTEM__SH.hsf | 109 ++--- Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c | 372 ++++++++++++++++++ Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c | 8 +- Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c | 25 +- .../RTOSDemo/regtest.src | 226 ++++++++++- Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c | 4 +- 11 files changed, 706 insertions(+), 132 deletions(-) create mode 100644 Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws b/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws index c2e6d55ea..b658fb4ff 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo.tws @@ -7,25 +7,27 @@ [GENERAL_DATA] [BREAKPOINTS] [OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\FreeRTOSConfig.h" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portmacro.h" +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" [WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" 132 132 860 400 0 6 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" 0 0 904 312 0 7 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\FreeRTOSConfig.h" 66 66 838 434 0 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" 0 0 1044 659 0 0 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" -4 -23 1044 471 1 8 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" 198 198 838 434 0 1 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" 0 0 838 434 0 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portmacro.h" 88 88 838 434 0 4 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" 110 110 860 400 0 5 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\FreeRTOSConfig.h" 66 66 729 433 0 6 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" 132 132 729 433 0 7 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" -4 -23 935 658 1 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" 198 198 596 433 0 5 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" 176 176 596 433 0 4 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" 0 0 1316 673 0 1 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" 154 154 1132 403 0 3 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portmacro.h" 66 66 856 399 0 0 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" 176 176 729 433 0 8 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" 198 198 729 433 0 9 [LOADED_PROJECTS] "RTOSDemo" [END] diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h index b94ab3590..d6de0ff89 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h @@ -87,8 +87,9 @@ #define configQUEUE_REGISTRY_SIZE 0 #define configGENERATE_RUN_TIME_STATS 0 #define configUSE_MALLOC_FAILED_HOOK 1 +#define configUSE_APPLICATION_TASK_TAG 1 /* Must be set to one for floating point support in this port. */ -#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 ) +#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 ) #define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) /* Set the following definitions to 1 to include the API function, or zero @@ -105,7 +106,4 @@ to exclude the API function. */ #define INCLUDE_xTaskGetSchedulerState 1 -#define configKERNEL_INTERRUPT_PRIORITY ( 1 ) -#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 0xff ) - #endif /* FREERTOS_CONFIG_H */ diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c index 6d3d74097..39ff50ed0 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c @@ -71,13 +71,13 @@ static const unsigned short usLEDMasks[ partestNUM_LEDS ] = { ( 1 << 9 ), ( 1 << void vParTestInitialise( void ) { /* Select port functions for PE9 to PE15. */ - PFC.PECRL3.WORD &= ~partestALL_LEDS; + PFC.PECRL3.WORD &= ( unsigned short ) ~partestALL_LEDS; /* Turn all LEDs off. */ - PE.DR.WORD &= ~partestALL_LEDS; + PE.DR.WORD &= ( unsigned short ) ~partestALL_LEDS; /* Set all LEDs to output. */ - PFC.PEIORL.WORD |= partestALL_LEDS; + PFC.PEIORL.WORD |= ( unsigned short ) partestALL_LEDS; } /*-----------------------------------------------------------*/ @@ -99,7 +99,7 @@ void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue ) /* Turn the LED off. */ taskENTER_CRITICAL(); { - PE.DR.WORD &= ~usLEDMasks[ uxLED ]; + PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ]; } taskEXIT_CRITICAL(); } @@ -115,7 +115,7 @@ void vParTestToggleLED( unsigned portBASE_TYPE uxLED ) { if( ( PE.DR.WORD & usLEDMasks[ uxLED ] ) != 0x00 ) { - PE.DR.WORD &= ~usLEDMasks[ uxLED ]; + PE.DR.WORD &= ( unsigned short ) ~usLEDMasks[ uxLED ]; } else { diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp index a503edb08..60e57cf51 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp @@ -129,6 +129,7 @@ "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Tasks" 2 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "User" "C source file" 2 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "User" "C source file" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "User" "C source file|Standard Demo Tasks" 2 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "User" "C source file" 2 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "User" "C source file" 2 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "User" "Assembly source file" 2 @@ -153,36 +154,37 @@ "SessionSH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\SessionSH7216_E10A-USB_SYSTEM__SH.hsf" 0 [GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH] [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas OptLinker] -"Single Shot" "08cd3a35ef59ac10" 4 +"Single Shot" "019be9f9fe69ac10" 4 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH Assembler] "Assembly source file" "05db08d6f178ac10" 3 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "0fd8e3b27059ac10" 3 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "0cc802940e29ac10" 3 "Linkage symbol file" "05db08d6f178ac10" 3 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Compiler] -"C source file" "0deaf32ba059ac10" 2 -"C++ source file" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0cf7e835ef59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "00a9f52d4f59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0b5de7fadf59ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0deaf32ba059ac10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0deaf32ba059ac10" 2 +"C source file" "0ee0a3846779ac10" 2 +"C++ source file" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0ee0a3846779ac10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0ee0a3846779ac10" 2 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Library Generator] "Single Shot" "05db08d6f178ac10" 1 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH] @@ -191,7 +193,7 @@ " 3 "[V|VERSION|6] [S|FORM|STYPE] [S|BYTE_COUNT_VALUE|FF] [B|DEBUG|1] [S|ROM|(D,R)] [S|CRC|NONE|00000000] [B|LIST|1] [S|LIST|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|SHOW|METHODCUSTOM|] [S|OUTPUT|^"$(CONFIGDIR)\$(PROJECTNAME).mot^"] [I|SPACE|^"FF^"] [B|OPTIMIZE|0] [I|CACHESIZE|000000008] [I|CACHELINE|000000020] [S|START|DVECTTBL,DINTTBL(00)|PResetPRG,PIntPRG(0800)|P,C,C$BSEC,C$DSEC,D(01000)|B,R(0FFF80000)|S(0FFFBFC00)] [B|SKIPDEPENDENCY|1] " 4 -"[V|VERSION|7] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\Common\include^"] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|ALIGN4|ALL] [S|ASSEMBLY|^"[V|VERSION|1]] [S|OUTPUTPATH|^"^"$(CONFIGDIR)\$(FILELEAF).obj^"^"]] [S|LITERAL|POOL|BRANCH|JUMP|RETURN]] [S|DISPSIZE|12]] [I|TAB|8]] [B|CHGINCPATH|1]] [S|CPU|SH2AFPU]] [S|ENDIAN|BIG]] [S|ROUND|NEAREST]] [B|DENORMALIZE|0]]^"] [B|TBR|0] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|MXGEN_MEM0|00000000] [S|MXGEN_MEM1|00000000] [B|LIST|0] [B|OPTIMIZE|0] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|CHGINCPATH|1] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] +"[V|VERSION|7] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\Common\include^"] [B|MESSAGE|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [B|DEBUG|1] [S|ALIGN4|ALL] [S|ASSEMBLY|^"[V|VERSION|1]] [S|OUTPUTPATH|^"^"$(CONFIGDIR)\$(FILELEAF).obj^"^"]] [S|LITERAL|POOL|BRANCH|JUMP|RETURN]] [S|DISPSIZE|12]] [I|TAB|8]] [B|CHGINCPATH|1]] [S|CPU|SH2AFPU]] [S|ENDIAN|BIG]] [S|ROUND|NEAREST]] [B|DENORMALIZE|0]]^"] [B|TBR|0] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|MXGEN_MEM0|00000000] [S|MXGEN_MEM1|00000000] [B|LIST|0] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|MISRA2004_CHECK_RULE|ALL] [S|MISRA2004_RULE|1.1|3.4|4.1|5.2|5.3|5.4|5.5|5.6|5.7|6.1|6.2|6.3|6.4|6.5|7.1|8.1|8.2|8.3|8.5|8.6|8.7|8.8|8.11|8.12|9.2|9.3|10.1|10.2|10.3|10.4|10.5|10.6|11.1|11.2|11.3|11.4|11.5|12.1|12.2|12.3|12.4|12.5|12.6|12.7|12.8|12.9|12.10|12.11|12.12|12.13|13.1|13.2|13.3|13.4|13.7|14.1|14.2|14.3|14.4|14.5|14.6|14.7|14.8|14.9|14.10|15.1|15.2|15.3|15.4|15.5|16.1|16.2|16.3|16.4|16.5|16.6|16.8|16.9|17.3|17.4|17.5|17.6|18.1|18.2|18.4|19.1|20.2|20.4|20.5|20.7|20.8|20.9|20.10|20.11|20.12] [S|MISRA1998_CHECK_RULE|ALL] [S|MISRA1998_RULE|1|5|8|12|13|14|17|18|19|20|21|22|24|28|29|31|32|33|34|35|36|37|38|39|40|42|43|44|45|46|48|49|50|51|53|54|55|56|57|58|59|60|61|62|63|64|65|68|69|70|71|72|73|74|75|76|77|78|79|80|82|83|84|85|99|101|102|103|104|105|106|108|110|111|112|113|115|118|119|121|122|123|124|125|126|127] [S|MISRA_GROUP_FILE_PATH|^"$(PROJDIR)\$(PROJECTNAME).rde^"] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [S|FPSCR|SAFE] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|CHGINCPATH|1] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1] " 2 "[V|VERSION|7] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [S|ALIGN4|ALL] [B|STUFF|0] [S|BSS_ORDER|DECLARATION] [S|GBR|AUTO] [S|INLINE|DEFAULT] [I|INLINE|20] [S|OPT_RANGE|ALL] [I|MAX_UNROLL|1] [B|SAVE_CONT_REG|1] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|SKIPDEPENDENCY|1] " 1 diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav index 75035418d8106dbbec6304a84e2e608db11b2f8d..2da30e45370ae5f571aa5c3e0e83ce79002c9839 100644 GIT binary patch delta 3951 zcmai04Rq7h73cON{Wne1&$J29w2d&^Qradh1UjdLG;PzSNt&eJkdTG~b)`+)fR$6R zOumjogX~apqo<{rObv9*Vd)zp^Iw|r)0o7 z(sXz#B^%aq?CX?FSdD3^M(E`Ij#Le-!T!_%xRv$AuT!UE!G+^lT1?WYp@nNEjTRcX z7Shbd^BNtFYBUhw$Z?Gp*JtUpS?hz{y)$VB+#b8jWB0ZBIO#J@D%iQE&zcKfu6eU& zV`Y{Ow`XaggCkGTpmh}d{j4nfI8$fKSRah6b2c?Bw|N4t>S*~+srb|M57cIUYDV_@ zEY|vf*WPYxAOoAE)0mLG0&c?ae62W~y(NC0A>20*u{vxPPr&Z<**u;mw=d8@GaIP( zxEca>uczPyo-u3jo4J07V47ZwksKZLbL~LRO%UeVe{wW%8)?Nb#QQ0^@z|l)<1IPy zE%9ug!NA{n|Mwe3?%IE9-&WFe^(-lk4#X zyw+Mjn32YYYqQ%NRkBwn!^Mkv z6Of%5-smQCL$If(FJ$TIUfbKXy5J$e{fcbyWy9ZMXgkvCp*TMS+= zTdu=Yy-xgh`9N%D8jn*w(A6bJ*~g-2#Z~4dNua{~6$X5Ec`_WwM$$ec?G#Qn8*q*_ z19yaUSYy>gF`lW?;vcL^+-X%q1x~iGo|bT?O<3pP9=i@RtMpL9nVauYpu0W}o2oQe zV%6bDjXJq3P-U~16>RM5US0Suv3^8I?F{lBAtoHJD#T)&5-u}4uC%Fev8^zPSf;4o zH1{iKk;HdSGnFAtA3DHH8>Yk9zFskdWJs8HZNPpciBpvSEO$(?r{d*W0Xu68 zP;XDfmuq#n%sv+~s8%g$=}Ch(t2>!5SU77A+kHoLjGkDqK)+ z1{*$DZx*VfMmIP1I5gnk+IfeXA|^SEYGc4xV>d33(wb$X&=dvy9B?#faLTa&cQqu_ zNzR6Ou7RE5QB5tAdpS_-)Zm$h1=!C!>8OcY27aY8W^21wM4lO@C`80 zI9rg0`|S)M4R=5W@K|F4{7&lSqqnhK9`KL^W}wTPfW4jsIC?cAC;sF$ptNXDUky?n zeV(Oq*yp(Euy;1@_9oB)!al6S-hBA8j0;i`uX13XF9QsG2f2M3I3#ImLE4s&&j8Z4 zJS+oHjsf37I(P0Nxd@;2Efk~=^l6!b`T*l9XJ*B3DGW&$~R{tL-Xyk89tO_AjOpiy}*`_i5LeA&#OfOd?9#30GlxQFB#e39fjoFaKE<_AjYUTY-Ti(5#B@d(KQoFqw4kyWMa z%OyF4{UkTxev-p@hU8|1U@45Ck>t-XNOCLgA-Nr2B)Jo(NZw5cb~%1bhZQ@*Cpr~) zN2dy(qKj{WuDe5>X|RN*iygAenvSE^8&aCQ%L7eb`7#^lc6K>dht%*F-W#C{;J>i!zP~E>-fSZ?f-W%UFUN2hh56AbNS$hT`I0~G0=OBCng^6+8P6NQiZf) zaGgPj5dgP^m%&Bszg>$L!k^N*k|uuGKNf>`g?0FoO$qo&Bp)s@7rb*M0pE$tgV`u- z=!S1OcK3!nxLG{7!4M07=TVL|De%(JRyfak*&6nY$m1`Yw(hQ;)zQstv29M`ikUJ#*>)M=1Rw5K+f$3!`>ScN zYp}YfFUS_i-Phe4DHvjFR2%GF-P4uF^+EuAV<=nvYRBPZcw0R9%VY8JmE}tpS7QHz zH!A#<6=mjO@z)RjCeBf5E?Y!xF*P%_CDfKynvG@DjMPlj%BfXQBc73XM&cQXXC$79 zcqZbRh-WItW&5%O`Mr-5A2f?c_vtI+Pf(qexaXfm82((D)E6!Z4VzAWA2YrtVW#9Y zJ;Yi!Y&s<)i4tOb9rKSGFz>*;C_<4=%ShBKG;EBJR})TMT#gT)PgffCcXz%N89NE} z3=(fU_hS%b2=}~Ff;*p33CH(-x#jiIlYotnIu(1*UOfGeQFOoAAY3v`B0;)08GpiZ=g=vj=vc zr0;pl^9ym=D{74Y$gh}wWNPEU7^X}u$Acd&Q9M)sf_=jn?)i8jj=UqF{z~JuQB2oI zNx?%`R{k%_CMkk=-_({k^t@?R^WmwU%>|~<2FFl6U8lJByP_L5jEVl~eqfYnhO|gg Y%1OE?S%%+yJ}NQMKV2rC_(Bu=U%8HDkN^Mx delta 3364 zcmZve3s6+&6@Wd#Ul)^5{qcF{5mBn4yMO+r-z0rV5!1w?kwIl`8 zn$!@*oCaGbHJDDF$(RcECdQ_WVms41PHkc*nMo!Sg~mkFnP_a)P)6IH``>?e;+^iy z-aY3#kN=+k{^#udWS{oRH*xWCu7dKZQ}OBA1vTDKtv3+y*M_~JP(xifQWx^C4*A2) zy)Va$xKNvk-C8?_wKixakh}QFEl+Rg-Wc>WMe3XDS9${fFLX0`N_(}(0ban{Bzkn& zI_amT6&hTZXvb@o1$di&(-JeFQ(mMtF$Fft!k$DCHsGM%j&Blr5~mVfuue7@tTyPv zOzU>&mQ$aw-iw1;98VST-T4-1VA9Nd5l^PtG1;~NkIlEE*JguuX6dtum~XS=2R1AC z7s_0{l1Ss7VXJO1zvSN)u^A@whp?12*AMhKS=? z@%Ux>e7Y%FOU?K`bTX+Y!v;Mh&6Vv1Il%o&UG20`V>+s{u z9r#>U3T$U&Jj)K-m^72M0iKX0>Ba16kbbfFLk$ElGgrjtm!v>YmLzG(AI)$>-e5df zVuzb-tIwBgkCQse%Z-qXnH|~qZlxJ6;-MN5rz_LoZ%nd!)3LkCj*;hd81RZv#OO({ z0iX9;@OEbop7C0Uf?vd|-i5fYOYyZ=iBQaZN7@Y-uChTX(*}JO9H}zFKcbq>8S#1j zPP|`LXsq=5T}yXv>F&(?XVi>&t4wewrnQka7t;=sc0a0_-4Tj+EAbk-pJ+dD!MRKsF0`$!~(iB#HP~ zjR7b9$&ky|zv?w4dn<#Ul@Tv>hf_&V$sC;lgVxtj>Br?&4m`KkAo%?&-H}>P4c@FS zG=!S`it`obOm=*`IuUbg>}aX6;#buI{GC}WH6l#&l^4N$w(4Uw$;Q6kE&WP{3}X3M z8OQ|}_5||L8qmWivG3p`B>h~Lgkr_@2vbTFm*ZGi zkDKY6-QbQ!O-2pTJvPLiS<_7_sh;jipWDLA** z4zKewnoJEJsFzQ3GPp6=B$?CK0}1n&K;-Vm;7E!I+?3(vJWG1zLtjcv=!u1J`W67`>0)bGgZ zYRi}1i*Q@JLtb20Bri~eGm46>Z6=LQgEP%bwZ#!i5A7^{F($S+@j;sj-)UK9E|$~t zF1$%il8r~&jkvkppfPCB)1I&OhG=3Ps&r7>+3-{17RHSf#%G(AhIJu?*nUk^8Z6Tz^O9$|i*OtUr6g$f*Bw_4V+O&=i&AfT@ ziwcwCUGujPUeGA|S^jz}WU#%6t<#nMgxCPD9-eY`JsTFw_B_gF%y;`$)ylw=hClLW=>BE3|2##cxq zU+y>JojC`7eZ`8ycY6|kR=acZ5-s~U9y(iyh4*~A`};P1e0&6tT`$3cj}q|r_k7<9 zFyr2DI#fZCi6qRMEz`<@c=YZn9D5@HFC7=8$=T&voSImrbDgdB@6}?#Y@Rgnzz>Ia W0F>a+e-FmTI8Hne-mU^$-2VV_Wr`dC diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf b/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf index 9baa33cbb..b76f61104 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf @@ -81,7 +81,7 @@ "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "1" -"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "50,396,118" +"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "50,456,35" "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "82" "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_DISPLAYED" "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "1" @@ -115,9 +115,9 @@ "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "pxCurrentTCB, 4, 0, P, Col, Hex, MN" "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "ulnum, 10, 0, P, Col, Hex, N" +"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "*pulFlopBuffer, 10, 0, P, Col, Hex, N" "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," -"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "xnum, 10, 0, P, Col, Hex, N" +"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "*pusTaskCheckVariable, 10, 0, P, Col, Hex, N" "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "xGenericListItem, 11, 0, C0001, Col, Hex, N" "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "xEventListItem, 11, 0, C0001, Col, Hex, N" @@ -242,56 +242,56 @@ "{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION2" "1,0,1,1,1,1,1,0,0,0,0,0,0" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_DENORMAL_MODE" "16777216" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_ROUND_MODE" "768" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_0" "000000000000000C" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_1" "000000000000000C" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_10" "000000000000006F" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_11" "0000000000000070" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_12" "0000000000000071" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_13" "0000000000000072" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_14" "000000000000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_15" "00000000FFF80540" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_16" "0000000000004250" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_0" "0000000000000020" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_1" "00000000000C0001" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_10" "000000000000000A" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_11" "000000000000000B" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_12" "000000000000000C" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_13" "00000000FFE7FFFF" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_14" "0000000000000000" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_15" "00000000FFF869AC" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_16" "0000000000001ABA" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_17" "0000000000000001" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_18" "0000000000000075" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_19" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_2" "000000000000000D" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_2" "0000000000004EB8" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_20" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_21" "0000000000000074" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_22" "0000000000000073" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_21" "0000000000000011" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_22" "0000000000000010" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_23" "000000000000000F" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_24" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_25" "0000000000040001" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_25" "00000000000C1005" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_26" "0000000000000000" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_27" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_28" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_29" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_3" "000000000000000E" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_30" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_31" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_32" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_33" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_34" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_35" "0000000000000000" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_28" "00000000C0000034" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_29" "00000000CCCCCCCD" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_3" "00000000000C0005" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_30" "00000000C0785614" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_31" "000000007AE147AE" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_32" "0000000040DFBC8C" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_33" "00000000CCCCCCCD" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_34" "00000000BF8889CD" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_35" "00000000574CE48D" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_36" "0000000000000000" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_37" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_38" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_39" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_4" "000000000000000F" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_40" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_41" "0000000000000000" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_38" "00000000C0000034" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_39" "000000006DC5D639" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_4" "00000000FFF88166" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_40" "000000003F50624D" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_41" "00000000D2F1A9FC" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_42" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_43" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_44" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_45" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_46" "0000000000000000" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_43" "C0000034CCCCCCCD" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_44" "C07856147AE147AE" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_45" "40DFBC8CCCCCCCCD" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_46" "BF8889CD574CE48D" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_47" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_48" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_49" "0000000000000000" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_5" "0000000000000010" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_6" "0000000000000011" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_7" "0000000000000012" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_8" "0000000000000013" -"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_9" "000000000000006E" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_48" "C00000346DC5D639" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_49" "3F50624DD2F1A9FC" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_5" "0000000000041005" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_6" "0000000000080000" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_7" "0000000000040005" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_8" "0000000000000008" +"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_9" "0000000000000009" "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_COUNT" "50" "{D595F9C0-EF22-11D5-B7DB-0000E10B3DA9}EventCtrlViews" "0" "{EEDC9300-6FBE-11D5-8613-00A024591A38}LocalsCtrlViews" "0" @@ -403,16 +403,16 @@ 0 [WINDOW_POSITION_STATE_DATA_VD1] "Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_00000001_CmdLine}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 1 "0.23" 407 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" +"{WK_00000001_CmdLine}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 1 "0.23" 220 0 0 350 200 17 0 "32771|32772|32778|<>|32773|32774|<>|32820|<>|32801|32824" "0.0" "{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -23 892 659 9 0 "" "0.0" "{WK_00000001_EVENT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 292 0 0 350 200 2065 0 "32774|32775|32777|<>|32780|<>" "0.0" -"{WK_00000001_IO}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 3 "0.31" 407 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" +"{WK_00000001_IO}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 3 "0.31" 220 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" "{WK_00000001_MEMORY}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.60" 219 0 0 350 200 2065 0 "42202|42203|42204|42233|<>|42206|42205|42230|42229|42207|<>|42208|42209|42210|49076|42228|42227|<>|42231|42232|42234|42235|<>|42211|<>" "0.0" -"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 2 "0.73" 407 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" -"{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59421 0 0 "1.00" 265 0 0 350 200 18 0 "" "0.0" +"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 2 "0.73" 220 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" +"{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59421 0 0 "1.00" 374 0 0 350 200 18 0 "" "0.0" "{WK_00000001_STACKTRACE}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 219 0 0 350 200 2065 0 "" "0.0" -"{WK_00000001_STATUS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 4 "0.50" 407 0 0 350 200 17 0 "" "0.0" -"{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.27" 407 0 0 350 200 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811|32831" "0.0" +"{WK_00000001_STATUS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 4 "0.50" 220 0 0 350 200 17 0 "" "0.0" +"{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.27" 220 0 0 350 200 18 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811|32831" "0.0" "{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 340 560 340 350 200 18 0 "" "0.0" "{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" "{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" @@ -437,15 +437,16 @@ [WINDOW_POSITION_STATE_DATA_VD3] [WINDOW_POSITION_STATE_DATA_VD4] [WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\FreeRTOSConfig.h" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portmacro.h" +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\FreeRTOSConfig.h" [TARGET_NAME] "SH7216 E10A-USB SYSTEM (SH2A-FPU)" "" 0 [STATUSBAR_STATEINFO_VD1] diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c new file mode 100644 index 000000000..6f0342e14 --- /dev/null +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/flop.c @@ -0,0 +1,372 @@ +/* + FreeRTOS V6.0.2 - Copyright (C) 2010 Real Time Engineers Ltd. + + *************************************************************************** + * * + * If you are: * + * * + * + New to FreeRTOS, * + * + Wanting to learn FreeRTOS or multitasking in general quickly * + * + Looking for basic training, * + * + Wanting to improve your FreeRTOS skills and productivity * + * * + * then take a look at the FreeRTOS eBook * + * * + * "Using the FreeRTOS Real Time Kernel - a Practical Guide" * + * http://www.FreeRTOS.org/Documentation * + * * + * A pdf reference manual is also available. Both are usually delivered * + * to your inbox within 20 minutes to two hours when purchased between 8am * + * and 8pm GMT (although please allow up to 24 hours in case of * + * exceptional circumstances). Thank you for your support! * + * * + *************************************************************************** + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation AND MODIFIED BY the FreeRTOS exception. + ***NOTE*** The exception to the GPL is included to allow you to distribute + a combined work that includes FreeRTOS without being obliged to provide the + source code for proprietary components outside of the FreeRTOS kernel. + FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it + can be viewed here: http://www.freertos.org/a00114.html and also obtained + by writing to Richard Barry, contact details for whom are available on the + FreeRTOS WEB site. + + 1 tab == 4 spaces! + + 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. +*/ + +/* + * Creates eight tasks, each of which loops continuously performing an (emulated) + * floating point calculation. + * + * All the tasks run at the idle priority and never block or yield. This causes + * all eight tasks to time slice with the idle task. Running at the idle priority + * means that these tasks will get pre-empted any time another task is ready to run + * or a time slice occurs. More often than not the pre-emption will occur mid + * calculation, creating a good test of the schedulers context switch mechanism - a + * calculation producing an unexpected result could be a symptom of a corruption in + * the context of a task. + */ + +#include +#include + +/* Scheduler include files. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Demo program include files. */ +#include "flop.h" + +#define mathSTACK_SIZE configMINIMAL_STACK_SIZE +#define mathNUMBER_OF_TASKS ( 8 ) + +/* Four tasks, each of which performs a different floating point calculation. +Each of the four is created twice. */ +static portTASK_FUNCTION_PROTO( vCompetingMathTask1, pvParameters ); +static portTASK_FUNCTION_PROTO( vCompetingMathTask2, pvParameters ); +static portTASK_FUNCTION_PROTO( vCompetingMathTask3, pvParameters ); +static portTASK_FUNCTION_PROTO( vCompetingMathTask4, pvParameters ); + +/* These variables are used to check that all the tasks are still running. If a +task gets a calculation wrong it will +stop incrementing its check variable. */ +static volatile unsigned short usTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 }; + +/*-----------------------------------------------------------*/ + +void vStartMathTasks( unsigned portBASE_TYPE uxPriority ) +{ +xTaskHandle xCreatedTask; + + /* Create one of the floating point tasks... */ + xTaskCreate( vCompetingMathTask1, ( signed char * ) "Math1", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, &xCreatedTask ); + + /* ... then enable floating point support for the created task so its flop + flop registers are maintained in a consistent state. */ + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vCompetingMathTask2, ( signed char * ) "Math2", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vCompetingMathTask3, ( signed char * ) "Math3", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vCompetingMathTask4, ( signed char * ) "Math4", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vCompetingMathTask1, ( signed char * ) "Math5", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vCompetingMathTask2, ( signed char * ) "Math6", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vCompetingMathTask3, ( signed char * ) "Math7", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vCompetingMathTask4, ( signed char * ) "Math8", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); +} +/*-----------------------------------------------------------*/ + +static portTASK_FUNCTION( vCompetingMathTask1, pvParameters ) +{ +volatile double d1, d2, d3, d4; +volatile unsigned short *pusTaskCheckVariable; +volatile double dAnswer; +short sError = pdFALSE; + + d1 = 123.4567; + d2 = 2345.6789; + d3 = -918.222; + + dAnswer = ( d1 + d2 ) * d3; + + /* The variable this task increments to show it is still running is passed in + as the parameter. */ + pusTaskCheckVariable = ( unsigned short * ) pvParameters; + + /* Keep performing a calculation and checking the result against a constant. */ + for(;;) + { + d1 = 123.4567; + d2 = 2345.6789; + d3 = -918.222; + + d4 = ( d1 + d2 ) * d3; + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + + /* If the calculation does not match the expected constant, stop the + increment of the check variable. */ + if( fabs( d4 - dAnswer ) > 0.001 ) + { + sError = pdTRUE; + } + + if( sError == pdFALSE ) + { + /* If the calculation has always been correct, increment the check + variable so we know this task is still running okay. */ + ( *pusTaskCheckVariable )++; + } + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + + } +} +/*-----------------------------------------------------------*/ + +static portTASK_FUNCTION( vCompetingMathTask2, pvParameters ) +{ +volatile double d1, d2, d3, d4; +volatile unsigned short *pusTaskCheckVariable; +volatile double dAnswer; +short sError = pdFALSE; + + d1 = -389.38; + d2 = 32498.2; + d3 = -2.0001; + + dAnswer = ( d1 / d2 ) * d3; + + + /* The variable this task increments to show it is still running is passed in + as the parameter. */ + pusTaskCheckVariable = ( unsigned short * ) pvParameters; + + /* Keep performing a calculation and checking the result against a constant. */ + for( ;; ) + { + d1 = -389.38; + d2 = 32498.2; + d3 = -2.0001; + + d4 = ( d1 / d2 ) * d3; + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + + /* If the calculation does not match the expected constant, stop the + increment of the check variable. */ + if( fabs( d4 - dAnswer ) > 0.001 ) + { + sError = pdTRUE; + } + + if( sError == pdFALSE ) + { + /* If the calculation has always been correct, increment the check + variable so we know + this task is still running okay. */ + ( *pusTaskCheckVariable )++; + } + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + } +} +/*-----------------------------------------------------------*/ + +static portTASK_FUNCTION( vCompetingMathTask3, pvParameters ) +{ +volatile double *pdArray, dTotal1, dTotal2, dDifference; +volatile unsigned short *pusTaskCheckVariable; +const size_t xArraySize = 10; +size_t xPosition; +short sError = pdFALSE; + + /* The variable this task increments to show it is still running is passed in + as the parameter. */ + pusTaskCheckVariable = ( unsigned short * ) pvParameters; + + pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) ); + + /* Keep filling an array, keeping a running total of the values placed in the + array. Then run through the array adding up all the values. If the two totals + do not match, stop the check variable from incrementing. */ + for( ;; ) + { + dTotal1 = 0.0; + dTotal2 = 0.0; + + for( xPosition = 0; xPosition < xArraySize; xPosition++ ) + { + pdArray[ xPosition ] = ( double ) xPosition + 5.5; + dTotal1 += ( double ) xPosition + 5.5; + } + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + + for( xPosition = 0; xPosition < xArraySize; xPosition++ ) + { + dTotal2 += pdArray[ xPosition ]; + } + + dDifference = dTotal1 - dTotal2; + if( fabs( dDifference ) > 0.001 ) + { + sError = pdTRUE; + } + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + + if( sError == pdFALSE ) + { + /* If the calculation has always been correct, increment the check + variable so we know this task is still running okay. */ + ( *pusTaskCheckVariable )++; + } + } +} +/*-----------------------------------------------------------*/ + +static portTASK_FUNCTION( vCompetingMathTask4, pvParameters ) +{ +volatile double *pdArray, dTotal1, dTotal2, dDifference; +volatile unsigned short *pusTaskCheckVariable; +const size_t xArraySize = 10; +size_t xPosition; +short sError = pdFALSE; + + /* The variable this task increments to show it is still running is passed in + as the parameter. */ + pusTaskCheckVariable = ( unsigned short * ) pvParameters; + + pdArray = ( double * ) pvPortMalloc( xArraySize * sizeof( double ) ); + + /* Keep filling an array, keeping a running total of the values placed in the + array. Then run through the array adding up all the values. If the two totals + do not match, stop the check variable from incrementing. */ + for( ;; ) + { + dTotal1 = 0.0; + dTotal2 = 0.0; + + for( xPosition = 0; xPosition < xArraySize; xPosition++ ) + { + pdArray[ xPosition ] = ( double ) xPosition * 12.123; + dTotal1 += ( double ) xPosition * 12.123; + } + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + + for( xPosition = 0; xPosition < xArraySize; xPosition++ ) + { + dTotal2 += pdArray[ xPosition ]; + } + + dDifference = dTotal1 - dTotal2; + if( fabs( dDifference ) > 0.001 ) + { + sError = pdTRUE; + } + + #if configUSE_PREEMPTION == 0 + taskYIELD(); + #endif + + if( sError == pdFALSE ) + { + /* If the calculation has always been correct, increment the check + variable so we know this task is still running okay. */ + ( *pusTaskCheckVariable )++; + } + } +} +/*-----------------------------------------------------------*/ + +/* This is called to check that all the created tasks are still running. */ +portBASE_TYPE xAreMathsTaskStillRunning( void ) +{ +/* Keep a history of the check variables so we know if they have been incremented +since the last call. */ +static unsigned short usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned short ) 0 }; +portBASE_TYPE xReturn = pdTRUE, xTask; + + /* Check the maths tasks are still running by ensuring their check variables + are still incrementing. */ + for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ ) + { + if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] ) + { + /* The check has not incremented so an error exists. */ + xReturn = pdFALSE; + } + + usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ]; + } + + return xReturn; +} + + + diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c index e86918037..00d268536 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/intprg.c @@ -16,13 +16,7 @@ #pragma section IntPRG // 4 Illegal code -#pragma interrupt (INT_Illegal_code) -void INT_Illegal_code(void) -{ -volatile int i = 0; - - while( i == 0 ); -} +void INT_Illegal_code(void){for( ;; ); /* sleep(); */} // 5 Reserved diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c index 1a78b09b2..9d6f718e7 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c @@ -67,6 +67,7 @@ #include "GenQTest.h" #include "QPeek.h" #include "recmutex.h" +#include "flop.h" /* Constants required to configure the hardware. */ #define mainFRQCR_VALUE ( 0x0303 ) /* Input = 12.5MHz, I Clock = 200MHz, B Clock = 50MHz, P Clock = 50MHz */ @@ -80,6 +81,7 @@ #define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) #define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) +#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY ) /* The LED toggle by the check task. */ #define mainCHECK_LED ( 5 ) @@ -106,11 +108,16 @@ volatile unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL; void main(void) { +xTaskHandle xCreatedTask; + prvSetupHardware(); /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( vRegTest1Task, "RegTest1", configMINIMAL_STACK_SIZE, ( void * ) 0x12345678UL, tskIDLE_PRIORITY, NULL ); - xTaskCreate( vRegTest2Task, "RegTest2", configMINIMAL_STACK_SIZE, ( void * ) 0x11223344UL, tskIDLE_PRIORITY, NULL ); + xTaskCreate( vRegTest1Task, "RegTest1", configMINIMAL_STACK_SIZE, ( void * ) 0x12345678UL, tskIDLE_PRIORITY, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); + + xTaskCreate( vRegTest2Task, "RegTest2", configMINIMAL_STACK_SIZE, ( void * ) 0x11223344UL, tskIDLE_PRIORITY, &xCreatedTask ); + xPortUsesFloatingPoint( xCreatedTask ); /* Start the check task as described at the top of this file. */ xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); @@ -126,6 +133,7 @@ void main(void) vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY ); vStartQueuePeekTasks(); vStartRecursiveMutexTasks(); + vStartMathTasks( mainFLOP_TASK_PRIORITY ); /* The suicide tasks must be created last as they need to know how many tasks were running prior to their creation in order to ascertain whether @@ -146,6 +154,9 @@ static void prvCheckTask( void *pvParameter ) portTickType xNextWakeTime, xCycleFrequency = mainNO_ERROR_CYCLE_TIME; unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; + /* Just to remove compiler warning. */ + ( void ) pvParameter; + /* Initialise xNextWakeTime - this only needs to be done once. */ xNextWakeTime = xTaskGetTickCount(); @@ -194,6 +205,10 @@ unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL; { xCycleFrequency = mainERROR_CYCLE_TIME; } + else if( xAreMathsTaskStillRunning() != pdTRUE ) + { + xCycleFrequency = mainERROR_CYCLE_TIME; + } /* Check the reg test tasks are still cycling. They will stop incrementing their loop counters if they encounter an error. */ @@ -238,6 +253,10 @@ void vApplicationIdleHook( void ) void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName ) { + /* Just to remove compiler warnings. */ + ( void ) pxTask; + ( void ) pcTaskName; + for( ;; ); } /*-----------------------------------------------------------*/ @@ -283,7 +302,7 @@ unsigned long ulCompareMatch = ( configPERIPHERAL_CLOCK_HZ / ( configTICK_RATE_H /* Set the CMT interrupt priority - the interrupt priority must be configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to generate the tick interrupt. */ - INTC.IPR08.BIT._CMT0 = configKERNEL_INTERRUPT_PRIORITY; + INTC.IPR08.BIT._CMT0 = portKERNEL_INTERRUPT_PRIORITY; /* Clear the interrupt flag. */ CMT0.CMCSR.BIT.CMF = 0; diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src b/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src index 378484ea2..7c6d42285 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src @@ -62,15 +62,11 @@ .section P, code, align=4 -_vRegTest1Error: - bra _vRegTest1Error - nop - -;----------------------------------------------------------- _vRegTest1Task: ; Fill the registers with known values. + mov #2, r1 mov #3, r2 mov #4, r3 mov #5, r4 @@ -83,92 +79,193 @@ _vRegTest1Task: mov #12, r11 mov #13, r12 mov #14, r13 + mov #15, r14 - mov #15, r0 - lds r0, macl mov #16, r0 - lds r0, mach + lds r0, macl mov #17, r0 + lds r0, mach + mov #18, r0 ldc r0, gbr + + ; Also fill the flop registers with known values. + lds r1, fpul + fsts fpul, fr1 + lds r2, fpul + fsts fpul, fr2 + lds r3, fpul + fsts fpul, fr3 + lds r4, fpul + fsts fpul, fr4 + lds r5, fpul + fsts fpul, fr5 + lds r6, fpul + fsts fpul, fr6 + lds r7, fpul + fsts fpul, fr7 + lds r8, fpul + fsts fpul, fr8 + lds r9, fpul + fsts fpul, fr9 + lds r10, fpul + fsts fpul, fr10 + lds r11, fpul + fsts fpul, fr11 + lds r12, fpul + fsts fpul, fr12 + lds r13, fpul + fsts fpul, fr13 + lds r14, fpul + fsts fpul, fr14 _vRegTest1Loop: + ; Set FPUL to a known value before the yield. + mov #123, r0 + lds r0, fpul + ; Perform a yield, just for extra test coverage. trapa #33 + ; Check fpul still contains the expected value. + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error + ; Reset r1 which was used in the tests. mov #2, r1 ; Test that the registers still contain the expected values. If not, jump to ; vRegTestError, which will stop this function looping and so cause it to stop - ; incrementing its loop counter. + ; incrementing its loop counter. Both the standard and flop registers are + ; checked. mov #2, r0 cmp/eq r0, r1 bf _vRegTest1Error + flds fr1, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #3, r0 cmp/eq r0, r2 bf _vRegTest1Error + flds fr2, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #4, r0 cmp/eq r0, r3 bf _vRegTest1Error + flds fr3, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #5, r0 cmp/eq r0, r4 bf _vRegTest1Error + flds fr4, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #6, r0 cmp/eq r0, r5 bf _vRegTest1Error + flds fr5, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #7, r0 cmp/eq r0, r6 bf _vRegTest1Error + flds fr6, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #8, r0 cmp/eq r0, r7 bf _vRegTest1Error + flds fr7, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #9, r0 cmp/eq r0, r8 bf _vRegTest1Error + flds fr8, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #10, r0 cmp/eq r0, r9 bf _vRegTest1Error + flds fr9, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #11, r0 cmp/eq r0, r10 bf _vRegTest1Error + flds fr10, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #12, r0 cmp/eq r0, r11 bf _vRegTest1Error + flds fr11, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #13, r0 cmp/eq r0, r12 bf _vRegTest1Error + flds fr12, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error mov #14, r0 cmp/eq r0, r13 bf _vRegTest1Error - - sts macl, r0 - mov #15, r1 + flds fr13, fpul + sts fpul, r1 cmp/eq r0, r1 bf _vRegTest1Error - sts mach, r0 + mov #15, r0 + cmp/eq r0, r14 + bf _vRegTest1Error + flds fr14, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest1Error + + sts macl, r0 mov #16, r1 cmp/eq r0, r1 bf _vRegTest1Error - stc gbr, r0 + sts mach, r0 mov #17, r1 cmp/eq r0, r1 bf _vRegTest1Error + stc gbr, r0 + mov #18, r1 + cmp/eq r0, r1 + bf _vRegTest1Error + ; Increment the loop counter to indicate that this task is still running and ; still healthy. mov.l #_ulRegTest1CycleCount, r0 @@ -182,16 +279,16 @@ _vRegTest1Loop: ;----------------------------------------------------------- -_vRegTest2Error: - - bra _vRegTest2Error - nop +_vRegTest1Error: + bra _vRegTest1Error + nop ;----------------------------------------------------------- _vRegTest2Task: - ; Fill the registers with known values. + ; Fill the standard registers with known values. + mov #12, r1 mov #13, r2 mov #14, r3 mov #15, r4 @@ -212,6 +309,36 @@ _vRegTest2Task: mov #117, r0 ldc r0, gbr + ; Also fill the flop registers with known values. + lds r1, fpul + fsts fpul, fr1 + lds r2, fpul + fsts fpul, fr2 + lds r3, fpul + fsts fpul, fr3 + lds r4, fpul + fsts fpul, fr4 + lds r5, fpul + fsts fpul, fr5 + lds r6, fpul + fsts fpul, fr6 + lds r7, fpul + fsts fpul, fr7 + lds r8, fpul + fsts fpul, fr8 + lds r9, fpul + fsts fpul, fr9 + lds r10, fpul + fsts fpul, fr10 + lds r11, fpul + fsts fpul, fr11 + lds r12, fpul + fsts fpul, fr12 + lds r13, fpul + fsts fpul, fr13 + lds r14, fpul + fsts fpul, fr14 + _vRegTest2Loop: ; Reset r1 which was used in the tests. @@ -219,58 +346,111 @@ _vRegTest2Loop: ; Test that the registers still contain the expected values. If not, jump to ; vRegTestError, which will stop this function looping and so cause it to stop - ; incrementing its loop counter. + ; incrementing its loop counter. Both the standard and flop registers are + ; checked. mov #12, r0 cmp/eq r0, r1 bf _vRegTest2Error + flds fr1, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #13, r0 cmp/eq r0, r2 bf _vRegTest2Error + flds fr2, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #14, r0 cmp/eq r0, r3 bf _vRegTest2Error + flds fr3, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #15, r0 cmp/eq r0, r4 bf _vRegTest2Error + flds fr4, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #16, r0 cmp/eq r0, r5 bf _vRegTest2Error + flds fr5, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #17, r0 cmp/eq r0, r6 bf _vRegTest2Error + flds fr6, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #18, r0 cmp/eq r0, r7 bf _vRegTest2Error + flds fr7, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #19, r0 cmp/eq r0, r8 bf _vRegTest2Error + flds fr8, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #110, r0 cmp/eq r0, r9 bf _vRegTest2Error + flds fr9, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #111, r0 cmp/eq r0, r10 bf _vRegTest2Error + flds fr10, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #112, r0 cmp/eq r0, r11 bf _vRegTest2Error + flds fr11, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #113, r0 cmp/eq r0, r12 bf _vRegTest2Error + flds fr12, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error mov #114, r0 cmp/eq r0, r13 bf _vRegTest2Error + flds fr13, fpul + sts fpul, r1 + cmp/eq r0, r1 + bf _vRegTest2Error sts macl, r0 mov #115, r1 @@ -298,6 +478,12 @@ _vRegTest2Loop: bra _vRegTest2Loop nop +;----------------------------------------------------------- + +_vRegTest2Error: + + bra _vRegTest2Error + nop .end diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c index dc8cb9d3a..a5f1f43a4 100644 --- a/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c +++ b/Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c @@ -14,7 +14,7 @@ #include "vect.h" extern void vPortStartFirstTask( void ); -extern void vPortYield( void ); +extern void vPortYieldHandler( void ); extern void vPortPreemptiveTick( void ); #pragma section VECTTBL @@ -97,7 +97,7 @@ void *INT_Vectors[] = { (void*) vPortStartFirstTask, // 33 TRAPA (User Vecter) // (void*) INT_TRAPA33, - (void*) vPortYield, + (void*) vPortYieldHandler, // 34 TRAPA (User Vecter) (void*) INT_TRAPA34, // 35 TRAPA (User Vecter)