]> git.sur5r.net Git - freertos/commitdiff
Update SuperH port to include WEB server.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sat, 13 Feb 2010 18:57:15 +0000 (18:57 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sat, 13 Feb 2010 18:57:15 +0000 (18:57 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@974 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

32 files changed:
Demo/SuperH_SH7216_Renesas/RTOSDemo.tws
Demo/SuperH_SH7216_Renesas/RTOSDemo/FreeRTOSConfig.h
Demo/SuperH_SH7216_Renesas/RTOSDemo/ParTest/ParTest.c
Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.hwp
Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav
Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.tps
Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/compiler.h [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernet.h [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/SessionSH7216_E10A-USB_SYSTEM__SH.hsf
Demo/SuperH_SH7216_Renesas/RTOSDemo/main.c
Demo/SuperH_SH7216_Renesas/RTOSDemo/regtest.src
Demo/SuperH_SH7216_Renesas/RTOSDemo/uIP_Task.c
Demo/SuperH_SH7216_Renesas/RTOSDemo/vecttbl.c
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h [new file with mode: 0644]
Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h [new file with mode: 0644]

index 751a3f91148b289e37ec14ab6ef7569e654b70f2..ef666fddb1892fcab9353d33114cd7ffdbf0c996 100644 (file)
@@ -7,9 +7,7 @@
 [GENERAL_DATA]\r
 [BREAKPOINTS]\r
 [OPEN_WORKSPACE_FILES]\r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" \r
 [WORKSPACE_FILE_STATES]\r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" -4 -23 1316 658 1 0 \r
 [LOADED_PROJECTS]\r
 "RTOSDemo" \r
 [END]\r
index bebfcf62b026cbb85e940aab959ffa13b8f08cdd..8417f08e5db79bf6ab7bc4ecada21ef58716d85d 100644 (file)
 #define configPERIPHERAL_CLOCK_HZ              ( 50000000UL )\r
 #define configTICK_RATE_HZ                             ( ( portTickType ) 1000 )\r
 #define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 140 )\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 32 * 1024 ) )\r
+#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 36 * 1024 ) )\r
 #define configMAX_TASK_NAME_LEN                        ( 12 )\r
-#define configUSE_TRACE_FACILITY               0\r
+#define configUSE_TRACE_FACILITY       1\r
 #define configUSE_16_BIT_TICKS                 0\r
 #define configIDLE_SHOULD_YIELD                        1\r
 #define configUSE_CO_ROUTINES                  0\r
 #define configUSE_MUTEXES                              1\r
-#define configCHECK_FOR_STACK_OVERFLOW 0\r
+#define configGENERATE_RUN_TIME_STATS  1\r
+#define configCHECK_FOR_STACK_OVERFLOW 2\r
 #define configUSE_RECURSIVE_MUTEXES            1\r
 #define configQUEUE_REGISTRY_SIZE              0\r
-#define configGENERATE_RUN_TIME_STATS  0\r
 #define configUSE_MALLOC_FAILED_HOOK   1\r
 #define configUSE_APPLICATION_TASK_TAG 1       /* Must be set to one for floating point support in this port. */\r
 \r
@@ -105,5 +105,31 @@ to exclude the API function. */
 #define INCLUDE_uxTaskGetStackHighWaterMark    1\r
 #define INCLUDE_xTaskGetSchedulerState         1\r
 \r
+#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()\r
+#define portGET_RUN_TIME_COUNTER_VALUE() 0\r
+\r
+/*-----------------------------------------------------------\r
+ * Ethernet configuration.\r
+ *-----------------------------------------------------------*/\r
+\r
+/* MAC address configuration. */\r
+#define configMAC_ADDR0        0x00\r
+#define configMAC_ADDR1        0x12\r
+#define configMAC_ADDR2        0x13\r
+#define configMAC_ADDR3        0x10\r
+#define configMAC_ADDR4        0x15\r
+#define configMAC_ADDR5        0x11\r
+\r
+/* IP address configuration. */\r
+#define configIP_ADDR0         192\r
+#define configIP_ADDR1         168\r
+#define configIP_ADDR2         0\r
+#define configIP_ADDR3         201\r
+\r
+/* Netmask configuration. */\r
+#define configNET_MASK0                255\r
+#define configNET_MASK1                255\r
+#define configNET_MASK2                255\r
+#define configNET_MASK3                0\r
 \r
 #endif /* FREERTOS_CONFIG_H */\r
index 39ff50ed0ef5f61ae46065c124359eacc218438e..09bc7ed990e1d8fb917a9c1a74f7adba0caa2871 100644 (file)
@@ -125,7 +125,15 @@ void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
                taskEXIT_CRITICAL();\r
        }\r
 }\r
+/*-----------------------------------------------------------*/\r
                                                        \r
+long lParTestGetLEDState( void )\r
+{\r
+       /* Returns the state of the fifth LED. */\r
+       return PE.DR.WORD & usLEDMasks[ 4 ];\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
 \r
 \r
 \r
index 54ad154e86dc3098a51f0e353817b60d187eb10d..5dc931ba2a380c08a0a3e503aa34c3cdb927b5c8 100644 (file)
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "User" "C source file|Standard Demo Tasks" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "User" "C source file|Standard Demo Tasks" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "User" "C source file|Standard Demo Tasks" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "User" "C source file|FreeTCPIP" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "User" "C source file|FreeTCPIP" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "User" "C source file|FreeTCPIP" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "User" "C source file|FreeTCPIP" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "User" "C source file|FreeTCPIP" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "User" "C source file|FreeTCPIP" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "User" "C source file|FreeTCPIP" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "User" "C source file" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "User" "C source file|RenesasCode" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "User" "C source file" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "User" "C source file|Standard Demo Tasks" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "User" "C source file" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "User" "C source file" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "User" "C source file" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "User" "Assembly source file" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "User" "C source file" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "User" "C source file" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "User" "C source file" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "User" "C source file" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "User" "Assembly source file" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "User" "C source file|FreeTCPIP" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "User" "C source file|FreeRTOS" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "User" "C source file|FreeRTOS" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "User" "C source file|FreeRTOS" 2 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "User" "C source file|FreeRTOS" 2 \r
 [FOLDER]\r
 "Assembly source file" "Assembly source file" \r
+"C header file" "C header file" \r
 "C source file" "C source file" \r
 "C source file|FreeRTOS" "" \r
+"C source file|FreeTCPIP" "" \r
+"C source file|RenesasCode" "" \r
 "C source file|Standard Demo Tasks" "" \r
 [GENERAL_DATA_PROJECT]\r
 "USE_CUSTOM_LINKAGE_ORDER" "0" \r
 "SessionSH7216_E10A-USB_SYSTEM__SH" "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\SessionSH7216_E10A-USB_SYSTEM__SH.hsf" 0 \r
 [GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH]\r
 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas OptLinker]\r
-"Single Shot" "019be9f9fe69ac10" 4 \r
+"Single Shot" "02ce8974bdcaac10" 4 \r
 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH Assembler]\r
 "Assembly source file" "05db08d6f178ac10" 3 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\regtest.src" "0fd8e3b27059ac10" 3 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC_ISR.src" "044f1e9ce4aaac10" 3 \r
 "C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\portasm.src" "0cc802940e29ac10" 3 \r
 "Linkage symbol file" "05db08d6f178ac10" 3 \r
 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Compiler]\r
-"C source file" "0ebee3d62979ac10" 2 \r
-"C++ source file" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0ebee3d62979ac10" 2 \r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0ebee3d62979ac10" 2 \r
+"C source file" "0dde9772c28aac10" 2 \r
+"C++ source file" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\BlockQ.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\GenQTest.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\PollQ.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\QPeek.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\blocktim.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\death.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\flash.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\integer.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\recmutex.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\Minimal\semtest.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\http-strings.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd-fs.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\apps\httpd\httpd.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\psock.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\timer.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\Common\ethernet\FreeTCPIP\uip_arp.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\ParTest\ParTest.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\RenesasCode\hwEthernetPhyRTL8201.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\dbsct.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\flop.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\intprg.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\printf-stdarg.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\resetprg.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\uIP_Task.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\vecttbl.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\EMAC.c" "03f4f874bdcaac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\webserver\httpd-cgi.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\list.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\MemMang\heap_2.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\portable\Renesas\SH2A_FPU\port.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\queue.c" "0dde9772c28aac10" 2 \r
+"C:\E\Dev\FreeRTOS\WorkingCopy\Source\tasks.c" "0dde9772c28aac10" 2 \r
 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH_Renesas SH C/C++ Library Generator]\r
-"Single Shot" "05db08d6f178ac10" 1 \r
+"Single Shot" "0a60f44dc2baac10" 1 \r
 [OPTIONS_Debug_SH7216_E10A-USB_SYSTEM__SH]\r
 "" 0 \r
 "[V|VERSION|1] [B|DEBUG|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(FILELEAF).obj^"] [S|LITERAL|POOL|BRANCH|JUMP|RETURN] [S|DISPSIZE|12] [I|TAB|8] [B|ERRORPATH|1] [B|CHGINCPATH|1] [S|CPU|SH2AFPU] [S|ENDIAN|BIG] [S|ROUND|NEAREST] [B|DENORMALIZE|0] [B|SKIPDEPENDENCY|1]\r
 " 3 \r
-"[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]\r
+"[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)|BTX_DESCR(0FFF91100)|BRX_DESCR(0FFF91200)|B_ETHERNET_BUFFERS(0FFF93100)|S(0FFF9FC00)] [B|SKIPDEPENDENCY|1]\r
 " 4 \r
-"[V|VERSION|7] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\Common\include^"] [S|NOMESSAGE|6|8|17] [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]\r
+"[V|VERSION|7] [S|INCLUDE|^"$(PROJDIR)\..\..\..\Source\portable\Renesas\SH2A_FPU^"|^"$(PROJDIR)\..\..\..\Source\include^"|^"$(PROJDIR)\.^"|^"$(PROJDIR)\..\..\Common\include^"|^"$(PROJDIR)\..\..\Common\ethernet\FreeTCPIP^"|^"$(PROJDIR)\webserver^"|^"$(PROJDIR)\RenesasCode^"] [S|DEFINE|PACK_STRUCT_END=UNPACK] [S|NOMESSAGE|6|8] [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|FPSCR|SAFE] [S|CPU|SH2AFPU] [S|ROUND|NEAREST] [B|CHGINCPATH|1] [B|SKIPDEPENDENCY|1] [N|DEPENDSCAN|1]\r
 " 2 \r
-"[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]\r
+"[V|VERSION|7] [S|MODE|BUILD/CHANGED] [S|EXISTOUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|RUNTIME|1] [B|STDARG|1] [B|STDLIB|1] [B|STRING|1] [S|OUTPUTPATH|^"$(CONFIGDIR)\$(PROJECTNAME).lib^"] [B|REENT|1] [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]\r
 " 1 \r
 [EXCLUDED_FILES_Debug_SH7216_E10A-USB_SYSTEM__SH]\r
 [LINKAGE_ORDER_Debug_SH7216_E10A-USB_SYSTEM__SH]\r
index 9d86fcc730cb7af34f746ca5a22339a766962236..d59ee5f08cfc30eff393472e5558ce4f6af2b52c 100644 (file)
Binary files a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav and b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RTOSDemo.nav differ
index 804f6fa5088b480c793000047ef2ed3ab5fb8646..750d5a6592a39b9366c9f363caceb8248bbc7049 100644 (file)
@@ -12,7 +12,7 @@
 "SessionSH7216_E10A-USB_SYSTEM__SH" \r
 [GENERAL_DATA_PROJECT]\r
 [GENERAL_DATA_CONFIGURATION_Debug_SH7216_E10A-USB_SYSTEM__SH]\r
-"PROJECT_FILES_MODIFIED_DATA_TAG" "FALSE" \r
+"PROJECT_FILES_MODIFIED_DATA_TAG" "TRUE" \r
 [SESSIONS_Debug_SH7216_E10A-USB_SYSTEM__SH]\r
 "SessionSH7216_E10A-USB_SYSTEM__SH" \r
 [GENERAL_DATA_SESSION_SessionSH7216_E10A-USB_SYSTEM__SH]\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/compiler.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/compiler.h
new file mode 100644 (file)
index 0000000..99ea877
--- /dev/null
@@ -0,0 +1,94 @@
+/******************************************************************************\r
+* File Name    : compiler.h\r
+* Version      : 1.0\r
+* Device(s)    : Renesas\r
+* Tool-Chain   : Renesas SH2A V9+\r
+* OS           : None\r
+* H/W Platform : SH2A\r
+* Description  : Compiler specific defines for abstraction\r
+*******************************************************************************\r
+* History      : DD.MM.YYYY Ver. Description\r
+*              : 01.08.2009 1.00 MAB First Release\r
+******************************************************************************/\r
+\r
+/******************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Technology Corp. and is only\r
+* intended for use with Renesas products. No other uses are authorized.\r
+* This software is owned by Renesas Technology Corp. and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES\r
+* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,\r
+* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
+* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY\r
+* DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES\r
+* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS\r
+* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this\r
+* software and to discontinue the availability of this software.\r
+* By using this software, you agree to the additional terms and\r
+* conditions found by accessing the following link:\r
+* http://www.renesas.com/disclaimer\r
+******************************************************************************/\r
+/* Copyright (C) 2008. Renesas Technology Corp.,       All Rights Reserved.  */\r
+/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved.  */\r
+/*****************************************************************************/\r
+\r
+#ifndef COMPILER_H_INCLUDED\r
+#define COMPILER_H_INCLUDED\r
+\r
+/******************************************************************************\r
+Defines\r
+******************************************************************************/\r
+\r
+/* Embedded CPU data type definitions */\r
+\r
+/* Set a few #defines for potential compilers used */\r
+#define                 MCS      0  /* Hitachi */\r
+#define                 GNU      1  /* Hitachi + many other devices */\r
+#define                 IAR      2  /* Hitachi + some other devices */\r
+#define                 MSV      3  /* Microsoft Visual C */\r
+\r
+/* Test the compiler intrinisic defs */\r
+#ifdef __GNUC__                     /* GNU compiler - C mode   */\r
+#define COMPILER    GNU\r
+\r
+#elif defined(__GNUG__)             /* GNU compiler - C++ mode */\r
+#define COMPILER    GNU\r
+\r
+#elif defined __IAR_SYSTEMS_ICC     /* IAR compiler */\r
+#define COMPILER    IAR\r
+\r
+#elif defined _MSC_VER              /* Microsoft c compiler */\r
+#define COMPILER    MSV\r
+#else\r
+                                    \r
+#define COMPILER    MCS             /* MCS compiler */\r
+                                    /* MCS compiler has MSB first even in little\r
+                                       endian mode unless #pragma or command\r
+                                       line switch used to change it */\r
+#define _BITFIELDS_MSB_FIRST_\r
+#endif\r
+\r
+/******************************************************************************\r
+Pragma macros\r
+******************************************************************************/\r
+                                    /* Visual Cpp */\r
+#if COMPILER == MSV\r
+#define PACK1                       pack(1)\r
+#define UNPACK                      pack()\r
+#else\r
+                                    /* MCS SH & H8S series recently got unified\r
+                                       pragma syntax */\r
+#define PACK1                       # ## pragma pack 1\r
+#define UNPACK                      # ## pragma unpack\r
+#endif\r
+\r
+#endif /* COMPILER_H_INCLUDED */\r
+\r
+/******************************************************************************\r
+End  Of File\r
+******************************************************************************/\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernet.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernet.h
new file mode 100644 (file)
index 0000000..11075f8
--- /dev/null
@@ -0,0 +1,152 @@
+/******************************************************************************\r
+*   DISCLAIMER\r
+*   Please refer to http://www.renesas.com/disclaimer\r
+******************************************************************************\r
+    Copyright   (C) 2008.   Renesas Technology Corp.,   All Rights Reserved.\r
+*******************************************************************************\r
+*   File Name        : hwEthernet.h\r
+*   Version          : 1.00\r
+*   Description  : Ethernet module device   driver\r
+******************************************************************************\r
+*   History :   DD.MM.YYYY Version Description\r
+*                   :   06.10.2009 1.00      First Release\r
+******************************************************************************/\r
+\r
+#ifndef HWETHERNET_H_INCLUDED\r
+#define HWETHERNET_H_INCLUDED\r
+\r
+/******************************************************************************\r
+Includes     <System Includes> , "Project   Includes"\r
+******************************************************************************/\r
+\r
+#include "typedefine.h"\r
+\r
+/******************************************************************************\r
+Typedef definitions\r
+******************************************************************************/\r
+typedef struct Discript\r
+{\r
+    uint32_t            status;\r
+    ushort16_t          bufsize;\r
+    ushort16_t          size;\r
+    char8_t             *buf_p;\r
+    struct Discript     *next;\r
+}   ethfifo;\r
+\r
+/******************************************************************************\r
+Macro   definitions\r
+******************************************************************************/\r
+#define BUFSIZE         256\r
+#define ENTRY           8\r
+\r
+#define  ACT            0x80000000\r
+#define  DL             0x40000000\r
+#define  FP1            0x20000000\r
+#define  FP0            0x10000000\r
+#define  FE             0x08000000\r
+\r
+#define  RFOVER         0x00000200\r
+#define  RMAF           0x00000080\r
+#define  RRF            0x00000010\r
+#define  RTLF           0x00000008\r
+#define  RTSF           0x00000004\r
+#define  PRE            0x00000002\r
+#define  CERF           0x00000001\r
+\r
+#define  ITF            0x00000010\r
+#define  CND            0x00000008\r
+#define  DLC            0x00000004\r
+#define  CD             0x00000002\r
+#define  TRO            0x00000001\r
+\r
+/** \r
+ * Renesas Ethernet API return defines\r
+ **/\r
+#define R_ETHER_OK      0\r
+#define R_ETHER_ERROR   -1\r
+\r
+\r
+/******************************************************************************\r
+Variable Externs\r
+******************************************************************************/\r
+\r
+/******************************************************************************\r
+Functions   Prototypes\r
+******************************************************************************/\r
+/** \r
+ * Renesas Ethernet API prototypes\r
+ **/\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+extern  int32_t R_Ether_Open(uint32_t   ch, uint8_t mac_addr[]);\r
+extern  int32_t R_Ether_Close(uint32_t ch);\r
+extern  int32_t R_Ether_Write(uint32_t ch, void *buf,   uint32_t len);\r
+extern  int32_t R_Ether_Read(uint32_t   ch, void *buf);\r
+\r
+/* Added for the FreeRTOS demo project. */\r
+unsigned long ulEMACRead( void );\r
+void vEMACWrite( void );\r
+void vInitEmac( void );\r
+long lEMACWaitForLink( void );\r
+\r
+/* Extension of the API functions added to allow PnP link */\r
+\r
+/* R_Ether_OpenEx opens irrispective of link status */\r
+extern  int32_t R_Ether_OpenEx(uint32_t   ch, uint8_t mac_addr[]);\r
+/* Enables/disables operation for the current link */\r
+extern  int32_t R_Ether_EnableEx(uint32_t   ch, int iEnable);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+/****************************************************/\r
+/* Ethernet statistic   collection data */\r
+struct enet_stats\r
+{\r
+    uint32_t    rx_packets;          /* total   packets received        */\r
+    uint32_t    tx_packets;          /* total   packets transmitted  */\r
+    uint32_t    rx_errors;           /* bad packets received            */\r
+    uint32_t    tx_errors;           /* packet transmit problems        */\r
+    uint32_t    rx_dropped;          /* no space in buffers          */\r
+    uint32_t    tx_dropped;          /* no space available          */\r
+    uint32_t    multicast;           /* multicast   packets received    */\r
+    uint32_t    collisions;\r
+\r
+    /* detailed rx_errors: */\r
+    uint32_t    rx_length_errors;\r
+    uint32_t    rx_over_errors;      /* receiver ring   buffer overflow  */\r
+    uint32_t    rx_crc_errors;       /* recved pkt with crc error    */\r
+    uint32_t    rx_frame_errors;     /* recv'd frame alignment error    */\r
+    uint32_t    rx_fifo_errors;      /* recv'r fifo overrun          */\r
+    uint32_t    rx_missed_errors;    /* receiver missed packet      */\r
+\r
+    /* detailed tx_errors   */\r
+    uint32_t    tx_aborted_errors;\r
+    uint32_t    tx_carrier_errors;\r
+    uint32_t    tx_fifo_errors;\r
+    uint32_t    tx_heartbeat_errors;\r
+    uint32_t    tx_window_errors;\r
+};\r
+\r
+struct ei_device\r
+{\r
+    const   char8_t             *name;\r
+    uchar8_t                    open;\r
+    uchar8_t                    Tx_act;\r
+    uchar8_t                    Rx_act;\r
+    uchar8_t                    txing;          /* Transmit Active */\r
+    uchar8_t                    irqlock;        /* EDMAC's interrupt disabled   when '1'.   */\r
+    uchar8_t                    dmaing;         /* EDMAC Active */\r
+    ethfifo                     *rxcurrent;     /* current receive discriptor   */\r
+    ethfifo                     *txcurrent;     /* current transmit discriptor */\r
+    uchar8_t                    save_irq;       /* Original dev->irq value. */\r
+    struct enet_stats   stat;\r
+    uchar8_t                    mac_addr[6];\r
+};\r
+\r
+#endif /*   HWETHERNET_H_INCLUDED    */\r
+\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhy.h
new file mode 100644 (file)
index 0000000..d3255ee
--- /dev/null
@@ -0,0 +1,91 @@
+/******************************************************************************\r
+* File Name    : hwEthernetPhy.h\r
+* Version      : 1.0\r
+* Device(s)    : Renesas\r
+* Tool-Chain   : Renesas SH2A V9+\r
+* OS           : None\r
+* H/W Platform : SH2A\r
+* Description  : Hardware driver for the LAN8700 PHY\r
+*******************************************************************************\r
+* History      : DD.MM.YYYY Ver. Description\r
+*              : 01.08.2009 1.00 MAB First Release\r
+******************************************************************************/\r
+\r
+/******************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Technology Corp. and is only\r
+* intended for use with Renesas products. No other uses are authorized.\r
+* This software is owned by Renesas Technology Corp. and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES\r
+* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,\r
+* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
+* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY\r
+* DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES\r
+* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS\r
+* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this\r
+* software and to discontinue the availability of this software.\r
+* By using this software, you agree to the additional terms and\r
+* conditions found by accessing the following link:\r
+* http://www.renesas.com/disclaimer\r
+******************************************************************************/\r
+/* Copyright (C) 2008. Renesas Technology Corp.,       All Rights Reserved.  */\r
+/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved.  */\r
+/*****************************************************************************/\r
+\r
+#ifndef HWETHERNETPHY_H_INCLUDED\r
+#define HWETHERNETPHY_H_INCLUDED\r
+\r
+/*****************************************************************************\r
+Enumerated Types\r
+******************************************************************************/\r
+\r
+typedef enum _NETLNK\r
+{\r
+    PHY_NO_LINK = 0,\r
+    PHY_LINK_10H,\r
+    PHY_LINK_10F,\r
+    PHY_LINK_100H,\r
+    PHY_LINK_100F\r
+    \r
+} NETLNK;\r
+\r
+/*****************************************************************************\r
+Public Functions\r
+******************************************************************************/\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/*****************************************************************************\r
+Function Name:  phyReset\r
+Description:    Executes software reset of PHY and sets to auto negotiate link\r
+Parameters:     None\r
+Return value:   0 for success -1 on error\r
+******************************************************************************/\r
+\r
+extern  int phyReset(void);\r
+\r
+/*****************************************************************************\r
+Function Name: phyStatus\r
+Description:   Function to reurn the type of physical link\r
+Parameters:    none\r
+Return value:  The link type\r
+*****************************************************************************/\r
+\r
+extern  NETLNK phyStatus(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif                              /* HWETHERNETPHY_H_INCLUDED */\r
+\r
+/*****************************************************************************\r
+End  Of File\r
+******************************************************************************/
\ No newline at end of file
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/hwEthernetPhyRTL8201.c
new file mode 100644 (file)
index 0000000..8422ced
--- /dev/null
@@ -0,0 +1,435 @@
+/******************************************************************************\r
+* File Name    : hwEthernetPhy.c\r
+* Version      : 1.0\r
+* Device(s)    : Renesas\r
+* Tool-Chain   : Renesas SH2A V9+\r
+* OS           : None\r
+* H/W Platform : SH2A\r
+* Description  : Hardware driver for the LAN8700 PHY\r
+*******************************************************************************\r
+* History      : DD.MM.YYYY Ver. Description\r
+*              : 01.08.2009 1.00 MAB First Release\r
+******************************************************************************/\r
+\r
+/******************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Technology Corp. and is only\r
+* intended for use with Renesas products. No other uses are authorized.\r
+* This software is owned by Renesas Technology Corp. and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES\r
+* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,\r
+* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
+* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY\r
+* DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES\r
+* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS\r
+* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this\r
+* software and to discontinue the availability of this software.\r
+* By using this software, you agree to the additional terms and\r
+* conditions found by accessing the following link:\r
+* http://www.renesas.com/disclaimer\r
+******************************************************************************/\r
+/* Copyright (C) 2008. Renesas Technology Corp.,       All Rights Reserved.  */\r
+/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved.  */\r
+/*****************************************************************************/\r
+\r
+/*****************************************************************************\r
+System Includes\r
+******************************************************************************/\r
+\r
+#include <stdio.h>\r
+/* Header file for sleep() and nop() functions */\r
+#include <machine.h>\r
+\r
+/*****************************************************************************\r
+User Includes\r
+******************************************************************************/\r
+\r
+/* Defines for I/O registers */\r
+#include "iodefine.h"\r
+/* rsk7216def.h provides common defines for widely used items. */\r
+#include "rsk7216def.h"\r
+/* Physical layer functions */\r
+#include "hwEthernetPhy.h"\r
+#include "Trace.h"\r
+\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/*****************************************************************************\r
+Constant Macros\r
+******************************************************************************/\r
+\r
+/* Preamble */\r
+#define PHY_ST                              0x0001\r
+/* Operation to be executed on PHY registers */\r
+#define PHY_READ                            0x0002\r
+#define PHY_WRITE                           0x0001\r
+/* Physical address of PHY device */\r
+#define PHY_ADDR                            0x001F\r
+\r
+/* Description of PHY data registers */\r
+#define PHY_BASIC_MODE_CONTROL              0x0000\r
+#define PHY_BASIC_MODE_STATUS               0x0001\r
+#define PHY_IDENTIFIER1                     0x0002\r
+#define PHY_IDENTIFIER2                     0x0003\r
+#define PHY_AN_ADVERTISEMENT                0x0004\r
+#define PHY_AN_LINK_PARTNER_ABILITY         0x0005\r
+\r
+/* Definitions of some configuration bits */\r
+#define PHY_RESET                           0x8000\r
+#define PHY_AN_ENABLE                       0x1200\r
+/* Bits for auto negotiation for 100, 10 half and full duplex set */\r
+#define PHY_AN_10_100_F_H                   0xDE1\r
+/* Link partner ability register bits for establising the result of the\r
+   auto negotiation */\r
+#define PHY_AN_100F                         BIT_8\r
+#define PHY_AN_100H                         BIT_7\r
+#define PHY_AN_10F                          BIT_6\r
+#define PHY_AN_10H                          BIT_5\r
+\r
+/*****************************************************************************\r
+Function Prototypes\r
+******************************************************************************/\r
+\r
+static USHORT phyReadReg(USHORT usRegAddr);\r
+static void phyWriteReg(USHORT usRegAddr, USHORT usData);\r
+static void phyPreamble(void);\r
+static void phyMiiWrite1(void);\r
+static void phyMiiWrite0(void);\r
+static void phyRegSet(USHORT usRegAddr, long lOption);\r
+static void phyRegRead(PUSHORT pusData);\r
+static void phyRegWrite(USHORT usData);\r
+static void phyTaZ0(void);\r
+static void phyTa10(void);\r
+static void phyDelay(void);\r
+\r
+/*****************************************************************************\r
+Public Functions\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyReset\r
+Description:    Executes software reset of PHY and sets to auto negotiate link\r
+Parameters:     None\r
+Return value:   0 for success -1 on error\r
+******************************************************************************/\r
+int phyReset(void)\r
+{\r
+       /* One second of attempting to reset the PHY */\r
+    int iCount = 1000; \r
+    /* Set software reset */\r
+    phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_RESET);\r
+    while (iCount--)\r
+    {\r
+        USHORT  usData;\r
+               \r
+               vTaskDelay( 2 / portTICK_RATE_MS );\r
+               \r
+               /* Read the status of the PHY */\r
+        usData = phyReadReg(PHY_BASIC_MODE_CONTROL);\r
+        /* Wait for the reset flag to be cleared */\r
+        if ((usData & PHY_RESET) == 0)\r
+        {\r
+            /* Set auto negoatiation for 10,100 full and half duplex */\r
+            phyWriteReg(PHY_AN_ADVERTISEMENT, PHY_AN_10_100_F_H);\r
+            /* Set auto negotiate and restart auto negotiate bits */\r
+            phyWriteReg(PHY_BASIC_MODE_CONTROL, PHY_AN_ENABLE);\r
+\r
+            /* Auto negotiation will now take place wait for two seconds */\r
+            vTaskDelay( 2000 / portTICK_RATE_MS );\r
+\r
+                       /* Success */\r
+            return 0;\r
+        }\r
+    }\r
+    /* Phy did not respond to software reset */\r
+    return -1;\r
+}\r
+/*****************************************************************************\r
+End of function phyReset\r
+ ******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name: phyStatus\r
+Description:   Function to reurn the type of physical link\r
+Parameters:    none\r
+Return value:  The link type\r
+*****************************************************************************/\r
+NETLNK phyStatus(void)\r
+{\r
+    /* The state of this flag depens on the hardware connection to the MAC */\r
+    if (!EtherC.PSR.BIT.LMON)\r
+    {\r
+        /* Read the auto negotiation link partner ability register to establish\r
+           the type of link */\r
+        USHORT  usData = phyReadReg(PHY_AN_LINK_PARTNER_ABILITY);\r
+        if (usData & PHY_AN_100F)\r
+        {\r
+            return PHY_LINK_100F;\r
+        }\r
+        if (usData & PHY_AN_100H)\r
+        {\r
+            return PHY_LINK_100H;\r
+        }\r
+        if (usData & PHY_AN_10F)\r
+        {\r
+            return PHY_LINK_10F;\r
+        }\r
+        if (usData & PHY_AN_10H)\r
+        {\r
+            return PHY_LINK_10H;\r
+        }\r
+    }\r
+    return PHY_NO_LINK;\r
+}\r
+/*****************************************************************************\r
+End of function  phyStatus\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Private Functions\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyReadReg\r
+Description:    Reads data from a register with the address usRegAddr\r
+Parameters:     (USHORT) usRegAddr - address to be read;\r
+Return value:   (USHORT) - value from read register;\r
+******************************************************************************/\r
+static USHORT phyReadReg(USHORT usRegAddr)\r
+{\r
+    USHORT  usData;\r
+    phyPreamble();\r
+    phyRegSet(usRegAddr, PHY_READ);\r
+    phyTaZ0();\r
+    phyRegRead(&usData);\r
+    phyTaZ0();\r
+    return usData;\r
+}\r
+/*****************************************************************************\r
+End of function phyReadReg\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyWriteReg\r
+Description:    Write data to register with the address usRegAddr\r
+Parameters:     (USHORT) usRegAddr - address of register where to be written;\r
+                (USHORT) usData - value to write;\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyWriteReg(USHORT usRegAddr, USHORT usData)\r
+{\r
+    phyPreamble();\r
+    phyRegSet(usRegAddr, PHY_WRITE);\r
+    phyTa10();\r
+    phyRegWrite(usData);\r
+    phyTaZ0();\r
+}\r
+/*****************************************************************************\r
+End of function phyWriteReg\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyPreamble\r
+Description:    Writing 32 bits of '1'\r
+Parameters:     None\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyPreamble(void)\r
+{\r
+    int iCount = 32;\r
+    while (iCount--)\r
+    {\r
+        phyMiiWrite1();\r
+    }\r
+}\r
+/*****************************************************************************\r
+End of function phyPreamble\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyRegSet\r
+Description:    Sets the address of register\r
+Parameters:     (USHORT) usRegAddr - address to be set;\r
+                (long) lOption - PHY_READ or PHY_WRITE;\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyRegSet(USHORT usRegAddr, long lOption)\r
+{\r
+    int iBit = 14;\r
+    USHORT usData;\r
+\r
+       /* Format of PHY Address Set Transmission */\r
+       /* ST R/W PAddress Address    */\r
+       /* 1  10  11111    xxxx    00 */ //Read\r
+       /* 1  01  11111    xxxx    00 */ //Write\r
+\r
+    usData = 0;\r
+    /* ST code */\r
+    usData = (PHY_ST << 14);\r
+    if (lOption == PHY_READ)\r
+    {\r
+        /* Option code (RD) */\r
+        usData |= (PHY_READ << 12);\r
+    }\r
+    else\r
+    {\r
+        /* Option code (WT) */\r
+        usData |= (PHY_WRITE << 12);\r
+    }\r
+    /* PHY Address  */\r
+    usData |= ((BYTE)PHY_ADDR << 7);\r
+    /* Reg Address  */\r
+    usData |= (USHORT)(usRegAddr << 2);\r
+\r
+    while (iBit--)\r
+    {\r
+        if ((usData & 0x8000) == 0)\r
+        {\r
+            phyMiiWrite0();\r
+        }\r
+        else\r
+        {\r
+            phyMiiWrite1();\r
+        }\r
+        usData <<= 1;\r
+    }\r
+}\r
+/*****************************************************************************\r
+End of function phyRegSet\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyRegRead\r
+Description:    Read data from register\r
+Parameters:     IN  pusDest - value to be read;\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyRegRead(PUSHORT pusDest)\r
+{\r
+    USHORT usData = 0;\r
+    int    iBit = 16;\r
+    while (iBit--)\r
+    {\r
+        EtherC.PIR.LONG = 0x00UL;\r
+        EtherC.PIR.LONG = 0x01UL;\r
+        usData <<= 1;\r
+\r
+        /* MDI read */\r
+        usData |= (USHORT)((EtherC.PIR.LONG & 0x08UL) >> 3);\r
+\r
+        EtherC.PIR.LONG = 0x01UL;\r
+        EtherC.PIR.LONG = 0x00UL;\r
+    }\r
+    *pusDest = usData;\r
+}\r
+/*****************************************************************************\r
+End of function phyRegRead\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyRegWrite\r
+Description:    Write 2 bytes (16 bit) to MII\r
+Parameters:     IN usData - value to be written;\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyRegWrite(USHORT usData)\r
+{\r
+    int iBit = 16;\r
+    while (iBit--)\r
+    {\r
+        if ((usData & 0x8000) == 0)\r
+        {\r
+            phyMiiWrite0();\r
+        }\r
+        else\r
+        {\r
+            phyMiiWrite1();\r
+        }\r
+        usData <<= 1;\r
+    }\r
+}\r
+/*****************************************************************************\r
+End of function phyRegWrite\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyTaZ0\r
+Description:    Set bus to high Z\r
+Parameters:     None\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyTaZ0(void)\r
+{\r
+    EtherC.PIR.LONG = 0x00UL;\r
+    EtherC.PIR.LONG = 0x01UL;\r
+    EtherC.PIR.LONG = 0x01UL;\r
+    EtherC.PIR.LONG = 0x00UL;\r
+}\r
+/*****************************************************************************\r
+End of function phyTaZ0\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyTa10\r
+Description:    Set bus to output\r
+Parameters:     None\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyTa10(void)\r
+{\r
+    EtherC.PIR.LONG = 0x06UL;\r
+    EtherC.PIR.LONG = 0x07UL;\r
+    EtherC.PIR.LONG = 0x07UL;\r
+    EtherC.PIR.LONG = 0x06UL;\r
+    EtherC.PIR.LONG = 0x02UL;\r
+    EtherC.PIR.LONG = 0x03UL;\r
+    EtherC.PIR.LONG = 0x03UL;\r
+    EtherC.PIR.LONG = 0x02UL;\r
+}\r
+/*****************************************************************************\r
+End of function phyTa10\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyMiiWrite1\r
+Description:    Write 1 to MII\r
+Parameters:     None\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyMiiWrite1(void)\r
+{\r
+    EtherC.PIR.LONG = 0x06UL;\r
+    EtherC.PIR.LONG = 0x07UL;\r
+    EtherC.PIR.LONG = 0x07UL;\r
+    EtherC.PIR.LONG = 0x06UL;\r
+}\r
+/*****************************************************************************\r
+End of function phyMiiWrite1\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+Function Name:  phyMiiWrite0\r
+Description:    Write 0 to MII\r
+Parameters:     None\r
+Return value:   None\r
+******************************************************************************/\r
+static void phyMiiWrite0(void)\r
+{\r
+    EtherC.PIR.LONG = 0x02UL;\r
+    EtherC.PIR.LONG = 0x03UL;\r
+    EtherC.PIR.LONG = 0x03UL;\r
+    EtherC.PIR.LONG = 0x02UL;\r
+}\r
+/*****************************************************************************\r
+End of function phyMiiWrite0\r
+******************************************************************************/\r
+\r
+/*****************************************************************************\r
+End  Of File\r
+******************************************************************************/\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/rsk7216def.h
new file mode 100644 (file)
index 0000000..e827b28
--- /dev/null
@@ -0,0 +1,106 @@
+/******************************************************************************\r
+* File Name    : rsk7670def.h\r
+* Version      : 1.0\r
+* Device(s)    : SH2A/7670\r
+* Tool-Chain   : Renesas SH2A V9+\r
+* OS           : None\r
+* H/W Platform : RSK+SH7670\r
+* Description  : Defines for RSK2+SH7670 kit.\r
+*******************************************************************************\r
+* History      : DD.MM.YYYY Ver. Description\r
+*              : 01.08.2009 1.00 MAB First Release\r
+******************************************************************************/\r
+\r
+/******************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Technology Corp. and is only\r
+* intended for use with Renesas products. No other uses are authorized.\r
+* This software is owned by Renesas Technology Corp. and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES\r
+* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,\r
+* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
+* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY\r
+* DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES\r
+* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS\r
+* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this\r
+* software and to discontinue the availability of this software.\r
+* By using this software, you agree to the additional terms and\r
+* conditions found by accessing the following link:\r
+* http://www.renesas.com/disclaimer\r
+******************************************************************************/\r
+/* Copyright (C) 2008. Renesas Technology Corp.,       All Rights Reserved.  */\r
+/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved.  */\r
+/*****************************************************************************/\r
+\r
+#ifndef RSK7216DEF_H\r
+#define RSK7216DEF_H\r
+\r
+/******************************************************************************\r
+Macro Defines\r
+******************************************************************************/\r
+\r
+/* General Values */\r
+#define                LED_ON                  (1)\r
+#define        LED_OFF                 (0)\r
+#define        SET_BIT_HIGH    (1)\r
+#define        SET_BIT_LOW             (0)\r
+#define        SET_BYTE_HIGH   (0xFF)\r
+#define        SET_BYTE_LOW    (0x00)\r
+\r
+/* Define switches to be polled if not available as interrupts */\r
+#define                SW_ACTIVE               FALSE\r
+\r
+#define        SW1                     PORT.PDDRL.BIT.PD16DR //"IRQ0" PD16\r
+#define        SW2                     PORT.PADRL.BIT.PA20DR //"IRQ6" PA20\r
+\r
+\r
+/* LEDs */\r
+#define                LED0                    PE.DR.BIT.B9 \r
+#define                LED1                    PE.DR.BIT.B11\r
+#define                LED2                    PE.DR.BIT.B12\r
+#define                LED3                    PE.DR.BIT.B13\r
+#define                LED4                    PE.DR.BIT.B14\r
+#define                LED5                    PE.DR.BIT.B15 \r
+\r
+#define ID_LED1     1\r
+#define ID_LED2     2\r
+#define ID_LED3     4\r
+#define ID_LED4     8\r
+#define ID_LED5     16\r
+#define ID_LED6     32\r
+#define ID_LED_ALL  (ID_LED1 | ID_LED2 | ID_LED3 | ID_LED4 | ID_LED5 | ID_LED6)\r
+\r
+#define PERIPHERAL_CLOCK_FREQUENCY  50000000UL\r
+\r
+/******************************************************************************\r
+Constant Macros\r
+******************************************************************************/\r
+\r
+#define BOARD_NAME  "SH7216 CPU BOARD"\r
+\r
+/******************************************************************************\r
+Public Functions\r
+******************************************************************************/\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+extern void led_init(void);\r
+extern void led_on(unsigned short ledno);\r
+extern void led_off(unsigned short ledno);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* RSK7216DEF_H */\r
+\r
+/******************************************************************************\r
+End  Of File\r
+******************************************************************************/
\ No newline at end of file
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/trace.h
new file mode 100644 (file)
index 0000000..2a2998b
--- /dev/null
@@ -0,0 +1,104 @@
+/******************************************************************************\r
+* File Name    : trace.h\r
+* Version      : 1.0\r
+* Device(s)    : Renesas\r
+* Tool-Chain   : Renesas SH2A V9+\r
+* OS           : None\r
+* H/W Platform : SH2A\r
+* Description  : Debug formatted output routine\r
+*                TRACE print function enabled with define _TRACE_ON_\r
+*******************************************************************************\r
+* History      : DD.MM.YYYY Ver. Description\r
+*              : 01.08.2009 1.00 MAB First Release\r
+******************************************************************************/\r
+\r
+/******************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Technology Corp. and is only\r
+* intended for use with Renesas products. No other uses are authorized.\r
+* This software is owned by Renesas Technology Corp. and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES\r
+* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,\r
+* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
+* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY\r
+* DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES\r
+* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS\r
+* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this\r
+* software and to discontinue the availability of this software.\r
+* By using this software, you agree to the additional terms and\r
+* conditions found by accessing the following link:\r
+* http://www.renesas.com/disclaimer\r
+******************************************************************************/\r
+/* Copyright (C) 2008. Renesas Technology Corp.,       All Rights Reserved.  */\r
+/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved.  */\r
+/*****************************************************************************/\r
+\r
+#ifndef TRACE_H_INCLUDED\r
+#define TRACE_H_INCLUDED\r
+\r
+/******************************************************************************\r
+User Includes\r
+******************************************************************************/\r
+\r
+#include "types.h"\r
+\r
+/******************************************************************************\r
+Function Macros\r
+******************************************************************************/\r
+\r
+/* Some function macros for TRACE output\r
+   NOTE: debugging TRACE statements require double braces\r
+   so the debug strings can be removed from the output load module:\r
+   TRACE(("My Variable = %u\r\n", uiMyVariable));\r
+   See ANSI C formatted output for more detail on the format specifiers */\r
+\r
+#ifdef _TRACE_ON_                   /* Trace ON */\r
+#define TRACE(_x_)                  Trace _x_\r
+#else                               /* _NO_TRACE_ON_ */\r
+#define TRACE(_x_)                  /* TRACE REMOVED */\r
+#endif                              /* _TRACE_ON_ */\r
+\r
+/******************************************************************************\r
+Public Functions\r
+******************************************************************************/\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/******************************************************************************\r
+Function Name: Trace\r
+Description:   Function to perform a formatted print output for debugging\r
+Parameters:    IN  pszFormat - Pointer to a null terminated format string\r
+               I/O ... - The parameters\r
+Return value:  The number of chars output\r
+******************************************************************************/\r
+#ifdef _TRACE_ON_                   /* Trace ON */\r
+extern  int Trace(const char *pszFormat, ...);\r
+#endif\r
+\r
+/******************************************************************************\r
+Function Name: dbgPrintBuffer\r
+Description:   Function to print a data buffer in hex format\r
+Parameters:    IN  pbyBuffer - Pointer to the buffer\r
+               IN  stLength - The length of the buffer\r
+Return value:  none\r
+******************************************************************************/\r
+#ifdef _TRACE_ON_                   /* Trace ON */\r
+extern  void dbgPrintBuffer(PBYTE pbyBuffer, size_t stLength);\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* TRACE_H_INCLUDED */\r
+\r
+/******************************************************************************\r
+End  Of File\r
+******************************************************************************/
\ No newline at end of file
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/RenesasCode/types.h
new file mode 100644 (file)
index 0000000..0d76ab5
--- /dev/null
@@ -0,0 +1,476 @@
+/******************************************************************************\r
+* File Name    : types.h\r
+* Version      : 1.0\r
+* Device(s)    : Renesas\r
+* Tool-Chain   : Renesas SH2A V9+\r
+* OS           : None\r
+* H/W Platform : SH2A\r
+* Description  : User Defined Type Definition File\r
+*******************************************************************************\r
+* History      : DD.MM.YYYY Ver. Description\r
+*              : 01.08.2009 1.00 MAB First Release\r
+******************************************************************************/\r
+\r
+/******************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Technology Corp. and is only\r
+* intended for use with Renesas products. No other uses are authorized.\r
+* This software is owned by Renesas Technology Corp. and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES\r
+* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,\r
+* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
+* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY\r
+* DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES\r
+* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS\r
+* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this\r
+* software and to discontinue the availability of this software.\r
+* By using this software, you agree to the additional terms and\r
+* conditions found by accessing the following link:\r
+* http://www.renesas.com/disclaimer\r
+******************************************************************************/\r
+/* Copyright (C) 2008. Renesas Technology Corp.,       All Rights Reserved.  */\r
+/* Copyright (C) 2009. Renesas Technology Europe Ltd., All Rights Reserved.  */\r
+/*****************************************************************************/\r
+\r
+#ifndef TYPES_H_INCLUDED\r
+#define TYPES_H_INCLUDED\r
+\r
+/******************************************************************************\r
+User Includes\r
+******************************************************************************/\r
+\r
+#include "Compiler.h"\r
+\r
+/******************************************************************************\r
+Function Macros\r
+******************************************************************************/\r
+\r
+#ifndef SWAPWORD\r
+#define SWAPWORD(x)           (WORD)((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))\r
+#endif\r
+\r
+#ifndef LOBYTE\r
+#define LOBYTE(x)             (BYTE)(x)\r
+#endif\r
+\r
+#ifndef HIBYTE\r
+#define HIBYTE(x)             (BYTE)((x) >> 8)\r
+#endif\r
+\r
+#ifndef MAKEWORD\r
+#define MAKEWORD(a, b)        ((WORD) (((BYTE) (a)) |\\r
+                              ((WORD) ((BYTE) (b))) << 8))\r
+#endif\r
+\r
+/******************************************************************************\r
+Typedefs\r
+******************************************************************************/\r
+\r
+/* Generic definitions */\r
+#ifndef NULL                        /* set null ((void *)0) */\r
+#define NULL                        0\r
+#endif\r
+\r
+#ifndef PNULL\r
+#define PNULL                       ((PVOID)0)\r
+#endif\r
+\r
+#ifndef BIT_0                       /* set bits */\r
+#define BIT_0                       0x1\r
+#define BIT_1                       0x2\r
+#define BIT_2                       0x4\r
+#define BIT_3                       0x8\r
+#define BIT_4                       0x10\r
+#define BIT_5                       0x20\r
+#define BIT_6                       0x40\r
+#define BIT_7                       0x80\r
+\r
+#define BIT_8                       0x100\r
+#define BIT_9                       0x200\r
+#define BIT_10                      0x400\r
+#define BIT_11                      0x800\r
+#define BIT_12                      0x1000\r
+#define BIT_13                      0x2000\r
+#define BIT_14                      0x4000\r
+#define BIT_15                      0x8000\r
+\r
+#define BIT_16                      0x10000L\r
+#define BIT_17                      0x20000L\r
+#define BIT_18                      0x40000L\r
+#define BIT_19                      0x80000L\r
+#define BIT_20                      0x100000L\r
+#define BIT_21                      0x200000L\r
+#define BIT_22                      0x400000L\r
+#define BIT_23                      0x800000L\r
+\r
+#define BIT_24                      0x1000000L\r
+#define BIT_25                      0x2000000L\r
+#define BIT_26                      0x4000000L\r
+#define BIT_27                      0x8000000L\r
+#define BIT_28                      0x10000000L\r
+#define BIT_29                      0x20000000L\r
+#define BIT_30                      0x40000000L\r
+#define BIT_31                      0x80000000L\r
+#endif\r
+\r
+#ifndef TRUE                        /* true and false */\r
+#define TRUE                        (BOOL)1\r
+#endif\r
+\r
+#ifndef FALSE\r
+#define FALSE                       (BOOL)0\r
+#endif\r
+\r
+#if defined(WIN32_SH4) && defined(__cplusplus)\r
+#define _SIZE_T\r
+#else\r
+#ifndef _SIZE_T\r
+#define _SIZE_T\r
+typedef unsigned long size_t;\r
+#endif\r
+#endif\r
+\r
+#ifndef BOOL\r
+#define BOOL                        BOOL\r
+typedef unsigned char BOOL;\r
+#endif\r
+\r
+#ifndef PBOOL\r
+#define PBOOL                       PBOOL\r
+typedef unsigned char *PBOOL;\r
+#endif\r
+\r
+#ifndef TCHAR\r
+#define TCHAR                       TCHAR\r
+typedef char    TCHAR;\r
+#endif\r
+\r
+#ifndef PTCHAR\r
+#define PTCHAR                      PTCHAR\r
+typedef char   *PTCHAR;\r
+#endif\r
+\r
+#ifndef PCTCHAR\r
+#define PCTCHAR                     PCTCHAR\r
+typedef char   *const PCTCHAR;\r
+#endif\r
+\r
+#ifndef CPCTCHAR\r
+#define CPCTCHAR                    CPCTCHAR\r
+typedef const char *const CPCTCHAR;\r
+#endif\r
+\r
+#ifndef CHAR\r
+#define CHAR                        CHAR\r
+typedef char    CHAR;\r
+#endif\r
+\r
+#ifndef CCHAR\r
+#define CCHAR                       CCHAR\r
+typedef const char CCHAR;\r
+#endif\r
+\r
+#ifndef PCHAR\r
+#define PCHAR                       PCHAR\r
+typedef char    *PCHAR;\r
+#endif\r
+\r
+#ifndef CPCHAR\r
+#define CPCHAR                      CPCHAR\r
+typedef const char *CPCHAR;\r
+#endif\r
+\r
+#ifndef PCCHAR\r
+#define PCCHAR                      PCCHAR\r
+typedef char *const PCCHAR;\r
+#endif\r
+\r
+#ifndef CPCCHAR\r
+#define CPCCHAR                     CPCCHAR\r
+typedef const char *const CPCCHAR;\r
+#endif\r
+\r
+#ifndef PTSTR\r
+#define PTSTR                       PTSTR\r
+typedef const char *PTSTR;\r
+#endif\r
+\r
+#ifndef PCTSTR\r
+#define PCTSTR                      PCTSTR\r
+typedef char *const PCTSTR;\r
+#endif\r
+\r
+#ifndef PCTSTR\r
+#define PCTSTR                      PCTSTR\r
+typedef const char *PCTSTR;\r
+#endif\r
+\r
+#ifndef PTSTR\r
+#define PTSTR                       PTSTR\r
+typedef char *PTSTR;\r
+#endif\r
+\r
+#ifndef BYTE\r
+#define BYTE                        BYTE\r
+typedef unsigned char BYTE;\r
+#endif\r
+\r
+#ifndef PBYTE\r
+#define PBYTE                       PBYTE\r
+typedef unsigned char *PBYTE;\r
+#endif\r
+\r
+#ifndef PCBYTE\r
+#define PCBYTE                      PCBYTE\r
+typedef unsigned char *const PCBYTE;\r
+#endif\r
+\r
+#ifndef CPBYTE\r
+#define CPBYTE                      CPBYTE\r
+typedef const unsigned char *CPBYTE;\r
+#endif\r
+\r
+#ifndef SHORT\r
+#define SHORT                       SHORT\r
+typedef short   SHORT;\r
+#endif\r
+\r
+#ifndef PSHORT\r
+#define PSHORT                      PSHORT\r
+typedef short *PSHORT;\r
+#endif\r
+\r
+#ifndef PCSHORT\r
+#define PCSHORT                     PCSHORT\r
+typedef short *const PCSHORT;\r
+#endif\r
+\r
+#ifndef CPSHORT\r
+#define CPSHORT                     CPSHORT\r
+typedef const short *CPSHORT;\r
+#endif\r
+\r
+#ifndef USHORT\r
+#define USHORT                      USHORT\r
+typedef unsigned short USHORT;\r
+#endif\r
+\r
+#ifndef PUSHORT\r
+#define PUSHORT                     PUSHORT\r
+typedef unsigned short *PUSHORT;\r
+#endif\r
+\r
+#ifndef PCUSHORT\r
+#define PCUSHORT                    PCUSHORT\r
+typedef unsigned short *const PCUSHORT;\r
+#endif\r
+\r
+#ifndef CPUSHORT\r
+#define CPUSHORT                    CPUSHORT\r
+typedef const unsigned short *CPUSHORT;\r
+#endif\r
+\r
+#ifndef WORD\r
+#define WORD                        WORD\r
+typedef unsigned short WORD;\r
+#endif\r
+\r
+#ifndef PWORD\r
+#define PWORD                       PWORD\r
+typedef unsigned short *PWORD;\r
+#endif\r
+\r
+#ifndef PCWORD\r
+#define PCWORD                      PCWORD\r
+typedef unsigned short *const PCWORD;\r
+#endif\r
+\r
+#ifndef INT\r
+#define INT                         INT\r
+typedef int INT;\r
+#endif\r
+\r
+#ifndef CINT\r
+#define CINT                        CINT\r
+typedef const int CINT;\r
+#endif\r
+\r
+#ifndef PINT\r
+#define PINT                        PINT\r
+typedef int *PINT;\r
+#endif\r
+\r
+#ifndef PCINT\r
+#define PCINT                       PCINT\r
+typedef int *const PCINT;\r
+#endif\r
+\r
+#ifndef CPINT\r
+#define CPINT                       CPINT\r
+typedef const int *CPINT;\r
+#endif\r
+\r
+#ifndef UINT\r
+#define UINT                        UINT\r
+typedef unsigned int UINT;\r
+#endif\r
+\r
+#ifndef PUINT\r
+#define PUINT                       PUINT\r
+typedef unsigned int *PUINT;\r
+#endif\r
+\r
+#ifndef PCUINT\r
+#define PCUINT                      PCUINT\r
+typedef unsigned int *const PCUINT;\r
+#endif\r
+\r
+#ifndef CPUINT\r
+#define CPUINT                      CPUINT\r
+typedef const unsigned int *CPUINT;\r
+#endif\r
+\r
+#ifndef DWORD\r
+#define DWORD                       DWORD\r
+typedef unsigned long DWORD;\r
+#endif\r
+\r
+#ifndef PDWORD\r
+#define PDWORD                      PDWORD\r
+typedef unsigned long *PDWORD;\r
+#endif\r
+\r
+#ifndef PCDWORD\r
+#define PCDWORD                     PCDWORD\r
+typedef unsigned long *const PCDWORD;\r
+#endif\r
+\r
+#ifndef CPDWORD\r
+#define CPDWORD                     CPDWORD\r
+typedef const unsigned long *CPDWORD;\r
+#endif\r
+\r
+#ifndef LONG\r
+#define LONG                        LONG\r
+typedef long LONG;\r
+#endif\r
+\r
+#ifndef PLONG\r
+#define PLONG                       PLONG\r
+typedef long *PLONG;\r
+#endif\r
+\r
+#ifndef PCLONG\r
+#define PCLONG                      PCLONG\r
+typedef long *const PCLONG;\r
+#endif\r
+\r
+#ifndef CPLONG\r
+#define CPLONG                      CPLONG\r
+typedef const long *CPLONG;\r
+#endif\r
+\r
+#ifndef ULONG\r
+#define ULONG                       ULONG\r
+typedef unsigned long ULONG;\r
+#endif\r
+\r
+#ifndef PULONG\r
+#define PULONG                      PULONG\r
+typedef unsigned long *PULONG;\r
+#endif\r
+\r
+#ifndef PCULONG\r
+#define PCULONG   PCULONG\r
+typedef unsigned long *const        PCULONG;\r
+#endif\r
+\r
+#ifndef CPULONG\r
+#define CPULONG                     CPULONG\r
+typedef const unsigned long *CPULONG;\r
+#endif\r
+\r
+#ifndef FLOAT\r
+#define FLOAT                       FLOAT\r
+typedef float FLOAT;\r
+#endif\r
+\r
+#ifndef DOUBLE\r
+#define DOUBLE                      DOUBLE\r
+typedef long double DOUBLE;\r
+#endif\r
+\r
+#ifndef PDOUBLE\r
+#define PDOUBLE                     PDOUBLE\r
+typedef long double *PDOUBLE;\r
+#endif\r
+\r
+#ifndef CPDOUBLE\r
+#define CPDOUBLE                    CPDOUBLE\r
+typedef const long double *CPDOUBLE;\r
+#endif\r
+\r
+#ifndef PCDOUBLE\r
+#define PCDOUBLE                    PCDOUBLE\r
+typedef long double *const PCDOUBLE;\r
+#endif\r
+\r
+#ifndef PVOID\r
+#define PVOID   PVOID\r
+typedef void *PVOID;\r
+#endif\r
+\r
+#ifndef VOID\r
+#define VOID                        VOID\r
+typedef void VOID;\r
+#endif\r
+\r
+#ifndef IOID\r
+#define IOID                        IOID\r
+typedef unsigned short IOID;\r
+#endif\r
+\r
+#ifndef PIOID\r
+#define PIOID                       PIOID\r
+typedef unsigned short *PIOID;\r
+#endif\r
+\r
+#ifndef BBYTE\r
+#define BBYTE   BBYTE\r
+typedef union {\r
+    unsigned char   BYTE;       /*lint -e46 */\r
+                                /* this is correct */\r
+    struct {\r
+        #ifdef _BITFIELDS_MSB_FIRST_\r
+        unsigned char B7:1;\r
+        unsigned char B6:1;\r
+        unsigned char B5:1;\r
+        unsigned char B4:1;\r
+        unsigned char B3:1;\r
+        unsigned char B2:1;\r
+        unsigned char B1:1;\r
+        unsigned char B0:1;\r
+        #else\r
+        unsigned char B0:1;\r
+        unsigned char B1:1;\r
+        unsigned char B2:1;\r
+        unsigned char B3:1;\r
+        unsigned char B4:1;\r
+        unsigned char B5:1;\r
+        unsigned char B6:1;\r
+        unsigned char B7:1;\r
+        #endif\r
+    } BIT;\r
+} BBYTE;\r
+#endif\r
+\r
+#endif /* TYPES_H_INCLUDED */\r
+\r
+/******************************************************************************\r
+End  Of File\r
+******************************************************************************/\r
index 63430238a655a539d49ff7ca370d6af863686c92..657f77a7bab3c0974d3c4ec3c9ae0f612a8a7414 100644 (file)
@@ -8,13 +8,45 @@
 "" \r
 [GENERAL_DATA]\r
 "FIRST_CONNECTION_TAG" "NO" \r
-"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|fff80688" \r
+"MRULABELS_DATAMANAGER_KEY" "FFFFFFFF|00000000|fff80300|fff80688" \r
 "RESET_CPU_AFTER_DOWNLOAD_TAG" "VARIANT_FALSE_STORE_TAG" \r
 "{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlLabelAddress" "" \r
 "{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlMonitorLastSaveLogDirectory" "" \r
 "{08009853-4189-4ADA-848F-0F1A84AFE443}MonitorCtrlViews" "0" \r
 "{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlECX_MAP_FIND_SYMBOL_LIST" "" \r
 "{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViews" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSCT" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapCtrlViewsSYM" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth0" "124" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth1" "156" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth2" "132" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth3" "129" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctListWnd0ColWidth4" "84" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp0" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp1" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp10" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp11" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp12" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp13" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp14" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp15" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp16" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp17" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp18" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp19" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp2" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp20" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp21" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp3" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp4" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp5" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp6" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp7" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp8" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0Exp9" "1" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollHorz" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWnd0ScrollVert" "0" \r
+"{287A8023-99B5-49E1-A54E-4DDCA43D7959}MapSctSetTreeWndInstanceKey0" "{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" \r
 "{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}ECXLABEL_ADDDLG_ADDR" "" \r
 "{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileDir" "" \r
 "{2BA6A3EE-6488-11D5-80D4-00C04F68EAD7}LabelCtrlSymbolFileName" "" \r
 "{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlSplitterPosition" "242" \r
 "{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlViews" "1" \r
 "{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineCtrlWindowProperties" "17" \r
-"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH\r
+"{313F4FC1-6566-11D5-8BBE-0004E2013C71}CmdLineWndInstanceKey0" "{WK_00000001_CmdLine}" \r
 "{313F4FC1-6566-11D5-8BBE-0004E2013C71}TclTkCtrlLogFileName" "" \r
 "{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_END_ADDRESS" "" \r
 "{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_COMPARE_START_ADDRESS" "" \r
-"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "fff80688\r
+"{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_DEST_ADDRESS" "fff80300\r
 "{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_END_ADDRESS" "FFFFFFFF" \r
 "{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_DISPLAY_START_ADDRESS" "00000000" \r
 "{313F4FC2-6566-11D5-8BBE-0004E2013C71}ECX_MEMORY_FILL_END_ADDRESS" "" \r
 "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_COMB_BUFFER" ",,,," \r
 "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}ECX_WAVE_SAMPLING_RATE" "1000" \r
 "{8A898260-6F1D-11D5-8EB6-00004CC34E9D}WaveformCtrlViews" "0" \r
-"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "1\r
-"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "50,456,35\r
+"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersCtrlViews" "0\r
+"{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ColumnWidth" "50,171,144\r
 "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0ECX_REGISTER_COUNT" "82" \r
 "{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" \r
 "{95A081A1-7001-11D5-B1FD-00A0C9E23A58}RegistersWnd0HideFLAGs" "1" \r
 "{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ECX_IMAGE_VIEW" "0,0,0,0,0,0" \r
 "{AC411480-6F0A-11D5-8EB6-00004CC34E9D}ImageCtrlViews" "0" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchCtrlViews" "4" \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "198\r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "150\r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth0" "175\r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth1" "341\r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth12" "150" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth2" "120" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ColWidth3" "200" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "pxCurrentTCB, 4, 0, P, Col, Hex, MN" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope," \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "*pulFlopBuffer, 10, 0, P, Col, Hex, N" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "xCurrentRxDesc, 10, 0, P, Col, Hex, N" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope," \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "*pusTaskCheckVariable, 10, 0, P, Col, Hex, N" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "uip_len, 2, 0, P, Col, Hex, MN" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope," \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "xGenericListItem, 11, 0, C0001, Col, Hex, N" \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "xEventListItem, 11, 0, C0001, Col, Hex, N" \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "uxPriority, 2, 0, C0001, Col, Hex, N" \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "pxStack, 4, 0, C0001, Col, Hex, N" \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0007" "pcTaskName, 6, 0, C0001, Col, Hex, N" \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0008" "uxCriticalNesting, 2, 0, C0001, Col, Hex, N" \r
-"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "3" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "uip_buf[21], 2, 0, P, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope," \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "xEventListItem, 11, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "uxPriority, 2, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "pxStack, 4, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0007" "pcTaskName, 6, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0008" "uxCriticalNesting, 2, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0009" "uxTCBNumber, 2, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0010" "uxBasePriority, 2, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0011" "pxTaskTag, 9, 0, C0001, Col, Hex, N" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0012" "ulRunTimeCounter, 2, 0, C0001, Col, Hex, MN" \r
+"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "0" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "150" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndRecentFile_WatchSave" "" \r
 "{B266D880-6FA1-11D5-8613-00A024591A38}WatchWndUpdate_Interval" "100" \r
 "{CBEBB610-1516-11D4-8F2D-00409545B67B}ElfDwarf2Objects" "1" \r
-"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "1000\r
+"{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_ARRAY_EXPAND_LIMIT" "-1\r
 "{CBEBB610-1516-11D4-8F2D-00409545B67B}LoadModule0OBJ_ELFDWARF2_STATIC_MEM_EXPAND" "1" \r
 "{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_1" "0,0,0,0,0,0," \r
 "{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_COLUMN_BC0_2" "" \r
 "{D293FA15-461F-4D9F-B9C9-64724B3409F9}T_TRACE_TRACE_ACQUISITION2" "1,0,1,1,1,1,1,0,0,0,0,0,0" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_DENORMAL_MODE" "16777216" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_EVAL_ROUND_MODE" "768" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_0" "0000000000000020\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_1" "00000000000C0001\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_0" "000000000000003C\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_1" "00000000FFE7FFFF\r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_10" "000000000000000A" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_11" "000000000000000B" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_12" "000000000000000C\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_13" "00000000FFE7FFFF\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_14" "0000000000000000\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_15" "00000000FFF869AC" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_16" "0000000000001ABA\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_17" "0000000000000001\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_18" "0000000000000075\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_12" "00000000FFF8B38E\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_13" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_14" "000000000000000A\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_15" "00000000FFF87AAC" \r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_16" "00000000000027B2\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_17" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_18" "0000000000000012\r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_19" "0000000000000000" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_2" "0000000000004EB8\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_2" "0000000000000007\r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_20" "0000000000000000" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_21" "0000000000000011" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_22" "0000000000000010" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_23" "000000000000000F\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_24" "0000000000000000\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_25" "00000000000C1005" \r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_23" "00000000000026A8\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_24" "0000000000000009\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_25" "0000000000041005" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_26" "0000000000000000" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_27" "0000000000000000" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_28" "00000000C0000034\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_29" "00000000CCCCCCCD\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_3" "00000000000C0005\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_30" "00000000C0785614\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_31" "000000007AE147AE\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_32" "0000000040DFBC8C\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_33" "00000000CCCCCCCD\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_34" "00000000BF8889CD\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_35" "00000000574CE48D\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_28" "00000000406FD2A7\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_29" "00000000EF9DB22B\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_3" "00000000000073A6\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_30" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_31" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_32" "0000000040283EF9\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_33" "00000000DB22D0E5\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_34" "000000004055371A\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_35" "000000009FBE76C8\r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_36" "0000000000000000" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_37" "0000000000000000" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_38" "00000000C0000034\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_39" "000000006DC5D639\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_4" "00000000FFF88166\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_40" "000000003F50624D\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_41" "00000000D2F1A9FC\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_38" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_39" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_4" "00000000FFF88334\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_40" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_41" "0000000000000000\r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_42" "0000000000000000" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_43" "C0000034CCCCCCCD\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_44" "C07856147AE147AE\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_45" "40DFBC8CCCCCCCCD\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_46" "BF8889CD574CE48D\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_43" "406FD2A7EF9DB22B\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_44" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_45" "40283EF9DB22D0E5\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_46" "4055371A9FBE76C8\r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_47" "0000000000000000" \r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_48" "C00000346DC5D639\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_49" "3F50624DD2F1A9FC\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_5" "0000000000041005\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_6" "0000000000080000\r
-"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_7" "0000000000040005\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_48" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_49" "0000000000000000\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_5" "0000000000000009\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_6" "0000000000041005\r
+"{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_7" "00000000FFF8785C\r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_8" "0000000000000008" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_9" "0000000000000009" \r
 "{D34C8080-5A99-11D5-B1FD-00A0C9E23A58}C_REGISTER_REG_COUNT" "50" \r
 [WINDOW_POSITION_STATE_DATA_VD1]\r
 "Help" "TOOLBAR 0" 59419 1 5 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
 "{WK_00000001_CmdLine}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.23" 220 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" \r
+"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.08" 361 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" \r
 "{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -23 892 659 9 0 "" "0.0" \r
 "{WK_00000001_EVENT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 292 0 0 350 200 2065 0 "32774|32775|32777|<<separator>>|32780|<<separator>>" "0.0" \r
-"{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" \r
-"{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|<<separator>>|42206|42205|42230|42229|42207|<<separator>>|42208|42209|42210|49076|42228|42227|<<separator>>|42231|42232|42234|42235|<<separator>>|42211|<<separator>>" "0.0" \r
-"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 1 "1.00" 220 560 340 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" \r
-"{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59421 0 0 "1.00" 374 0 0 350 200 18 0 "" "0.0" \r
+"{WK_00000001_IO}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 3 "0.31" 361 0 0 350 200 17 0 "32817|32826|32819|32820|32821" "0.0" \r
+"{WK_00000001_MAPSCT}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.86" 316 0 0 350 200 2065 0 "32812|<<separator>>|32813|32814|<<separator>>|32816|<<separator>>|32822|32821|<<separator>>|32796|32797|<<separator>>|32833|<<separator>>|32825|32829|<<separator>>|32852" "31.7" \r
+"{WK_00000001_MEMORY}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.46" 322 0 0 350 200 2065 0 "42202|42203|42204|42233|<<separator>>|42206|42205|42230|42229|42207|<<separator>>|42208|42209|42210|49076|42228|42227|<<separator>>|42231|42232|42234|42235|<<separator>>|42211|<<separator>>" "0.0" \r
+"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 2 "0.69" 361 560 340 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" \r
+"{WK_00000001_REGISTERS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59421 0 0 "1.00" 360 0 0 350 200 2065 0 "" "0.0" \r
 "{WK_00000001_STACKTRACE}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.50" 219 0 0 350 200 2065 0 "" "0.0" \r
-"{WK_00000001_STATUS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 4 "0.50" 220 0 0 350 200 17 0 "" "0.0" \r
-"{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.27" 220 0 0 350 200 18 0 "32781|32783|<<separator>>|32771|32829|32772|32827|32773|<<separator>>|32786|<<separator>>|32810|32811|32831" "0.0" \r
+"{WK_00000001_STATUS}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 4 "0.50" 361 0 0 350 200 17 0 "" "0.0" \r
+"{WK_00000001_WATCH}RTOSDemoSessionSH7216_E10A-USB_SYSTEM__SH" "WINDOW" 59422 0 0 "0.31" 361 0 0 350 200 18 0 "32781|32783|<<separator>>|32771|32829|32772|32827|32773|<<separator>>|32786|<<separator>>|32810|32811|32831" "0.0" \r
 "{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 340 560 340 350 200 18 0 "" "0.0" \r
 "{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" \r
 "{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" \r
 "{WK_TB00000023_RTOS}" "TOOLBAR 0" 59419 2 9 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
 "{WK_TB00000026_MACRO}" "TOOLBAR 0" 59419 1 6 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
 "{WK_TB00000028_RTOSDEBUG}" "TOOLBAR 0" 59419 2 2 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
-"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 3 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
+"{WK_TB00000029_SYSTEMTOOL}" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" \r
 [WINDOW_POSITION_STATE_DATA_VD2]\r
 [WINDOW_POSITION_STATE_DATA_VD3]\r
 [WINDOW_POSITION_STATE_DATA_VD4]\r
 [WINDOW_Z_ORDER]\r
-"C:\E\Dev\FreeRTOS\WorkingCopy\Demo\SuperH_SH7216_Renesas\RTOSDemo\main.c" \r
 [TARGET_NAME]\r
 "SH7216 E10A-USB SYSTEM (SH2A-FPU)" "" 0 \r
 [STATUSBAR_STATEINFO_VD1]\r
 [FLASH_DETAILS]\r
 "" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" \r
 [BREAKPOINTS]\r
+"c:\e\dev\freertos\workingcopy\demo\superh_sh7216_renesas\rtosdemo\main.c" 211 18016 1 "{00000000-0000-0000-C000-000000000046}" "" \r
 [END]\r
index 151489e87aa27cda656fead0cf257349e1bcb0b4..115c204ee8b721e82a1b6a22b7dee5201cbe4cf5 100644 (file)
 #define mainBLOCK_Q_PRIORITY                           ( tskIDLE_PRIORITY + 2 )\r
 #define mainCREATOR_TASK_PRIORITY           ( tskIDLE_PRIORITY + 3 )\r
 #define mainFLASH_TASK_PRIORITY                                ( tskIDLE_PRIORITY + 1 )\r
+#define mainuIP_TASK_PRIORITY                          ( tskIDLE_PRIORITY + 2 )\r
 #define mainINTEGER_TASK_PRIORITY           ( tskIDLE_PRIORITY )\r
 #define mainGEN_QUEUE_TASK_PRIORITY                    ( tskIDLE_PRIORITY )\r
 #define mainFLOP_TASK_PRIORITY                         ( tskIDLE_PRIORITY )\r
 \r
+#define mainuIP_STACK_SIZE                                     ( configMINIMAL_STACK_SIZE * 3 )\r
+\r
 /* The LED toggle by the check task. */\r
 #define mainCHECK_LED                                          ( 5 )\r
 \r
@@ -186,6 +189,8 @@ static void prvCheckTask( void *pvParameters );
 extern void vRegTest1Task( void *pvParameters );\r
 extern void vRegTest2Task( void *pvParameters );\r
 \r
+extern void vuIP_Task( void *pvParameters );\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 /* Variables that are incremented on each iteration of the reg test tasks - \r
@@ -206,12 +211,14 @@ xTaskHandle xCreatedTask;
        prvSetupHardware();\r
 \r
        /* Start the reg test tasks which test the context switching mechanism. */\r
-       xTaskCreate( vRegTest1Task, "RegTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask );\r
+       xTaskCreate( vRegTest1Task, "RegTst1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask );\r
        xPortUsesFloatingPoint( xCreatedTask );\r
        \r
-       xTaskCreate( vRegTest2Task, "RegTest2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask );\r
+       xTaskCreate( vRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xCreatedTask );\r
        xPortUsesFloatingPoint( xCreatedTask );\r
 \r
+       xTaskCreate( vuIP_Task, "uIP", mainuIP_STACK_SIZE, NULL, mainuIP_TASK_PRIORITY, NULL );\r
+\r
        /* Start the check task as described at the top of this file. */\r
        xTaskCreate( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );\r
 \r
@@ -225,7 +232,7 @@ xTaskHandle xCreatedTask;
     vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );\r
        vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY );\r
     vStartQueuePeekTasks();\r
-    vStartRecursiveMutexTasks();\r
+       vStartRecursiveMutexTasks();\r
        \r
        /* Start the math tasks as described at the top of this file. */\r
        vStartMathTasks( mainFLOP_TASK_PRIORITY );\r
@@ -355,6 +362,7 @@ void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName
        ( void ) pxTask;\r
        ( void ) pcTaskName;\r
        \r
+       taskDISABLE_INTERRUPTS();\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -371,9 +379,9 @@ volatile unsigned long ul;
        {\r
                nop();\r
        }\r
-       \r
+\r
        /* Initialise the ports used to toggle LEDs. */\r
-       vParTestInitialise();\r
+       vParTestInitialise();   \r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -419,3 +427,9 @@ void vApplicationTickHook( void )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
+char *pcGetTaskStatusMessage( void )\r
+{\r
+       /* Not bothered about a critical section here. */\r
+       return "Need to implement status message!";\r
+}\r
+/*-----------------------------------------------------------*/\r
index 7c6d42285ca6682851f8e399a8e543d8962d4b42..4a7be3f5319fb788a7e4c141e98bb778bec29045 100644 (file)
 ;    licensing and training services.\r
 ;*/\r
 \r
-       .import _pxCurrentTCB\r
-       .import _vTaskSwitchContext\r
        .import _ulRegTest1CycleCount\r
        .import _ulRegTest2CycleCount\r
+       .import _vPortYield\r
 \r
        .export _vRegTest1Task\r
        .export _vRegTest2Task\r
@@ -120,18 +119,6 @@ _vRegTest1Task:
        \r
 _vRegTest1Loop:\r
 \r
-       ; Set FPUL to a known value before the yield.\r
-       mov             #123, r0\r
-       lds             r0, fpul\r
-\r
-       ; Perform a yield, just for extra test coverage.\r
-       trapa   #33\r
-       \r
-       ; Check fpul still contains the expected value.\r
-       sts             fpul, r1\r
-       cmp/eq  r0, r1\r
-       bf              _vRegTest1Error\r
-       \r
        ; Reset r1 which was used in the tests.\r
        mov             #2, r1\r
 \r
@@ -338,7 +325,7 @@ _vRegTest2Task:
        fsts    fpul, fr13\r
        lds             r14, fpul\r
        fsts    fpul, fr14\r
-       \r
+\r
 _vRegTest2Loop:\r
 \r
        ; Reset r1 which was used in the tests.\r
index d1c14971aceb4f9ea9efbe398efedff71e296d50..684664fdac42b139e976349f6fed3f365b39e59d 100644 (file)
@@ -101,13 +101,6 @@ clock_time_t clock_time( void );
 /* The semaphore used by the ISR to wake the uIP task. */\r
 xSemaphoreHandle xEMACSemaphore = NULL;\r
 \r
-const struct uip_eth_addr xMACAddress = {      configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2,\r
-                                                                                       configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 };\r
-\r
-//_RB_ this should be made into a no copy driver.\r
-unsigned char uip_buf[ UIP_BUFSIZE + 2 ];\r
-//unsigned char* uip_buf = &( uip_buf_array[ 0 ] );\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
 void clock_init(void)\r
@@ -146,20 +139,18 @@ extern void ( vEMAC_ISR_Wrapper )( void );
        vSemaphoreCreateBinary( xEMACSemaphore );\r
 \r
        /* Initialise the MAC. */\r
-       R_Ether_Open( 0, ( void * ) &xMACAddress );\r
+       vInitEmac();\r
 \r
-       while( !phyStatus() )\r
+       while( lEMACWaitForLink() != pdPASS )\r
     {\r
         vTaskDelay( uipINIT_WAIT );\r
     }\r
 \r
-       R_Ether_EnableEx(0, 1);\r
-\r
        for( ;; )\r
        {\r
                /* Is there received data ready to be processed? */\r
-               uip_len = R_Ether_Read( 0, uip_buf );\r
-\r
+               uip_len = ( unsigned short ) ulEMACRead();\r
+               \r
                if( ( uip_len > 0 ) && ( uip_buf != NULL ) )\r
                {\r
                        /* Standard uIP loop taken from the uIP manual. */\r
@@ -174,8 +165,7 @@ extern void ( vEMAC_ISR_Wrapper )( void );
                                if( uip_len > 0 )\r
                                {\r
                                        uip_arp_out();\r
-                                       R_Ether_Write( 0, uip_buf, uip_len );\r
-                                       R_Ether_Write( 0, uip_buf, uip_len );\r
+                                       vEMACWrite();\r
                                }\r
                        }\r
                        else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) )\r
@@ -187,8 +177,7 @@ extern void ( vEMAC_ISR_Wrapper )( void );
                                uip_len is set to a value > 0. */\r
                                if( uip_len > 0 )\r
                                {\r
-                                       R_Ether_Write( 0, uip_buf, uip_len );\r
-                                       R_Ether_Write( 0, uip_buf, uip_len );\r
+                                       vEMACWrite();\r
                                }\r
                        }\r
                }\r
@@ -207,8 +196,7 @@ extern void ( vEMAC_ISR_Wrapper )( void );
                                        if( uip_len > 0 )\r
                                        {\r
                                                uip_arp_out();\r
-                                               R_Ether_Write( 0, uip_buf, uip_len );\r
-                                               R_Ether_Write( 0, uip_buf, uip_len );\r
+                                               vEMACWrite();\r
                                        }\r
                                }\r
 \r
index a5f1f43a4c5ac38404f4e541591a7543511dded0..6416f072add12d9ed6e1a030124ddd5bb7b63de9 100644 (file)
@@ -16,6 +16,7 @@
 extern void vPortStartFirstTask( void );\r
 extern void vPortYieldHandler( void );\r
 extern void vPortPreemptiveTick( void );\r
+extern void vEMAC_ISR_Wrapper( void );\r
 \r
 #pragma section VECTTBL\r
 \r
@@ -338,7 +339,7 @@ void *INT_Vectors[] = {
 // 152 WDT ITI\r
        (void*) INT_WDT_ITI,\r
 // 153 E-DMAC EINT0\r
-    (void*) INT_EDMAC_EINT0,\r
+    (void*) vEMAC_ISR_Wrapper,\r
 // 154 USB EP1FULL\r
     (void*) INT_USB_EP1FULL,\r
 // 155 USB EP2EMPTY\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC.c
new file mode 100644 (file)
index 0000000..0d1e124
--- /dev/null
@@ -0,0 +1,555 @@
+/*\r
+    FreeRTOS V6.0.2 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+\r
+    ***************************************************************************\r
+    *                                                                         *\r
+    * If you are:                                                             *\r
+    *                                                                         *\r
+    *    + New to FreeRTOS,                                                   *\r
+    *    + Wanting to learn FreeRTOS or multitasking in general quickly       *\r
+    *    + Looking for basic training,                                        *\r
+    *    + Wanting to improve your FreeRTOS skills and productivity           *\r
+    *                                                                         *\r
+    * then take a look at the FreeRTOS eBook                                  *\r
+    *                                                                         *\r
+    *        "Using the FreeRTOS Real Time Kernel - a Practical Guide"        *\r
+    *                  http://www.FreeRTOS.org/Documentation                  *\r
+    *                                                                         *\r
+    * A pdf reference manual is also available.  Both are usually delivered   *\r
+    * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+    * and 8pm GMT (although please allow up to 24 hours in case of            *\r
+    * exceptional circumstances).  Thank you for your support!                *\r
+    *                                                                         *\r
+    ***************************************************************************\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+    ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+    a combined work that includes FreeRTOS without being obliged to provide the\r
+    source code for proprietary components outside of the FreeRTOS kernel.\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+    more details. You should have received a copy of the GNU General Public \r
+    License and the FreeRTOS license exception along with FreeRTOS; if not it \r
+    can be viewed here: http://www.freertos.org/a00114.html and also obtained \r
+    by writing to Richard Barry, contact details for whom are available on the\r
+    FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    http://www.FreeRTOS.org - Documentation, latest information, license and\r
+    contact details.\r
+\r
+    http://www.SafeRTOS.com - A version that is certified for use in safety\r
+    critical systems.\r
+\r
+    http://www.OpenRTOS.com - Commercial support, development, porting,\r
+    licensing and training services.\r
+*/\r
+\r
+/* Hardware specific includes. */\r
+#include "iodefine.h"\r
+#include "hwEthernet.h"\r
+#include "hwEthernetPhy.h"\r
+\r
+/* FreeRTOS includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "semphr.h"\r
+\r
+/* uIP includes. */\r
+#include "net/uip.h"\r
+\r
+/* The time to wait between attempts to obtain a free buffer. */\r
+#define emacBUFFER_WAIT_DELAY_ms               ( 3 / portTICK_RATE_MS )\r
+\r
+/* The number of times emacBUFFER_WAIT_DELAY_ms should be waited before giving\r
+up on attempting to obtain a free buffer all together. */\r
+#define emacBUFFER_WAIT_ATTEMPTS       ( 30 )\r
+\r
+/* The number of Rx descriptors. */\r
+#define emacNUM_RX_DESCRIPTORS 3\r
+\r
+/* The number of Tx descriptors.  When using uIP there is not point in having\r
+more than two. */\r
+#define emacNUM_TX_BUFFERS     2\r
+\r
+/* The total number of EMAC buffers to allocate. */\r
+#define emacNUM_BUFFERS                ( emacNUM_RX_DESCRIPTORS + emacNUM_TX_BUFFERS )\r
+\r
+/* The time to wait for the Tx descriptor to become free. */\r
+#define emacTX_WAIT_DELAY_ms ( 10 / portTICK_RATE_MS )\r
+\r
+/* The total number of times to wait emacTX_WAIT_DELAY_ms for the Tx descriptor to\r
+become free. */\r
+#define emacTX_WAIT_ATTEMPTS ( 5 )\r
+\r
+/* Only Rx end and Tx end interrupts are used by this driver. */\r
+#define emacTX_END_INTERRUPT   ( 1UL << 21UL )\r
+#define emacRX_END_INTERRUPT   ( 1UL << 18UL )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The buffers and descriptors themselves. */\r
+#pragma section RX_DESCR\r
+       ethfifo xRxDescriptors[ emacNUM_RX_DESCRIPTORS ];\r
+#pragma section TX_DESCR\r
+       ethfifo xTxDescriptors[ emacNUM_TX_BUFFERS ];\r
+#pragma section _ETHERNET_BUFFERS\r
+       char xEthernetBuffers[ emacNUM_BUFFERS ][ UIP_BUFSIZE ];\r
+#pragma section\r
+\r
+/* Used to indicate which buffers are free and which are in use.  If an index\r
+contains 0 then the corresponding buffer in xEthernetBuffers is free, otherwise \r
+the buffer is in use or about to be used. */\r
+static unsigned char ucBufferInUse[ emacNUM_BUFFERS ];\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Initialise both the Rx and Tx descriptors.\r
+ */\r
+static void prvInitialiseDescriptors( void );\r
+\r
+/*\r
+ * Return a pointer to a free buffer within xEthernetBuffers.\r
+ */\r
+static unsigned char *prvGetNextBuffer( void );\r
+\r
+/*\r
+ * Return a buffer to the list of free buffers.\r
+ */\r
+static void prvReturnBuffer( unsigned char *pucBuffer );\r
+\r
+/*\r
+ * Examine the status of the next Rx FIFO to see if it contains new data.\r
+ */\r
+static unsigned long prvCheckRxFifoStatus( void );\r
+\r
+/*\r
+ * Setup the microcontroller for communication with the PHY.\r
+ */\r
+static void prvSetupPortPinsAndReset( void );\r
+\r
+/*\r
+ * Configure the Ethernet interface peripherals.\r
+ */\r
+static void prvConfigureEtherCAndEDMAC( void );\r
+\r
+/*\r
+ * Something has gone wrong with the descriptor usage.  Reset all the buffers\r
+ * and descriptors.\r
+ */\r
+static void prvResetEverything( void );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Points to the Rx descriptor currently in use. */\r
+static ethfifo *xCurrentRxDesc = NULL;\r
+\r
+/* The buffer used by the uIP stack to both receive and send.  This points to\r
+one of the Ethernet buffers when its actually in use. */\r
+unsigned char *uip_buf = NULL;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vInitEmac( void )\r
+{\r
+       /* Setup the SH hardware for MII communications. */\r
+       prvSetupPortPinsAndReset();\r
+       \r
+       /* Set the Rx and Tx descriptors into their initial state. */\r
+       prvInitialiseDescriptors();\r
+\r
+       /* Set the MAC address into the ETHERC */\r
+       EtherC.MAHR =   ( ( unsigned long ) configMAC_ADDR0 << 24UL ) | \r
+                                       ( ( unsigned long ) configMAC_ADDR1 << 16UL ) | \r
+                                       ( ( unsigned long ) configMAC_ADDR2 << 8UL ) | \r
+                                       ( unsigned long ) configMAC_ADDR3;\r
+                                       \r
+       EtherC.MALR.BIT.MA = ( ( unsigned long ) configMAC_ADDR4 << 8UL ) |\r
+                                                ( unsigned long ) configMAC_ADDR5;\r
+\r
+       /* Perform rest of interface hardware configuration. */\r
+       prvConfigureEtherCAndEDMAC();\r
+       \r
+       /* Nothing received yet, so uip_buf points nowhere. */\r
+       uip_buf = NULL;\r
+\r
+       /* Initialize the PHY */\r
+       phyReset();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vEMACWrite( void )\r
+{\r
+long x;\r
+\r
+       /* Wait until the second transmission of the last packet has completed. */\r
+       for( x = 0; x < emacTX_WAIT_ATTEMPTS; x++ )\r
+       {\r
+               if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 )\r
+               {\r
+                       /* Descriptor is still active. */\r
+                       vTaskDelay( emacTX_WAIT_DELAY_ms );\r
+               }\r
+               else\r
+               {\r
+                       break;\r
+               }\r
+       }\r
+       \r
+       /* Is the descriptor free after waiting for it? */\r
+       if( ( xTxDescriptors[ 1 ].status & ACT ) != 0 )\r
+       {\r
+               /* Something has gone wrong. */\r
+               prvResetEverything();\r
+       }\r
+       \r
+       /* Setup both descriptors to transmit the frame. */\r
+       xTxDescriptors[ 0 ].buf_p = uip_buf;\r
+       xTxDescriptors[ 0 ].bufsize = uip_len;  \r
+       xTxDescriptors[ 1 ].buf_p = uip_buf;\r
+       xTxDescriptors[ 1 ].bufsize = uip_len;\r
+\r
+       /* uip_buf is being sent by the Tx descriptor.  Allocate a new buffer\r
+       for use by the stack. */\r
+       uip_buf = prvGetNextBuffer();\r
+\r
+       /* Clear previous settings and go. */\r
+       xTxDescriptors[0].status &= ~( FP1 | FP0 );\r
+       xTxDescriptors[0].status |= ( FP1 | FP0 | ACT );\r
+       xTxDescriptors[1].status &= ~( FP1 | FP0 );\r
+       xTxDescriptors[1].status |= ( FP1 | FP0 | ACT );\r
+\r
+       EDMAC.EDTRR.LONG = 0x00000001;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+unsigned long ulEMACRead( void )\r
+{\r
+unsigned long ulBytesReceived;\r
+\r
+       ulBytesReceived = prvCheckRxFifoStatus();\r
+\r
+       if( ulBytesReceived > 0 )\r
+       {\r
+               xCurrentRxDesc->status &= ~( FP1 | FP0 );\r
+               xCurrentRxDesc->status |= ACT;                  \r
+\r
+               if( EDMAC.EDRRR.LONG == 0x00000000L )\r
+               {\r
+                       /* Restart Ethernet if it has stopped */\r
+                       EDMAC.EDRRR.LONG = 0x00000001L;\r
+               }\r
+\r
+               /* Mark the pxDescriptor buffer as free as uip_buf is going to be set to\r
+               the buffer that contains the received data. */\r
+               prvReturnBuffer( uip_buf );\r
+               \r
+               uip_buf = ( void * ) xCurrentRxDesc->buf_p;\r
+\r
+               /* Move onto the next buffer in the ring. */\r
+               xCurrentRxDesc = xCurrentRxDesc->next;\r
+       }\r
+\r
+       return ulBytesReceived;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+long lEMACWaitForLink( void )\r
+{\r
+long lReturn;\r
+\r
+       /* Set the link status. */\r
+       switch( phyStatus() )\r
+       {\r
+               /* Half duplex link */\r
+               case PHY_LINK_100H:\r
+               case PHY_LINK_10H:\r
+                                                               EtherC.ECMR.BIT.DM = 0;\r
+                                                               lReturn = pdPASS;\r
+                                                               break;\r
+\r
+               /* Full duplex link */\r
+               case PHY_LINK_100F:\r
+               case PHY_LINK_10F:\r
+                                                               EtherC.ECMR.BIT.DM = 1;\r
+                                                               lReturn = pdPASS;\r
+                                                               break;\r
+\r
+               default:\r
+                                                               lReturn = pdFAIL;\r
+                                                               break;\r
+       }\r
+\r
+       if( lReturn == pdPASS )\r
+       {\r
+               /* Enable receive and transmit. */\r
+               EtherC.ECMR.BIT.RE = 1;\r
+               EtherC.ECMR.BIT.TE = 1;\r
+\r
+               /* Enable EDMAC receive */\r
+               EDMAC.EDRRR.LONG = 0x1;\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvInitialiseDescriptors( void )\r
+{\r
+ethfifo *pxDescriptor;\r
+long x;\r
+\r
+       for( x = 0; x < emacNUM_BUFFERS; x++ )\r
+       {\r
+               /* Ensure none of the buffers are shown as in use at the start. */\r
+               ucBufferInUse[ x ] = pdFALSE;\r
+       }\r
+\r
+       /* Initialise the Rx descriptors. */\r
+       for( x = 0; x < emacNUM_RX_DESCRIPTORS; x++ )\r
+       {\r
+               pxDescriptor = &xRxDescriptors[ x ];\r
+               pxDescriptor->buf_p = &( xEthernetBuffers[ x ][ 0 ] );\r
+\r
+               pxDescriptor->bufsize = UIP_BUFSIZE;\r
+               pxDescriptor->size = 0;\r
+               pxDescriptor->status = ACT;\r
+               pxDescriptor->next = &xRxDescriptors[ x + 1 ];  \r
+               \r
+               /* Mark this buffer as in use. */\r
+               ucBufferInUse[ x ] = pdTRUE;\r
+       }\r
+\r
+       /* The last descriptor points back to the start. */\r
+       pxDescriptor->status |= DL;\r
+       pxDescriptor->next = &xRxDescriptors[ 0 ];\r
+       \r
+       /* Initialise the Tx descriptors. */\r
+       for( x = 0; x < emacNUM_TX_BUFFERS; x++ )\r
+       {\r
+               pxDescriptor = &( xTxDescriptors[ x ] );\r
+               \r
+               /* A buffer is not allocated to the Tx descriptor until a send is\r
+               actually required. */\r
+               pxDescriptor->buf_p = NULL;\r
+\r
+               pxDescriptor->bufsize = UIP_BUFSIZE;\r
+               pxDescriptor->size = 0;\r
+               pxDescriptor->status = 0;\r
+               pxDescriptor->next = &xTxDescriptors[ x + 1 ];  \r
+       }\r
+\r
+       /* The last descriptor points back to the start. */\r
+       pxDescriptor->status |= DL;\r
+       pxDescriptor->next = &( xTxDescriptors[ 0 ] );\r
+       \r
+       /* Use the first Rx descriptor to start with. */\r
+       xCurrentRxDesc = &( xRxDescriptors[ 0 ] );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static unsigned char *prvGetNextBuffer( void )\r
+{\r
+long x;\r
+unsigned char *pucReturn = NULL;\r
+unsigned long ulAttempts = 0;\r
+\r
+       while( pucReturn == NULL )\r
+       {\r
+               /* Look through the buffers to find one that is not in use by\r
+               anything else. */\r
+               for( x = 0; x < emacNUM_BUFFERS; x++ )\r
+               {\r
+                       if( ucBufferInUse[ x ] == pdFALSE )\r
+                       {\r
+                               ucBufferInUse[ x ] = pdTRUE;\r
+                               pucReturn = ( unsigned char * ) &( xEthernetBuffers[ x ][ 0 ] );\r
+                               break;\r
+                       }\r
+               }\r
+\r
+               /* Was a buffer found? */\r
+               if( pucReturn == NULL )\r
+               {\r
+                       ulAttempts++;\r
+\r
+                       if( ulAttempts >= emacBUFFER_WAIT_ATTEMPTS )\r
+                       {\r
+                               break;\r
+                       }\r
+\r
+                       /* Wait then look again. */\r
+                       vTaskDelay( emacBUFFER_WAIT_DELAY_ms );\r
+               }\r
+       }\r
+\r
+       return pucReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvReturnBuffer( unsigned char *pucBuffer )\r
+{\r
+unsigned long ul;\r
+\r
+       /* Return a buffer to the pool of free buffers. */\r
+       for( ul = 0; ul < emacNUM_BUFFERS; ul++ )\r
+       {\r
+               if( &( xEthernetBuffers[ ul ][ 0 ] ) == ( void * ) pucBuffer )\r
+               {\r
+                       ucBufferInUse[ ul ] = pdFALSE;\r
+                       break;\r
+               }\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvResetEverything( void )\r
+{\r
+       /* Temporary code just to see if this gets called.  This function has not\r
+       been implemented. */\r
+       portDISABLE_INTERRUPTS();\r
+       for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static unsigned long prvCheckRxFifoStatus( void )\r
+{\r
+unsigned long ulReturn = 0;\r
+\r
+       if( ( xCurrentRxDesc->status & ACT ) != 0 )\r
+       {\r
+               /* Current descriptor is still active. */\r
+       }\r
+       else if( ( xCurrentRxDesc->status & FE ) != 0 )\r
+       {\r
+               /* Frame error.  Clear the error. */\r
+               xCurrentRxDesc->status &= ~( FP1 | FP0 | FE );\r
+               xCurrentRxDesc->status &= ~( RMAF | RRF | RTLF | RTSF | PRE | CERF );\r
+               xCurrentRxDesc->status |= ACT;\r
+               xCurrentRxDesc = xCurrentRxDesc->next;\r
+\r
+               if( EDMAC.EDRRR.LONG == 0x00000000UL )\r
+               {\r
+                       /* Restart Ethernet if it has stopped. */\r
+                       EDMAC.EDRRR.LONG = 0x00000001UL;\r
+               }       \r
+       }\r
+       else\r
+       {\r
+               /* The descriptor contains a frame.  Because of the size of the buffers\r
+               the frame should always be complete. */\r
+               if( (xCurrentRxDesc->status & FP0) == FP0 )\r
+               {\r
+                       ulReturn = xCurrentRxDesc->size;\r
+               }\r
+               else\r
+               {\r
+                       /* Do not expect to get here. */\r
+                       prvResetEverything();\r
+               }\r
+       }\r
+       \r
+       return ulReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupPortPinsAndReset( void )\r
+{\r
+       /* Initialisation code taken from Renesas example project. */\r
+       \r
+       PFC.PACRL4.BIT.PA12MD = 0x7;            /* Set TX_CLK input      (EtherC) */\r
+       PFC.PACRL3.BIT.PA11MD = 0x7;            /* Set TX_EN output      (EtherC) */\r
+       PFC.PACRL3.BIT.PA10MD = 0x7;            /* Set MII_TXD0 output   (EtherC) */\r
+       PFC.PACRL3.BIT.PA9MD  = 0x7;            /* Set MII_TXD1 output   (EtherC) */\r
+       PFC.PACRL3.BIT.PA8MD  = 0x7;            /* Set MII_TXD2 output   (EtherC) */\r
+       PFC.PACRL2.BIT.PA7MD  = 0x7;            /* Set MII_TXD3 output   (EtherC) */\r
+       PFC.PACRL2.BIT.PA6MD  = 0x7;            /* Set TX_ER output      (EtherC) */\r
+       PFC.PDCRH4.BIT.PD31MD = 0x7;            /* Set RX_DV input       (EtherC) */\r
+       PFC.PDCRH4.BIT.PD30MD = 0x7;            /* Set RX_ER input       (EtherC) */\r
+       PFC.PDCRH4.BIT.PD29MD = 0x7;            /* Set MII_RXD3 input    (EtherC) */\r
+       PFC.PDCRH4.BIT.PD28MD = 0x7;            /* Set MII_RXD2 input    (EtherC) */\r
+       PFC.PDCRH3.BIT.PD27MD = 0x7;            /* Set MII_RXD1 input    (EtherC) */\r
+       PFC.PDCRH3.BIT.PD26MD = 0x7;            /* Set MII_RXD0 input    (EtherC) */\r
+       PFC.PDCRH3.BIT.PD25MD = 0x7;            /* Set RX_CLK input      (EtherC) */\r
+       PFC.PDCRH3.BIT.PD24MD = 0x7;            /* Set CRS input         (EtherC) */\r
+       PFC.PDCRH2.BIT.PD23MD = 0x7;            /* Set COL input         (EtherC) */\r
+       PFC.PDCRH2.BIT.PD22MD = 0x7;            /* Set WOL output        (EtherC) */\r
+       PFC.PDCRH2.BIT.PD21MD = 0x7;            /* Set EXOUT output      (EtherC) */\r
+       PFC.PDCRH2.BIT.PD20MD = 0x7;            /* Set MDC output        (EtherC) */\r
+       PFC.PDCRH1.BIT.PD19MD = 0x7;            /* Set LINKSTA input     (EtherC) */\r
+       PFC.PDCRH1.BIT.PD18MD = 0x7;            /* Set MDIO input/output (EtherC) */\r
+       \r
+       STB.CR4.BIT._ETHER = 0x0;       \r
+       EDMAC.EDMR.BIT.SWR = 1; \r
+       \r
+       /* Crude wait for reset to complete. */\r
+       vTaskDelay( 500 / portTICK_RATE_MS );   \r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvConfigureEtherCAndEDMAC( void )\r
+{\r
+       /* Initialisation code taken from Renesas example project. */\r
+       \r
+       /* TODO:    Check   bit 5   */\r
+       EtherC.ECSR.LONG = 0x00000037;                          /* Clear all EtherC statuS BFR, PSRTO, LCHNG, MPD, ICD */\r
+\r
+       /* TODO:    Check   bit 5   */\r
+       EtherC.ECSIPR.LONG = 0x00000020;                        /* Disable EtherC status change interrupt */\r
+       EtherC.RFLR.LONG = 1518;                                        /* Ether payload is 1500+ CRC */\r
+       EtherC.IPGR.LONG = 0x00000014;                          /* Intergap is 96-bit time */\r
+\r
+       /* EDMAC */\r
+       EDMAC.EESR.LONG = 0x47FF0F9F;                           /* Clear all EtherC and EDMAC status bits */\r
+       EDMAC.RDLAR = ( void * ) xCurrentRxDesc;        /* Initialaize Rx Descriptor List Address */\r
+       EDMAC.TDLAR = &( xTxDescriptors[ 0 ] );         /* Initialaize Tx Descriptor List Address */\r
+       EDMAC.TRSCER.LONG = 0x00000000;                         /* Copy-back status is RFE & TFE only   */\r
+       EDMAC.TFTR.LONG = 0x00000000;                           /* Threshold of Tx_FIFO */\r
+       EDMAC.FDR.LONG = 0x00000000;                            /* Transmit fifo & receive fifo is 256 bytes */\r
+       EDMAC.RMCR.LONG = 0x00000003;                           /* Receive function is normal mode(continued) */\r
+\r
+       /* Set the EDMAC interrupt priority - the interrupt priority must be\r
+       configKERNEL_INTERRUPT_PRIORITY no matter which peripheral is used to \r
+       generate the tick interrupt. */\r
+       INTC.IPR19.BIT._EDMAC = portKERNEL_INTERRUPT_PRIORITY;\r
+       EDMAC.EESIPR.LONG = emacTX_END_INTERRUPT | emacRX_END_INTERRUPT;        /* Enable Rx and Tx end interrupts. */\r
+\r
+       /* Clear the interrupt flag. */\r
+       CMT0.CMCSR.BIT.CMF = 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vEMAC_ISR_Handler( void )\r
+{\r
+unsigned long ul = EDMAC.EESR.LONG;\r
+long lHigherPriorityTaskWoken = pdFALSE;\r
+extern xSemaphoreHandle xEMACSemaphore;\r
+static long ulTxEndInts = 0;\r
+\r
+       /* Has a Tx end occurred? */\r
+       if( ul & emacTX_END_INTERRUPT )\r
+       {\r
+               ++ulTxEndInts;\r
+               if( ulTxEndInts >= 2 )\r
+               {\r
+                       /* Only return the buffer to the pool once both Txes have completed. */\r
+                       prvReturnBuffer( ( void * ) xTxDescriptors[ 0 ].buf_p );\r
+                       ulTxEndInts = 0;\r
+               }\r
+               EDMAC.EESR.LONG = emacTX_END_INTERRUPT;\r
+       }\r
+\r
+       /* Has an Rx end occurred? */\r
+       if( ul & emacRX_END_INTERRUPT )\r
+       {\r
+               /* Make sure the Ethernet task is not blocked waiting for a packet. */\r
+               xSemaphoreGiveFromISR( xEMACSemaphore, &lHigherPriorityTaskWoken );\r
+               portYIELD_FROM_ISR( lHigherPriorityTaskWoken );\r
+               EDMAC.EESR.LONG = emacRX_END_INTERRUPT;\r
+       }\r
+}\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/EMAC_ISR.src
new file mode 100644 (file)
index 0000000..3bcc718
--- /dev/null
@@ -0,0 +1,123 @@
+;/*\r
+;    FreeRTOS V6.0.2 - Copyright (C) 2009 Real Time Engineers Ltd.\r
+;\r
+;    ***************************************************************************\r
+;    *                                                                         *\r
+;    * If you are:                                                             *\r
+;    *                                                                         *\r
+;    *    + New to FreeRTOS,                                                   *\r
+;    *    + Wanting to learn FreeRTOS or multitasking in general quickly       *\r
+;    *    + Looking for basic training,                                        *\r
+;    *    + Wanting to improve your FreeRTOS skills and productivity           *\r
+;    *                                                                         *\r
+;    * then take a look at the FreeRTOS eBook                                  *\r
+;    *                                                                         *\r
+;    *        "Using the FreeRTOS Real Time Kernel - a Practical Guide"        *\r
+;    *                  http://www.FreeRTOS.org/Documentation                  *\r
+;    *                                                                         *\r
+;    * A pdf reference manual is also available.  Both are usually delivered   *\r
+;    * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+;    * and 8pm GMT (although please allow up to 24 hours in case of            *\r
+;    * exceptional circumstances).  Thank you for your support!                *\r
+;    *                                                                         *\r
+;    ***************************************************************************\r
+;\r
+;    This file is part of the FreeRTOS distribution.\r
+;\r
+;    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+;    the terms of the GNU General Public License (version 2) as published by the\r
+;    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+;    ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+;    a combined work that includes FreeRTOS without being obliged to provide the\r
+;    source code for proprietary components outside of the FreeRTOS kernel.\r
+;    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+;    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+;    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+;    more details. You should have received a copy of the GNU General Public \r
+;    License and the FreeRTOS license exception along with FreeRTOS; if not it \r
+;    can be viewed here: http://www.freertos.org/a00114.html and also obtained \r
+;    by writing to Richard Barry, contact details for whom are available on the\r
+;    FreeRTOS WEB site.\r
+;\r
+;    1 tab == 4 spaces!\r
+;\r
+;    http://www.FreeRTOS.org - Documentation, latest information, license and\r
+;    contact details.\r
+;\r
+;    http://www.SafeRTOS.com - A version that is certified for use in safety\r
+;    critical systems.\r
+;\r
+;    http://www.OpenRTOS.com - Commercial support, development, porting,\r
+;    licensing and training services.\r
+;*/\r
+\r
+       .import _vEMAC_ISR_Handler\r
+       .import _pxCurrentTCB\r
+       .export _vEMAC_ISR_Wrapper\r
+\r
+    .section    P\r
+\r
+       .macro portSAVE_CONTEXT\r
+\r
+       ; Save r0 to r14 and pr.\r
+       movml.l r15, @-r15\r
+       \r
+       ; Save mac1, mach and gbr\r
+       sts.l   macl, @-r15\r
+       sts.l   mach, @-r15\r
+       stc.l   gbr, @-r15\r
+       \r
+       ; Get the address of pxCurrentTCB\r
+       mov.l   #_pxCurrentTCB, r0\r
+       \r
+       ; Get the address of pxTopOfStack from the TCB.\r
+       mov.l   @r0, r0\r
+       \r
+       ; Save the stack pointer in pxTopOfStack.\r
+       mov.l   r15, @r0\r
+\r
+       .endm\r
+\r
+;-----------------------------------------------------------\r
+\r
+       .macro portRESTORE_CONTEXT\r
+\r
+       ; Get the address of the pxCurrentTCB variable.\r
+       mov.l   #_pxCurrentTCB, r0\r
+\r
+       ; Get the address of the task stack from pxCurrentTCB.\r
+       mov.l   @r0, r0\r
+\r
+       ; Get the task stack itself into the stack pointer. \r
+       mov.l   @r0, r15                \r
+\r
+       ; Restore system registers.\r
+       ldc.l   @r15+, gbr\r
+       lds.l   @r15+, mach\r
+       lds.l   @r15+, macl\r
+\r
+       ; Restore r0 to r14 and PR\r
+       movml.l @r15+, r15\r
+       \r
+       ; Pop the SR and PC to jump to the start of the task.\r
+       rte\r
+       nop\r
+\r
+       .endm\r
+;-----------------------------------------------------------\r
+       \r
+_vEMAC_ISR_Wrapper:\r
+\r
+       portSAVE_CONTEXT\r
+\r
+       mov.l   #_vEMAC_ISR_Handler, r0\r
+       jsr             @r0\r
+       nop\r
+\r
+       portRESTORE_CONTEXT\r
+       \r
+;-----------------------------------------------------------\r
+\r
+       \r
+       .end\r
+               \r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-cgi.c
new file mode 100644 (file)
index 0000000..f840171
--- /dev/null
@@ -0,0 +1,254 @@
+/**\r
+ * \addtogroup httpd\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \file\r
+ *         Web server script interface\r
+ * \author\r
+ *         Adam Dunkels <adam@sics.se>\r
+ *\r
+ */\r
+\r
+/*\r
+ * Copyright (c) 2001-2006, Adam Dunkels.\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ * 1. Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ * 2. Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the distribution.\r
+ * 3. The name of the author may not be used to endorse or promote\r
+ *    products derived from this software without specific prior\r
+ *    written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\r
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * This file is part of the uIP TCP/IP stack.\r
+ *\r
+ * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $\r
+ *\r
+ */\r
+#include "net/uip.h"\r
+#include "net/psock.h"\r
+#include "apps/httpd/httpd.h"\r
+#include "apps/httpd/httpd-cgi.h"\r
+#include "apps/httpd/httpd-fs.h"\r
+\r
+#include <stdio.h>\r
+#include <string.h>\r
+\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+HTTPD_CGI_CALL( file, "file-stats", file_stats );\r
+HTTPD_CGI_CALL( tcp, "tcp-connections", tcp_stats );\r
+HTTPD_CGI_CALL( net, "net-stats", net_stats );\r
+HTTPD_CGI_CALL( rtos, "rtos-stats", rtos_stats );\r
+HTTPD_CGI_CALL( run, "run-time", run_time );\r
+HTTPD_CGI_CALL( io, "led-io", led_io );\r
+\r
+static const struct httpd_cgi_call     *calls[] = { &file, &tcp, &net, &rtos, &run, &io, NULL };\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static PT_THREAD( nullfunction ( struct httpd_state *s, char *ptr ) )\r
+{\r
+       PSOCK_BEGIN( &s->sout );\r
+       ( void ) ptr;\r
+       PSOCK_END( &s->sout );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+httpd_cgifunction httpd_cgi( char *name )\r
+{\r
+       const struct httpd_cgi_call **f;\r
+\r
+       /* Find the matching name in the table, return the function. */\r
+       for( f = calls; *f != NULL; ++f )\r
+       {\r
+               if( strncmp((*f)->name, name, strlen((*f)->name)) == 0 )\r
+               {\r
+                       return( *f )->function;\r
+               }\r
+       }\r
+\r
+       return nullfunction;\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static unsigned short generate_file_stats( void *arg )\r
+{\r
+       char    *f = ( char * ) arg;\r
+       return sprintf( ( char * ) uip_appdata, "%5u", httpd_fs_count(f) );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static PT_THREAD( file_stats ( struct httpd_state *s, char *ptr ) )\r
+{\r
+       PSOCK_BEGIN( &s->sout );\r
+\r
+       PSOCK_GENERATOR_SEND( &s->sout, generate_file_stats, strchr(ptr, ' ') + 1 );\r
+\r
+       PSOCK_END( &s->sout );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static const char      closed[] = /*  "CLOSED",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0 };\r
+static const char      syn_rcvd[] = /*  "SYN-RCVD",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 0x44, 0 };\r
+static const char      syn_sent[] = /*  "SYN-SENT",*/ { 0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 0x54, 0 };\r
+static const char      established[] = /*  "ESTABLISHED",*/ { 0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0 };\r
+static const char      fin_wait_1[] = /*  "FIN-WAIT-1",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x31, 0 };\r
+static const char      fin_wait_2[] = /*  "FIN-WAIT-2",*/ { 0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 0x54, 0x2d, 0x32, 0 };\r
+static const char      closing[] = /*  "CLOSING",*/ { 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0 };\r
+static const char      time_wait[] = /*  "TIME-WAIT,"*/ { 0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 0x49, 0x54, 0 };\r
+static const char      last_ack[] = /*  "LAST-ACK"*/ { 0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 0x4b, 0 };\r
+\r
+static const char      *states[] = { closed, syn_rcvd, syn_sent, established, fin_wait_1, fin_wait_2, closing, time_wait, last_ack };\r
+\r
+static unsigned short generate_tcp_stats( void *arg )\r
+{\r
+       struct uip_conn         *conn;\r
+       struct httpd_state      *s = ( struct httpd_state * ) arg;\r
+\r
+       conn = &uip_conns[s->count];\r
+       return sprintf( ( char * ) uip_appdata, \r
+                                        "<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n", htons(conn->lport),\r
+                                        htons(conn->ripaddr.u16[0]) >> 8, htons(conn->ripaddr.u16[0]) & 0xff, htons(conn->ripaddr.u16[1]) >> 8,\r
+                                        htons(conn->ripaddr.u16[1]) & 0xff, htons(conn->rport), states[conn->tcpstateflags & UIP_TS_MASK], conn->nrtx, conn->timer,\r
+                                        (uip_outstanding(conn)) ? '*' : ' ', (uip_stopped(conn)) ? '!' : ' ' ); \r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static PT_THREAD( tcp_stats ( struct httpd_state *s, char *ptr ) )\r
+{\r
+       PSOCK_BEGIN( &s->sout );\r
+       ( void ) ptr;\r
+       for( s->count = 0; s->count < UIP_CONNS; ++s->count )\r
+       {\r
+               if( (uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED )\r
+               {\r
+                       PSOCK_GENERATOR_SEND( &s->sout, generate_tcp_stats, s );\r
+               }\r
+       }\r
+\r
+       PSOCK_END( &s->sout );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static unsigned short generate_net_stats( void *arg )\r
+{\r
+       struct httpd_state      *s = ( struct httpd_state * ) arg;\r
+       return sprintf( ( char * ) uip_appdata, "%5u\n", (( uip_stats_t * ) &uip_stat)[s->count] );\r
+}\r
+\r
+static PT_THREAD( net_stats ( struct httpd_state *s, char *ptr ) )\r
+{\r
+       PSOCK_BEGIN( &s->sout );\r
+       ( void ) ptr;\r
+#if UIP_STATISTICS\r
+       for( s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t); ++s->count )\r
+       {\r
+               PSOCK_GENERATOR_SEND( &s->sout, generate_net_stats, s );\r
+       }\r
+\r
+#endif /* UIP_STATISTICS */\r
+\r
+       PSOCK_END( &s->sout );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+extern void vTaskList( signed char *pcWriteBuffer );\r
+extern char *pcGetTaskStatusMessage( void );\r
+static char cCountBuf[128];\r
+long           lRefreshCount = 0;\r
+static unsigned short generate_rtos_stats( void *arg )\r
+{\r
+       ( void ) arg;\r
+       lRefreshCount++;\r
+       sprintf( cCountBuf, "<p><br>Refresh count = %d<p><br>%s", ( int ) lRefreshCount, pcGetTaskStatusMessage() );\r
+       vTaskList( uip_appdata );\r
+       strcat( uip_appdata, cCountBuf );\r
+\r
+       return strlen( uip_appdata );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static PT_THREAD( rtos_stats ( struct httpd_state *s, char *ptr ) )\r
+{\r
+       PSOCK_BEGIN( &s->sout );\r
+       ( void ) ptr;\r
+       PSOCK_GENERATOR_SEND( &s->sout, generate_rtos_stats, NULL );\r
+       PSOCK_END( &s->sout );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+char                   *pcStatus;\r
+unsigned long  ulString;\r
+\r
+static unsigned short generate_io_state( void *arg )\r
+{\r
+       extern long lParTestGetLEDState( void );\r
+       ( void ) arg;\r
+\r
+       /* Get the state of the LEDs that are on the FIO1 port. */\r
+       if( lParTestGetLEDState() )\r
+       {\r
+               pcStatus = "";\r
+       }\r
+       else\r
+       {\r
+               pcStatus = "checked";\r
+       }\r
+\r
+       sprintf( uip_appdata, "<input type=\"checkbox\" name=\"LED0\" value=\"1\" %s>LED<p><p>", pcStatus );\r
+\r
+       return strlen( uip_appdata );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+extern void vTaskGetRunTimeStats( signed char *pcWriteBuffer );\r
+static unsigned short generate_runtime_stats( void *arg )\r
+{\r
+       ( void ) arg;\r
+       lRefreshCount++;\r
+       sprintf( cCountBuf, "<p><br>Refresh count = %d", ( int ) lRefreshCount );\r
+       vTaskGetRunTimeStats( uip_appdata );\r
+       strcat( uip_appdata, cCountBuf );\r
+\r
+       return strlen( uip_appdata );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static PT_THREAD( run_time ( struct httpd_state *s, char *ptr ) )\r
+{\r
+       PSOCK_BEGIN( &s->sout );\r
+       ( void ) ptr;\r
+       PSOCK_GENERATOR_SEND( &s->sout, generate_runtime_stats, NULL );\r
+       PSOCK_END( &s->sout );\r
+}\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static PT_THREAD( led_io ( struct httpd_state *s, char *ptr ) )\r
+{\r
+       PSOCK_BEGIN( &s->sout );\r
+       ( void ) ptr;\r
+       PSOCK_GENERATOR_SEND( &s->sout, generate_io_state, NULL );\r
+       PSOCK_END( &s->sout );\r
+}\r
+\r
+/** @} */\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/404.html
new file mode 100644 (file)
index 0000000..43e7f4c
--- /dev/null
@@ -0,0 +1,8 @@
+<html>\r
+  <body bgcolor="white">\r
+    <center>\r
+      <h1>404 - file not found</h1>\r
+      <h3>Go <a href="/">here</a> instead.</h3>\r
+    </center>\r
+  </body>\r
+</html>
\ No newline at end of file
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.html
new file mode 100644 (file)
index 0000000..4937dc6
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html>\r
+  <head>\r
+    <title>FreeRTOS.org uIP WEB server demo</title>\r
+  </head>\r
+  <BODY onLoad="window.setTimeout(&quot;location.href='index.shtml'&quot;,100)">\r
+<font face="arial">\r
+Loading index.shtml.  Click <a href="index.shtml">here</a> if not automatically redirected.\r
+</font>\r
+</font>\r
+</body>\r
+</html>\r
+\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/index.shtml
new file mode 100644 (file)
index 0000000..29d242c
--- /dev/null
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html>\r
+  <head>\r
+    <title>FreeRTOS.org uIP WEB server demo</title>\r
+  </head>\r
+  <BODY onLoad="window.setTimeout(&quot;location.href='index.shtml'&quot;,2000)">\r
+<font face="arial">\r
+<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<br><p>\r
+<h2>Task statistics</h2>\r
+Page will refresh every 2 seconds.<p>\r
+<font face="courier"><pre>Task          State  Priority  Stack #<br>************************************************<br>\r
+%! rtos-stats\r
+</pre></font>\r
+</font>\r
+</body>\r
+</html>\r
+\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/io.shtml
new file mode 100644 (file)
index 0000000..fd0697d
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html>\r
+  <head>\r
+    <title>FreeRTOS.org uIP WEB server demo</title>\r
+  </head>\r
+  <BODY>\r
+<font face="arial">\r
+<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<b>LED and LCD IO</b><br>\r
+\r
+<p>\r
+\r
+Use the check box to turn on or off the LED, enter text to display on the OLED display, then click "Update IO".\r
+\r
+\r
+<p>\r
+<form name="aForm" action="/io.shtml" method="get">\r
+%! led-io\r
+<p>\r
+<input type="submit" value="Update IO">\r
+</form>\r
+<br><p>\r
+</font>\r
+</body>\r
+</html>\r
+\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/runtime.shtml
new file mode 100644 (file)
index 0000000..67cae46
--- /dev/null
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html>\r
+  <head>\r
+    <title>FreeRTOS.org uIP WEB server demo</title>\r
+  </head>\r
+  <BODY onLoad="window.setTimeout(&quot;location.href='runtime.shtml'&quot;,2000)">\r
+<font face="arial">\r
+<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<br><p>\r
+<h2>Run-time statistics</h2>\r
+Page will refresh every 2 seconds.<p>\r
+<font face="courier"><pre>Task            Abs Time      % Time<br>****************************************<br>\r
+%! run-time\r
+</pre></font>\r
+</font>\r
+</body>\r
+</html>\r
+\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/stats.shtml
new file mode 100644 (file)
index 0000000..d95a693
--- /dev/null
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html>\r
+  <head>\r
+    <title>FreeRTOS.org uIP WEB server demo</title>\r
+  </head>\r
+  <BODY>\r
+<font face="arial">\r
+<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<br><p>\r
+<h2>Network statistics</h2>\r
+<table width="300" border="0">\r
+<tr><td align="left"><font face="courier"><pre>\r
+IP           Packets dropped\r
+             Packets received\r
+             Packets sent\r
+IP errors    IP version/header length\r
+             IP length, high byte\r
+             IP length, low byte\r
+             IP fragments\r
+             Header checksum\r
+             Wrong protocol\r
+ICMP        Packets dropped\r
+             Packets received\r
+             Packets sent\r
+             Type errors\r
+TCP          Packets dropped\r
+             Packets received\r
+             Packets sent\r
+             Checksum errors\r
+             Data packets without ACKs\r
+             Resets\r
+             Retransmissions\r
+            No connection avaliable\r
+            Connection attempts to closed ports\r
+</pre></font></td><td><pre>%! net-stats\r
+</pre></table>\r
+</font>\r
+</body>\r
+</html>\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fs/tcp.shtml
new file mode 100644 (file)
index 0000000..4105367
--- /dev/null
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html>\r
+  <head>\r
+    <title>FreeRTOS.org uIP WEB server demo</title>\r
+  </head>\r
+  <BODY>\r
+<font face="arial">\r
+<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="stats.shtml">TCP Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS.org Homepage</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<br>\r
+<h2>Network connections</h2>\r
+<p>\r
+<table>\r
+<tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th></tr>\r
+%! tcp-connections\r
+</pre></font>\r
+</font>\r
+</body>\r
+</html>\r
+\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/httpd-fsdata.c
new file mode 100644 (file)
index 0000000..c8b2a80
--- /dev/null
@@ -0,0 +1,557 @@
+static const char data_404_html[] = {\r
+       /* /404.html */\r
+       0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,\r
+       0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, \r
+       0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, \r
+       0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, \r
+       0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, \r
+       0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, \r
+       0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, \r
+       0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, \r
+       0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, \r
+       0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, \r
+       0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, \r
+       0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, \r
+       0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, \r
+       0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, \r
+       0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, \r
+0};\r
+\r
+static const char data_index_html[] = {\r
+       /* /index.html */\r
+       0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,\r
+       0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, \r
+       0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, \r
+       0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, \r
+       0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, \r
+       0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, \r
+       0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, \r
+       0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, \r
+       0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, \r
+       0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, \r
+       0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, \r
+       0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, \r
+       0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, \r
+       0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, \r
+       0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, \r
+       0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, \r
+       0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, \r
+       0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, \r
+       0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, \r
+       0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, \r
+       0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, \r
+       0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x31, 0x30, 0x30, 0x29, 0x22, \r
+       0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, \r
+       0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, \r
+       0x3e, 0xa, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, \r
+       0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+       0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, \r
+       0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, \r
+       0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, \r
+       0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, \r
+       0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, \r
+       0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, \r
+       0x79, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, \r
+       0x65, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, \r
+       0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, \r
+       0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, \r
+       0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0};\r
+\r
+static const char data_index_shtml[] = {\r
+       /* /index.shtml */\r
+       0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,\r
+       0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, \r
+       0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, \r
+       0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, \r
+       0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, \r
+       0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, \r
+       0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, \r
+       0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, \r
+       0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, \r
+       0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, \r
+       0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, \r
+       0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, \r
+       0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, \r
+       0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, \r
+       0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, \r
+       0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, \r
+       0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, \r
+       0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, \r
+       0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, \r
+       0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64, 0x65, \r
+       0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71, \r
+       0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, \r
+       0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, \r
+       0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, \r
+       0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, \r
+       0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, \r
+       0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, \r
+       0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, \r
+       0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+       0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, \r
+       0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, \r
+       0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, \r
+       0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, \r
+       0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+       0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, \r
+       0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, \r
+       0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, \r
+       0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, \r
+       0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, \r
+       0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, \r
+       0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, \r
+       0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, \r
+       0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, \r
+       0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, \r
+       0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, \r
+       0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, \r
+       0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, \r
+       0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, \r
+       0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, \r
+       0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+       0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, \r
+       0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, \r
+       0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, \r
+       0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, \r
+       0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, \r
+       0x32, 0x3e, 0xa, 0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, \r
+       0x6c, 0x6c, 0x20, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, \r
+       0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x32, 0x20, 0x73, \r
+       0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, \r
+       0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, \r
+       0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, \r
+       0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, \r
+       0x6b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, \r
+       0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, \r
+       0x61, 0x63, 0x6b, 0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, \r
+       0x3e, 0xa, 0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, \r
+       0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, \r
+       0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, \r
+       0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, \r
+       0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, \r
+       0x6d, 0x6c, 0x3e, 0xa, 0xa, 0};\r
+\r
+static const char data_io_shtml[] = {\r
+       /* /io.shtml */\r
+       0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,\r
+       0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, \r
+       0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, \r
+       0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, \r
+       0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, \r
+       0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, \r
+       0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, \r
+       0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, \r
+       0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, \r
+       0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, \r
+       0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, \r
+       0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, \r
+       0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, \r
+       0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, \r
+       0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, \r
+       0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, \r
+       0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, \r
+       0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, \r
+       0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, \r
+       0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, \r
+       0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, \r
+       0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, \r
+       0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, \r
+       0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+       0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, \r
+       0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, \r
+       0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+       0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, \r
+       0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, \r
+       0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+       0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, \r
+       0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, \r
+       0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, \r
+       0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, \r
+       0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, \r
+       0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, \r
+       0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, \r
+       0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, \r
+       0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x3e, \r
+       0x4c, 0x45, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, \r
+       0x44, 0x20, 0x49, 0x4f, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, \r
+       0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0xa, 0x55, \r
+       0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65, \r
+       0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x74, 0x6f, 0x20, \r
+       0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x72, \r
+       0x20, 0x6f, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, \r
+       0x45, 0x44, 0x2c, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, \r
+       0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, \r
+       0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x74, \r
+       0x68, 0x65, 0x20, 0x4f, 0x4c, 0x45, 0x44, 0x20, 0x64, 0x69, \r
+       0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, \r
+       0x6e, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x22, 0x55, \r
+       0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, 0x22, 0x2e, \r
+       0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, \r
+       0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, \r
+       0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, \r
+       0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, \r
+       0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, \r
+       0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xa, 0x25, \r
+       0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xa, 0x3c, \r
+       0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, \r
+       0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d, \r
+       0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, \r
+       0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x49, 0x4f, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, \r
+       0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, \r
+       0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, \r
+       0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, \r
+       0x6c, 0x3e, 0xa, 0xa, 0};\r
+\r
+static const char data_runtime_shtml[] = {\r
+       /* /runtime.shtml */\r
+       0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,\r
+       0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, \r
+       0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, \r
+       0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, \r
+       0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, \r
+       0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, \r
+       0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, \r
+       0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, \r
+       0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, \r
+       0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, \r
+       0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, \r
+       0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, \r
+       0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, \r
+       0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, \r
+       0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20, 0x6f, \r
+       0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x6e, \r
+       0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, \r
+       0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f, 0x74, \r
+       0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, \r
+       0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x72, 0x75, 0x6e, 0x74, \r
+       0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x27, \r
+       0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, \r
+       0x30, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, \r
+       0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, \r
+       0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, \r
+       0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, \r
+       0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x61, 0x73, \r
+       0x6b, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, \r
+       0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, \r
+       0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, \r
+       0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x73, 0x68, \r
+       0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x75, 0x6e, 0x20, 0x54, \r
+       0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, \r
+       0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, \r
+       0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, \r
+       0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, \r
+       0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, \r
+       0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, \r
+       0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, \r
+       0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, \r
+       0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, \r
+       0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, \r
+       0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, \r
+       0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, \r
+       0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, \r
+       0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, \r
+       0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, \r
+       0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, \r
+       0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x72, \r
+       0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, \r
+       0x3c, 0x68, 0x32, 0x3e, 0x52, 0x75, 0x6e, 0x2d, 0x74, 0x69, \r
+       0x6d, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, \r
+       0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x50, \r
+       0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, \r
+       0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, \r
+       0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, \r
+       0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, \r
+       0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, \r
+       0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, \r
+       0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, \r
+       0x62, 0x73, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x25, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x3c, \r
+       0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, \r
+       0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, \r
+       0x20, 0x72, 0x75, 0x6e, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0xa, \r
+       0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, \r
+       0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, \r
+       0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, \r
+       0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0};\r
+\r
+static const char data_stats_shtml[] = {\r
+       /* /stats.shtml */\r
+       0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,\r
+       0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, \r
+       0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, \r
+       0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, \r
+       0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, \r
+       0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, \r
+       0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, \r
+       0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, \r
+       0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, \r
+       0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, \r
+       0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, \r
+       0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, \r
+       0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, \r
+       0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, \r
+       0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, \r
+       0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, \r
+       0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, \r
+       0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, \r
+       0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, \r
+       0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, \r
+       0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, \r
+       0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, \r
+       0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, \r
+       0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+       0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, \r
+       0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, \r
+       0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+       0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, \r
+       0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, \r
+       0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+       0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, \r
+       0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, \r
+       0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, \r
+       0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, \r
+       0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, \r
+       0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, \r
+       0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, \r
+       0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, \r
+       0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, \r
+       0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, \r
+       0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, \r
+       0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, \r
+       0x32, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, \r
+       0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, \r
+       0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, \r
+       0x30, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, \r
+       0x64, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, \r
+       0x65, 0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, \r
+       0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, \r
+       0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, \r
+       0x3e, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, \r
+       0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, \r
+       0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, \r
+       0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, \r
+       0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, \r
+       0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, \r
+       0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, \r
+       0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, \r
+       0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, \r
+       0x6e, 0x67, 0x74, 0x68, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, \r
+       0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, \r
+       0x69, 0x67, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, \r
+       0x68, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, \r
+       0x65, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, \r
+       0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, \r
+       0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x57, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, \r
+       0x6f, 0x63, 0x6f, 0x6c, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, \r
+       0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, \r
+       0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, \r
+       0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, \r
+       0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, \r
+       0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, \r
+       0x73, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, \r
+       0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, \r
+       0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, \r
+       0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, \r
+       0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, \r
+       0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, \r
+       0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, \r
+       0x61, 0x74, 0x61, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, \r
+       0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, \r
+       0x41, 0x43, 0x4b, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, \r
+       0x73, 0x65, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, \r
+       0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, \r
+       0x6f, 0x6e, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, \r
+       0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, \r
+       0x62, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+       0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, \r
+       0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, \r
+       0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, \r
+       0x70, 0x6f, 0x72, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, \r
+       0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, \r
+       0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, \r
+       0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, \r
+       0x73, 0x74, 0x61, 0x74, 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, \r
+       0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, \r
+       0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, \r
+       0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, \r
+       0x74, 0x6d, 0x6c, 0x3e, 0xa, 0};\r
+\r
+static const char data_tcp_shtml[] = {\r
+       /* /tcp.shtml */\r
+       0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,\r
+       0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, \r
+       0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, \r
+       0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f, \r
+       0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, \r
+       0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, \r
+       0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45, \r
+       0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, \r
+       0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, \r
+       0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34, \r
+       0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64, \r
+       0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, \r
+       0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, \r
+       0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, \r
+       0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, \r
+       0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, \r
+       0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, \r
+       0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x3e, 0xa, \r
+       0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, \r
+       0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, \r
+       0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, \r
+       0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, \r
+       0x22, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, \r
+       0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, \r
+       0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, \r
+       0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x75, 0x6e, 0x74, 0x69, \r
+       0x6d, 0x65, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+       0x52, 0x75, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, \r
+       0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, \r
+       0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+       0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, \r
+       0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, \r
+       0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+       0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, \r
+       0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, \r
+       0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, \r
+       0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, \r
+       0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, \r
+       0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, \r
+       0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, \r
+       0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, \r
+       0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, \r
+       0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, \r
+       0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, \r
+       0x3e, 0xa, 0x3c, 0x68, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, \r
+       0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, \r
+       0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, \r
+       0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, \r
+       0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, \r
+       0x65, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, \r
+       0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, \r
+       0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, \r
+       0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, \r
+       0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, \r
+       0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, \r
+       0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, \r
+       0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, \r
+       0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, \r
+       0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, \r
+       0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21, \r
+       0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, \r
+       0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0x3c, 0x2f, 0x70, \r
+       0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, \r
+       0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, \r
+       0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, \r
+       0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, 0};\r
+\r
+const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10, 0}};\r
+\r
+const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12, 0}};\r
+\r
+const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13, 0}};\r
+\r
+const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10, 0}};\r
+\r
+const struct httpd_fsdata_file file_runtime_shtml[] = {{file_io_shtml, data_runtime_shtml, data_runtime_shtml + 15, sizeof(data_runtime_shtml) - 15, 0}};\r
+\r
+const struct httpd_fsdata_file file_stats_shtml[] = {{file_runtime_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13, 0}};\r
+\r
+const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11, 0}};\r
+\r
+#define HTTPD_FS_ROOT file_tcp_shtml\r
+\r
+#define HTTPD_FS_NUMFILES 7\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/makefsdata
new file mode 100644 (file)
index 0000000..8d2715a
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/perl\r
+\r
+open(OUTPUT, "> httpd-fsdata.c");\r
+\r
+chdir("httpd-fs");\r
+\r
+opendir(DIR, ".");\r
+@files =  grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);\r
+closedir(DIR);\r
+\r
+foreach $file (@files) {  \r
+   \r
+    if(-d $file && $file !~ /^\./) {\r
+       print "Processing directory $file\n";\r
+       opendir(DIR, $file);\r
+       @newfiles =  grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);\r
+       closedir(DIR);\r
+       printf "Adding files @newfiles\n";\r
+       @files = (@files, map { $_ = "$file/$_" } @newfiles);\r
+       next;\r
+    }\r
+}\r
+\r
+foreach $file (@files) {\r
+    if(-f $file) {\r
+       \r
+       print "Adding file $file\n";\r
+       \r
+       open(FILE, $file) || die "Could not open file $file\n";\r
+\r
+       $file =~ s-^-/-;\r
+       $fvar = $file;\r
+       $fvar =~ s-/-_-g;\r
+       $fvar =~ s-\.-_-g;\r
+       # for AVR, add PROGMEM here\r
+       print(OUTPUT "static const unsigned char data".$fvar."[] = {\n");\r
+       print(OUTPUT "\t/* $file */\n\t");\r
+       for($j = 0; $j < length($file); $j++) {\r
+           printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));\r
+       }\r
+       printf(OUTPUT "0,\n");\r
+       \r
+       \r
+       $i = 0;        \r
+       while(read(FILE, $data, 1)) {\r
+           if($i == 0) {\r
+               print(OUTPUT "\t");\r
+           }\r
+           printf(OUTPUT "%#02x, ", unpack("C", $data));\r
+           $i++;\r
+           if($i == 10) {\r
+               print(OUTPUT "\n");\r
+               $i = 0;\r
+           }\r
+       }\r
+       print(OUTPUT "0};\n\n");\r
+       close(FILE);\r
+       push(@fvars, $fvar);\r
+       push(@pfiles, $file);\r
+    }\r
+}\r
+\r
+for($i = 0; $i < @fvars; $i++) {\r
+    $file = $pfiles[$i];\r
+    $fvar = $fvars[$i];\r
+\r
+    if($i == 0) {\r
+        $prevfile = "NULL";\r
+    } else {\r
+        $prevfile = "file" . $fvars[$i - 1];\r
+    }\r
+    print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");\r
+    print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");\r
+    print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");\r
+}\r
+\r
+print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");\r
+print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n");\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/uip-conf.h
new file mode 100644 (file)
index 0000000..e43d8dc
--- /dev/null
@@ -0,0 +1,162 @@
+/**\r
+ * \addtogroup uipopt\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \name Project-specific configuration options\r
+ * @{\r
+ *\r
+ * uIP has a number of configuration options that can be overridden\r
+ * for each project. These are kept in a project-specific uip-conf.h\r
+ * file and all configuration names have the prefix UIP_CONF.\r
+ */\r
+\r
+/*\r
+ * Copyright (c) 2006, Swedish Institute of Computer Science.\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ * 1. Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ * 2. Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the distribution.\r
+ * 3. Neither the name of the Institute nor the names of its contributors\r
+ *    may be used to endorse or promote products derived from this software\r
+ *    without specific prior written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND\r
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE\r
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
+ * SUCH DAMAGE.\r
+ *\r
+ * This file is part of the uIP TCP/IP stack\r
+ *\r
+ * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $\r
+ */\r
+\r
+/**\r
+ * \file\r
+ *         An example uIP configuration file\r
+ * \author\r
+ *         Adam Dunkels <adam@sics.se>\r
+ */\r
+\r
+#ifndef __UIP_CONF_H__\r
+#define __UIP_CONF_H__\r
+\r
+#define UIP_CONF_EXTERNAL_BUFFER\r
+\r
+/**\r
+ * 8 bit datatype\r
+ *\r
+ * This typedef defines the 8-bit type used throughout uIP.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+typedef unsigned char u8_t;\r
+\r
+/**\r
+ * 16 bit datatype\r
+ *\r
+ * This typedef defines the 16-bit type used throughout uIP.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+typedef unsigned short u16_t;\r
+\r
+typedef unsigned long u32_t;\r
+\r
+/**\r
+ * Statistics datatype\r
+ *\r
+ * This typedef defines the dataype used for keeping statistics in\r
+ * uIP.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+typedef unsigned short uip_stats_t;\r
+\r
+/**\r
+ * Maximum number of TCP connections.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_MAX_CONNECTIONS 40\r
+\r
+/**\r
+ * Maximum number of listening TCP ports.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_MAX_LISTENPORTS 40\r
+\r
+/**\r
+ * uIP buffer size.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_BUFFER_SIZE     1480\r
+\r
+/**\r
+ * CPU byte order.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_BYTE_ORDER      UIP_BIG_ENDIAN\r
+\r
+/**\r
+ * Logging on or off\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_LOGGING         0\r
+\r
+/**\r
+ * UDP support on or off\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_UDP             0\r
+\r
+/**\r
+ * UDP checksums on or off\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_UDP_CHECKSUMS   1\r
+\r
+/**\r
+ * uIP statistics on or off\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_STATISTICS      1\r
+\r
+/* Here we include the header file for the application(s) we use in\r
+   our project. */\r
+/*#include "smtp.h"*/\r
+/*#include "hello-world.h"*/\r
+/*#include "telnetd.h"*/\r
+#include "webserver.h"\r
+/*#include "dhcpc.h"*/\r
+/*#include "resolv.h"*/\r
+/*#include "webclient.h"*/\r
+\r
+#define CCIF\r
+#define CC_REGISTER_ARG\r
+\r
+#endif /* __UIP_CONF_H__ */\r
+\r
+/** @} */\r
+/** @} */\r
diff --git a/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h b/Demo/SuperH_SH7216_Renesas/RTOSDemo/webserver/webserver.h
new file mode 100644 (file)
index 0000000..5267f05
--- /dev/null
@@ -0,0 +1,47 @@
+/*\r
+ * Copyright (c) 2002, Adam Dunkels.\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ * 1. Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ * 2. Redistributions in binary form must reproduce the above\r
+ *    copyright notice, this list of conditions and the following\r
+ *    disclaimer in the documentation and/or other materials provided\r
+ *    with the distribution.\r
+ * 3. The name of the author may not be used to endorse or promote\r
+ *    products derived from this software without specific prior\r
+ *    written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\r
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * This file is part of the uIP TCP/IP stack\r
+ *\r
+ * $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $\r
+ *\r
+ */\r
+#ifndef __WEBSERVER_H__\r
+#define __WEBSERVER_H__\r
+\r
+#include "apps/httpd/httpd.h"\r
+\r
+typedef struct httpd_state uip_tcp_appstate_t;\r
+/* UIP_APPCALL: the name of the application function. This function\r
+   must return void and take no arguments (i.e., C type "void\r
+   appfunc(void)"). */\r
+#define UIP_APPCALL     httpd_appcall\r
+\r
+\r
+#endif /* __WEBSERVER_H__ */\r