From: richardbarry Date: Wed, 22 Sep 2010 22:02:54 +0000 (+0000) Subject: Replace asm wrappers to interrupt handlers with functions that use the interrupt... X-Git-Tag: V6.1.0~8 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=992dab126dda26abdb292b7bafda680f8c4c7cac;p=freertos Replace asm wrappers to interrupt handlers with functions that use the interrupt attribute. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1127 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c index 6c66a6db5..e109f0942 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/HighFrequencyTimerTest.c @@ -77,9 +77,8 @@ zero. */ /*-----------------------------------------------------------*/ -/* Interrupt wrapper and handler in which the jitter is measured. */ -void vTimer2_ISR_Wrapper( void ) __attribute__((naked)); -static void prvTimer2_ISR_Handler( void ) __attribute__((noinline)); +/* Interrupt handler in which the jitter is measured. */ +void vTimer2_ISR_Handler( void ) __attribute__((interrupt)); /* Stores the value of the maximum recorded jitter between interrupts. This is displayed on one of the served web pages. */ @@ -123,21 +122,16 @@ void vSetupHighFrequencyTimer( void ) } /*-----------------------------------------------------------*/ -void vTimer2_ISR_Wrapper( void ) -{ - portENTER_INTERRUPT(); - prvTimer2_ISR_Handler(); - portEXIT_INTERRUPT(); -} -/*-----------------------------------------------------------*/ - -static void prvTimer2_ISR_Handler( void ) +void vTimer2_ISR_Handler( void ) { volatile unsigned short usCurrentCount; static unsigned short usMaxCount = 0; static unsigned long ulErrorCount = 0UL; - /* We use the timer 1 counter value to measure the clock cycles between + /* This is the highest priority interrupt in the system, so there is no + advantage to re-enabling interrupts here. + + We use the timer 1 counter value to measure the clock cycles between the timer 0 interrupts. First stop the clock. */ CMT.CMSTR1.BIT.STR3 = 0; portNOP(); diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c index 31538a17c..cb20c4324 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/IntQueueTimer.c @@ -71,11 +71,11 @@ #define tmrTIMER_0_1_FREQUENCY ( 2000UL ) #define tmrTIMER_2_3_FREQUENCY ( 2001UL ) -/* Wrappers and handlers for the two timers used. See the documentation page +/* Handlers for the two timers used. See the documentation page for this port on http://www.FreeRTOS.org for more information on writing interrupt handlers. */ -void vT0_1_ISR_Wrapper( void ) __attribute((naked)); -void vT2_3_ISR_Wrapper( void ) __attribute((naked)); +void vT0_1_ISR_Handler( void ) __attribute((interrupt)); +void vT2_3_ISR_Handler( void ) __attribute((interrupt)); void vInitialiseTimerForIntQueueTest( void ) { @@ -131,35 +131,25 @@ void vInitialiseTimerForIntQueueTest( void ) } /*-----------------------------------------------------------*/ -void vT0_1_ISR_Wrapper( void ) +void vT0_1_ISR_Handler( void ) { - /* This is a naked function. This macro saves registers then re-enables - interrupts. See the documentation for htis port on http://www.FreeRTOS.org - for more information on writing interrupts. */ - portENTER_INTERRUPT(); + /* Re-enabled interrupts. */ + __asm volatile( "SETPSW I" ); /* Call the handler that is part of the common code - this is where the non-portable code ends and the actual test is performed. */ portYIELD_FROM_ISR( xFirstTimerHandler() ); - - /* Restore registers, then return. */ - portEXIT_INTERRUPT(); } /*-----------------------------------------------------------*/ -void vT2_3_ISR_Wrapper( void ) +void vT2_3_ISR_Handler( void ) { - /* This is a naked function. This macro saves registers then re-enables - interrupts. See the documentation for htis port on http://www.FreeRTOS.org - for more information on writing interrupts. */ - portENTER_INTERRUPT(); + /* Re-enabled interrupts. */ + __asm volatile( "SETPSW I" ); /* Call the handler that is part of the common code - this is where the non-portable code ends and the actual test is performed. */ portYIELD_FROM_ISR( xSecondTimerHandler() ); - - /* Restore registers, then return. */ - portEXIT_INTERRUPT(); } /*-----------------------------------------------------------*/ diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp index 9bb919307..5d7f002a0 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.hwp @@ -385,62 +385,60 @@ [LINKAGE_ORDER_Debug_RX600_E1_E20_SYSTEM] [GENERAL_DATA_CONFIGURATION_Debug_RX600_E1_E20_SYSTEM] [OPTIONS_Debug_with_optimisation_GNU Assembler] -"Assembly source file" "09863a320aa5bc10" 4 +"Assembly source file" "09863a320aa5bc10" 3 [OPTIONS_Debug_with_optimisation_GNU Compiler] -"C source file" "09863a320aa5bc10" 3 -"C++ source file" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "09863a320aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "09863a320aa5bc10" 3 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "09863a320aa5bc10" 3 -"Preprocess Assembly file" "09863a320aa5bc10" 2 +"C source file" "020673517aa5bc10" 2 +"C++ source file" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\IntQueueTimer.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\ParTest.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\uIP_Task.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\vects.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\EMAC.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\webserver\phy.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "020673517aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "020673517aa5bc10" 2 +"Preprocess Assembly file" "020673517aa5bc10" 2 [OPTIONS_Debug_with_optimisation_GNU Library Generator] "Single Shot" "097f0a320aa5bc10" 1 [OPTIONS_Debug_with_optimisation_GNU Linker] -"Single Shot" "09863a320aa5bc10" 5 +"Single Shot" "09863a320aa5bc10" 4 [OPTIONS_Debug_with_optimisation] "" 0 "[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|lib$(PROJECTNAME).a*libgcc.a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] -" 5 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [B|NOSTDINC|1] [S|APPTXT|^"-Wa,-gdwarf2^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] +" 4 +"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [B|NOSTDINC|1] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] " 2 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\Ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG|INCLUDE_HIGH_FREQUENCY_TIMER_TEST] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|1] [I|OPTLV|1] [B|NOSTDINC|1] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] -" 3 -"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 4 +"[V|VERSION|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [I|DEBUGLV|2] [B|LINCHLS|1] [B|LINCASS|1] [B|LINCSYM|1] [S|LFILE|^"$(CONFIGDIR)\$(FILELEAF).^"] [S|PROJECTTYPE|CAPPPROJECT] [S|INCDIR|^"$(PROJDIR)^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] " 3 "[V|VERSION|2] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|1] [S|MODE|BUILD/CHANGED] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] " 1 [EXCLUDED_FILES_Debug_with_optimisation] "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-blinky.c" diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav index d2ff7315e..ace7588da 100644 Binary files a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav and b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.nav differ diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps index 8802a9b26..fa61cca1f 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/RTOSDemo.tps @@ -21,7 +21,7 @@ "DefaultSession" "SessionRX600_E1_E20_SYSTEM" [GENERAL_DATA_CONFIGURATION_Debug] -"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" +"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" [SESSIONS_Debug] "DefaultSession" "SessionRX600_E1_E20_SYSTEM" diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf index 14c97f794..9ce598bed 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf @@ -89,32 +89,32 @@ "{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000719C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "00000000000031A4" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "000000000000007B" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000003570" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000006F2C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000719C" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "000000000000BB7C" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "000000000000C574" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "000000000000C588" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "000000000000C584" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "000000000000C580" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "000000000000C57C" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "00000000419C0000" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "000000000000C58C" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000BB7C" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000017FE0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030003" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF8FA33" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000006F2C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF925E0" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030000" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF91288" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "000000000000C594" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF92658" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000080000000" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000006F2C" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "000000000000C598" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "000000000000C590" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "000000000000EB14" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "000000000000C578" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" "{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileDir" "" "{6C4D5B81-FD67-46A9-A089-EA44DCDE47FD}RAMMonitorManagerCtrlBlockInfoFileName" "" @@ -220,10 +220,10 @@ 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}" "WINDOW" 59422 0 1 "0.07" 252 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" +"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.07" 400 0 0 100 100 17 0 "32771|32772|32778|<>|32773|32774|<>" "0.0" "{WK_00000001_DEBUGCONSOLE}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 5 0 "1.00" 146 0 0 350 200 17 0 "57634|57637|57633|<>|32781|32782|<>|32780|32785|32787" "0.0" "{WK_00000001_MEMORY}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59422 0 0 "0.27" 252 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 0 "1.00" 252 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" +"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 0 "1.00" 400 560 340 350 200 18 0 "36756|36757|36758|36759|<>|36746|36747|<>|39531|<>|39500|39534|<>|36687" "0.0" "{WK_00000001_REGISTERS}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 413 0 0 350 200 2065 0 "" "0.0" "{WK_00000001_WATCH}RTOSDemoSessionRX600_E1_E20_SYSTEM" "WINDOW" 59421 0 0 "1.00" 441 0 0 853 610 17 0 "32781|32783|<>|32771|32829|32772|32827|32773|<>|32786|<>|32810|32811" "0.0" "{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 342 560 340 350 200 18 0 "" "0.0" @@ -235,9 +235,9 @@ "{WK_TB00000007_DEBUG}" "TOOLBAR 0" 59419 2 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" "{WK_TB00000008_DEBUGRUN}" "TOOLBAR 0" 59419 2 1 "0.00" 0 0 0 0 0 18 0 "" "0.0" "{WK_TB00000009_VERSIONCONTROL}" "TOOLBAR 0" 59419 1 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 18 0 "" "0.0" +"{WK_TB00000011_CPU}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 18 0 "" "0.0" "{WK_TB00000012_MAP}" "TOOLBAR 0" 59419 1 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" -"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 18 0 "" "0.0" +"{WK_TB00000013_SYMBOL}" "TOOLBAR 0" 59419 2 6 "0.00" 0 0 0 0 0 18 0 "" "0.0" "{WK_TB00000014_CODE}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" "{WK_TB00000015_PERFORMANCE}" "TOOLBAR 0" 59419 2 10 "0.00" 0 0 0 0 0 17 0 "" "0.0" "{WK_TB00000016_GRAPHIC}" "TOOLBAR 0" 59419 2 8 "0.00" 0 0 0 0 0 17 0 "" "0.0" @@ -247,13 +247,11 @@ "{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" "{WK_TB00000027_EVENT}" "TOOLBAR 0" 59419 2 7 "0.00" 0 0 0 0 0 17 0 "" "0.0" "{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" -"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" +"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" [WINDOW_POSITION_STATE_DATA_VD2] [WINDOW_POSITION_STATE_DATA_VD3] [WINDOW_POSITION_STATE_DATA_VD4] [WINDOW_Z_ORDER] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" [TARGET_NAME] "RX600 E1/E20 SYSTEM" "" 0 @@ -277,8 +275,8 @@ "SBK_TAR_EMUE100|Exception" 1 "SBK_TAR_EMUE100|BreakCondition" 1 "SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|PC" 1 "SBK_TAR_EMUE100|ExecutionTime" 1 +"SBK_TAR_EMUE100|PC" 1 [STATUSBAR_DEBUGGER_PANESTATE_VD2] [STATUSBAR_DEBUGGER_PANESTATE_VD3] [STATUSBAR_DEBUGGER_PANESTATE_VD4] diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c index d8c02151a..95eac6069 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-blinky.c @@ -223,8 +223,8 @@ void vApplicationIdleHook( void ) configurations to use the same vector table. They are not used in this demo, but linker errors will result if they are not defined. They can be ignored. */ -void vT0_1_ISR_Wrapper( void ) {} -void vT2_3_ISR_Wrapper( void ) {} -void vEMAC_ISR_Wrapper( void ) {} -void vTimer2_ISR_Wrapper( void ) {} +void vT0_1_ISR_Handler( void ) {} +void vT2_3_ISR_Handler( void ) {} +void vEMAC_ISR_Handler( void ) {} +void vTimer2_ISR_Handler( void ) {} volatile unsigned long ulHighFrequencyTickCount = 0; \ No newline at end of file diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c index 3a4e74cde..a5d94c5be 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/main-full.c @@ -248,7 +248,7 @@ static const char *pcStatusMessage = NULL; /*-----------------------------------------------------------*/ -void main(void) +int main(void) { extern void HardwareSetup( void ); @@ -260,14 +260,14 @@ extern void HardwareSetup( void ); vParTestInitialise(); /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); + xTaskCreate( prvRegTest1Task, ( signed char * ) "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); + xTaskCreate( prvRegTest2Task, ( signed char * ) "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); + xTaskCreate( vuIP_Task, ( signed char * ) "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); + xTaskCreate( prvCheckTask, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); /* Create the standard demo tasks. */ vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); @@ -294,6 +294,8 @@ extern void HardwareSetup( void ); running. If we do reach here then it is likely that there was insufficient heap available for the idle task to be created. */ for( ;; ); + + return 0; } /*-----------------------------------------------------------*/ diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c index 7e9b6b1a0..a1a33fe16 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/vects.c @@ -19,10 +19,10 @@ extern void start(void); extern void stack (void); extern void vTickISR( void ); extern void vSoftwareInterruptISR( void ); -extern void vT0_1_ISR_Wrapper( void ); -extern void vT2_3_ISR_Wrapper( void ); -extern void vEMAC_ISR_Wrapper( void ); -extern void vTimer2_ISR_Wrapper( void ); +extern void vT0_1_ISR_Handler( void ); +extern void vT2_3_ISR_Handler( void ); +extern void vEMAC_ISR_Handler( void ); +extern void vTimer2_ISR_Handler( void ); #define FVECT_SECT __attribute__ ((section (".fvectors"))) @@ -160,11 +160,11 @@ const fp RelocatableVectors[] RVECT_SECT = { //;0x0074 CMTU0_CMT1 (fp)INT_Excep_CMTU0_CMT1, //;0x0078 CMTU1_CMT2 - (fp)vTimer2_ISR_Wrapper, + (fp)vTimer2_ISR_Handler, //;0x007C CMTU1_CMT3 (fp)INT_Excep_CMTU1_CMT3, //;0x0080 Ether - (fp)vEMAC_ISR_Wrapper, + (fp)vEMAC_ISR_Handler, //;0x0084 Reserved (fp)0, //;0x0088 Reserved @@ -448,7 +448,7 @@ const fp RelocatableVectors[] RVECT_SECT = { //;0x02B4 Reserved (fp)0, //;0x02B8 TMR0_CMI0A - (fp)vT0_1_ISR_Wrapper, + (fp)vT0_1_ISR_Handler, //;0x02BC TMR0_CMI0B (fp)INT_Excep_TMR0_CMI0B, //;0x02C0 TMR0_OV0I @@ -460,7 +460,7 @@ const fp RelocatableVectors[] RVECT_SECT = { //;0x02CC TMR1_OV1I (fp)INT_Excep_TMR1_OV1I, //;0x02D0 TMR2_CMI2A - (fp)vT2_3_ISR_Wrapper, + (fp)vT2_3_ISR_Handler, //;0x02D4 TMR2_CMI2B (fp)INT_Excep_TMR2_CMI2B, //;0x02D8 TMR2_OV2I diff --git a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c index 10ca4ff34..9502358f4 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c +++ b/Demo/RX600_RX62N-RDK_GNURX/RTOSDemo/webserver/EMAC.c @@ -144,12 +144,11 @@ static void prvConfigureEtherCAndEDMAC( void ); static void prvResetEverything( void ); /* - * Wrapper and handler for the EMAC peripheral. See the documentation for this + * Handler for the EMAC peripheral. See the documentation for this * port on http://www.FreeRTOS.org for more information on defining interrupt * handlers. */ -void vEMAC_ISR_Wrapper( void ) __attribute__((naked)); -static void vEMAC_ISR_Handler( void ) __attribute__((noinline)); +void vEMAC_ISR_Handler( void ) __attribute__((interrupt)); /*-----------------------------------------------------------*/ @@ -524,29 +523,16 @@ static void prvConfigureEtherCAndEDMAC( void ) } /*-----------------------------------------------------------*/ -void vEMAC_ISR_Wrapper( void ) -{ - /* This is a naked function. See the documentation for this port on - http://www.FreeRTOS.org for more information on writing interrupts. - - /* Save the registers and enable interrupts. */ - portENTER_INTERRUPT(); - - /* Perform the actual EMAC processing. */ - vEMAC_ISR_Handler(); - - /* Restore the registers and return. */ - portEXIT_INTERRUPT(); -} -/*-----------------------------------------------------------*/ - -static void vEMAC_ISR_Handler( void ) +void vEMAC_ISR_Handler( void ) { unsigned long ul = EDMAC.EESR.LONG; long lHigherPriorityTaskWoken = pdFALSE; extern xSemaphoreHandle xEMACSemaphore; static long ulTxEndInts = 0; + /* Re-enabled interrupts. */ + __asm volatile( "SETPSW I" ); + /* Has a Tx end occurred? */ if( ul & emacTX_END_INTERRUPT ) { diff --git a/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws b/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws index 98669c1c7..be1f60a3f 100644 --- a/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws +++ b/Demo/RX600_RX62N-RDK_GNURX/RX600_RX62N_RDK_GNURX.tws @@ -7,13 +7,9 @@ [GENERAL_DATA] [BREAKPOINTS] [OPEN_WORKSPACE_FILES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" [WORKSPACE_FILE_STATES] -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" -4 -23 1314 626 1 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\GNU-Files\start.asm" 44 44 1130 405 0 1 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" 0 0 1314 608 0 0 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RDK_GNURX\RTOSDemo\main-full.c" -4 -23 1314 460 1 0 [LOADED_PROJECTS] "RTOSDemo" [END] diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c index 6c66a6db5..e109f0942 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/HighFrequencyTimerTest.c @@ -77,9 +77,8 @@ zero. */ /*-----------------------------------------------------------*/ -/* Interrupt wrapper and handler in which the jitter is measured. */ -void vTimer2_ISR_Wrapper( void ) __attribute__((naked)); -static void prvTimer2_ISR_Handler( void ) __attribute__((noinline)); +/* Interrupt handler in which the jitter is measured. */ +void vTimer2_ISR_Handler( void ) __attribute__((interrupt)); /* Stores the value of the maximum recorded jitter between interrupts. This is displayed on one of the served web pages. */ @@ -123,21 +122,16 @@ void vSetupHighFrequencyTimer( void ) } /*-----------------------------------------------------------*/ -void vTimer2_ISR_Wrapper( void ) -{ - portENTER_INTERRUPT(); - prvTimer2_ISR_Handler(); - portEXIT_INTERRUPT(); -} -/*-----------------------------------------------------------*/ - -static void prvTimer2_ISR_Handler( void ) +void vTimer2_ISR_Handler( void ) { volatile unsigned short usCurrentCount; static unsigned short usMaxCount = 0; static unsigned long ulErrorCount = 0UL; - /* We use the timer 1 counter value to measure the clock cycles between + /* This is the highest priority interrupt in the system, so there is no + advantage to re-enabling interrupts here. + + We use the timer 1 counter value to measure the clock cycles between the timer 0 interrupts. First stop the clock. */ CMT.CMSTR1.BIT.STR3 = 0; portNOP(); diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c index 31538a17c..cb20c4324 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/IntQueueTimer.c @@ -71,11 +71,11 @@ #define tmrTIMER_0_1_FREQUENCY ( 2000UL ) #define tmrTIMER_2_3_FREQUENCY ( 2001UL ) -/* Wrappers and handlers for the two timers used. See the documentation page +/* Handlers for the two timers used. See the documentation page for this port on http://www.FreeRTOS.org for more information on writing interrupt handlers. */ -void vT0_1_ISR_Wrapper( void ) __attribute((naked)); -void vT2_3_ISR_Wrapper( void ) __attribute((naked)); +void vT0_1_ISR_Handler( void ) __attribute((interrupt)); +void vT2_3_ISR_Handler( void ) __attribute((interrupt)); void vInitialiseTimerForIntQueueTest( void ) { @@ -131,35 +131,25 @@ void vInitialiseTimerForIntQueueTest( void ) } /*-----------------------------------------------------------*/ -void vT0_1_ISR_Wrapper( void ) +void vT0_1_ISR_Handler( void ) { - /* This is a naked function. This macro saves registers then re-enables - interrupts. See the documentation for htis port on http://www.FreeRTOS.org - for more information on writing interrupts. */ - portENTER_INTERRUPT(); + /* Re-enabled interrupts. */ + __asm volatile( "SETPSW I" ); /* Call the handler that is part of the common code - this is where the non-portable code ends and the actual test is performed. */ portYIELD_FROM_ISR( xFirstTimerHandler() ); - - /* Restore registers, then return. */ - portEXIT_INTERRUPT(); } /*-----------------------------------------------------------*/ -void vT2_3_ISR_Wrapper( void ) +void vT2_3_ISR_Handler( void ) { - /* This is a naked function. This macro saves registers then re-enables - interrupts. See the documentation for htis port on http://www.FreeRTOS.org - for more information on writing interrupts. */ - portENTER_INTERRUPT(); + /* Re-enabled interrupts. */ + __asm volatile( "SETPSW I" ); /* Call the handler that is part of the common code - this is where the non-portable code ends and the actual test is performed. */ portYIELD_FROM_ISR( xSecondTimerHandler() ); - - /* Restore registers, then return. */ - portEXIT_INTERRUPT(); } /*-----------------------------------------------------------*/ diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp index 4980fee4f..3ac639b75 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.hwp @@ -271,47 +271,47 @@ [OPTIONS_Debug_GNU Assembler] "Assembly source file" "00d92b5b0aa5bc10" 3 [OPTIONS_Debug_GNU Compiler] -"C source file" "00c20b5b0aa5bc10" 2 -"C++ source file" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "00c20b5b0aa5bc10" 2 -"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "00c20b5b0aa5bc10" 2 -"Preprocess Assembly file" "00c20b5b0aa5bc10" 2 +"C source file" "022e4ac89aa5bc10" 2 +"C++ source file" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\IntQueue.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flop.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\hwinit.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\inthandler.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\GNU-Files\start.asm" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\HighFrequencyTimerTest.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\IntQueueTimer.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\ParTest.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\Renesas-Files\hwsetup.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-blinky.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\main-full.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\uIP_Task.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\vects.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\EMAC.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\httpd-cgi.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\RX600_RX62N-RSK_GNURX\RTOSDemo\webserver\phy.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\GCC\RX600\port.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "022e4ac89aa5bc10" 2 +"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "022e4ac89aa5bc10" 2 +"Preprocess Assembly file" "022e4ac89aa5bc10" 2 [OPTIONS_Debug_GNU Library Generator] "Single Shot" "00c20b5b0aa5bc10" 1 [OPTIONS_Debug_GNU Linker] @@ -320,7 +320,7 @@ "" 0 "[V|VERSION|2] [B|DOEXTF|1] [S|INCDIR|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [B|MFILEGEN|1] [S|PLMFILE|^"$(CONFIGDIR)\$(PROJECTNAME).map^"] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|.fvectors|0|0||1|0xFFFFFF80|0|1|0|.fvectors|All-files|<>|<>|<>|.text|0|0||1|0xFFF80000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|0|P|All-files|<>|1|etext|<>|<>|<>|.rvectors|0|0||0||0|1|1|_rvectors_start|<>|0|.rvectors|All-files|<>|1|_rvectors_end|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|0|C_1|All-files|<>|0|C_2|All-files|<>|0|C|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|.istack|0|0||1|0x00017FFC|0|0|1|_istack|<>|<>|<>|.ustack|0|0||1|0x000179BC|0|0|1|_ustack|<>|<>|<>|.data|0|2|_mdata|1|0x00001000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|0|D|All-files|<>|0|D_1|All-files|<>|0|D_2|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|0|B|All-files|<>|0|B_1|All-files|<>|0|B_2|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|] [B|WONCEU|1] [B|OUTTRAD|1] [S|APPTXT|^"-e _start^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 -"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [B|NOSTDINC|1] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] +"[V|VERSION|2] [S|INCDIR|^"$(TCINSTALL)\rx-elf\rx-elf\optlibinc^"|^"$(TCINSTALL)\rx-elf\lib\gcc\rx-elf\4.5-GNURX_v10.03\optlibinc^"|^"$(PROJDIR)\include^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\..\..\..\Source\portable\GCC\RX600^"|^"$(PROJDIR)^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"] [S|DEFINES|DEBUG] [S|OUTPUT|OBJECT] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|DEBUG|1] [S|DEBUGFT|Native] [I|DEBUGLV|2] [S|ALIGN4|ALL] [B|OPTIMIZE|0] [I|OPTLV|2] [B|NOSTDINC|1] [S|APPTXT|^"-Wall^"] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] " 2 "[V|VERSION|2] [S|MODE|BUILD/CHANGED] [B|MATH|1] [B|STDIO|1] [B|STDLIB|1] [B|STRING|1] [B|DOPROJBUILT|1] [B|DOOPTLIB|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\lib$(PROJECTNAME).a^"] [B|OPTIMIZE|1] [I|OPTTYPE|0] [S|CPUTYPE|RX600] [S|ENDIAN|LITTLE] [S|CPU|Other] [I|RMINTREGVAL|0] [I|RMMAXCONSTVAL|0] [I|RMMAXVARSVAL|0] " 1 diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav index 3e8ae7b62..41e59e127 100644 Binary files a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav and b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/RTOSDemo.nav differ diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf index e63a264f5..9bd809919 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/SessionRX600_E1_E20_SYSTEM.hsf @@ -50,30 +50,30 @@ "{5F75FDA0-6FF0-11D5-B7CE-00E029352378}PACtrlViews" "0" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "16777216" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "768" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000004854" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000003234" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000002710" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000003234" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000000045EC" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000017EF4" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000004" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000002" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "000000000000000A" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "00000000A5A5A5A5" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "000000000000464E" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000006" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000004854" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000017FA0" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000030001" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF87207" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000004688" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000001" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "00000000000000EA" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "000000000000BB68" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000017EF4" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000004010000" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000FFF851D9" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "000000000000311C" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000FFF8D818" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_24" "0000000000000100" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_25" "1234567887650000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "00000000000003E8" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_3" "0000000000017F34" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "00000000A5A5A5A5" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000004854" -"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "00000000A5A5A5A5" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000003120" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000017EF4" +"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "00000000A5A5A5A5" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "00000000A5A5A5A5" "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "26" @@ -235,8 +235,8 @@ "SBK_TAR_EMUE100|Exception" 1 "SBK_TAR_EMUE100|BreakCondition" 1 "SBK_TAR_EMUE100|TaskID" 1 -"SBK_TAR_EMUE100|ExecutionTime" 1 "SBK_TAR_EMUE100|PC" 1 +"SBK_TAR_EMUE100|ExecutionTime" 1 [STATUSBAR_DEBUGGER_PANESTATE_VD2] [STATUSBAR_DEBUGGER_PANESTATE_VD3] [STATUSBAR_DEBUGGER_PANESTATE_VD4] diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c index fc5c05d35..95eac6069 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-blinky.c @@ -70,6 +70,9 @@ #include "task.h" #include "queue.h" +/* Demo includes. */ +#include "ParTest.h" + /* Priorities at which the tasks are created. */ #define configQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) #define configQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) @@ -93,7 +96,7 @@ static xQueueHandle xQueue = NULL; /*-----------------------------------------------------------*/ -void main(void) +int main(void) { extern void HardwareSetup( void ); @@ -110,8 +113,8 @@ extern void HardwareSetup( void ); if( xQueue != NULL ) { /* Start the two tasks as described at the top of this file. */ - xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); - xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); + xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, configQUEUE_RECEIVE_TASK_PRIORITY, NULL ); + xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, configQUEUE_SEND_TASK_PRIORITY, NULL ); /* Start the tasks running. */ vTaskStartScheduler(); @@ -220,8 +223,8 @@ void vApplicationIdleHook( void ) configurations to use the same vector table. They are not used in this demo, but linker errors will result if they are not defined. They can be ignored. */ -void vT0_1_ISR_Wrapper( void ) {} -void vT2_3_ISR_Wrapper( void ) {} -void vEMAC_ISR_Wrapper( void ) {} -void vTimer2_ISR_Wrapper( void ) {} +void vT0_1_ISR_Handler( void ) {} +void vT2_3_ISR_Handler( void ) {} +void vEMAC_ISR_Handler( void ) {} +void vTimer2_ISR_Handler( void ) {} volatile unsigned long ulHighFrequencyTickCount = 0; \ No newline at end of file diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c index 3a4e74cde..a5d94c5be 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/main-full.c @@ -248,7 +248,7 @@ static const char *pcStatusMessage = NULL; /*-----------------------------------------------------------*/ -void main(void) +int main(void) { extern void HardwareSetup( void ); @@ -260,14 +260,14 @@ extern void HardwareSetup( void ); vParTestInitialise(); /* Start the reg test tasks which test the context switching mechanism. */ - xTaskCreate( prvRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); - xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); + xTaskCreate( prvRegTest1Task, ( signed char * ) "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_1_PARAMETER, tskIDLE_PRIORITY, NULL ); + xTaskCreate( prvRegTest2Task, ( signed char * ) "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL ); /* The web server task. */ - xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); + xTaskCreate( vuIP_Task, ( signed char * ) "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL ); /* Start the check task as described at the top of this file. */ - xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); + xTaskCreate( prvCheckTask, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); /* Create the standard demo tasks. */ vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); @@ -294,6 +294,8 @@ extern void HardwareSetup( void ); running. If we do reach here then it is likely that there was insufficient heap available for the idle task to be created. */ for( ;; ); + + return 0; } /*-----------------------------------------------------------*/ diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c index 7e9b6b1a0..a1a33fe16 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/vects.c @@ -19,10 +19,10 @@ extern void start(void); extern void stack (void); extern void vTickISR( void ); extern void vSoftwareInterruptISR( void ); -extern void vT0_1_ISR_Wrapper( void ); -extern void vT2_3_ISR_Wrapper( void ); -extern void vEMAC_ISR_Wrapper( void ); -extern void vTimer2_ISR_Wrapper( void ); +extern void vT0_1_ISR_Handler( void ); +extern void vT2_3_ISR_Handler( void ); +extern void vEMAC_ISR_Handler( void ); +extern void vTimer2_ISR_Handler( void ); #define FVECT_SECT __attribute__ ((section (".fvectors"))) @@ -160,11 +160,11 @@ const fp RelocatableVectors[] RVECT_SECT = { //;0x0074 CMTU0_CMT1 (fp)INT_Excep_CMTU0_CMT1, //;0x0078 CMTU1_CMT2 - (fp)vTimer2_ISR_Wrapper, + (fp)vTimer2_ISR_Handler, //;0x007C CMTU1_CMT3 (fp)INT_Excep_CMTU1_CMT3, //;0x0080 Ether - (fp)vEMAC_ISR_Wrapper, + (fp)vEMAC_ISR_Handler, //;0x0084 Reserved (fp)0, //;0x0088 Reserved @@ -448,7 +448,7 @@ const fp RelocatableVectors[] RVECT_SECT = { //;0x02B4 Reserved (fp)0, //;0x02B8 TMR0_CMI0A - (fp)vT0_1_ISR_Wrapper, + (fp)vT0_1_ISR_Handler, //;0x02BC TMR0_CMI0B (fp)INT_Excep_TMR0_CMI0B, //;0x02C0 TMR0_OV0I @@ -460,7 +460,7 @@ const fp RelocatableVectors[] RVECT_SECT = { //;0x02CC TMR1_OV1I (fp)INT_Excep_TMR1_OV1I, //;0x02D0 TMR2_CMI2A - (fp)vT2_3_ISR_Wrapper, + (fp)vT2_3_ISR_Handler, //;0x02D4 TMR2_CMI2B (fp)INT_Excep_TMR2_CMI2B, //;0x02D8 TMR2_OV2I diff --git a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c index 10ca4ff34..9502358f4 100644 --- a/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c +++ b/Demo/RX600_RX62N-RSK_GNURX/RTOSDemo/webserver/EMAC.c @@ -144,12 +144,11 @@ static void prvConfigureEtherCAndEDMAC( void ); static void prvResetEverything( void ); /* - * Wrapper and handler for the EMAC peripheral. See the documentation for this + * Handler for the EMAC peripheral. See the documentation for this * port on http://www.FreeRTOS.org for more information on defining interrupt * handlers. */ -void vEMAC_ISR_Wrapper( void ) __attribute__((naked)); -static void vEMAC_ISR_Handler( void ) __attribute__((noinline)); +void vEMAC_ISR_Handler( void ) __attribute__((interrupt)); /*-----------------------------------------------------------*/ @@ -524,29 +523,16 @@ static void prvConfigureEtherCAndEDMAC( void ) } /*-----------------------------------------------------------*/ -void vEMAC_ISR_Wrapper( void ) -{ - /* This is a naked function. See the documentation for this port on - http://www.FreeRTOS.org for more information on writing interrupts. - - /* Save the registers and enable interrupts. */ - portENTER_INTERRUPT(); - - /* Perform the actual EMAC processing. */ - vEMAC_ISR_Handler(); - - /* Restore the registers and return. */ - portEXIT_INTERRUPT(); -} -/*-----------------------------------------------------------*/ - -static void vEMAC_ISR_Handler( void ) +void vEMAC_ISR_Handler( void ) { unsigned long ul = EDMAC.EESR.LONG; long lHigherPriorityTaskWoken = pdFALSE; extern xSemaphoreHandle xEMACSemaphore; static long ulTxEndInts = 0; + /* Re-enabled interrupts. */ + __asm volatile( "SETPSW I" ); + /* Has a Tx end occurred? */ if( ul & emacTX_END_INTERRUPT ) {