/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
#/*\r
-# FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+# FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
#\r
# This file is part of the FreeRTOS.org distribution.\r
#\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
#/*\r
-# FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+# FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
#\r
# This file is part of the FreeRTOS.org distribution.\r
#\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
DaveTm { 0,0,0,0,0,0,0,0 }\r
\r
Target (Target 1), 0x0004 // Tools: 'ARM-ADS'\r
-GRPOPT 1,(System),0,0,0\r
+GRPOPT 1,(System),1,0,0\r
GRPOPT 2,(Demo Files),0,0,0\r
GRPOPT 3,(FreeRTOS files),0,0,0\r
\r
OPTFFF 1,1,2,0,0,0,0,0,<.\STM32F10x.s><STM32F10x.s> \r
-OPTFFF 1,2,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\lcd.c><lcd.c> \r
-OPTFFF 1,3,2,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\cortexm3_macro_rvds.s><cortexm3_macro_rvds.s> \r
-OPTFFF 1,4,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_usart.c><stm32f10x_usart.c> \r
-OPTFFF 1,5,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_gpio.c><stm32f10x_gpio.c> \r
-OPTFFF 1,6,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_lib.c><stm32f10x_lib.c> \r
-OPTFFF 1,7,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_nvic.c><stm32f10x_nvic.c> \r
-OPTFFF 1,8,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_rcc.c><stm32f10x_rcc.c> \r
-OPTFFF 1,9,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_spi.c><stm32f10x_spi.c> \r
-OPTFFF 1,10,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_systick.c><stm32f10x_systick.c> \r
-OPTFFF 1,11,1,0,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_tim.c><stm32f10x_tim.c> \r
+OPTFFF 1,2,1,234881024,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\lcd.c><lcd.c> \r
+OPTFFF 1,3,2,704643072,0,0,0,0,<..\Common\drivers\ST\STM32F10xFWLib\src\cortexm3_macro_rvds.s><cortexm3_macro_rvds.s> \r
+OPTFFF 1,4,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_usart.c><stm32f10x_usart.c> \r
+OPTFFF 1,5,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_gpio.c><stm32f10x_gpio.c> \r
+OPTFFF 1,6,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_lib.c><stm32f10x_lib.c> \r
+OPTFFF 1,7,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_nvic.c><stm32f10x_nvic.c> \r
+OPTFFF 1,8,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_rcc.c><stm32f10x_rcc.c> \r
+OPTFFF 1,9,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_spi.c><stm32f10x_spi.c> \r
+OPTFFF 1,10,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_systick.c><stm32f10x_systick.c> \r
+OPTFFF 1,11,1,0,0,0,0,0,<.\STM32F10xFWLib\src\stm32f10x_tim.c><stm32f10x_tim.c> \r
OPTFFF 2,12,1,285212672,0,0,0,0,<.\ParTest\ParTest.c><ParTest.c> \r
OPTFFF 2,13,1,0,0,0,0,0,<.\serial\serial.c><serial.c> \r
OPTFFF 2,14,1,0,0,0,0,0,<.\timertest.c><timertest.c> \r
-OPTFFF 2,15,1,117440512,0,0,0,0,<.\main.c><main.c> \r
+OPTFFF 2,15,1,2,0,179,199,0,<.\main.c><main.c> { 44,0,0,0,2,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,233,255,255,255,132,0,0,0,132,0,0,0,55,4,0,0,197,1,0,0 }\r
OPTFFF 2,16,1,0,0,0,0,0,<.\spi_flash.c><spi_flash.c> \r
OPTFFF 2,17,1,0,0,0,0,0,<..\Common\Minimal\semtest.c><semtest.c> \r
OPTFFF 2,18,1,0,0,0,0,0,<..\Common\Minimal\BlockQ.c><BlockQ.c> \r
OPTFL 1,0,1\r
OPTAX 255\r
OPTDL (SARMCM3.DLL)()(DARMSTM.DLL)(-pSTM32F103VB)(SARMCM3.DLL)()(TARMSTM.DLL)(-pSTM32F103VB)\r
- OPTDBG 48126,1,()()()()()()()()()() (BIN\UL2CM3.DLL)()()()\r
+ OPTDBG 42998,1,()()()()()()()()()() (BIN\UL2CM3.DLL)()()()\r
OPTKEY 0,(DLGTARM)((1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(123=-1,-1,-1,-1,0)(124=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0))\r
OPTKEY 0,(DLGUARM)((105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0))\r
OPTKEY 0,(DLGDARM)((1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(123=-1,-1,-1,-1,0)(124=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0))\r
OPTKEY 0,(ARMDBGFLAGS)(-T0)\r
OPTKEY 0,(JLTAgdi)(-O1038 -J1 -Y1000 -Z1 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000)\r
- OPTKEY 0,(UL2CM3)(-UU0226F8E -O14 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -N01("Unknown JTAG device") -D01(06410041) -L01(5) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP7 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000)\r
- OPTBB 0,0,237,1,134228048,0,0,0,0,1,<serial.c>()()\r
- OPTDF 0x82\r
+ OPTKEY 0,(UL2CM3)(-UU0605F6E -O47 -S0 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -N01("Unknown JTAG device") -D01(06410041) -L01(5) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP7 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000)\r
+ OPTDF 0x86\r
OPTLE <>\r
OPTLC <>\r
EndOpt\r
File 1,2,<.\STM32F10x.s><STM32F10x.s>\r
File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\lcd.c><lcd.c>\r
File 1,2,<..\Common\drivers\ST\STM32F10xFWLib\src\cortexm3_macro_rvds.s><cortexm3_macro_rvds.s>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_usart.c><stm32f10x_usart.c>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_gpio.c><stm32f10x_gpio.c>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_lib.c><stm32f10x_lib.c>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_nvic.c><stm32f10x_nvic.c>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_rcc.c><stm32f10x_rcc.c>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_spi.c><stm32f10x_spi.c>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_systick.c><stm32f10x_systick.c>\r
-File 1,1,<..\Common\drivers\ST\STM32F10xFWLib\src\stm32f10x_tim.c><stm32f10x_tim.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_usart.c><stm32f10x_usart.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_gpio.c><stm32f10x_gpio.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_lib.c><stm32f10x_lib.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_nvic.c><stm32f10x_nvic.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_rcc.c><stm32f10x_rcc.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_spi.c><stm32f10x_spi.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_systick.c><stm32f10x_systick.c>\r
+File 1,1,<.\STM32F10xFWLib\src\stm32f10x_tim.c><stm32f10x_tim.c>\r
File 2,1,<.\ParTest\ParTest.c><ParTest.c>\r
File 2,1,<.\serial\serial.c><serial.c>\r
File 2,1,<.\timertest.c><timertest.c>\r
ADSFLGA { 243,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }\r
ACPUTYP ("Cortex-M3")\r
RVDEV ()\r
- ADSTFLGA { 0,12,0,2,99,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0 }\r
+ ADSTFLGA { 0,12,0,18,99,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0 }\r
OCMADSOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }\r
OCMADSIRAM { 0,0,0,0,32,0,80,0,0 }\r
OCMADSIROM { 1,0,0,0,8,0,0,2,0 }\r
ADSCMISC ()\r
ADSCDEFN (RVDS_ARMCM3_LM3S102)\r
ADSCUDEF ()\r
- ADSCINCD (..\CORTEX_STM32F103_Keil;..\Common\include;..\..\Source\include;..\Common\drivers\ST\STM32F10xFWLib\inc)\r
+ ADSCINCD (..\CORTEX_STM32F103_Keil;..\Common\include;..\..\Source\include;.\STM32F10xFWLib\inc)\r
ADSASFLG { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }\r
ADSAMISC ()\r
ADSADEFN ()\r
ADSLDIF ()\r
ADSLDDW ()\r
OPTDL (SARMCM3.DLL)()(DARMSTM.DLL)(-pSTM32F103VB)(SARMCM3.DLL)()(TARMSTM.DLL)(-pSTM32F103VB)\r
- OPTDBG 48126,1,()()()()()()()()()() (BIN\UL2CM3.DLL)()()()\r
+ OPTDBG 42998,1,()()()()()()()()()() (BIN\UL2CM3.DLL)()()()\r
FLASH1 { 9,0,0,0,1,0,0,0,1,16,0,0,0,0,0,0,0,0,0,0 }\r
FLASH2 (BIN\UL2CM3.DLL)\r
FLASH3 ("" ())\r
<pre>\r
<h1>µVision3 Build Log</h1>\r
<h2>Project:</h2>\r
-C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\CORTEX_STM32F103_Keil\RTOSDemo.uv2\r
-Project File Date: 05/21/2008\r
+C:\E\temp\rc\4\FreeRTOSV5.3.1\Demo\CORTEX_STM32F103_Keil\RTOSDemo.uv2\r
+Project File Date: 06/21/2009\r
\r
<h2>Output:</h2>\r
+Build target 'Target 1'\r
+assembling STM32F10x.s...\r
+compiling lcd.c...\r
+assembling cortexm3_macro_rvds.s...\r
+compiling stm32f10x_usart.c...\r
+compiling stm32f10x_gpio.c...\r
+compiling stm32f10x_lib.c...\r
+compiling stm32f10x_nvic.c...\r
+compiling stm32f10x_rcc.c...\r
+compiling stm32f10x_spi.c...\r
+compiling stm32f10x_systick.c...\r
+compiling stm32f10x_tim.c...\r
+compiling ParTest.c...\r
+compiling serial.c...\r
+compiling timertest.c...\r
+compiling main.c...\r
+compiling spi_flash.c...\r
+compiling semtest.c...\r
+compiling BlockQ.c...\r
+compiling blocktim.c...\r
+compiling comtest.c...\r
+compiling death.c...\r
+compiling flash.c...\r
+compiling integer.c...\r
+compiling PollQ.c...\r
+compiling tasks.c...\r
+compiling list.c...\r
+compiling queue.c...\r
+compiling port.c...\r
+compiling heap_2.c...\r
+linking...\r
+Program Size: Code=22904 RO-data=14540 RW-data=256 ZI-data=18488 \r
+"RTOSDemo.axf" - 0 Error(s), 0 Warning(s).\r
+Load "C:\\E\\temp\\rc\\4\\FreeRTOSV5.3.1\\Demo\\CORTEX_STM32F103_Keil\\RTOSDemo.AXF" \r
+Erase Done.\r
+Programming Done.\r
+Verify OK.\r
+Clean started: Project: 'RTOSDemo'\r
+ deleting intermediate output files for target 'Target 1'\r
+Build target 'Target 1'\r
+assembling STM32F10x.s...\r
+compiling lcd.c...\r
+assembling cortexm3_macro_rvds.s...\r
+compiling stm32f10x_usart.c...\r
+compiling stm32f10x_gpio.c...\r
+compiling stm32f10x_lib.c...\r
+compiling stm32f10x_nvic.c...\r
+compiling stm32f10x_rcc.c...\r
+compiling stm32f10x_spi.c...\r
+compiling stm32f10x_systick.c...\r
+compiling stm32f10x_tim.c...\r
+compiling ParTest.c...\r
+compiling serial.c...\r
+compiling timertest.c...\r
+compiling main.c...\r
+compiling spi_flash.c...\r
+compiling semtest.c...\r
+compiling BlockQ.c...\r
+compiling blocktim.c...\r
+compiling comtest.c...\r
+compiling death.c...\r
+compiling flash.c...\r
+compiling integer.c...\r
+compiling PollQ.c...\r
+compiling tasks.c...\r
+compiling list.c...\r
+compiling queue.c...\r
+compiling port.c...\r
+compiling heap_2.c...\r
+linking...\r
+Program Size: Code=22904 RO-data=14540 RW-data=256 ZI-data=18488 \r
+"RTOSDemo.axf" - 0 Error(s), 0 Warning(s).\r
+Load "C:\\E\\temp\\rc\\4\\FreeRTOSV5.3.1\\Demo\\CORTEX_STM32F103_Keil\\RTOSDemo.AXF" \r
+Erase Done.\r
+Programming Done.\r
+Verify OK.\r
+Load "C:\\E\\temp\\rc\\4\\FreeRTOSV5.3.1\\Demo\\CORTEX_STM32F103_Keil\\RTOSDemo.AXF" \r
+Erase Done.\r
+Programming Done.\r
+Verify OK.\r
+Build target 'Target 1'\r
+linking...\r
+Program Size: Code=22904 RO-data=14540 RW-data=256 ZI-data=18488 \r
+"RTOSDemo.axf" - 0 Error(s), 0 Warning(s).\r
+Load "C:\\E\\temp\\rc\\4\\FreeRTOSV5.3.1\\Demo\\CORTEX_STM32F103_Keil\\RTOSDemo.AXF" \r
+Erase Done.\r
+Programming Done.\r
+Verify OK.\r
+Build target 'Target 1'\r
+assembling STM32F10x.s...\r
+compiling lcd.c...\r
+assembling cortexm3_macro_rvds.s...\r
+compiling stm32f10x_usart.c...\r
+compiling stm32f10x_gpio.c...\r
+compiling stm32f10x_lib.c...\r
+compiling stm32f10x_nvic.c...\r
+compiling stm32f10x_rcc.c...\r
+compiling stm32f10x_spi.c...\r
+compiling stm32f10x_systick.c...\r
+compiling stm32f10x_tim.c...\r
+compiling ParTest.c...\r
+compiling serial.c...\r
+compiling timertest.c...\r
+compiling main.c...\r
+compiling spi_flash.c...\r
+compiling semtest.c...\r
+compiling BlockQ.c...\r
+compiling blocktim.c...\r
+compiling comtest.c...\r
+compiling death.c...\r
+compiling flash.c...\r
+compiling integer.c...\r
+compiling PollQ.c...\r
+compiling tasks.c...\r
+compiling list.c...\r
+compiling queue.c...\r
+compiling port.c...\r
+compiling heap_2.c...\r
+linking...\r
+Program Size: Code=22904 RO-data=14540 RW-data=256 ZI-data=18488 \r
+"RTOSDemo.axf" - 0 Error(s), 0 Warning(s).\r
+Load "C:\\E\\temp\\rc\\4\\FreeRTOSV5.3.1\\Demo\\CORTEX_STM32F103_Keil\\RTOSDemo.AXF" \r
+Erase Done.\r
+Programming Done.\r
+Verify OK.\r
+Build target 'Target 1'\r
+assembling STM32F10x.s...\r
+linking...\r
+Program Size: Code=22908 RO-data=14540 RW-data=256 ZI-data=18496 \r
+"RTOSDemo.axf" - 0 Error(s), 0 Warning(s).\r
+Load "C:\\E\\temp\\rc\\4\\FreeRTOSV5.3.1\\Demo\\CORTEX_STM32F103_Keil\\RTOSDemo.AXF" \r
+Erase Done.\r
+Programming Done.\r
+Verify OK.\r
+Build target 'Target 1'\r
+assembling STM32F10x.s...\r
+compiling lcd.c...\r
+assembling cortexm3_macro_rvds.s...\r
+compiling stm32f10x_usart.c...\r
+compiling stm32f10x_gpio.c...\r
+compiling stm32f10x_lib.c...\r
+compiling stm32f10x_nvic.c...\r
+compiling stm32f10x_rcc.c...\r
+compiling stm32f10x_spi.c...\r
+compiling stm32f10x_systick.c...\r
+compiling stm32f10x_tim.c...\r
+compiling ParTest.c...\r
+compiling serial.c...\r
+compiling timertest.c...\r
+compiling main.c...\r
+compiling spi_flash.c...\r
+compiling semtest.c...\r
+compiling BlockQ.c...\r
+compiling blocktim.c...\r
+compiling comtest.c...\r
+compiling death.c...\r
+compiling flash.c...\r
+compiling integer.c...\r
+compiling PollQ.c...\r
+compiling tasks.c...\r
+compiling list.c...\r
+compiling queue.c...\r
+compiling port.c...\r
+compiling heap_2.c...\r
+linking...\r
+Program Size: Code=20174 RO-data=14530 RW-data=248 ZI-data=18152 \r
+"RTOSDemo.axf" - 0 Error(s), 0 Warning(s).\r
+Load "C:\\E\\temp\\rc\\4\\FreeRTOSV5.3.1\\Demo\\CORTEX_STM32F103_Keil\\RTOSDemo.AXF" \r
+Erase Done.\r
+Programming Done.\r
+Verify OK.\r
+Clean started: Project: 'RTOSDemo'\r
+ deleting intermediate output files for target 'Target 1'\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
--- /dev/null
+[Environment Variables]\r
+GENPATH={Project}Sources;{Compiler}lib\cfv1c\device\src;{Compiler}lib\cfv1c\device\include;{Compiler}lib\cfv1c\device\asm_include;{Compiler}\ColdFire_Support\Runtime\Runtime_ColdFire\Source;{Compiler}ColdFire_Support\Runtime\(Runtime_Common)\MWRuntime;{Compiler}ColdFire_Support\Runtime\(Runtime_Common);{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Double_precision;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Single_precision;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Precompiled_Headers\Src;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Src\r
+LIBPATH={Compiler}lib\cfv1c\device\include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include\sys;\r
+OBJPATH={Project}bin\r
+TEXTPATH={Project}bin\r
+ABSPATH={Project}bin\r
+\r
+[HI-WAVE]\r
+Target=CFICDCYCLMULT\r
+CPU=ColdFire\r
+Layout=C_layout.hwl\r
+LoadDialogOptions=AUTOERASEANDFLASH RUNANDSTOPAFTERLOAD="main"\r
+MainFrame=2,3,-1,-1,-1,-1,132,132,1182,881\r
+TOOLBAR=57600 57601 32795 0 57635 57634 57637 0 57671 57669 0 32777 32776 32782 32780 32781 32778 0 32806\r
+AEFWarningDialog=FALSE\r
+\r
+\r
+\r
+\r
+[CFICDCYCLMULT]\r
+COMSETTINGS=SETCOMM DRIVER NOPROTOCOL NOPERIODICAL\r
+HOST_IO_SUPPORT=0\r
+\r
+[CFMultilinkCyclonePro_GDI_SETTINGS]\r
+MCUID=0x700A\r
+CMDFILE0=CMDFILE STARTUP ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_startup.cmd"\r
+CMDFILE1=CMDFILE RESET ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_reset.cmd"\r
+CMDFILE2=CMDFILE PRELOAD ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_preload.cmd"\r
+CMDFILE3=CMDFILE POSTLOAD ON ".\cmd\CFV1_BDM_P&E_Multilink_CyclonePro_postload.cmd"\r
+CMDFILE4=CMDFILE VPPON ON "vppon.cmd"\r
+CMDFILE5=CMDFILE VPPOFF ON "vppoff.cmd"\r
+DBG0=DBG GENERAL DISARM_ON PROTECT_OFF ANALYZE_ON STEPATRUN_ON\r
+DBG1=DBG PREDEFINED SELECT 0\r
+CF_V1_DBG_TRIGGER_A=RangeAllowed:0 AccessSizeCompareAllowed:0 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 \r
+CF_V1_DBG_TRIGGER_B=RangeAllowed:0 AccessSizeCompareAllowed:0 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 \r
+CF_V1_DBG_TRIGGER_C=RangeAllowed:1 AccessSizeCompareAllowed:1 DataCompareAllowed:0 Disabled:0 AccessSize:4 Range:0 OutsideRange:0 DataToCompare:0 DataToCompareSize:0 DataToCompareMode:-1 EnableMask: 0 TriggerMask:0 \r
+DBG2=\r
+NV_PARAMETER_FILE=C:\devtools\Freescale\CodeWarrior for Microcontrollers V6.2\prog\FPP\mcu700A.fpp\r
+NV_SAVE_WSP=0\r
+NV_AUTO_ID=1\r
+\r
+\r
+\r
+ \r
+ \r
+ \r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+[STARTUP]\r
+CPUTARGETTYPE=0\r
+check_and_fix_if_secure_enable_flag=1\r
+trim_reference_target_newvalue=3125000\r
+trim_reference_target_override=0\r
+IO_DELAY_SET=0\r
+USE_CYCLONEPRO_RELAYS=1\r
+CyclonePro_poweroffonexit=0\r
+CyclonePro_currentvoltage=255\r
+CyclonePro_PowerDownDelay=250\r
+CyclonePro_PowerUpDelay=250\r
+IO_DELAY_CNT=14\r
+PCI_DELAY=0\r
+RESET_DELAY=0\r
+PORT=21\r
+interface_selection=0\r
+SHOWDIALOG=0\r
+\r
+\r
+[PORT]\r
+IP=\r
--- /dev/null
+[Environment Variables]\r
+GENPATH={Project}Sources;{Compiler}lib\cfv1c\device\src;{Compiler}lib\cfv1c\device\include;{Compiler}lib\cfv1c\device\asm_include;{Compiler}\ColdFire_Support\Runtime\Runtime_ColdFire\Source;{Compiler}ColdFire_Support\Runtime\(Runtime_Common)\MWRuntime;{Compiler}ColdFire_Support\Runtime\(Runtime_Common);{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Src;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Double_precision;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Single_precision;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Lib;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Src;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Precompiled_Headers\Src;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Src\r
+LIBPATH={Compiler}lib\cfv1c\device\include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_ColdFire\Include;{Compiler}ColdFire_Support\msl\MSL_C++\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_C\MSL_Common_Embedded\Math\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include;{Compiler}ColdFire_Support\msl\MSL_Extras\MSL_Common\Include\sys;\r
+OBJPATH={Project}bin\r
+TEXTPATH={Project}bin\r
+ABSPATH={Project}bin\r
+\r
+[HI-WAVE]\r
+Target=sim\r
+Layout=C_layout.hwl\r
+LoadDialogOptions=RUNANDSTOPAFTERLOAD="main"\r
+CPU=ColdFire\r
+MainFrame=2,3,-1,-1,-1,-1,22,23,1072,771\r
+TOOLBAR=57600 57601 32795 0 57635 57634 57637 0 57671 57669 0 32777 32776 32782 32780 32781 32778 0 32806\r
+\r
+\r
+\r
+[Simulator]\r
+CMDFILE0=CMDFILE STARTUP ON ".\cmd\CFV1_Full_Chip_Simulator_startup.cmd"\r
+\r
+[Simulator COLDFIRE]\r
+CMDFILE0=CMDFILE RESET ON ".\cmd\CFV1_Full_Chip_Simulator_reset.cmd"\r
+CMDFILE1=CMDFILE PRELOAD ON ".\cmd\CFV1_Full_Chip_Simulator_preload.cmd"\r
+CMDFILE2=CMDFILE POSTLOAD ON ".\cmd\CFV1_Full_Chip_Simulator_postload.cmd"\r
+CMDFILE3=CMDFILE SETCPU ON ".\cmd\CFV1_Full_Chip_Simulator_setcpu.cmd"\r
+FCS=ColdFire V1 SAMPLE\r
+HOST_IO_SUPPORT=1\r
--- /dev/null
+OPEN source 0 0 60 99\r
+Source < attributes TOOLTIP on,TOOLTIP_FORMAT signed,TOOLTIP_MODE details,FREEZE off,MARKS off\r
+OPEN assembly 60 0 40 31\r
+Assembly < attributes ADR on,CODE off,ABSADR on,SYMB off,FORMAT Auto,FREEZE off,TOPPC 0x410\r
+OPEN register 60 31 40 25\r
+Register < attributes FORMAT AUTO,COMPLEMENT None\r
+OPEN data 60 56 40 22\r
+Data < attributes SCOPE global,COMPLEMENT None,FORMAT Symb,MODE automatic,SORT NotSort,UPDATERATE 10,NAMEWIDTH 16\r
+OPEN Command 60 77 40 23\r
+Command < attributes CACHESIZE 1000\r
+bckcolor 50331647\r
+font 'Courier New' 9 BLACK\r
+AUTOSIZE on\r
+ACTIVATE "Register" "Assembly" "Data" "Source" "Command"\r
--- /dev/null
+/*\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify it \r
+ under the terms of the GNU General Public License (version 2) as published\r
+ by the Free Software Foundation and modified by the FreeRTOS exception.\r
+\r
+ FreeRTOS.org 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.\r
+\r
+ You should have received a copy of the GNU General Public License along \r
+ with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59 \r
+ Temple Place, Suite 330, Boston, MA 02111-1307 USA.\r
+\r
+ A special exception to the GPL is included to allow you to distribute a \r
+ combined work that includes FreeRTOS.org without being obliged to provide\r
+ the source code for any proprietary components. See the licensing section\r
+ of http://www.FreeRTOS.org for full details.\r
+\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * Get the FreeRTOS eBook! See http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * This is a concise, step by step, 'hands on' guide that describes both *\r
+ * general multitasking concepts and FreeRTOS specifics. It presents and *\r
+ * explains numerous examples that are written using the FreeRTOS API. *\r
+ * Full source code for all the examples is provided in an accompanying *\r
+ * .zip file. *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ Please ensure to read the configuration and relevant port sections of the\r
+ online documentation.\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
+\r
+/* Kernel includes. */\r
+#include "FreeRTOS.h"\r
+#include "semphr.h"\r
+#include "task.h"\r
+\r
+/* Demo includes. */\r
+#include "FEC.h"\r
+#include "fecbd.h"\r
+#include "mii.h"\r
+#include "eth_phy.h"\r
+#include "eth.h"\r
+\r
+/* uIP includes. */\r
+#include "uip.h"\r
+#include "uip_arp.h"\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* FEC hardware specifics. */\r
+#define MCF_FEC_MSCR_MII_SPEED(x) (((x)&0x3F)<<0x1)\r
+#define MCF_FEC_RDAR_R_DES_ACTIVE ( 0x1000000 )\r
+#define MCF_FEC_TDAR_X_DES_ACTIVE ( 0x1000000 )\r
+\r
+/* PHY hardware specifics. */\r
+#define PHY_STATUS ( 16 )\r
+#define PHY_DUPLEX_STATUS ( 4 )\r
+\r
+/* Delay between polling the PHY to see if a link has been established. */\r
+#define fecLINK_DELAY ( 500 / portTICK_RATE_MS )\r
+\r
+/* Very short delay to use when waiting for the Tx to finish with a buffer if\r
+we run out of Rx buffers. */\r
+#define fecMINIMAL_DELAY ( 3 / portTICK_RATE_MS )\r
+\r
+/* Don't block to wait for a buffer more than this many times. */\r
+#define uipBUFFER_WAIT_ATTEMPTS ( 30 )\r
+\r
+/* The Tx re-uses the Rx buffers and only has one descriptor. */\r
+#define fecNUM_TX_DESCRIPTORS ( 1 )\r
+\r
+/* The total number of buffers available, which should be greater than the\r
+number of Rx descriptors. */\r
+#define fecNUM_BUFFERS ( configNUM_FEC_RX_DESCRIPTORS + 2 )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* \r
+ * Return an unused buffer to the pool of free buffers. \r
+ */\r
+static void prvReturnBuffer( unsigned char *pucBuffer );\r
+\r
+/*\r
+ * Find and return the next buffer that is not in use by anything else.\r
+ */\r
+static unsigned char *prvGetFreeBuffer( void ); \r
+/*-----------------------------------------------------------*/\r
+\r
+/* The semaphore used to wake the uIP task when data arrives. */\r
+xSemaphoreHandle xFECSemaphore = NULL;\r
+\r
+/* The buffer used by the uIP stack. In this case the pointer is used to\r
+point to one of the Rx buffers to avoid having to copy the Rx buffer into\r
+the uIP buffer. */\r
+unsigned char *uip_buf;\r
+\r
+/* The DMA descriptors. These are char arrays to allow us to align them \r
+correctly. */\r
+static unsigned char xFECTxDescriptors_unaligned[ ( fecNUM_TX_DESCRIPTORS * sizeof( FECBD ) ) + 16 ];\r
+static unsigned char xFECRxDescriptors_unaligned[ ( configNUM_FEC_RX_DESCRIPTORS * sizeof( FECBD ) ) + 16 ];\r
+static FECBD *pxFECTxDescriptor;\r
+static FECBD *xFECRxDescriptors;\r
+\r
+/* The DMA buffer. This is a char arrays to allow it to be aligned correctly. */\r
+static unsigned char ucFECRxBuffers[ ( fecNUM_BUFFERS * configFEC_BUFFER_SIZE ) + 16 ];\r
+\r
+/* Index to the next descriptor to be inspected for received data. */\r
+static unsigned long ulNextRxDescriptor = 0;\r
+\r
+/* Contains the start address of each Rx buffer, after it has been correctly \r
+aligned. */\r
+static unsigned char *pucAlignedBufferStartAddresses[ fecNUM_BUFFERS ] = { 0 };\r
+\r
+/* Each ucBufferInUse index corresponds to a position in the same index in the\r
+pucAlignedBufferStartAddresses array. If the index contains a 1 then the \r
+buffer within pucAlignedBufferStartAddresses is in use, if it contains a 0 then\r
+the buffer is free. */\r
+static unsigned char ucBufferInUse[ fecNUM_BUFFERS ] = { 0 };\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/********************************************************************/\r
+/*\r
+ * Write a value to a PHY's MII register.\r
+ *\r
+ * Parameters:\r
+ * ch FEC channel\r
+ * phy_addr Address of the PHY.\r
+ * reg_addr Address of the register in the PHY.\r
+ * data Data to be written to the PHY register.\r
+ *\r
+ * Return Values:\r
+ * 0 on failure\r
+ * 1 on success.\r
+ *\r
+ * Please refer to your PHY manual for registers and their meanings.\r
+ * mii_write() polls for the FEC's MII interrupt event and clears it. \r
+ * If after a suitable amount of time the event isn't triggered, a \r
+ * value of 0 is returned.\r
+ */\r
+static int fec_mii_write( int phy_addr, int reg_addr, int data )\r
+{\r
+int timeout;\r
+unsigned long eimr;\r
+\r
+ /* Clear the MII interrupt bit */\r
+ EIR = EIR_MII;\r
+\r
+ /* Mask the MII interrupt */\r
+ eimr = EIMR;\r
+ EIMR &= ~EIMR_MII;\r
+\r
+ /* Write to the MII Management Frame Register to kick-off the MII write */\r
+ MMFR = ( unsigned long ) ( FEC_MMFR_ST_01 | FEC_MMFR_OP_WRITE | FEC_MMFR_PA(phy_addr) | FEC_MMFR_RA(reg_addr) | FEC_MMFR_TA_10 | FEC_MMFR_DATA( data ) );\r
+\r
+ /* Poll for the MII interrupt (interrupt should be masked) */\r
+ for (timeout = 0; timeout < FEC_MII_TIMEOUT; timeout++)\r
+ {\r
+ if( EIR & EIR_MII)\r
+ {\r
+ break;\r
+ }\r
+ }\r
+\r
+ if( timeout == FEC_MII_TIMEOUT )\r
+ {\r
+ return 0;\r
+ }\r
+\r
+ /* Clear the MII interrupt bit */\r
+ EIR = EIR_MII;\r
+\r
+ /* Restore the EIMR */\r
+ EIMR = eimr;\r
+\r
+ return 1;\r
+}\r
+\r
+/********************************************************************/\r
+/*\r
+ * Read a value from a PHY's MII register.\r
+ *\r
+ * Parameters:\r
+ * ch FEC channel\r
+ * phy_addr Address of the PHY.\r
+ * reg_addr Address of the register in the PHY.\r
+ * data Pointer to storage for the Data to be read\r
+ * from the PHY register (passed by reference)\r
+ *\r
+ * Return Values:\r
+ * 0 on failure\r
+ * 1 on success.\r
+ *\r
+ * Please refer to your PHY manual for registers and their meanings.\r
+ * mii_read() polls for the FEC's MII interrupt event and clears it. \r
+ * If after a suitable amount of time the event isn't triggered, a \r
+ * value of 0 is returned.\r
+ */\r
+static int fec_mii_read( int phy_addr, int reg_addr, unsigned short* data )\r
+{\r
+int timeout;\r
+unsigned long eimr;\r
+\r
+ /* Clear the MII interrupt bit */\r
+ EIR = 0xffffffff;\r
+\r
+ /* Mask the MII interrupt */\r
+ eimr = EIMR;\r
+ EIMR &= ~EIMR_MII;\r
+\r
+ /* Write to the MII Management Frame Register to kick-off the MII read */\r
+ MMFR = ( unsigned long ) ( FEC_MMFR_ST_01 | FEC_MMFR_OP_READ | FEC_MMFR_PA(phy_addr) | FEC_MMFR_RA(reg_addr) | FEC_MMFR_TA_10 );\r
+\r
+ /* Poll for the MII interrupt (interrupt should be masked) */\r
+ for (timeout = 0; timeout < FEC_MII_TIMEOUT; timeout++)\r
+ {\r
+ if (EIR)\r
+ {\r
+ break;\r
+ }\r
+ }\r
+\r
+ if(timeout == FEC_MII_TIMEOUT)\r
+ {\r
+ return 0;\r
+ }\r
+\r
+ /* Clear the MII interrupt bit */\r
+ EIR = EIR_MII;\r
+\r
+ /* Restore the EIMR */\r
+ EIMR = eimr;\r
+\r
+ *data = (unsigned short)(MMFR & 0x0000FFFF);\r
+\r
+ return 1;\r
+}\r
+\r
+\r
+/********************************************************************/\r
+/*\r
+ * Generate the hash table settings for the given address\r
+ *\r
+ * Parameters:\r
+ * addr 48-bit (6 byte) Address to generate the hash for\r
+ *\r
+ * Return Value:\r
+ * The 6 most significant bits of the 32-bit CRC result\r
+ */\r
+static unsigned char fec_hash_address( const unsigned char* addr )\r
+{\r
+unsigned long crc;\r
+unsigned char byte;\r
+int i, j;\r
+\r
+ crc = 0xFFFFFFFF;\r
+ for(i=0; i<6; ++i)\r
+ {\r
+ byte = addr[i];\r
+ for(j=0; j<8; ++j)\r
+ {\r
+ if((byte & 0x01)^(crc & 0x01))\r
+ {\r
+ crc >>= 1;\r
+ crc = crc ^ 0xEDB88320;\r
+ }\r
+ else\r
+ {\r
+ crc >>= 1;\r
+ }\r
+\r
+ byte >>= 1;\r
+ }\r
+ }\r
+\r
+ return (unsigned char)(crc >> 26);\r
+}\r
+\r
+/********************************************************************/\r
+/*\r
+ * Set the Physical (Hardware) Address and the Individual Address\r
+ * Hash in the selected FEC\r
+ *\r
+ * Parameters:\r
+ * ch FEC channel\r
+ * pa Physical (Hardware) Address for the selected FEC\r
+ */\r
+static void fec_set_address( const unsigned char *pa )\r
+{\r
+ unsigned char crc;\r
+\r
+ /*\r
+ * Set the Physical Address\r
+ */\r
+ PALR = (unsigned long)((pa[0]<<24) | (pa[1]<<16) | (pa[2]<<8) | pa[3]);\r
+ PAUR = (unsigned long)((pa[4]<<24) | (pa[5]<<16));\r
+\r
+ /*\r
+ * Calculate and set the hash for given Physical Address\r
+ * in the Individual Address Hash registers\r
+ */\r
+ crc = fec_hash_address(pa);\r
+ if(crc >= 32)\r
+ {\r
+ IAUR |= (unsigned long)(1 << (crc - 32));\r
+ }\r
+ else\r
+ {\r
+ IALR |= (unsigned long)(1 << crc);\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvInitialiseFECBuffers( void )\r
+{\r
+unsigned portBASE_TYPE ux;\r
+unsigned char *pcBufPointer;\r
+\r
+ /* Set the pointer to a correctly aligned address. */\r
+ pcBufPointer = &( xFECTxDescriptors_unaligned[ 0 ] );\r
+ while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 )\r
+ {\r
+ pcBufPointer++;\r
+ }\r
+ \r
+ pxFECTxDescriptor = ( FECBD * ) pcBufPointer; \r
+\r
+ /* Likewise the pointer to the Rx descriptor. */ \r
+ pcBufPointer = &( xFECRxDescriptors_unaligned[ 0 ] );\r
+ while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 )\r
+ {\r
+ pcBufPointer++;\r
+ }\r
+ \r
+ xFECRxDescriptors = ( FECBD * ) pcBufPointer;\r
+\r
+ /* There is no Tx buffer as the Rx buffer is reused. */\r
+ pxFECTxDescriptor->length = 0;\r
+ pxFECTxDescriptor->status = 0;\r
+\r
+ /* Align the Rx buffers. */\r
+ pcBufPointer = &( ucFECRxBuffers[ 0 ] );\r
+ while( ( ( unsigned long ) pcBufPointer & 0x0fUL ) != 0 )\r
+ {\r
+ pcBufPointer++;\r
+ }\r
+ \r
+ /* Then fill in the Rx descriptors. */\r
+ for( ux = 0; ux < configNUM_FEC_RX_DESCRIPTORS; ux++ )\r
+ {\r
+ xFECRxDescriptors[ ux ].status = RX_BD_E;\r
+ xFECRxDescriptors[ ux ].length = configFEC_BUFFER_SIZE;\r
+ xFECRxDescriptors[ ux ].data = pcBufPointer;\r
+ \r
+ /* Note the start address of the buffer now that it is correctly\r
+ aligned. */\r
+ pucAlignedBufferStartAddresses[ ux ] = pcBufPointer;\r
+ \r
+ /* The buffer is in use by the descriptor. */\r
+ ucBufferInUse[ ux ] = pdTRUE;\r
+ \r
+ pcBufPointer += configFEC_BUFFER_SIZE;\r
+ }\r
+ \r
+ /* Note the start address of the last buffer as one more buffer is\r
+ allocated than there are Rx descriptors. */\r
+ pucAlignedBufferStartAddresses[ ux ] = pcBufPointer;\r
+ \r
+ /* Set uip_buf to point to the last buffer. */\r
+ uip_buf = pcBufPointer;\r
+ ucBufferInUse[ ux ] = pdTRUE;\r
+\r
+ /* Set the wrap bit in the last descriptors to form a ring. */\r
+ xFECRxDescriptors[ configNUM_FEC_RX_DESCRIPTORS - 1 ].status |= RX_BD_W;\r
+\r
+ /* We start with descriptor 0. */\r
+ ulNextRxDescriptor = 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vInitFEC( void )\r
+{\r
+unsigned short usData;\r
+struct uip_eth_addr xAddr;\r
+const unsigned char ucMACAddress[6] = \r
+{\r
+ configMAC_0, configMAC_1,configMAC_2,configMAC_3,configMAC_4,configMAC_5\r
+};\r
+\r
+ prvInitialiseFECBuffers();\r
+\r
+ /* Create the semaphore used to wake the uIP task when data arrives. */\r
+ vSemaphoreCreateBinary( xFECSemaphore );\r
+ \r
+ /* Set the MAC address within the stack. */\r
+ for( usData = 0; usData < 6; usData++ )\r
+ {\r
+ xAddr.addr[ usData ] = ucMACAddress[ usData ];\r
+ }\r
+ uip_setethaddr( xAddr ); \r
+\r
+ /* Set the Reset bit and clear the Enable bit */\r
+ ECR_RESET = 1;\r
+ \r
+ /* Enable the clock. */\r
+ SCGC4 |= SCGC4_FEC_MASK;\r
+\r
+ /* Wait at least 8 clock cycles */\r
+ for( usData = 0; usData < 10; usData++ )\r
+ {\r
+ asm( "NOP" );\r
+ }\r
+\r
+ /* Set MII speed to 2.5MHz. */\r
+ MSCR = MCF_FEC_MSCR_MII_SPEED( ( ( configCPU_CLOCK_HZ / 1000000 ) / 5 ) + 1 );\r
+\r
+ /*\r
+ * Make sure the external interface signals are enabled\r
+ */\r
+ PTCPF2_C0 = 1;\r
+ PTCPF2_C1 = 1;\r
+ PTCPF2_C2 = 1;\r
+ PTAPF1 = 0x55;\r
+ PTAPF2 = 0x55;\r
+ PTBPF1 = 0x55;\r
+ PTBPF2 = 0x55;\r
+ \r
+ /* Set all pins to full drive with no filter. */\r
+ PTADS = 0x06;\r
+ PTAIFE = 0x06;\r
+ PTBDS = 0xf4;\r
+ PTBIFE = 0xf4;\r
+ PTCDS = 0;\r
+ PTCIFE = 0; \r
+\r
+ \r
+ /* Can we talk to the PHY? */\r
+ do\r
+ {\r
+ vTaskDelay( fecLINK_DELAY );\r
+ usData = 0xffff;\r
+ fec_mii_read( configPHY_ADDRESS, PHY_PHYIDR1, &usData );\r
+\r
+ } while( usData == 0xffff );\r
+\r
+ /* Start auto negotiate. */\r
+ fec_mii_write( configPHY_ADDRESS, PHY_BMCR, ( PHY_BMCR_AN_RESTART | PHY_BMCR_AN_ENABLE ) );\r
+\r
+ /* Wait for auto negotiate to complete. */\r
+ do\r
+ {\r
+ vTaskDelay( fecLINK_DELAY );\r
+ fec_mii_read( configPHY_ADDRESS, PHY_BMSR, &usData );\r
+\r
+ } while( !( usData & PHY_BMSR_AN_COMPLETE ) );\r
+\r
+ /* When we get here we have a link - find out what has been negotiated. */\r
+ usData = 0;\r
+ fec_mii_read( configPHY_ADDRESS, PHY_STATUS, &usData ); \r
+\r
+ /* Setup half or full duplex. */\r
+ if( usData & PHY_DUPLEX_STATUS )\r
+ {\r
+ RCR &= (unsigned long)~RCR_DRT;\r
+ TCR |= TCR_FDEN;\r
+ }\r
+ else\r
+ {\r
+ RCR |= RCR_DRT;\r
+ TCR &= (unsigned long)~TCR_FDEN;\r
+ }\r
+ \r
+ /* Clear the Individual and Group Address Hash registers */\r
+ IALR = 0;\r
+ IAUR = 0;\r
+ GALR = 0;\r
+ GAUR = 0;\r
+\r
+ /* Set the Physical Address for the selected FEC */\r
+ fec_set_address( ucMACAddress );\r
+\r
+ /* Set Rx Buffer Size */\r
+ EMRBR = (unsigned short) configFEC_BUFFER_SIZE;\r
+\r
+ /* Point to the start of the circular Rx buffer descriptor queue */\r
+ ERDSR = ( volatile unsigned long ) &( xFECRxDescriptors[ 0 ] );\r
+\r
+ /* Point to the start of the circular Tx buffer descriptor queue */\r
+ ETSDR = ( volatile unsigned long ) pxFECTxDescriptor;\r
+\r
+ /* Clear all FEC interrupt events */\r
+ EIR = ( unsigned long ) -1;\r
+\r
+ /* Various mode/status setup. */\r
+ RCR = 0;\r
+ RCR_MAX_FL = configFEC_BUFFER_SIZE;\r
+ RCR_MII_MODE = 1;\r
+\r
+ #if( configUSE_PROMISCUOUS_MODE == 1 )\r
+ {\r
+ RCR |= RCR_PROM;\r
+ }\r
+ #endif\r
+\r
+ /* Enable interrupts. */\r
+ EIMR = EIR_TXF_MASK | EIMR_RXF_MASK | EIMR_RXB_MASK | EIMR_UN_MASK | EIMR_RL_MASK | EIMR_LC_MASK | EIMR_BABT_MASK | EIMR_BABR_MASK | EIMR_HBERR_MASK;\r
+\r
+ /* Enable the MAC itself. */\r
+ ECR = ECR_ETHER_EN_MASK;\r
+\r
+ /* Indicate that there have been empty receive buffers produced */\r
+ RDAR = MCF_FEC_RDAR_R_DES_ACTIVE;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+unsigned long ulFECRx( void )\r
+{\r
+unsigned long ulLen = 0UL;\r
+\r
+ /* Is a buffer ready? */\r
+ if( ( xFECRxDescriptors[ ulNextRxDescriptor ].status & RX_BD_E ) == 0 )\r
+ {\r
+ /* uip_buf is about to be set to a new buffer, so return the buffer it\r
+ is already pointing to. */\r
+ prvReturnBuffer( uip_buf );\r
+ \r
+ /* Obtain the size of the packet and put it into the "len" variable. */\r
+ ulLen = xFECRxDescriptors[ ulNextRxDescriptor ].length;\r
+ uip_buf = xFECRxDescriptors[ ulNextRxDescriptor ].data;\r
+\r
+ /* The buffer that this descriptor was using is now in use by the\r
+ TCP/IP stack, so allocate it a new buffer. */\r
+ xFECRxDescriptors[ ulNextRxDescriptor ].data = prvGetFreeBuffer();\r
+\r
+ /* Doing this here could cause corruption! */ \r
+ xFECRxDescriptors[ ulNextRxDescriptor ].status |= RX_BD_E; \r
+ \r
+ portENTER_CRITICAL();\r
+ {\r
+ ulNextRxDescriptor++;\r
+ if( ulNextRxDescriptor >= configNUM_FEC_RX_DESCRIPTORS )\r
+ {\r
+ ulNextRxDescriptor = 0;\r
+ }\r
+ }\r
+ portEXIT_CRITICAL(); \r
+\r
+ /* Tell the DMA a new buffer is available. */\r
+ RDAR = MCF_FEC_RDAR_R_DES_ACTIVE; \r
+ }\r
+\r
+ return ulLen;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vFECTx( void )\r
+{\r
+ /* When we get here the Tx descriptor should show as having completed. */\r
+ while( pxFECTxDescriptor->status & TX_BD_R )\r
+ {\r
+ vTaskDelay( fecMINIMAL_DELAY );\r
+ }\r
+\r
+ portENTER_CRITICAL();\r
+ {\r
+ /* To maintain the zero copy implementation, point the Tx descriptor\r
+ to the data from the Rx buffer. */\r
+ pxFECTxDescriptor->data = uip_buf;\r
+ \r
+ /* Setup the buffer descriptor for transmission */\r
+ pxFECTxDescriptor->length = uip_len;\r
+ \r
+ /* NB this assumes only one Tx descriptor! */\r
+ pxFECTxDescriptor->status = ( TX_BD_R | TX_BD_L | TX_BD_TC | TX_BD_W );\r
+ }\r
+ portEXIT_CRITICAL();\r
+ \r
+ /* Continue the Tx DMA task (in case it was waiting for a new TxBD) */\r
+ TDAR = MCF_FEC_TDAR_X_DES_ACTIVE;\r
+ \r
+ /* uip_buf is being used by the Tx descriptor. Allocate a new buffer to\r
+ uip_buf. */\r
+ uip_buf = prvGetFreeBuffer();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvReturnBuffer( unsigned char *pucBuffer )\r
+{\r
+unsigned long ul;\r
+\r
+ /* Mark a buffer as free for use. */\r
+ for( ul = 0; ul < fecNUM_BUFFERS; ul++ )\r
+ {\r
+ if( pucAlignedBufferStartAddresses[ ul ] == pucBuffer )\r
+ {\r
+ ucBufferInUse[ ul ] = pdFALSE;\r
+ break;\r
+ }\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static unsigned char *prvGetFreeBuffer( void )\r
+{\r
+portBASE_TYPE 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 < fecNUM_BUFFERS; x++ )\r
+ {\r
+ if( ucBufferInUse[ x ] == pdFALSE )\r
+ {\r
+ ucBufferInUse[ x ] = pdTRUE;\r
+ pucReturn = pucAlignedBufferStartAddresses[ x ];\r
+ break;\r
+ }\r
+ }\r
+\r
+ /* Was a buffer found? */\r
+ if( pucReturn == NULL )\r
+ {\r
+ ulAttempts++;\r
+\r
+ if( ulAttempts >= uipBUFFER_WAIT_ATTEMPTS )\r
+ {\r
+ break;\r
+ }\r
+\r
+ /* Wait then look again. */\r
+ vTaskDelay( fecMINIMAL_DELAY );\r
+ }\r
+ }\r
+\r
+ return pucReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void interrupt 86 vFECISRHandler( void )\r
+{\r
+unsigned long ulEvent;\r
+portBASE_TYPE xHighPriorityTaskWoken = pdFALSE;\r
+ \r
+ /* Determine the cause of the interrupt. */\r
+ ulEvent = EIR & EIMR;\r
+ EIR = ulEvent;\r
+\r
+ if( ulEvent & EIR_RXF_MASK )\r
+ {\r
+ /* A packet has been received. Wake the handler task in case it is \r
+ blocked. */\r
+ xSemaphoreGiveFromISR( xFECSemaphore, &xHighPriorityTaskWoken );\r
+ }\r
+ \r
+ if( ulEvent & EIR_TXF_MASK )\r
+ {\r
+ /* The Tx has completed. Mark the buffer it was using as free again. */\r
+ prvReturnBuffer( pxFECTxDescriptor->data );\r
+ pxFECTxDescriptor->data = NULL;\r
+ }\r
+\r
+ if (ulEvent & ( EIR_UN_MASK | EIR_RL_MASK | EIR_LC_MASK | EIR_EBERR_MASK | EIR_BABT_MASK | EIR_BABR_MASK | EIR_HBERR_MASK ) )\r
+ {\r
+ /* Sledge hammer error handling. */\r
+ prvInitialiseFECBuffers();\r
+ RDAR = MCF_FEC_RDAR_R_DES_ACTIVE;\r
+ }\r
+\r
+ portEND_SWITCHING_ISR( xHighPriorityTaskWoken );\r
+}\r
--- /dev/null
+/*\r
+ FreeRTOS.org V5.0.3 - Copyright (C) 2003-2008 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ FreeRTOS.org is distributed in the hope that it will be useful,\r
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ GNU General Public License for more details.\r
+\r
+ You should have received a copy of the GNU General Public License\r
+ along with FreeRTOS.org; if not, write to the Free Software\r
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+\r
+ A special exception to the GPL can be applied should you wish to distribute\r
+ a combined work that includes FreeRTOS.org, without being obliged to provide\r
+ the source code for any proprietary components. See the licensing section\r
+ of http://www.FreeRTOS.org for full details of how and when the exception\r
+ can be applied.\r
+\r
+ ***************************************************************************\r
+ See http://www.FreeRTOS.org for documentation, latest information, license\r
+ and contact details. Please ensure to read the configuration and relevant\r
+ port sections of the online documentation.\r
+ ***************************************************************************\r
+*/\r
+\r
+#ifndef INC_FEC_H\r
+#define INC_FEC_H\r
+\r
+/* Configure the FEC peripheral, IO and descriptors. */\r
+void vInitFEC( void );\r
+\r
+/* Receive any data into the uip_buf array. */\r
+unsigned portLONG ulFECRx( void );\r
+\r
+/* Transmit the uip_buf array. */\r
+void vFECTx( void );\r
+\r
+#endif\r
+\r
--- /dev/null
+/*\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+ under the terms of the GNU General Public License (version 2) as published\r
+ by the Free Software Foundation and modified by the FreeRTOS exception.\r
+ **NOTE** The exception to the GPL is included to allow you to distribute a\r
+ combined work that includes FreeRTOS.org without being obliged to provide\r
+ the source code for any proprietary components. Alternative commercial\r
+ license and support terms are also available upon request. See the \r
+ licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+ FreeRTOS.org 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.\r
+\r
+ You should have received a copy of the GNU General Public License along\r
+ with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+ Temple Place, Suite 330, Boston, MA 02111-1307 USA.\r
+\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * Get the FreeRTOS eBook! See http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * This is a concise, step by step, 'hands on' guide that describes both *\r
+ * general multitasking concepts and FreeRTOS specifics. It presents and *\r
+ * explains numerous examples that are written using the FreeRTOS API. *\r
+ * Full source code for all the examples is provided in an accompanying *\r
+ * .zip file. *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ Please ensure to read the configuration and relevant port sections of the\r
+ online documentation.\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
+\r
+/* CodeWarrior often thinks it knows better than you which files you want to \r
+build - and changes the port.c and portasm.S files included in the project from\r
+the ColdFire V1 versions to the x86 versions. If you get lots of errors output\r
+when either file is compiled then delete the files from the project and then\r
+add back in the port.c and portasm.S files that are located in the \r
+FreeRTOS\Source\portable\GCC\ColdFire_V1 directory. Remove the line below\r
+before compiling. */\r
+\r
+//#error Read the comment above this line, then delete this error statement!\r
+\r
+\r
+#ifndef FREERTOS_CONFIG_H\r
+#define FREERTOS_CONFIG_H\r
+\r
+#include <hidef.h>\r
+#include "derivative.h"\r
+\r
+/*-----------------------------------------------------------\r
+ * Application specific definitions.\r
+ *\r
+ * These definitions should be adjusted for your particular hardware and\r
+ * application requirements.\r
+ *\r
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE\r
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. \r
+ *\r
+ * See http://www.freertos.org/a00110.html.\r
+ *----------------------------------------------------------*/\r
+\r
+#define configUSE_PREEMPTION 1\r
+#define configUSE_IDLE_HOOK 0\r
+#define configUSE_TICK_HOOK 1\r
+#define configCPU_CLOCK_HZ ( 50000000UL )\r
+#define configTICK_RATE_HZ ( ( portTickType ) 100 )\r
+#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 100 )\r
+#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 13 * 1024 ) )\r
+#define configMAX_TASK_NAME_LEN ( 12 )\r
+#define configUSE_TRACE_FACILITY 1\r
+#define configUSE_16_BIT_TICKS 0\r
+#define configIDLE_SHOULD_YIELD 0\r
+#define configUSE_CO_ROUTINES 0\r
+#define configUSE_MUTEXES 1\r
+#define configCHECK_FOR_STACK_OVERFLOW 1\r
+#define configGENERATE_RUN_TIME_STATS 0\r
+#define configUSE_RECURSIVE_MUTEXES 1\r
+#define configQUEUE_REGISTRY_SIZE 0\r
+#define configUSE_COUNTING_SEMAPHORES 0\r
+\r
+#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 6 )\r
+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
+\r
+/* Set the following definitions to 1 to include the API function, or zero\r
+to exclude the API function. */\r
+\r
+#define INCLUDE_vTaskPrioritySet 1\r
+#define INCLUDE_uxTaskPriorityGet 1\r
+#define INCLUDE_vTaskDelete 1\r
+#define INCLUDE_vTaskCleanUpResources 0\r
+#define INCLUDE_vTaskSuspend 1\r
+#define INCLUDE_vTaskDelayUntil 1\r
+#define INCLUDE_vTaskDelay 1\r
+#define INCLUDE_uxTaskGetStackHighWaterMark 1\r
+\r
+/* It is not advisable to change these values on a Coldfire V1 core. */\r
+#define configKERNEL_INTERRUPT_PRIORITY 1\r
+#define configMAX_SYSCALL_INTERRUPT_PRIORITY 7\r
+\r
+\r
+\r
+/* Ethernet configuration. */\r
+#define configMAC_0 0x00\r
+#define configMAC_1 0x04\r
+#define configMAC_2 0x9F\r
+#define configMAC_3 0x00\r
+#define configMAC_4 0xAB\r
+#define configMAC_5 0x2B\r
+\r
+#define configIP_ADDR0 192\r
+#define configIP_ADDR1 168\r
+#define configIP_ADDR2 0\r
+#define configIP_ADDR3 222\r
+\r
+#define configGW_ADDR0 192\r
+#define configGW_ADDR1 168\r
+#define configGW_ADDR2 0\r
+#define configGW_ADDR3 3\r
+\r
+#define configNET_MASK0 255\r
+#define configNET_MASK1 255\r
+#define configNET_MASK2 255\r
+#define configNET_MASK3 0\r
+\r
+#define configNUM_FEC_RX_DESCRIPTORS 2\r
+#define configFEC_BUFFER_SIZE 1520 /* Should be multiple of 16. */\r
+#define configUSE_PROMISCUOUS_MODE 0\r
+#define configETHERNET_INPUT_TASK_STACK_SIZE ( 320 )\r
+#define configETHERNET_INPUT_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )\r
+\r
+#define configPHY_ADDRESS 1\r
+\r
+#if ( configFEC_BUFFER_SIZE & 0x0F ) != 0\r
+ #error configFEC_BUFFER_SIZE must be a multiple of 16.\r
+#endif\r
+\r
+#endif /* FREERTOS_CONFIG_H */\r
--- /dev/null
+/*\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+ under the terms of the GNU General Public License (version 2) as published\r
+ by the Free Software Foundation and modified by the FreeRTOS exception.\r
+ **NOTE** The exception to the GPL is included to allow you to distribute a\r
+ combined work that includes FreeRTOS.org without being obliged to provide\r
+ the source code for any proprietary components. Alternative commercial\r
+ license and support terms are also available upon request. See the \r
+ licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+ FreeRTOS.org 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.\r
+\r
+ You should have received a copy of the GNU General Public License along\r
+ with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+ Temple Place, Suite 330, Boston, MA 02111-1307 USA.\r
+\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * Get the FreeRTOS eBook! See http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * This is a concise, step by step, 'hands on' guide that describes both *\r
+ * general multitasking concepts and FreeRTOS specifics. It presents and *\r
+ * explains numerous examples that are written using the FreeRTOS API. *\r
+ * Full source code for all the examples is provided in an accompanying *\r
+ * .zip file. *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ Please ensure to read the configuration and relevant port sections of the\r
+ online documentation.\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
+\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "partest.h"\r
+\r
+#define partstNUM_LEDs 4\r
+\r
+/*-----------------------------------------------------------\r
+ * Simple LED IO routines for the tower LEDs LED1 to LED4.\r
+ *-----------------------------------------------------------*/\r
+\r
+void vParTestInitialise( void )\r
+{\r
+ /* Enable pull and output drive. */\r
+ PTHPE_PTHPE3 = 1;\r
+ PTHDD_PTHDD3 = 1;\r
+\r
+ PTEPE_PTEPE5 = 1;\r
+ PTEDD_PTEDD5 = 1;\r
+\r
+ PTGPE_PTGPE5 = 1;\r
+ PTGDD_PTGDD5 = 1;\r
+\r
+ PTEPE_PTEPE3 = 1;\r
+ PTEDD_PTEDD3 = 1;\r
+ \r
+ /* Enable clock to ports. */\r
+ SCGC3_PTE = 1;\r
+ SCGC3_PTF = 1;\r
+ SCGC3_PTG = 1;\r
+\r
+ /* Ensure the LEDs are off. */\r
+ vParTestSetLED( 0, 0 );\r
+ vParTestSetLED( 1, 0 );\r
+ vParTestSetLED( 2, 0 );\r
+ vParTestSetLED( 3, 0 );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
+{\r
+ switch( uxLED )\r
+ {\r
+ case 0: PTHD_PTHD3 = xValue;\r
+ break;\r
+ case 1: PTED_PTED5 = xValue;\r
+ break;\r
+ case 2: PTGD_PTGD5 = xValue;\r
+ break;\r
+ case 3: PTED_PTED3 = xValue;\r
+ break;\r
+ default : /* There are no other LEDs. */\r
+ break;\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
+{\r
+ portENTER_CRITICAL();\r
+ {\r
+ switch( uxLED )\r
+ {\r
+ case 0: PTHD_PTHD3 = !PTHD_PTHD3;\r
+ break;\r
+ case 1: PTED_PTED5 = !PTED_PTED5;\r
+ break;\r
+ case 2: PTGD_PTGD5 = !PTGD_PTGD5;\r
+ break;\r
+ case 3: PTED_PTED3 = !!PTED_PTED3;\r
+ break;\r
+ default : /* There are no other LEDs. */\r
+ break;\r
+ }\r
+ }\r
+ portEXIT_CRITICAL();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+unsigned portBASE_TYPE uxParTestGetLED( unsigned portBASE_TYPE uxLED )\r
+{\r
+ /* We ignore the parameter as in this simple example we simply return the\r
+ state of LED3. */\r
+ ( void ) uxLED;\r
+ \r
+ return PTED_PTED3;\r
+}\r
+\r
+\r
--- /dev/null
+/*\r
+ * Note: This file is recreated by the project wizard whenever the MCU is\r
+ * changed and should not be edited by hand\r
+ */\r
+\r
+/* Include the derivative-specific header file */\r
+#include <MCF51CN128.h>\r
+\r
+#define _Stop asm ( mov3q #4,d0; bclr.b d0,SOPT1; stop #0x2000; )\r
+ /*!< Macro to enter stop modes, STOPE bit in SOPT1 register must be set prior to executing this macro */\r
+\r
+#define _Wait asm ( mov3q #4,d0; bset.b d0,SOPT1; nop; stop #0x2000; )\r
+ /*!< Macro to enter wait mode */\r
+\r
+\r
--- /dev/null
+/*! \r
+ * \file eth.h\r
+ * \brief Definitinos for Ethernet Frames\r
+ * \version $Revision: 1.2 $\r
+ * \author Michael Norman\r
+ */\r
+\r
+#ifndef _ETH_H\r
+#define _ETH_H\r
+\r
+/*******************************************************************/\r
+\r
+/* Ethernet standard lengths in bytes*/\r
+#define ETH_ADDR_LEN (6)\r
+#define ETH_TYPE_LEN (2)\r
+#define ETH_CRC_LEN (4)\r
+#define ETH_MAX_DATA (1500)\r
+#define ETH_MIN_DATA (46)\r
+#define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN)\r
+\r
+/* Defined Ethernet Frame Types */\r
+#define ETH_FRM_IP (0x0800)\r
+#define ETH_FRM_ARP (0x0806)\r
+#define ETH_FRM_RARP (0x8035)\r
+#define ETH_FRM_TEST (0xA5A5)\r
+\r
+/* Maximum and Minimum Ethernet Frame Sizes */\r
+#define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN)\r
+#define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN)\r
+#define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA)\r
+\r
+/* Ethernet Addresses */\r
+typedef unsigned portCHAR ETH_ADDR[ETH_ADDR_LEN];\r
+\r
+/* 16-bit Ethernet Frame Type, ie. Protocol */\r
+typedef unsigned portSHORT ETH_FRM_TYPE;\r
+\r
+/* Ethernet Frame Header definition */\r
+typedef struct\r
+{\r
+ ETH_ADDR dest;\r
+ ETH_ADDR src;\r
+ ETH_FRM_TYPE type;\r
+} ETH_HDR;\r
+\r
+/* Ethernet Frame definition */\r
+typedef struct\r
+{\r
+ ETH_HDR head;\r
+ unsigned portCHAR* data;\r
+} ETH_FRAME;\r
+\r
+/*******************************************************************/\r
+\r
+#endif /* _ETH_H */\r
--- /dev/null
+/*!\r
+ * \file eth.h\r
+ * \brief Definitions for Ethernet Physical Layer Interface\r
+ * \version $Revision: 1.3 $\r
+ * \author Michael Norman\r
+ */\r
+\r
+#ifndef _ETH_PHY_H\r
+#define _ETH_PHY_H\r
+\r
+/*******************************************************************/\r
+\r
+/* MII Register Addresses */\r
+#define PHY_BMCR (0x00)\r
+#define PHY_BMSR (0x01)\r
+#define PHY_PHYIDR1 (0x02)\r
+#define PHY_PHYIDR2 (0x03)\r
+#define PHY_ANAR (0x04)\r
+#define PHY_ANLPAR (0x05)\r
+\r
+/* Bit definitions and macros for PHY_CTRL */\r
+#define PHY_BMCR_RESET (0x8000)\r
+#define PHY_BMCR_LOOP (0x4000)\r
+#define PHY_BMCR_SPEED (0x2000)\r
+#define PHY_BMCR_AN_ENABLE (0x1000)\r
+#define PHY_BMCR_POWERDOWN (0x0800)\r
+#define PHY_BMCR_ISOLATE (0x0400)\r
+#define PHY_BMCR_AN_RESTART (0x0200)\r
+#define PHY_BMCR_FDX (0x0100)\r
+#define PHY_BMCR_COL_TEST (0x0080)\r
+\r
+/* Bit definitions and macros for PHY_STAT */\r
+#define PHY_BMSR_100BT4 (0x8000)\r
+#define PHY_BMSR_100BTX_FDX (0x4000)\r
+#define PHY_BMSR_100BTX (0x2000)\r
+#define PHY_BMSR_10BT_FDX (0x1000)\r
+#define PHY_BMSR_10BT (0x0800)\r
+#define PHY_BMSR_NO_PREAMBLE (0x0040)\r
+#define PHY_BMSR_AN_COMPLETE (0x0020)\r
+#define PHY_BMSR_REMOTE_FAULT (0x0010)\r
+#define PHY_BMSR_AN_ABILITY (0x0008)\r
+#define PHY_BMSR_LINK (0x0004)\r
+#define PHY_BMSR_JABBER (0x0002)\r
+#define PHY_BMSR_EXTENDED (0x0001)\r
+\r
+/* Bit definitions and macros for PHY_AN_ADV */\r
+#define PHY_ANAR_NEXT_PAGE (0x8001)\r
+#define PHY_ANAR_REM_FAULT (0x2001)\r
+#define PHY_ANAR_PAUSE (0x0401)\r
+#define PHY_ANAR_100BT4 (0x0201)\r
+#define PHY_ANAR_100BTX_FDX (0x0101)\r
+#define PHY_ANAR_100BTX (0x0081)\r
+#define PHY_ANAR_10BT_FDX (0x0041)\r
+#define PHY_ANAR_10BT (0x0021)\r
+#define PHY_ANAR_802_3 (0x0001)\r
+\r
+/* Bit definitions and macros for PHY_AN_LINK_PAR */\r
+#define PHY_ANLPAR_NEXT_PAGE (0x8000)\r
+#define PHY_ANLPAR_ACK (0x4000)\r
+#define PHY_ANLPAR_REM_FAULT (0x2000)\r
+#define PHY_ANLPAR_PAUSE (0x0400)\r
+#define PHY_ANLPAR_100BT4 (0x0200)\r
+#define PHY_ANLPAR_100BTX_FDX (0x0100)\r
+#define PHY_ANLPAR_100BTX (0x0080)\r
+#define PHY_ANLPAR_10BTX_FDX (0x0040)\r
+#define PHY_ANLPAR_10BT (0x0020)\r
+\r
+/*******************************************************************/\r
+\r
+#endif /* _ETH_PHY_H */\r
--- /dev/null
+/*\r
+ * File: exceptions.c\r
+ * Purpose: Generic exception handling for ColdFire processors\r
+ *\r
+ */\r
+\r
+#include "derivative.h"\r
+#include "exceptions.h"\r
+#include "startcf.h"\r
+\r
+#define REGISTER_ABI __REGABI__\r
+\r
+extern asm void interrupt 109 vPortYieldISR( void );\r
+extern void interrupt 86 vFECISRHandler( void );\r
+\r
+/***********************************************************************/\r
+/*\r
+ * Set NO_PRINTF to 0 in order the exceptions.c interrupt handler\r
+ * to output messages to the standard io. \r
+ * \r
+ */\r
+#define NO_PRINTF 1\r
+\r
+#if NO_PRINTF\r
+#define VECTORDISPLAY(MESSAGE) asm { nop; };\r
+#define VECTORDISPLAY2(MESSAGE,MESSAGE2) asm { nop; };\r
+#define VECTORDISPLAY3(MESSAGE,MESSAGE2,MESSAGE3) asm { nop; };\r
+#else\r
+#include <stdio.h>\r
+#define VECTORDISPLAY(MESSAGE1) printf(MESSAGE1);\r
+#define VECTORDISPLAY2(MESSAGE1,MESSAGE2) printf(MESSAGE1,MESSAGE2);\r
+#define VECTORDISPLAY3(MESSAGE1,MESSAGE2,MESSAGE3) printf(MESSAGE1,MESSAGE2,MESSAGE3);\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+extern unsigned long far _SP_INIT[];\r
+\r
+/***********************************************************************/\r
+/*\r
+ * Handling of the TRK ColdFire libs (printf support in Debugger Terminal) \r
+ * \r
+ * To enable this support: \r
+ * - Set CONSOLE_IO_SUPPORT 1 in this file; this will enable \r
+ * TrapHandler_printf for the trap #14 exception.\r
+ *\r
+ * - Make sure the file console_io_cf.c is in your project. \r
+ *\r
+ * - In the debugger make sure that in the Connection "Setup" dialog, \r
+ * "Debug Options" property page, the check box \r
+ * "Enable Terminal printf support" is set.\r
+ * \r
+ *\r
+ * \r
+ */\r
+#define CONSOLE_IO_SUPPORT 0 \r
+\r
+#if CONSOLE_IO_SUPPORT\r
+asm void TrapHandler_printf(void) {\r
+ HALT\r
+ RTE\r
+}\r
+#endif \r
+\r
+/***********************************************************************/\r
+/*\r
+ * This is the handler for all exceptions which are not common to all \r
+ * ColdFire Chips. \r
+ *\r
+ * Called by mcf_exception_handler\r
+ * \r
+ */\r
+void derivative_interrupt(unsigned long vector)\r
+{\r
+ if (vector < 64 || vector > 192) {\r
+ VECTORDISPLAY2("User Defined Vector #%d\n",vector);\r
+ }\r
+}\r
+\r
+/***********************************************************************\r
+ *\r
+ * This is the exception handler for all exceptions common to all \r
+ * chips ColdFire. Most exceptions do nothing, but some of the more \r
+ * important ones are handled to some extent.\r
+ *\r
+ * Called by asm_exception_handler \r
+ *\r
+ * The ColdFire family of processors has a simplified exception stack\r
+ * frame that looks like the following:\r
+ *\r
+ * 3322222222221111 111111\r
+ * 1098765432109876 5432109876543210\r
+ * 8 +----------------+----------------+\r
+ * | Program Counter |\r
+ * 4 +----------------+----------------+\r
+ * |FS/Fmt/Vector/FS| SR |\r
+ * SP --> 0 +----------------+----------------+\r
+ *\r
+ * The stack self-aligns to a 4-byte boundary at an exception, with\r
+ * the FS/Fmt/Vector/FS field indicating the size of the adjustment\r
+ * (SP += 0,1,2,3 bytes).\r
+ * 31 28 27 26 25 18 17 16 15 0\r
+ * 4 +---------------------------------------+------------------------------------+\r
+ * | Format | FS[3..2] | Vector | FS[1..0] | SR |\r
+ * SP --> 0 +---------------------------------------+------------------------------------+\r
+ */ \r
+#define MCF5XXX_RD_SF_FORMAT(PTR) \\r
+ ((*((unsigned short *)(PTR)) >> 12) & 0x00FF)\r
+\r
+#define MCF5XXX_RD_SF_VECTOR(PTR) \\r
+ ((*((unsigned short *)(PTR)) >> 2) & 0x00FF)\r
+\r
+#define MCF5XXX_RD_SF_FS(PTR) \\r
+ ( ((*((unsigned short *)(PTR)) & 0x0C00) >> 8) | (*((unsigned short *)(PTR)) & 0x0003) )\r
+\r
+#define MCF5XXX_SF_SR(PTR) *(((unsigned short *)(PTR))+1)\r
+\r
+#define MCF5XXX_SF_PC(PTR) *((unsigned long *)(PTR)+1)\r
+\r
+#define MCF5XXX_EXCEPTFMT "%s -- PC = %#08X\n"\r
+\r
+\r
+void mcf_exception_handler(void *framepointer) \r
+{\r
+ volatile unsigned long exceptionStackFrame = (*(unsigned long *)(framepointer)); \r
+ volatile unsigned short stackFrameSR = MCF5XXX_SF_SR(framepointer); \r
+ volatile unsigned short stackFrameWord = (*(unsigned short *)(framepointer)); \r
+ volatile unsigned long stackFrameFormat = (unsigned long)MCF5XXX_RD_SF_FORMAT(&stackFrameWord);\r
+ volatile unsigned long stackFrameFS = (unsigned long)MCF5XXX_RD_SF_FS(&stackFrameWord);\r
+ volatile unsigned long stackFrameVector = (unsigned long)MCF5XXX_RD_SF_VECTOR(&stackFrameWord);\r
+ volatile unsigned long stackFramePC = MCF5XXX_SF_PC(framepointer);\r
+\r
+ switch (stackFrameFormat)\r
+ {\r
+ case 4:\r
+ case 5:\r
+ case 6:\r
+ case 7:\r
+ break;\r
+ default:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT,"Illegal stack type", stackFramePC);\r
+ break;\r
+ }\r
+\r
+ switch (stackFrameVector)\r
+ {\r
+ case 2:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Access Error", stackFramePC);\r
+ switch (stackFrameFS)\r
+ {\r
+ case 4:\r
+ VECTORDISPLAY("Error on instruction fetch\n");\r
+ break;\r
+ case 8:\r
+ VECTORDISPLAY("Error on operand write\n");\r
+ break;\r
+ case 9:\r
+ VECTORDISPLAY("Attempted write to write-protected space\n");\r
+ break;\r
+ case 12:\r
+ VECTORDISPLAY("Error on operand read\n");\r
+ break;\r
+ default:\r
+ VECTORDISPLAY("Reserved Fault Status Encoding\n");\r
+ break;\r
+ }\r
+ break;\r
+ case 3:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Address Error", stackFramePC);\r
+ switch (stackFrameFS)\r
+ {\r
+ case 4:\r
+ VECTORDISPLAY("Error on instruction fetch\n");\r
+ break;\r
+ case 8:\r
+ VECTORDISPLAY("Error on operand write\n");\r
+ break;\r
+ case 9:\r
+ VECTORDISPLAY("Attempted write to write-protected space\n");\r
+ break;\r
+ case 12:\r
+ VECTORDISPLAY("Error on operand read\n");\r
+ break;\r
+ default:\r
+ VECTORDISPLAY("Reserved Fault Status Encoding\n");\r
+ break;\r
+ }\r
+ break;\r
+ case 4:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Illegal instruction", stackFramePC);\r
+ break;\r
+ case 8:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Privilege violation", stackFramePC);\r
+ break;\r
+ case 9:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Trace Exception", stackFramePC);\r
+ break;\r
+ case 10:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented A-Line Instruction", stackFramePC);\r
+ break;\r
+ case 11:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented F-Line Instruction", stackFramePC);\r
+ break;\r
+ case 12:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Debug Interrupt", stackFramePC);\r
+ break;\r
+ case 14:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Format Error", stackFramePC);\r
+ break;\r
+ case 15:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unitialized Interrupt", stackFramePC);\r
+ break;\r
+ case 24:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Spurious Interrupt", stackFramePC);\r
+ break;\r
+ case 25:\r
+ case 26:\r
+ case 27:\r
+ case 28:\r
+ case 29:\r
+ case 30:\r
+ case 31:\r
+ VECTORDISPLAY2("Autovector interrupt level %d\n", stackFrameVector - 24);\r
+ break;\r
+ case 32:\r
+ case 33:\r
+ case 34:\r
+ case 35:\r
+ case 36:\r
+ case 37:\r
+ case 38:\r
+ case 39:\r
+ case 40:\r
+ case 41:\r
+ case 42:\r
+ case 43:\r
+ case 44:\r
+ case 45:\r
+ case 46:\r
+ case 47:\r
+ VECTORDISPLAY2("TRAP #%d\n", stackFrameVector - 32);\r
+ break;\r
+ case 5:\r
+ case 6:\r
+ case 7:\r
+ case 13:\r
+ case 16:\r
+ case 17:\r
+ case 18:\r
+ case 19:\r
+ case 20:\r
+ case 21:\r
+ case 22:\r
+ case 23:\r
+ case 48:\r
+ case 49:\r
+ case 50:\r
+ case 51:\r
+ case 52:\r
+ case 53:\r
+ case 54:\r
+ case 55:\r
+ case 56:\r
+ case 57:\r
+ case 58:\r
+ case 59:\r
+ case 60:\r
+ case 61:\r
+ case 62:\r
+ case 63:\r
+ VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector);\r
+ break;\r
+ default:\r
+ derivative_interrupt(stackFrameVector);\r
+ break;\r
+ }\r
+}\r
+\r
+#if REGISTER_ABI\r
+asm void asm_exception_handler(void)\r
+{\r
+ link a6,#0 \r
+ lea -20(sp), sp\r
+ movem.l d0-d2/a0-a1, (sp)\r
+ lea 24(sp),a0 /* A0 point to exception stack frame on the stack */\r
+ jsr mcf_exception_handler\r
+ movem.l (sp), d0-d2/a0-a1\r
+ lea 20(sp), sp\r
+ unlk a6\r
+ rte\r
+}\r
+#else\r
+asm void asm_exception_handler(void)\r
+{\r
+ link a6,#0 \r
+ lea -20(sp), sp\r
+ movem.l d0-d2/a0-a1, (sp)\r
+ pea 24(sp) /* push exception frame address */\r
+ jsr mcf_exception_handler\r
+ movem.l 4(sp), d0-d2/a0-a1\r
+ lea 24(sp), sp\r
+ unlk a6\r
+ rte\r
+}\r
+#endif\r
+\r
+typedef void (* vectorTableEntryType)(void);\r
+\r
+#if CONSOLE_IO_SUPPORT\r
+vectorTableEntryType vector_printf @Vtrap14 = TrapHandler_printf;\r
+#endif\r
+\r
+/*\r
+ * MCF51CN128 vector table\r
+ * CF V1 has 114 vector + SP_INIT in the vector table (115 entries)\r
+ */\r
+\r
+__declspec(weak) vectorTableEntryType vector_0 @INITSP = (vectorTableEntryType)&_SP_INIT;\r
+__declspec(weak) vectorTableEntryType vector_1 @INITPC = (vectorTableEntryType)&_startup;\r
+__declspec(weak) vectorTableEntryType vector_2 @Vaccerr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_3 @Vadderr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_4 @Viinstr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_5 @VReserved5 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_6 @VReserved6 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_7 @VReserved7 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_8 @Vprviol = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_9 @Vtrace = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_10 @Vunilaop = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_11 @Vunilfop = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_12 @Vdbgi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_13 @VReserved13 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_14 @Vferror = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_15 @VReserved15 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_16 @VReserved16 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_17 @VReserved17 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_18 @VReserved18 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_19 @VReserved19 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_20 @VReserved20 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_21 @VReserved21 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_22 @VReserved22 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_23 @VReserved23 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_24 @Vspuri = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_25 @VReserved25 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_26 @VReserved26 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_27 @VReserved27 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_28 @VReserved28 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_29 @VReserved29 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_30 @VReserved30 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_31 @VReserved31 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_32 @Vtrap0 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_33 @Vtrap1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_34 @Vtrap2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_35 @Vtrap3 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_36 @Vtrap4 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_37 @Vtrap5 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_38 @Vtrap6 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_39 @Vtrap7 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_40 @Vtrap8 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_41 @Vtrap9 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_42 @Vtrap10 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_43 @Vtrap11 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_44 @Vtrap12 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_45 @Vtrap13 = asm_exception_handler;\r
+#if CONSOLE_IO_SUPPORT == 0\r
+__declspec(weak) vectorTableEntryType vector_46 @Vtrap14 = asm_exception_handler;\r
+#endif\r
+__declspec(weak) vectorTableEntryType vector_47 @Vtrap15 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_48 @VReserved48 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_49 @VReserved49 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_50 @VReserved50 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_51 @VReserved51 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_52 @VReserved52 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_53 @VReserved53 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_54 @VReserved54 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_55 @VReserved55 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_56 @VReserved56 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_57 @VReserved57 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_58 @VReserved58 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_59 @VReserved59 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_60 @VReserved60 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_61 @Vunsinstr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_62 @VReserved62 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_63 @VReserved63 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_64 @Virq = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_65 @Vlvd = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_66 @Vlol = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_67 @Vtpm1ch0 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_68 @Vtpm1ch1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_69 @Vtpm1ch2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_70 @Vtpm1ovf = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_71 @Vmtim1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_72 @Vtpm2ch0 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_73 @Vtpm2ch1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_74 @Vtpm2ch2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_75 @Vtpm2ovf = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_76 @Vspi1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_77 @Vspi2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_78 @Vmtim2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_79 @Vsci1err = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_80 @Vsci1rx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_81 @Vsci1tx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_82 @Vsci2err = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_83 @Vsci2rx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_84 @Vsci2tx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_85 @Vsci3or = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_86 @Vfectxf = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_87 @Vfecrxf = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_88 @Vfecother = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_89 @Vfechberr = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_90 @Vfecbabr = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_91 @Vfecbabt = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_92 @Vfecgra = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_93 @Vfectxb = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_94 @Vfecrxb = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_95 @Vfecmii = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_96 @Vfeceberr = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_97 @Vfeclc = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_98 @Vfecrl = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_99 @Vfecun = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_100 @Vsci3err = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_101 @Vsci3rx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_102 @Vsci3tx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_103 @VL7swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_104 @VL6swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_105 @VL5swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_106 @VL4swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_107 @VL3swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_108 @VL2swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_109 @VL1swi = vPortYieldISR;\r
+__declspec(weak) vectorTableEntryType vector_110 @Viic1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_111 @Viic2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_112 @Vadc = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_113 @Vkeyboard = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_114 @Vrtc = asm_exception_handler;\r
+\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+\r
--- /dev/null
+/*\r
+ * File: exceptions.h\r
+ * Purpose: Generic exception handling for ColdFire processors\r
+ *\r
+ * Notes:\r
+ */\r
+\r
+#ifndef _MCF_EXCEPTIONS_H\r
+#define _MCF_EXCEPTIONS_H\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/***********************************************************************/\r
+/*\r
+ * This is the handler for all exceptions which are not common to all \r
+ * ColdFire Chips. \r
+ *\r
+ * Called by mcf_exception_handler\r
+ * \r
+ */\r
+void derivative_interrupt(unsigned long vector);\r
+\r
+/***********************************************************************/\r
+/*\r
+ * This is the exception handler for all exceptions common to all \r
+ * chips ColdFire. Most exceptions do nothing, but some of the more \r
+ * important ones are handled to some extent.\r
+ *\r
+ * Called by asm_exception_handler \r
+ */\r
+void mcf_exception_handler(void *framepointer);\r
+\r
+\r
+/***********************************************************************/\r
+/*\r
+ * This is the assembly exception handler defined in the vector table. \r
+ * This function is in assembler so that the frame pointer can be read \r
+ * from the stack.\r
+ * Note that the way to give the stack frame as argument to the c handler\r
+ * depends on the used ABI (Register, Compact or Standard).\r
+ *\r
+ */\r
+asm void asm_exception_handler(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* _MCF_EXCEPTIONS_H */\r
+\r
--- /dev/null
+/*\r
+ * File: exceptions.c\r
+ * Purpose: Generic exception handling for ColdFire processors\r
+ *\r
+ */\r
+\r
+#include "derivative.h"\r
+#include "exceptions.h"\r
+#include "startcf.h"\r
+\r
+#define REGISTER_ABI __REGABI__\r
+\r
+extern asm void interrupt 109 vPortYieldISR( void );\r
+extern void interrupt 86 vFECISRHandler( void );\r
+\r
+/***********************************************************************/\r
+/*\r
+ * Set NO_PRINTF to 0 in order the exceptions.c interrupt handler\r
+ * to output messages to the standard io. \r
+ * \r
+ */\r
+#define NO_PRINTF 1\r
+\r
+#if NO_PRINTF\r
+#define VECTORDISPLAY(MESSAGE) asm { nop; };\r
+#define VECTORDISPLAY2(MESSAGE,MESSAGE2) asm { nop; };\r
+#define VECTORDISPLAY3(MESSAGE,MESSAGE2,MESSAGE3) asm { nop; };\r
+#else\r
+#include <stdio.h>\r
+#define VECTORDISPLAY(MESSAGE1) printf(MESSAGE1);\r
+#define VECTORDISPLAY2(MESSAGE1,MESSAGE2) printf(MESSAGE1,MESSAGE2);\r
+#define VECTORDISPLAY3(MESSAGE1,MESSAGE2,MESSAGE3) printf(MESSAGE1,MESSAGE2,MESSAGE3);\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+extern unsigned long far _SP_INIT[];\r
+\r
+/***********************************************************************/\r
+/*\r
+ * Handling of the TRK ColdFire libs (printf support in Debugger Terminal) \r
+ * \r
+ * To enable this support: \r
+ * - Set CONSOLE_IO_SUPPORT 1 in this file; this will enable \r
+ * TrapHandler_printf for the trap #14 exception.\r
+ *\r
+ * - Make sure the file console_io_cf.c is in your project. \r
+ *\r
+ * - In the debugger make sure that in the Connection "Setup" dialog, \r
+ * "Debug Options" property page, the check box \r
+ * "Enable Terminal printf support" is set.\r
+ * \r
+ *\r
+ * \r
+ */\r
+#define CONSOLE_IO_SUPPORT 0 \r
+\r
+#if CONSOLE_IO_SUPPORT\r
+asm void TrapHandler_printf(void) {\r
+ HALT\r
+ RTE\r
+}\r
+#endif \r
+\r
+/***********************************************************************/\r
+/*\r
+ * This is the handler for all exceptions which are not common to all \r
+ * ColdFire Chips. \r
+ *\r
+ * Called by mcf_exception_handler\r
+ * \r
+ */\r
+void derivative_interrupt(unsigned long vector)\r
+{\r
+ if (vector < 64 || vector > 192) {\r
+ VECTORDISPLAY2("User Defined Vector #%d\n",vector);\r
+ }\r
+}\r
+\r
+/***********************************************************************\r
+ *\r
+ * This is the exception handler for all exceptions common to all \r
+ * chips ColdFire. Most exceptions do nothing, but some of the more \r
+ * important ones are handled to some extent.\r
+ *\r
+ * Called by asm_exception_handler \r
+ *\r
+ * The ColdFire family of processors has a simplified exception stack\r
+ * frame that looks like the following:\r
+ *\r
+ * 3322222222221111 111111\r
+ * 1098765432109876 5432109876543210\r
+ * 8 +----------------+----------------+\r
+ * | Program Counter |\r
+ * 4 +----------------+----------------+\r
+ * |FS/Fmt/Vector/FS| SR |\r
+ * SP --> 0 +----------------+----------------+\r
+ *\r
+ * The stack self-aligns to a 4-byte boundary at an exception, with\r
+ * the FS/Fmt/Vector/FS field indicating the size of the adjustment\r
+ * (SP += 0,1,2,3 bytes).\r
+ * 31 28 27 26 25 18 17 16 15 0\r
+ * 4 +---------------------------------------+------------------------------------+\r
+ * | Format | FS[3..2] | Vector | FS[1..0] | SR |\r
+ * SP --> 0 +---------------------------------------+------------------------------------+\r
+ */ \r
+#define MCF5XXX_RD_SF_FORMAT(PTR) \\r
+ ((*((unsigned short *)(PTR)) >> 12) & 0x00FF)\r
+\r
+#define MCF5XXX_RD_SF_VECTOR(PTR) \\r
+ ((*((unsigned short *)(PTR)) >> 2) & 0x00FF)\r
+\r
+#define MCF5XXX_RD_SF_FS(PTR) \\r
+ ( ((*((unsigned short *)(PTR)) & 0x0C00) >> 8) | (*((unsigned short *)(PTR)) & 0x0003) )\r
+\r
+#define MCF5XXX_SF_SR(PTR) *(((unsigned short *)(PTR))+1)\r
+\r
+#define MCF5XXX_SF_PC(PTR) *((unsigned long *)(PTR)+1)\r
+\r
+#define MCF5XXX_EXCEPTFMT "%s -- PC = %#08X\n"\r
+\r
+\r
+void mcf_exception_handler(void *framepointer) \r
+{\r
+ volatile unsigned long exceptionStackFrame = (*(unsigned long *)(framepointer)); \r
+ volatile unsigned short stackFrameSR = MCF5XXX_SF_SR(framepointer); \r
+ volatile unsigned short stackFrameWord = (*(unsigned short *)(framepointer)); \r
+ volatile unsigned long stackFrameFormat = (unsigned long)MCF5XXX_RD_SF_FORMAT(&stackFrameWord);\r
+ volatile unsigned long stackFrameFS = (unsigned long)MCF5XXX_RD_SF_FS(&stackFrameWord);\r
+ volatile unsigned long stackFrameVector = (unsigned long)MCF5XXX_RD_SF_VECTOR(&stackFrameWord);\r
+ volatile unsigned long stackFramePC = MCF5XXX_SF_PC(framepointer);\r
+\r
+ switch (stackFrameFormat)\r
+ {\r
+ case 4:\r
+ case 5:\r
+ case 6:\r
+ case 7:\r
+ break;\r
+ default:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT,"Illegal stack type", stackFramePC);\r
+ break;\r
+ }\r
+\r
+ switch (stackFrameVector)\r
+ {\r
+ case 2:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Access Error", stackFramePC);\r
+ switch (stackFrameFS)\r
+ {\r
+ case 4:\r
+ VECTORDISPLAY("Error on instruction fetch\n");\r
+ break;\r
+ case 8:\r
+ VECTORDISPLAY("Error on operand write\n");\r
+ break;\r
+ case 9:\r
+ VECTORDISPLAY("Attempted write to write-protected space\n");\r
+ break;\r
+ case 12:\r
+ VECTORDISPLAY("Error on operand read\n");\r
+ break;\r
+ default:\r
+ VECTORDISPLAY("Reserved Fault Status Encoding\n");\r
+ break;\r
+ }\r
+ break;\r
+ case 3:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Address Error", stackFramePC);\r
+ switch (stackFrameFS)\r
+ {\r
+ case 4:\r
+ VECTORDISPLAY("Error on instruction fetch\n");\r
+ break;\r
+ case 8:\r
+ VECTORDISPLAY("Error on operand write\n");\r
+ break;\r
+ case 9:\r
+ VECTORDISPLAY("Attempted write to write-protected space\n");\r
+ break;\r
+ case 12:\r
+ VECTORDISPLAY("Error on operand read\n");\r
+ break;\r
+ default:\r
+ VECTORDISPLAY("Reserved Fault Status Encoding\n");\r
+ break;\r
+ }\r
+ break;\r
+ case 4:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Illegal instruction", stackFramePC);\r
+ break;\r
+ case 8:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Privilege violation", stackFramePC);\r
+ break;\r
+ case 9:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Trace Exception", stackFramePC);\r
+ break;\r
+ case 10:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented A-Line Instruction", stackFramePC);\r
+ break;\r
+ case 11:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented F-Line Instruction", stackFramePC);\r
+ break;\r
+ case 12:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Debug Interrupt", stackFramePC);\r
+ break;\r
+ case 14:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Format Error", stackFramePC);\r
+ break;\r
+ case 15:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unitialized Interrupt", stackFramePC);\r
+ break;\r
+ case 24:\r
+ VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Spurious Interrupt", stackFramePC);\r
+ break;\r
+ case 25:\r
+ case 26:\r
+ case 27:\r
+ case 28:\r
+ case 29:\r
+ case 30:\r
+ case 31:\r
+ VECTORDISPLAY2("Autovector interrupt level %d\n", stackFrameVector - 24);\r
+ break;\r
+ case 32:\r
+ case 33:\r
+ case 34:\r
+ case 35:\r
+ case 36:\r
+ case 37:\r
+ case 38:\r
+ case 39:\r
+ case 40:\r
+ case 41:\r
+ case 42:\r
+ case 43:\r
+ case 44:\r
+ case 45:\r
+ case 46:\r
+ case 47:\r
+ VECTORDISPLAY2("TRAP #%d\n", stackFrameVector - 32);\r
+ break;\r
+ case 5:\r
+ case 6:\r
+ case 7:\r
+ case 13:\r
+ case 16:\r
+ case 17:\r
+ case 18:\r
+ case 19:\r
+ case 20:\r
+ case 21:\r
+ case 22:\r
+ case 23:\r
+ case 48:\r
+ case 49:\r
+ case 50:\r
+ case 51:\r
+ case 52:\r
+ case 53:\r
+ case 54:\r
+ case 55:\r
+ case 56:\r
+ case 57:\r
+ case 58:\r
+ case 59:\r
+ case 60:\r
+ case 61:\r
+ case 62:\r
+ case 63:\r
+ VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector);\r
+ break;\r
+ default:\r
+ derivative_interrupt(stackFrameVector);\r
+ break;\r
+ }\r
+}\r
+\r
+#if REGISTER_ABI\r
+asm void asm_exception_handler(void)\r
+{\r
+ link a6,#0 \r
+ lea -20(sp), sp\r
+ movem.l d0-d2/a0-a1, (sp)\r
+ lea 24(sp),a0 /* A0 point to exception stack frame on the stack */\r
+ jsr mcf_exception_handler\r
+ movem.l (sp), d0-d2/a0-a1\r
+ lea 20(sp), sp\r
+ unlk a6\r
+ rte\r
+}\r
+#else\r
+asm void asm_exception_handler(void)\r
+{\r
+ link a6,#0 \r
+ lea -20(sp), sp\r
+ movem.l d0-d2/a0-a1, (sp)\r
+ pea 24(sp) /* push exception frame address */\r
+ jsr mcf_exception_handler\r
+ movem.l 4(sp), d0-d2/a0-a1\r
+ lea 24(sp), sp\r
+ unlk a6\r
+ rte\r
+}\r
+#endif\r
+\r
+typedef void (* vectorTableEntryType)(void);\r
+\r
+#if CONSOLE_IO_SUPPORT\r
+vectorTableEntryType vector_printf @Vtrap14 = TrapHandler_printf;\r
+#endif\r
+\r
+/*\r
+ * MCF51CN128 vector table\r
+ * CF V1 has 114 vector + SP_INIT in the vector table (115 entries)\r
+ */\r
+\r
+__declspec(weak) vectorTableEntryType vector_0 @INITSP = (vectorTableEntryType)&_SP_INIT;\r
+__declspec(weak) vectorTableEntryType vector_1 @INITPC = (vectorTableEntryType)&_startup;\r
+__declspec(weak) vectorTableEntryType vector_2 @Vaccerr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_3 @Vadderr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_4 @Viinstr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_5 @VReserved5 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_6 @VReserved6 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_7 @VReserved7 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_8 @Vprviol = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_9 @Vtrace = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_10 @Vunilaop = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_11 @Vunilfop = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_12 @Vdbgi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_13 @VReserved13 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_14 @Vferror = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_15 @VReserved15 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_16 @VReserved16 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_17 @VReserved17 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_18 @VReserved18 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_19 @VReserved19 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_20 @VReserved20 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_21 @VReserved21 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_22 @VReserved22 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_23 @VReserved23 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_24 @Vspuri = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_25 @VReserved25 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_26 @VReserved26 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_27 @VReserved27 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_28 @VReserved28 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_29 @VReserved29 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_30 @VReserved30 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_31 @VReserved31 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_32 @Vtrap0 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_33 @Vtrap1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_34 @Vtrap2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_35 @Vtrap3 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_36 @Vtrap4 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_37 @Vtrap5 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_38 @Vtrap6 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_39 @Vtrap7 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_40 @Vtrap8 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_41 @Vtrap9 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_42 @Vtrap10 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_43 @Vtrap11 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_44 @Vtrap12 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_45 @Vtrap13 = asm_exception_handler;\r
+#if CONSOLE_IO_SUPPORT == 0\r
+__declspec(weak) vectorTableEntryType vector_46 @Vtrap14 = asm_exception_handler;\r
+#endif\r
+__declspec(weak) vectorTableEntryType vector_47 @Vtrap15 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_48 @VReserved48 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_49 @VReserved49 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_50 @VReserved50 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_51 @VReserved51 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_52 @VReserved52 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_53 @VReserved53 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_54 @VReserved54 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_55 @VReserved55 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_56 @VReserved56 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_57 @VReserved57 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_58 @VReserved58 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_59 @VReserved59 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_60 @VReserved60 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_61 @Vunsinstr = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_62 @VReserved62 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_63 @VReserved63 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_64 @Virq = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_65 @Vlvd = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_66 @Vlol = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_67 @Vtpm1ch0 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_68 @Vtpm1ch1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_69 @Vtpm1ch2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_70 @Vtpm1ovf = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_71 @Vmtim1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_72 @Vtpm2ch0 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_73 @Vtpm2ch1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_74 @Vtpm2ch2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_75 @Vtpm2ovf = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_76 @Vspi1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_77 @Vspi2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_78 @Vmtim2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_79 @Vsci1err = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_80 @Vsci1rx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_81 @Vsci1tx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_82 @Vsci2err = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_83 @Vsci2rx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_84 @Vsci2tx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_85 @Vsci3or = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_86 @Vfectxf = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_87 @Vfecrxf = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_88 @Vfecother = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_89 @Vfechberr = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_90 @Vfecbabr = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_91 @Vfecbabt = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_92 @Vfecgra = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_93 @Vfectxb = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_94 @Vfecrxb = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_95 @Vfecmii = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_96 @Vfeceberr = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_97 @Vfeclc = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_98 @Vfecrl = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_99 @Vfecun = vFECISRHandler;\r
+__declspec(weak) vectorTableEntryType vector_100 @Vsci3err = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_101 @Vsci3rx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_102 @Vsci3tx = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_103 @VL7swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_104 @VL6swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_105 @VL5swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_106 @VL4swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_107 @VL3swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_108 @VL2swi = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_109 @VL1swi = vPortYieldISR;\r
+__declspec(weak) vectorTableEntryType vector_110 @Viic1 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_111 @Viic2 = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_112 @Vadc = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_113 @Vkeyboard = asm_exception_handler;\r
+__declspec(weak) vectorTableEntryType vector_114 @Vrtc = asm_exception_handler;\r
+\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+\r
--- /dev/null
+/*\r
+ * File: fecbd.h\r
+ * Purpose: \r
+ *\r
+ * Purpose: Provide a simple buffer management driver\r
+ */\r
+\r
+#ifndef _FECBD_H_\r
+#define _FECBD_H_\r
+\r
+/********************************************************************/\r
+\r
+#define Rx 1\r
+#define Tx 0\r
+\r
+/*\r
+ * Buffer sizes in bytes \r
+ */\r
+#ifndef RX_BUF_SZ\r
+#define RX_BUF_SZ 1520 //2048 \r
+#endif\r
+#ifndef TX_BUF_SZ\r
+#define TX_BUF_SZ 1520\r
+#endif\r
+\r
+/* \r
+ * Buffer Descriptor Format \r
+ */\r
+#pragma options align= packed\r
+typedef struct\r
+{\r
+ unsigned portSHORT status; /* control and status */\r
+ unsigned portSHORT length; /* transfer length */\r
+ unsigned portCHAR *data; /* buffer address */\r
+} FECBD;\r
+\r
+/*\r
+ * Bit level definitions for status field of buffer descriptors\r
+ */\r
+#define TX_BD_R 0x8000\r
+#define TX_BD_TO1 0x4000\r
+#define TX_BD_W 0x2000\r
+#define TX_BD_TO2 0x1000\r
+#define TX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */\r
+#define TX_BD_L 0x0800\r
+#define TX_BD_TC 0x0400\r
+#define TX_BD_DEF 0x0200 /* MCF5272 Only */\r
+#define TX_BD_ABC 0x0200\r
+#define TX_BD_HB 0x0100 /* MCF5272 Only */\r
+#define TX_BD_LC 0x0080 /* MCF5272 Only */\r
+#define TX_BD_RL 0x0040 /* MCF5272 Only */\r
+#define TX_BD_UN 0x0002 /* MCF5272 Only */\r
+#define TX_BD_CSL 0x0001 /* MCF5272 Only */\r
+\r
+#define RX_BD_E 0x8000\r
+#define RX_BD_R01 0x4000\r
+#define RX_BD_W 0x2000\r
+#define RX_BD_R02 0x1000\r
+#define RX_BD_INTERRUPT 0x1000 /* MCF547x/8x Only */\r
+#define RX_BD_L 0x0800\r
+#define RX_BD_M 0x0100\r
+#define RX_BD_BC 0x0080\r
+#define RX_BD_MC 0x0040\r
+#define RX_BD_LG 0x0020\r
+#define RX_BD_NO 0x0010\r
+#define RX_BD_CR 0x0004\r
+#define RX_BD_OV 0x0002\r
+#define RX_BD_TR 0x0001\r
+#define RX_BD_ERROR (RX_BD_NO | RX_BD_CR | RX_BD_OV | RX_BD_TR)\r
+\r
+/*\r
+ * The following defines are provided by the MCF547x/8x \r
+ * DMA API. These are shown here to show their correlation\r
+ * to the other FEC buffer descriptor status bits\r
+ * \r
+ * #define MCD_FEC_BUF_READY 0x8000\r
+ * #define MCD_FEC_WRAP 0x2000\r
+ * #define MCD_FEC_INTERRUPT 0x1000\r
+ * #define MCD_FEC_END_FRAME 0x0800\r
+ */\r
+\r
+/* \r
+ * Functions provided in fec_bd.c \r
+ */\r
+int fecbd_init(int, int, int);\r
+void fecbd_flush(int);\r
+void fecbd_dump( void );\r
+unsigned portLONG fecbd_get_start(int, int);\r
+FECBD* fecbd_rx_alloc(int);\r
+FECBD* fecbd_tx_alloc(int);\r
+FECBD* fecbd_tx_free(int);\r
+\r
+/*\r
+ * Error codes\r
+ */\r
+#define ERR_MALLOC (-1)\r
+#define ERR_NBUFALLOC (-2)\r
+\r
+/*******************************************************************/\r
+\r
+#endif /* _FECBD_H_ */\r
--- /dev/null
+/*\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: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $\r
+ */\r
+\r
+#ifndef __CLOCK_ARCH_H__\r
+#define __CLOCK_ARCH_H__\r
+\r
+#include "FreeRTOS.h"\r
+\r
+typedef unsigned long clock_time_t;\r
+#define CLOCK_CONF_SECOND configTICK_RATE_HZ\r
+\r
+#endif /* __CLOCK_ARCH_H__ */\r
--- /dev/null
+http_http "http://"\r
+http_200 "200 "\r
+http_301 "301 "\r
+http_302 "302 "\r
+http_get "GET "\r
+http_10 "HTTP/1.0"\r
+http_11 "HTTP/1.1"\r
+http_content_type "content-type: "\r
+http_texthtml "text/html"\r
+http_location "location: "\r
+http_host "host: "\r
+http_crnl "\r\n"\r
+http_index_html "/index.html"\r
+http_404_html "/404.html"\r
+http_referer "Referer:"\r
+http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n"\r
+http_header_404 "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n"\r
+http_content_type_plain "Content-type: text/plain\r\n\r\n"\r
+http_content_type_html "Content-type: text/html\r\n\r\n"\r
+http_content_type_css "Content-type: text/css\r\n\r\n"\r
+http_content_type_text "Content-type: text/text\r\n\r\n"\r
+http_content_type_png "Content-type: image/png\r\n\r\n"\r
+http_content_type_gif "Content-type: image/gif\r\n\r\n"\r
+http_content_type_jpg "Content-type: image/jpeg\r\n\r\n"\r
+http_content_type_binary "Content-type: application/octet-stream\r\n\r\n"\r
+http_html ".html"\r
+http_shtml ".shtml"\r
+http_htm ".htm"\r
+http_css ".css"\r
+http_png ".png"\r
+http_gif ".gif"\r
+http_jpg ".jpg"\r
+http_text ".txt"\r
+http_txt ".txt"\r
+\r
--- /dev/null
+const char http_http[8] = \r
+/* "http://" */\r
+{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, };\r
+const char http_200[5] = \r
+/* "200 " */\r
+{0x32, 0x30, 0x30, 0x20, };\r
+const char http_301[5] = \r
+/* "301 " */\r
+{0x33, 0x30, 0x31, 0x20, };\r
+const char http_302[5] = \r
+/* "302 " */\r
+{0x33, 0x30, 0x32, 0x20, };\r
+const char http_get[5] = \r
+/* "GET " */\r
+{0x47, 0x45, 0x54, 0x20, };\r
+const char http_10[9] = \r
+/* "HTTP/1.0" */\r
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, };\r
+const char http_11[9] = \r
+/* "HTTP/1.1" */\r
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, };\r
+const char http_content_type[15] = \r
+/* "content-type: " */\r
+{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, };\r
+const char http_texthtml[10] = \r
+/* "text/html" */\r
+{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, };\r
+const char http_location[11] = \r
+/* "location: " */\r
+{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, };\r
+const char http_host[7] = \r
+/* "host: " */\r
+{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, };\r
+const char http_crnl[3] = \r
+/* "\r\n" */\r
+{0xd, 0xa, };\r
+const char http_index_html[12] = \r
+/* "/index.html" */\r
+{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };\r
+const char http_404_html[10] = \r
+/* "/404.html" */\r
+{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };\r
+const char http_referer[9] = \r
+/* "Referer:" */\r
+{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, };\r
+const char http_header_200[84] = \r
+/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */\r
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };\r
+const char http_header_404[91] = \r
+/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */\r
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };\r
+const char http_content_type_plain[29] = \r
+/* "Content-type: text/plain\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_content_type_html[28] = \r
+/* "Content-type: text/html\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_content_type_css [27] = \r
+/* "Content-type: text/css\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_content_type_text[28] = \r
+/* "Content-type: text/text\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_content_type_png [28] = \r
+/* "Content-type: image/png\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_content_type_gif [28] = \r
+/* "Content-type: image/gif\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_content_type_jpg [29] = \r
+/* "Content-type: image/jpeg\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_content_type_binary[43] = \r
+/* "Content-type: application/octet-stream\r\n\r\n" */\r
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, };\r
+const char http_html[6] = \r
+/* ".html" */\r
+{0x2e, 0x68, 0x74, 0x6d, 0x6c, };\r
+const char http_shtml[7] = \r
+/* ".shtml" */\r
+{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, };\r
+const char http_htm[5] = \r
+/* ".htm" */\r
+{0x2e, 0x68, 0x74, 0x6d, };\r
+const char http_css[5] = \r
+/* ".css" */\r
+{0x2e, 0x63, 0x73, 0x73, };\r
+const char http_png[5] = \r
+/* ".png" */\r
+{0x2e, 0x70, 0x6e, 0x67, };\r
+const char http_gif[5] = \r
+/* ".gif" */\r
+{0x2e, 0x67, 0x69, 0x66, };\r
+const char http_jpg[5] = \r
+/* ".jpg" */\r
+{0x2e, 0x6a, 0x70, 0x67, };\r
+const char http_text[5] = \r
+/* ".txt" */\r
+{0x2e, 0x74, 0x78, 0x74, };\r
+const char http_txt[5] = \r
+/* ".txt" */\r
+{0x2e, 0x74, 0x78, 0x74, };\r
--- /dev/null
+extern const char http_http[8];\r
+extern const char http_200[5];\r
+extern const char http_301[5];\r
+extern const char http_302[5];\r
+extern const char http_get[5];\r
+extern const char http_10[9];\r
+extern const char http_11[9];\r
+extern const char http_content_type[15];\r
+extern const char http_texthtml[10];\r
+extern const char http_location[11];\r
+extern const char http_host[7];\r
+extern const char http_crnl[3];\r
+extern const char http_index_html[12];\r
+extern const char http_404_html[10];\r
+extern const char http_referer[9];\r
+extern const char http_header_200[84];\r
+extern const char http_header_404[91];\r
+extern const char http_content_type_plain[29];\r
+extern const char http_content_type_html[28];\r
+extern const char http_content_type_css [27];\r
+extern const char http_content_type_text[28];\r
+extern const char http_content_type_png [28];\r
+extern const char http_content_type_gif [28];\r
+extern const char http_content_type_jpg [29];\r
+extern const char http_content_type_binary[43];\r
+extern const char http_html[6];\r
+extern const char http_shtml[7];\r
+extern const char http_htm[5];\r
+extern const char http_css[5];\r
+extern const char http_png[5];\r
+extern const char http_gif[5];\r
+extern const char http_jpg[5];\r
+extern const char http_text[5];\r
+extern const char http_txt[5];\r
--- /dev/null
+/**\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
+\r
+#include "uip.h"\r
+#include "psock.h"\r
+#include "httpd.h"\r
+#include "httpd-cgi.h"\r
+#include "httpd-fs.h"\r
+\r
+#include <stdio.h>\r
+#include <string.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(io, "led-io", led_io );\r
+\r
+\r
+static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &io, NULL };\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))\r
+{\r
+ ( void ) ptr;\r
+ PSOCK_BEGIN(&s->sout);\r
+ PSOCK_END(&s->sout);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+httpd_cgifunction\r
+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
+ if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {\r
+ return (*f)->function;\r
+ }\r
+ }\r
+ return nullfunction;\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static unsigned short\r
+generate_file_stats(void *arg)\r
+{\r
+ char *f = (char *)arg;\r
+ return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f));\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+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
+static const char closed[] = /* "CLOSED",*/\r
+{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};\r
+static const char syn_rcvd[] = /* "SYN-RCVD",*/\r
+{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,\r
+ 0x44, 0};\r
+static const char syn_sent[] = /* "SYN-SENT",*/\r
+{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,\r
+ 0x54, 0};\r
+static const char established[] = /* "ESTABLISHED",*/\r
+{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,\r
+ 0x45, 0x44, 0};\r
+static const char fin_wait_1[] = /* "FIN-WAIT-1",*/\r
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,\r
+ 0x54, 0x2d, 0x31, 0};\r
+static const char fin_wait_2[] = /* "FIN-WAIT-2",*/\r
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,\r
+ 0x54, 0x2d, 0x32, 0};\r
+static const char closing[] = /* "CLOSING",*/\r
+{0x43, 0x4c, 0x4f, 0x53, 0x49,\r
+ 0x4e, 0x47, 0};\r
+static const char time_wait[] = /* "TIME-WAIT,"*/\r
+{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,\r
+ 0x49, 0x54, 0};\r
+static const char last_ack[] = /* "LAST-ACK"*/\r
+{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,\r
+ 0x4b, 0};\r
+\r
+static const char *states[] = {\r
+ closed,\r
+ syn_rcvd,\r
+ syn_sent,\r
+ established,\r
+ fin_wait_1,\r
+ fin_wait_2,\r
+ closing,\r
+ time_wait,\r
+ last_ack};\r
+\r
+\r
+static unsigned short\r
+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 snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,\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",\r
+ htons(conn->lport),\r
+ htons(conn->ripaddr[0]) >> 8,\r
+ htons(conn->ripaddr[0]) & 0xff,\r
+ htons(conn->ripaddr[1]) >> 8,\r
+ htons(conn->ripaddr[1]) & 0xff,\r
+ htons(conn->rport),\r
+ states[conn->tcpstateflags & UIP_TS_MASK],\r
+ conn->nrtx,\r
+ conn->timer,\r
+ (uip_outstanding(conn))? '*':' ',\r
+ (uip_stopped(conn))? '!':' ');\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr))\r
+{\r
+\r
+ ( void ) ptr;\r
+ PSOCK_BEGIN(&s->sout);\r
+\r
+ for(s->count = 0; s->count < UIP_CONNS; ++s->count) {\r
+ if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) {\r
+ PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s);\r
+ }\r
+ }\r
+\r
+ PSOCK_END(&s->sout);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static unsigned short\r
+generate_net_stats(void *arg)\r
+{\r
+ struct httpd_state *s = (struct httpd_state *)arg;\r
+ return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,\r
+ "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]);\r
+}\r
+\r
+static\r
+PT_THREAD(net_stats(struct httpd_state *s, char *ptr))\r
+{\r
+ ( void ) ptr;\r
+ PSOCK_BEGIN(&s->sout);\r
+\r
+#if UIP_STATISTICS\r
+\r
+ for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t);\r
+ ++s->count) {\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 unsigned long ulCheckErrors;\r
+static char cCountBuf[ 32 ];\r
+long lRefreshCount = 0;\r
+static unsigned short\r
+generate_rtos_stats(void *arg)\r
+{\r
+ ( void ) arg;\r
+ lRefreshCount++;\r
+ sprintf( cCountBuf, "<p><br>Refresh count = %d", lRefreshCount );\r
+ vTaskList( uip_appdata );\r
+ strcat( uip_appdata, cCountBuf );\r
+ \r
+ /* Have any errors been latched? */\r
+ if( ulCheckErrors != 0 )\r
+ {\r
+ strcat( uip_appdata, "<p><br><p>The check function has detected an error! Error code = " );\r
+ sprintf( cCountBuf, "%x", ulCheckErrors );\r
+ strcat( uip_appdata, cCountBuf );\r
+ }\r
+ else\r
+ {\r
+ strcat( uip_appdata, "<p><br><p>All tasks are executing with no errors reported.<p>" );\r
+ }\r
+\r
+ return strlen( uip_appdata );\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+\r
+\r
+static\r
+PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr))\r
+{\r
+ ( void ) ptr;\r
+ PSOCK_BEGIN(&s->sout);\r
+ PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL);\r
+ PSOCK_END(&s->sout);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+\r
+char *pcStatus;\r
+extern unsigned long uxParTestGetLED( unsigned long uxLED );\r
+\r
+static unsigned short generate_io_state( void *arg )\r
+{\r
+ ( void ) arg;\r
+ if( uxParTestGetLED( 3 ) )\r
+ {\r
+ pcStatus = "checked";\r
+ }\r
+ else\r
+ {\r
+ pcStatus = "";\r
+ }\r
+\r
+ sprintf( uip_appdata, "<input type=\"checkbox\" name=\"LED3\" value=\"1\" %s>LED", pcStatus );\r
+ return strlen( uip_appdata );\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+\r
+static PT_THREAD(led_io(struct httpd_state *s, char *ptr))\r
+{\r
+ ( void ) ptr;\r
+ PSOCK_BEGIN(&s->sout);\r
+ PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL);\r
+ PSOCK_END(&s->sout);\r
+}\r
+\r
+/** @} */\r
+\r
+\r
+\r
+\r
+\r
+\r
--- /dev/null
+/**\r
+ * \addtogroup httpd\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \file\r
+ * Web server script interface header file\r
+ * \author\r
+ * Adam Dunkels <adam@sics.se>\r
+ *\r
+ */\r
+\r
+\r
+\r
+/*\r
+ * Copyright (c) 2001, 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.h,v 1.2 2006/06/11 21:46:38 adam Exp $\r
+ *\r
+ */\r
+\r
+#ifndef __HTTPD_CGI_H__\r
+#define __HTTPD_CGI_H__\r
+\r
+#include "psock.h"\r
+#include "httpd.h"\r
+\r
+typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *));\r
+\r
+httpd_cgifunction httpd_cgi(char *name);\r
+\r
+struct httpd_cgi_call {\r
+ const char *name;\r
+ const httpd_cgifunction function;\r
+};\r
+\r
+/**\r
+ * \brief HTTPD CGI function declaration\r
+ * \param name The C variable name of the function\r
+ * \param str The string name of the function, used in the script file\r
+ * \param function A pointer to the function that implements it\r
+ *\r
+ * This macro is used for declaring a HTTPD CGI\r
+ * function. This function is then added to the list of\r
+ * HTTPD CGI functions with the httpd_cgi_add() function.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define HTTPD_CGI_CALL(name, str, function) \\r
+static PT_THREAD(function(struct httpd_state *, char *)); \\r
+static const struct httpd_cgi_call name = {str, function}\r
+\r
+void httpd_cgi_init(void);\r
+#endif /* __HTTPD_CGI_H__ */\r
+\r
+/** @} */\r
--- /dev/null
+/*\r
+ * Copyright (c) 2001, 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 lwIP TCP/IP stack.\r
+ *\r
+ * Author: Adam Dunkels <adam@sics.se>\r
+ *\r
+ * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $\r
+ */\r
+\r
+#include "httpd.h"\r
+#include "httpd-fs.h"\r
+#include "httpd-fsdata.h"\r
+\r
+#ifndef NULL\r
+#define NULL 0\r
+#endif /* NULL */\r
+\r
+#include "httpd-fsdata.c"\r
+\r
+#if HTTPD_FS_STATISTICS\r
+static u16_t count[HTTPD_FS_NUMFILES];\r
+#endif /* HTTPD_FS_STATISTICS */\r
+\r
+/*-----------------------------------------------------------------------------------*/\r
+static u8_t\r
+httpd_fs_strcmp(const char *str1, const char *str2)\r
+{\r
+ u8_t i;\r
+ i = 0;\r
+ loop:\r
+\r
+ if(str2[i] == 0 ||\r
+ str1[i] == '\r' ||\r
+ str1[i] == '\n') {\r
+ return 0;\r
+ }\r
+\r
+ if(str1[i] != str2[i]) {\r
+ return 1;\r
+ }\r
+\r
+\r
+ ++i;\r
+ goto loop;\r
+}\r
+/*-----------------------------------------------------------------------------------*/\r
+int\r
+httpd_fs_open(const char *name, struct httpd_fs_file *file)\r
+{\r
+#if HTTPD_FS_STATISTICS\r
+ u16_t i = 0;\r
+#endif /* HTTPD_FS_STATISTICS */\r
+ struct httpd_fsdata_file_noconst *f;\r
+\r
+ for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;\r
+ f != NULL;\r
+ f = (struct httpd_fsdata_file_noconst *)f->next) {\r
+\r
+ if(httpd_fs_strcmp(name, f->name) == 0) {\r
+ file->data = f->data;\r
+ file->len = f->len;\r
+#if HTTPD_FS_STATISTICS\r
+ ++count[i];\r
+#endif /* HTTPD_FS_STATISTICS */\r
+ return 1;\r
+ }\r
+#if HTTPD_FS_STATISTICS\r
+ ++i;\r
+#endif /* HTTPD_FS_STATISTICS */\r
+\r
+ }\r
+ return 0;\r
+}\r
+/*-----------------------------------------------------------------------------------*/\r
+void\r
+httpd_fs_init(void)\r
+{\r
+#if HTTPD_FS_STATISTICS\r
+ u16_t i;\r
+ for(i = 0; i < HTTPD_FS_NUMFILES; i++) {\r
+ count[i] = 0;\r
+ }\r
+#endif /* HTTPD_FS_STATISTICS */\r
+}\r
+/*-----------------------------------------------------------------------------------*/\r
+#if HTTPD_FS_STATISTICS\r
+u16_t httpd_fs_count\r
+(char *name)\r
+{\r
+ struct httpd_fsdata_file_noconst *f;\r
+ u16_t i;\r
+\r
+ i = 0;\r
+ for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;\r
+ f != NULL;\r
+ f = (struct httpd_fsdata_file_noconst *)f->next) {\r
+\r
+ if(httpd_fs_strcmp(name, f->name) == 0) {\r
+ return count[i];\r
+ }\r
+ ++i;\r
+ }\r
+ return 0;\r
+}\r
+#endif /* HTTPD_FS_STATISTICS */\r
+/*-----------------------------------------------------------------------------------*/\r
--- /dev/null
+/*\r
+ * Copyright (c) 2001, 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 lwIP TCP/IP stack.\r
+ *\r
+ * Author: Adam Dunkels <adam@sics.se>\r
+ *\r
+ * $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $\r
+ */\r
+#ifndef __HTTPD_FS_H__\r
+#define __HTTPD_FS_H__\r
+\r
+#define HTTPD_FS_STATISTICS 1\r
+\r
+struct httpd_fs_file {\r
+ char *data;\r
+ int len;\r
+};\r
+\r
+/* file must be allocated by caller and will be filled in\r
+ by the function. */\r
+int httpd_fs_open(const char *name, struct httpd_fs_file *file);\r
+\r
+#ifdef HTTPD_FS_STATISTICS\r
+#if HTTPD_FS_STATISTICS == 1\r
+u16_t httpd_fs_count(char *name);\r
+#endif /* HTTPD_FS_STATISTICS */\r
+#endif /* HTTPD_FS_STATISTICS */\r
+\r
+void httpd_fs_init(void);\r
+\r
+#endif /* __HTTPD_FS_H__ */\r
--- /dev/null
+<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
--- /dev/null
+<!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("location.href='index.shtml'",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
--- /dev/null
+<!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("location.href='index.shtml'",2000)">\r
+<font face="arial">\r
+<a href="index.shtml">RTOS Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<br><p>\r
+<h2>Task status</h2>\r
+This page shows dynamically generated task state information. The page will refresh evey 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
--- /dev/null
+<!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">RTOS Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<b>Dynamic IO demonstration</b><br>\r
+\r
+<p>\r
+This page demonstrates two way communication. By using the check box this WEB interface can influence the program execution.<p>\r
+Use the check box and "Update IO button" to set the state of LED1. Refresh the page to display the state of LED1.\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
--- /dev/null
+<!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 bgcolor="#CCCCff">\r
+<font face="arial">\r
+<a href="index.shtml">RTOS 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
--- /dev/null
+<!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">RTOS Stats</a> <b>|</b> <a href="tcp.shtml">Connections</a> <b>|</b> <a href="io.shtml">IO</a>\r
+<br><p>\r
+<hr>\r
+<br>\r
+<h2>Network connections</h2>\r
+This page displays dynamically generated status information on the TCP/IP connections.\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
--- /dev/null
+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, 0x52, 0x54, 0x4f, 0x53, 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, 0x74, 0x63, \r
+ 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, \r
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, \r
+ 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, \r
+ 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, \r
+ 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+ 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, \r
+ 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, \r
+ 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, \r
+ 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, \r
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3c, 0x2f, 0x68, 0x32, \r
+ 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, \r
+ 0x65, 0x20, 0x73, 0x68, 0x6f, 0x77, 0x73, 0x20, 0x64, 0x79, \r
+ 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, \r
+ 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, \r
+ 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, \r
+ 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, \r
+ 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, \r
+ 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, \r
+ 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65, \r
+ 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, \r
+ 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x66, 0x6f, 0x6e, \r
+ 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, \r
+ 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, \r
+ 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x74, 0x61, 0x74, \r
+ 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, \r
+ 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x9, 0x23, \r
+ 0x3c, 0x62, 0x72, 0x3e, 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, 0x2a, 0x2a, 0x2a, \r
+ 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, \r
+ 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, \r
+ 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, \r
+ 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, \r
+ 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, \r
+ 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0xa, \r
+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, 0x52, 0x54, 0x4f, 0x53, 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
+ 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, 0x3e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, \r
+ 0x20, 0x49, 0x4f, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, \r
+ 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3c, 0x2f, 0x62, \r
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, \r
+ 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, \r
+ 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, \r
+ 0x74, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x77, 0x61, \r
+ 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, \r
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x20, 0x42, 0x79, \r
+ 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, \r
+ 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, \r
+ 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x57, 0x45, 0x42, 0x20, \r
+ 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, \r
+ 0x63, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x65, \r
+ 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, \r
+ 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x65, 0x78, 0x65, 0x63, \r
+ 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x70, 0x3e, 0xa, \r
+ 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, \r
+ 0x65, 0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x20, 0x61, 0x6e, \r
+ 0x64, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, \r
+ 0x49, 0x4f, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, \r
+ 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, \r
+ 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, \r
+ 0x20, 0x4c, 0x45, 0x44, 0x31, 0x2e, 0x20, 0x20, 0x52, 0x65, \r
+ 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, \r
+ 0x70, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x69, \r
+ 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, \r
+ 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4c, \r
+ 0x45, 0x44, 0x31, 0x2e, 0xa, 0xa, 0xa, 0x3c, 0x70, 0x3e, \r
+ 0xa, 0x3c, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, \r
+ 0x65, 0x3d, 0x22, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, \r
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x2f, 0x69, \r
+ 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x6d, \r
+ 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, \r
+ 0x22, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, \r
+ 0x69, 0x6f, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x69, 0x6e, \r
+ 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, \r
+ 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, \r
+ 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, \r
+ 0x65, 0x20, 0x49, 0x4f, 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x66, \r
+ 0x6f, 0x72, 0x6d, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, \r
+ 0x70, 0x3e, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, \r
+ 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, \r
+ 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, 0x20, 0x62, \r
+ 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, \r
+ 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e, 0xa, 0x3c, 0x66, \r
+ 0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, \r
+ 0x61, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x3e, 0xa, 0x3c, 0x61, \r
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, \r
+ 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, \r
+ 0x52, 0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, \r
+ 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, \r
+ 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, \r
+ 0x66, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, \r
+ 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 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, 0x74, 0x63, \r
+ 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, \r
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, \r
+ 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, \r
+ 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, \r
+ 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, \r
+ 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, \r
+ 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, \r
+ 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, \r
+ 0x67, 0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, \r
+ 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, \r
+ 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, \r
+ 0x66, 0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, \r
+ 0x6c, 0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xa, \r
+ 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xa, 0x3c, 0x68, \r
+ 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, \r
+ 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, \r
+ 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, \r
+ 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, \r
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, \r
+ 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20, 0x62, 0x6f, \r
+ 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22, 0x3e, 0xa, \r
+ 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x61, 0x6c, \r
+ 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x22, \r
+ 0x3e, 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, 0xa, 0x49, 0x50, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, \r
+ 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, \r
+ 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, \r
+ 0x6e, 0x74, 0xa, 0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, \r
+ 0x72, 0x73, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, \r
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, \r
+ 0x64, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, \r
+ 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, \r
+ 0x67, 0x74, 0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, \r
+ 0x62, 0x79, 0x74, 0x65, 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, 0x6c, \r
+ 0x6f, 0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xa, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, \r
+ 0x6e, 0x74, 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x61, \r
+ 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, \r
+ 0x75, 0x6d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72, 0x6f, 0x6e, \r
+ 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, \r
+ 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, \r
+ 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, \r
+ 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, \r
+ 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x79, 0x70, 0x65, \r
+ 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa, 0x54, 0x43, \r
+ 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, \r
+ 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, \r
+ 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0xa, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, \r
+ 0x6e, 0x74, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63, \r
+ 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, \r
+ 0x73, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, \r
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77, 0x69, \r
+ 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b, 0x73, \r
+ 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, \r
+ 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, \r
+ 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, \r
+ 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0xa, \r
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x63, \r
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, \r
+ 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0xa, \r
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x6e, \r
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x74, 0x74, \r
+ 0x65, 0x6d, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, \r
+ 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x70, 0x6f, 0x72, 0x74, \r
+ 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, \r
+ 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, \r
+ 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, \r
+ 0x21, 0x20, 0x6e, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, \r
+ 0x73, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, \r
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x66, \r
+ 0x6f, 0x6e, 0x74, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, \r
+ 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, \r
+ 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, 0x52, 0x54, 0x4f, 0x53, 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
+ 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, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, \r
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, \r
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, \r
+ 0x68, 0x32, 0x3e, 0xa, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, \r
+ 0x61, 0x67, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, \r
+ 0x79, 0x73, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, \r
+ 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, \r
+ 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, \r
+ 0x73, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, \r
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, \r
+ 0x20, 0x54, 0x43, 0x50, 0x2f, 0x49, 0x50, 0x20, 0x63, 0x6f, \r
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, \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}};\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}};\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}};\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}};\r
+\r
+const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}};\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}};\r
+\r
+#define HTTPD_FS_ROOT file_tcp_shtml\r
+\r
+#define HTTPD_FS_NUMFILES 6\r
--- /dev/null
+/*\r
+ * Copyright (c) 2001, 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 lwIP TCP/IP stack.\r
+ *\r
+ * Author: Adam Dunkels <adam@sics.se>\r
+ *\r
+ * $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $\r
+ */\r
+#ifndef __HTTPD_FSDATA_H__\r
+#define __HTTPD_FSDATA_H__\r
+\r
+#include "uip.h"\r
+\r
+struct httpd_fsdata_file {\r
+ const struct httpd_fsdata_file *next;\r
+ const char *name;\r
+ const char *data;\r
+ const int len;\r
+#ifdef HTTPD_FS_STATISTICS\r
+#if HTTPD_FS_STATISTICS == 1\r
+ u16_t count;\r
+#endif /* HTTPD_FS_STATISTICS */\r
+#endif /* HTTPD_FS_STATISTICS */\r
+};\r
+\r
+struct httpd_fsdata_file_noconst {\r
+ struct httpd_fsdata_file *next;\r
+ char *name;\r
+ char *data;\r
+ int len;\r
+#ifdef HTTPD_FS_STATISTICS\r
+#if HTTPD_FS_STATISTICS == 1\r
+ u16_t count;\r
+#endif /* HTTPD_FS_STATISTICS */\r
+#endif /* HTTPD_FS_STATISTICS */\r
+};\r
+\r
+#endif /* __HTTPD_FSDATA_H__ */\r
--- /dev/null
+/**\r
+ * \addtogroup apps\r
+ * @{\r
+ */\r
+\r
+/**\r
+ * \defgroup httpd Web server\r
+ * @{\r
+ * The uIP web server is a very simplistic implementation of an HTTP\r
+ * server. It can serve web pages and files from a read-only ROM\r
+ * filesystem, and provides a very small scripting language.\r
+\r
+ */\r
+\r
+/**\r
+ * \file\r
+ * Web server\r
+ * \author\r
+ * Adam Dunkels <adam@sics.se>\r
+ */\r
+\r
+\r
+/*\r
+ * Copyright (c) 2004, 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. 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
+ * Author: Adam Dunkels <adam@sics.se>\r
+ *\r
+ * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $\r
+ */\r
+\r
+#include "uip.h"\r
+#include "httpd.h"\r
+#include "httpd-fs.h"\r
+#include "httpd-cgi.h"\r
+#include "http-strings.h"\r
+\r
+#include <string.h>\r
+\r
+#define STATE_WAITING 0\r
+#define STATE_OUTPUT 1\r
+\r
+#define ISO_nl 0x0a\r
+#define ISO_space 0x20\r
+#define ISO_bang 0x21\r
+#define ISO_percent 0x25\r
+#define ISO_period 0x2e\r
+#define ISO_slash 0x2f\r
+#define ISO_colon 0x3a\r
+\r
+\r
+/*---------------------------------------------------------------------------*/\r
+static unsigned short\r
+generate_part_of_file(void *state)\r
+{\r
+ struct httpd_state *s = (struct httpd_state *)state;\r
+\r
+ if(s->file.len > uip_mss()) {\r
+ s->len = uip_mss();\r
+ } else {\r
+ s->len = s->file.len;\r
+ }\r
+ memcpy(uip_appdata, s->file.data, s->len);\r
+ \r
+ return s->len;\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(send_file(struct httpd_state *s))\r
+{\r
+ PSOCK_BEGIN(&s->sout);\r
+ \r
+ do {\r
+ PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s);\r
+ s->file.len -= s->len;\r
+ s->file.data += s->len;\r
+ } while(s->file.len > 0);\r
+ \r
+ PSOCK_END(&s->sout);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(send_part_of_file(struct httpd_state *s))\r
+{\r
+ PSOCK_BEGIN(&s->sout);\r
+\r
+ PSOCK_SEND(&s->sout, s->file.data, s->len);\r
+ \r
+ PSOCK_END(&s->sout);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static void\r
+next_scriptstate(struct httpd_state *s)\r
+{\r
+ char *p;\r
+ p = strchr(s->scriptptr, ISO_nl) + 1;\r
+ s->scriptlen -= (unsigned short)(p - s->scriptptr);\r
+ s->scriptptr = p;\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(handle_script(struct httpd_state *s))\r
+{\r
+ char *ptr;\r
+ \r
+ PT_BEGIN(&s->scriptpt);\r
+\r
+\r
+ while(s->file.len > 0) {\r
+\r
+ /* Check if we should start executing a script. */\r
+ if(*s->file.data == ISO_percent &&\r
+ *(s->file.data + 1) == ISO_bang) {\r
+ s->scriptptr = s->file.data + 3;\r
+ s->scriptlen = s->file.len - 3;\r
+ if(*(s->scriptptr - 1) == ISO_colon) {\r
+ httpd_fs_open(s->scriptptr + 1, &s->file);\r
+ PT_WAIT_THREAD(&s->scriptpt, send_file(s));\r
+ } else {\r
+ PT_WAIT_THREAD(&s->scriptpt,\r
+ httpd_cgi(s->scriptptr)(s, s->scriptptr));\r
+ }\r
+ next_scriptstate(s);\r
+ \r
+ /* The script is over, so we reset the pointers and continue\r
+ sending the rest of the file. */\r
+ s->file.data = s->scriptptr;\r
+ s->file.len = s->scriptlen;\r
+ } else {\r
+ /* See if we find the start of script marker in the block of HTML\r
+ to be sent. */\r
+\r
+ if(s->file.len > uip_mss()) {\r
+ s->len = uip_mss();\r
+ } else {\r
+ s->len = s->file.len;\r
+ }\r
+\r
+ if(*s->file.data == ISO_percent) {\r
+ ptr = strchr(s->file.data + 1, ISO_percent);\r
+ } else {\r
+ ptr = strchr(s->file.data, ISO_percent);\r
+ }\r
+ if(ptr != NULL &&\r
+ ptr != s->file.data) {\r
+ s->len = (int)(ptr - s->file.data);\r
+ if(s->len >= uip_mss()) {\r
+ s->len = uip_mss();\r
+ }\r
+ }\r
+ PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s));\r
+ s->file.data += s->len;\r
+ s->file.len -= s->len;\r
+ \r
+ }\r
+ }\r
+ \r
+ PT_END(&s->scriptpt);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr))\r
+{\r
+ char *ptr;\r
+\r
+ PSOCK_BEGIN(&s->sout);\r
+\r
+ PSOCK_SEND_STR(&s->sout, statushdr);\r
+\r
+ ptr = strrchr(s->filename, ISO_period);\r
+ if(ptr == NULL) {\r
+ PSOCK_SEND_STR(&s->sout, http_content_type_binary);\r
+ } else if(strncmp(http_html, ptr, 5) == 0 ||\r
+ strncmp(http_shtml, ptr, 6) == 0) {\r
+ PSOCK_SEND_STR(&s->sout, http_content_type_html);\r
+ } else if(strncmp(http_css, ptr, 4) == 0) {\r
+ PSOCK_SEND_STR(&s->sout, http_content_type_css);\r
+ } else if(strncmp(http_png, ptr, 4) == 0) {\r
+ PSOCK_SEND_STR(&s->sout, http_content_type_png);\r
+ } else if(strncmp(http_gif, ptr, 4) == 0) {\r
+ PSOCK_SEND_STR(&s->sout, http_content_type_gif);\r
+ } else if(strncmp(http_jpg, ptr, 4) == 0) {\r
+ PSOCK_SEND_STR(&s->sout, http_content_type_jpg);\r
+ } else {\r
+ PSOCK_SEND_STR(&s->sout, http_content_type_plain);\r
+ }\r
+ PSOCK_END(&s->sout);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(handle_output(struct httpd_state *s))\r
+{\r
+ char *ptr;\r
+ \r
+ PT_BEGIN(&s->outputpt);\r
+ \r
+ if(!httpd_fs_open(s->filename, &s->file)) {\r
+ httpd_fs_open(http_404_html, &s->file);\r
+ strcpy(s->filename, http_404_html);\r
+ PT_WAIT_THREAD(&s->outputpt,\r
+ send_headers(s,\r
+ http_header_404));\r
+ PT_WAIT_THREAD(&s->outputpt,\r
+ send_file(s));\r
+ } else {\r
+ PT_WAIT_THREAD(&s->outputpt,\r
+ send_headers(s,\r
+ http_header_200));\r
+ ptr = strchr(s->filename, ISO_period);\r
+ if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) {\r
+ PT_INIT(&s->scriptpt);\r
+ PT_WAIT_THREAD(&s->outputpt, handle_script(s));\r
+ } else {\r
+ PT_WAIT_THREAD(&s->outputpt,\r
+ send_file(s));\r
+ }\r
+ }\r
+ PSOCK_CLOSE(&s->sout);\r
+ PT_END(&s->outputpt);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static\r
+PT_THREAD(handle_input(struct httpd_state *s))\r
+{\r
+ PSOCK_BEGIN(&s->sin);\r
+\r
+ PSOCK_READTO(&s->sin, ISO_space);\r
+\r
+ \r
+ if(strncmp(s->inputbuf, http_get, 4) != 0) {\r
+ PSOCK_CLOSE_EXIT(&s->sin);\r
+ }\r
+ PSOCK_READTO(&s->sin, ISO_space);\r
+\r
+ if(s->inputbuf[0] != ISO_slash) {\r
+ PSOCK_CLOSE_EXIT(&s->sin);\r
+ }\r
+\r
+ if(s->inputbuf[1] == ISO_space) {\r
+ strncpy(s->filename, http_index_html, sizeof(s->filename));\r
+ } else {\r
+\r
+ s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;\r
+\r
+ /* Process any form input being sent to the server. */\r
+ {\r
+ extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength );\r
+ vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) );\r
+ }\r
+\r
+ strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename));\r
+ }\r
+\r
+ /* httpd_log_file(uip_conn->ripaddr, s->filename);*/\r
+ \r
+ s->state = STATE_OUTPUT;\r
+\r
+ while(1) {\r
+ PSOCK_READTO(&s->sin, ISO_nl);\r
+\r
+ if(strncmp(s->inputbuf, http_referer, 8) == 0) {\r
+ s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;\r
+ /* httpd_log(&s->inputbuf[9]);*/\r
+ }\r
+ }\r
+ \r
+ PSOCK_END(&s->sin);\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+static void\r
+handle_connection(struct httpd_state *s)\r
+{\r
+ handle_input(s);\r
+ if(s->state == STATE_OUTPUT) {\r
+ handle_output(s);\r
+ }\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+void\r
+httpd_appcall(void)\r
+{\r
+ struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate);\r
+\r
+ if(uip_closed() || uip_aborted() || uip_timedout()) {\r
+ } else if(uip_connected()) {\r
+ PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1);\r
+ PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1);\r
+ PT_INIT(&s->outputpt);\r
+ s->state = STATE_WAITING;\r
+ /* timer_set(&s->timer, CLOCK_SECOND * 100);*/\r
+ s->timer = 0;\r
+ handle_connection(s);\r
+ } else if(s != NULL) {\r
+ if(uip_poll()) {\r
+ ++s->timer;\r
+ if(s->timer >= 20) {\r
+ uip_abort();\r
+ }\r
+ } else {\r
+ s->timer = 0;\r
+ }\r
+ handle_connection(s);\r
+ } else {\r
+ uip_abort();\r
+ }\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+/**\r
+ * \brief Initialize the web server\r
+ *\r
+ * This function initializes the web server and should be\r
+ * called at system boot-up.\r
+ */\r
+void\r
+httpd_init(void)\r
+{\r
+ uip_listen(HTONS(80));\r
+}\r
+/*---------------------------------------------------------------------------*/\r
+/** @} */\r
--- /dev/null
+/*\r
+ * Copyright (c) 2001-2005, 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.h,v 1.2 2006/06/11 21:46:38 adam Exp $\r
+ *\r
+ */\r
+\r
+#ifndef __HTTPD_H__\r
+#define __HTTPD_H__\r
+\r
+#include "psock.h"\r
+#include "httpd-fs.h"\r
+\r
+struct httpd_state {\r
+ unsigned char timer;\r
+ struct psock sin, sout;\r
+ struct pt outputpt, scriptpt;\r
+ char inputbuf[50];\r
+ char filename[20];\r
+ char state;\r
+ struct httpd_fs_file file;\r
+ int len;\r
+ char *scriptptr;\r
+ int scriptlen;\r
+ \r
+ unsigned short count;\r
+};\r
+\r
+void httpd_init(void);\r
+void httpd_appcall(void);\r
+\r
+void httpd_log(char *msg);\r
+void httpd_log_file(u16_t *requester, char *file);\r
+\r
+#endif /* __HTTPD_H__ */\r
--- /dev/null
+#!/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 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
--- /dev/null
+#!/usr/bin/perl\r
+\r
+\r
+sub stringify {\r
+ my $name = shift(@_);\r
+ open(OUTPUTC, "> $name.c");\r
+ open(OUTPUTH, "> $name.h");\r
+ \r
+ open(FILE, "$name");\r
+ \r
+ while(<FILE>) {\r
+ if(/(.+) "(.+)"/) {\r
+ $var = $1;\r
+ $data = $2;\r
+ \r
+ $datan = $data;\r
+ $datan =~ s/\\r/\r/g;\r
+ $datan =~ s/\\n/\n/g;\r
+ $datan =~ s/\\01/\01/g; \r
+ $datan =~ s/\\0/\0/g;\r
+ \r
+ printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1);\r
+ printf(OUTPUTC "/* \"$data\" */\n");\r
+ printf(OUTPUTC "{");\r
+ for($j = 0; $j < length($datan); $j++) {\r
+ printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1)));\r
+ }\r
+ printf(OUTPUTC "};\n");\r
+ \r
+ printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1);\r
+ \r
+ }\r
+ }\r
+ close(OUTPUTC);\r
+ close(OUTPUTH);\r
+}\r
+stringify("http-strings");\r
+\r
+exit 0;\r
+\r
--- /dev/null
+#pragma pack()\r
--- /dev/null
+#pragma pack(1)\r
--- /dev/null
+/*\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+ under the terms of the GNU General Public License (version 2) as published\r
+ by the Free Software Foundation and modified by the FreeRTOS exception.\r
+ **NOTE** The exception to the GPL is included to allow you to distribute a\r
+ combined work that includes FreeRTOS.org without being obliged to provide\r
+ the source code for any proprietary components. Alternative commercial\r
+ license and support terms are also available upon request. See the \r
+ licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+ FreeRTOS.org 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.\r
+\r
+ You should have received a copy of the GNU General Public License along\r
+ with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+ Temple Place, Suite 330, Boston, MA 02111-1307 USA.\r
+\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * Get the FreeRTOS eBook! See http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * This is a concise, step by step, 'hands on' guide that describes both *\r
+ * general multitasking concepts and FreeRTOS specifics. It presents and *\r
+ * explains numerous examples that are written using the FreeRTOS API. *\r
+ * Full source code for all the examples is provided in an accompanying *\r
+ * .zip file. *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ Please ensure to read the configuration and relevant port sections of the\r
+ online documentation.\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
+/* Standard includes. */\r
+#include <string.h>\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "semphr.h"\r
+\r
+/* uip includes. */\r
+#include "uip.h"\r
+#include "uip_arp.h"\r
+#include "httpd.h"\r
+#include "timer.h"\r
+#include "clock-arch.h"\r
+#include "timer.h"\r
+\r
+/* Demo includes. */\r
+#include "FEC.h"\r
+#include "partest.h"\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Shortcut to the header within the Rx buffer. */\r
+#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ])\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Port functions required by the uIP stack.\r
+ */\r
+clock_time_t clock_time( void );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The semaphore used by the ISR to wake the uIP task. */\r
+extern xSemaphoreHandle xFECSemaphore;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+clock_time_t clock_time( void )\r
+{\r
+ return xTaskGetTickCount();\r
+}\r
+\r
+\r
+void vuIP_Task( void *pvParameters )\r
+{\r
+portBASE_TYPE i;\r
+uip_ipaddr_t xIPAddr;\r
+struct timer periodic_timer, arp_timer;\r
+extern void ( vEMAC_ISR )( void );\r
+\r
+ /* Just to get rid of the compiler warning. */\r
+ ( void ) pvParameters;\r
+\r
+ /* Enable/Reset the Ethernet Controller */\r
+\r
+ /* Create the semaphore used by the ISR to wake this task. */\r
+ vSemaphoreCreateBinary( xFECSemaphore );\r
+ \r
+ /* Initialise the uIP stack. */\r
+ timer_set( &periodic_timer, configTICK_RATE_HZ / 2 );\r
+ timer_set( &arp_timer, configTICK_RATE_HZ * 10 );\r
+ uip_init();\r
+ uip_ipaddr( xIPAddr, configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 );\r
+ uip_sethostaddr( xIPAddr );\r
+ uip_ipaddr( xIPAddr, configNET_MASK0, configNET_MASK1, configNET_MASK2, configNET_MASK3 );\r
+ uip_setnetmask( xIPAddr ); \r
+ httpd_init();\r
+\r
+ vInitFEC();\r
+\r
+ for( ;; )\r
+ {\r
+ /* Is there received data ready to be processed? */\r
+ uip_len = ( unsigned short ) ulFECRx();\r
+ \r
+ if( ( uip_len > 0 ) && ( uip_buf != NULL ) )\r
+ {\r
+ /* Standard uIP loop taken from the uIP manual. */\r
+\r
+ if( xHeader->type == htons( UIP_ETHTYPE_IP ) )\r
+ {\r
+ uip_arp_ipin();\r
+ uip_input();\r
+\r
+ /* If the above function invocation resulted in data that\r
+ should be sent out on the network, the global variable\r
+ uip_len is set to a value > 0. */\r
+ if( uip_len > 0 )\r
+ {\r
+ uip_arp_out();\r
+ vFECTx();\r
+ }\r
+ }\r
+ else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) )\r
+ {\r
+ uip_arp_arpin();\r
+\r
+ /* If the above function invocation resulted in data that\r
+ should be sent out on the network, the global variable\r
+ uip_len is set to a value > 0. */\r
+ if( uip_len > 0 )\r
+ {\r
+ vFECTx();\r
+ }\r
+ } \r
+ }\r
+ else\r
+ {\r
+ if( ( timer_expired( &periodic_timer ) ) && ( uip_buf != NULL ) )\r
+ {\r
+ timer_reset( &periodic_timer );\r
+ for( i = 0; i < UIP_CONNS; i++ )\r
+ {\r
+ uip_periodic( i );\r
+ \r
+ /* If the above function invocation resulted in data that\r
+ should be sent out on the network, the global variable\r
+ uip_len is set to a value > 0. */\r
+ if( uip_len > 0 )\r
+ {\r
+ uip_arp_out();\r
+ vFECTx();\r
+ }\r
+ } \r
+ \r
+ /* Call the ARP timer function every 10 seconds. */\r
+ if( timer_expired( &arp_timer ) )\r
+ {\r
+ timer_reset( &arp_timer );\r
+ uip_arp_timer();\r
+ }\r
+ }\r
+ else\r
+ { \r
+ /* We did not receive a packet, and there was no periodic\r
+ processing to perform. Block for a fixed period. If a packet\r
+ is received during this period we will be woken by the ISR\r
+ giving us the Semaphore. */\r
+ xSemaphoreTake( xFECSemaphore, configTICK_RATE_HZ / 2 ); \r
+ }\r
+ }\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationProcessFormInput( portCHAR *pcInputString, portBASE_TYPE xInputLength )\r
+{\r
+char *c;\r
+\r
+ /* Just to get rid of the compiler warning - other ports/demos use the parameter. */\r
+ ( void ) xInputLength;\r
+\r
+ /* Process the form input sent by the IO page of the served HTML. */\r
+\r
+ c = strstr( pcInputString, "?" );\r
+\r
+ if( c )\r
+ {\r
+ /* Turn LED's on or off in accordance with the check box status. */\r
+ if( strstr( c, "LED3=1" ) != NULL )\r
+ {\r
+ /* Turn LED 3 on. */\r
+ vParTestSetLED( 3, 1 );\r
+ }\r
+ else\r
+ {\r
+ /* Turn LED 3 off. */\r
+ vParTestSetLED( 3, 0 );\r
+ } \r
+ }\r
+}\r
+\r
--- /dev/null
+/**\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
+#include <stdint.h>\r
+\r
+/**\r
+ * 8 bit datatype\r
+ *\r
+ * This typedef defines the 8-bit type used throughout uIP.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+typedef uint8_t 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 uint16_t u16_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 15\r
+\r
+/**\r
+ * Maximum number of listening TCP ports.\r
+ *\r
+ * \hideinitializer\r
+ */\r
+#define UIP_CONF_MAX_LISTENPORTS 2\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
+\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 UIP_CONF_EXTERNAL_BUFFER\r
+\r
+#define PACK_STRUCT_START\r
+#define PACK_STRUCT_END\r
+\r
+#endif /* __UIP_CONF_H__ */\r
+\r
+/** @} */\r
+/** @} */\r
--- /dev/null
+/*\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 "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
+#ifndef UIP_APPCALL\r
+#define UIP_APPCALL httpd_appcall\r
+#endif\r
+\r
+\r
+#endif /* __WEBSERVER_H__ */\r
--- /dev/null
+/*\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+ under the terms of the GNU General Public License (version 2) as published\r
+ by the Free Software Foundation and modified by the FreeRTOS exception.\r
+ **NOTE** The exception to the GPL is included to allow you to distribute a\r
+ combined work that includes FreeRTOS.org without being obliged to provide\r
+ the source code for any proprietary components. Alternative commercial\r
+ license and support terms are also available upon request. See the \r
+ licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+ FreeRTOS.org 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.\r
+\r
+ You should have received a copy of the GNU General Public License along\r
+ with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+ Temple Place, Suite 330, Boston, MA 02111-1307 USA.\r
+\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * Get the FreeRTOS eBook! See http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * This is a concise, step by step, 'hands on' guide that describes both *\r
+ * general multitasking concepts and FreeRTOS specifics. It presents and *\r
+ * explains numerous examples that are written using the FreeRTOS API. *\r
+ * Full source code for all the examples is provided in an accompanying *\r
+ * .zip file. *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ Please ensure to read the configuration and relevant port sections of the\r
+ online documentation.\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
+\r
+/*\r
+ * Creates all the demo application tasks, then starts the scheduler. The WEB\r
+ * documentation provides more details of the standard demo application tasks.\r
+ * In addition to the standard demo tasks, the following tasks and tests are\r
+ * defined and/or created within this file:\r
+ *\r
+ * "Web server" - Very basic demonstration of the uIP stack. The WEB server\r
+ * simply generates a page that shows the current state of all the tasks within\r
+ * the system, including the high water mark of each task stack. The high water\r
+ * mark is displayed as the amount of stack that has never been used, so the\r
+ * closer the value is to zero the closer the task has come to overflowing its\r
+ * stack. The IP address and net mask are set within FreeRTOSConfig.h. Sub\r
+ * pages display some TCP/IP status information and permit LED3 to be turned on\r
+ * and off using a check box.\r
+ *\r
+ * Tick hook function that implements a "Check" function - This is executed \r
+ * every 5 seconds from the tick hook function. It checks to ensure that all \r
+ * the standard demo tasks are still operational and running without error. \r
+ * The system status (pass/fail) is then displayed underneith the task table on \r
+ * the served WEB pages. \r
+ *\r
+ * "Reg test" tasks - These fill the registers with known values, then check\r
+ * that each register still contains its expected value. Each task uses\r
+ * different values. The tasks run with very low priority so get preempted very\r
+ * frequently. A register containing an unexpected value is indicative of an\r
+ * error in the context switching mechanism.\r
+ *\r
+ */\r
+\r
+/* Standard includes. */\r
+#include <stdio.h>\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "queue.h"\r
+#include "semphr.h"\r
+\r
+/* Demo app includes. */\r
+#include "BlockQ.h"\r
+#include "death.h"\r
+#include "flash.h"\r
+#include "partest.h"\r
+#include "GenQTest.h"\r
+#include "QPeek.h"\r
+#include "recmutex.h"\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* ComTest constants - there is no free LED for the comtest tasks. */\r
+#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 19200 )\r
+#define mainCOM_TEST_LED ( 5 )\r
+\r
+/* Task priorities. */\r
+#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )\r
+#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )\r
+#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )\r
+#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )\r
+#define mainWEB_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+\r
+/* WEB server requires enough stack for the string handling functions. */\r
+#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 )\r
+\r
+/*\r
+ * Configure the hardware for the demo.\r
+ */\r
+static void prvSetupHardware( void );\r
+\r
+/*\r
+ * Implements the 'check' function as described at the top of this file.\r
+ */\r
+static void prvCheckFunction( void );\r
+\r
+/*\r
+ * Implement the 'Reg test' functionality as described at the top of this file.\r
+ */\r
+static void vRegTest1Task( void *pvParameters );\r
+static void vRegTest2Task( void *pvParameters );\r
+\r
+/*\r
+ * The task that handles the uIP stack. All TCP/IP processing is performed in\r
+ * this task.\r
+ */\r
+extern void vuIP_Task( void *pvParameters );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Counters used to detect errors within the reg test tasks. */\r
+static volatile unsigned portLONG ulRegTest1Counter = 0x11111111, ulRegTest2Counter = 0x22222222;\r
+\r
+/* Flag that latches any errors detected in the system. */\r
+unsigned long ulCheckErrors = 0;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+int main( void )\r
+{\r
+extern void vBasicWEBServer( void *pv );\r
+\r
+ /* Setup the hardware ready for this demo. */\r
+ prvSetupHardware();\r
+ \r
+ xTaskCreate( vuIP_Task, ( signed portCHAR * ) "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );\r
+\r
+ /* Start the standard demo tasks. */\r
+ vStartLEDFlashTasks( tskIDLE_PRIORITY );\r
+ vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );\r
+ vStartQueuePeekTasks();\r
+ vStartRecursiveMutexTasks();\r
+ vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );\r
+\r
+ /* Start the reg test tasks - defined in this file. */\r
+ xTaskCreate( vRegTest1Task, ( signed portCHAR * ) "Reg1", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest1Counter, tskIDLE_PRIORITY, NULL );\r
+ xTaskCreate( vRegTest2Task, ( signed portCHAR * ) "Reg2", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest2Counter, tskIDLE_PRIORITY, NULL );\r
+\r
+ /* Start the scheduler. */\r
+ vTaskStartScheduler();\r
+\r
+ /* Will only get here if there was insufficient memory to create the idle\r
+ task. */\r
+ for( ;; )\r
+ {\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationTickHook( void )\r
+{\r
+static unsigned long ulExecutionCount = 0, ulLastRegTest1Count = 0, ulLastRegTest2Count = 0;\r
+const unsigned long ulExecutionRate = 5000 / portTICK_RATE_MS;\r
+ \r
+ /* Increment the count of how many times the tick hook has been called. */\r
+ ulExecutionCount++;\r
+ \r
+ /* Is it time to perform the check again? */\r
+ if( ulExecutionCount >= ulExecutionRate )\r
+ {\r
+ /* Reset the execution count so this function is called again in 5\r
+ seconds time. */\r
+ ulExecutionCount = 0;\r
+ \r
+ /* Has an error been found in any task? */\r
+ if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
+ {\r
+ ulCheckErrors |= 0x01UL;\r
+ }\r
+\r
+ if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
+ {\r
+ ulCheckErrors |= 0x02UL;\r
+ }\r
+\r
+ if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+ {\r
+ ulCheckErrors |= 0x04UL;\r
+ }\r
+\r
+ if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
+ {\r
+ ulCheckErrors |= 0x200UL;\r
+ }\r
+\r
+ if( ulLastRegTest1Count == ulRegTest1Counter )\r
+ {\r
+ ulCheckErrors |= 0x1000UL;\r
+ }\r
+\r
+ if( ulLastRegTest2Count == ulRegTest2Counter )\r
+ {\r
+ ulCheckErrors |= 0x1000UL;\r
+ }\r
+\r
+ ulLastRegTest1Count = ulRegTest1Counter;\r
+ ulLastRegTest2Count = ulRegTest2Counter;\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupHardware( void ) \r
+{\r
+ /* Disable the watchdog, STOP and WAIT modes. */\r
+ SOPT1 = 0;\r
+\r
+ /* --- Setup clock to use external 25MHz source. --- */\r
+ \r
+ /* Extal and xtal pin ON. */\r
+ PTDPF1_D4 = 0x03;\r
+ PTDPF1_D5 = 0x03;\r
+\r
+ /* Switch from FEI to FBE (FLL bypassed external)\r
+ enable external clock source */\r
+ MCGC2 = MCGC2_ERCLKEN_MASK /* Activate external reference clock */\r
+ | MCGC2_EREFS_MASK /* Because crystal is being used */\r
+ | MCGC2_RANGE_MASK; /* High range */\r
+ \r
+ /* Select clock mode and clear IREFs. */\r
+ MCGC1 = (0x02 << 6 ) /* CLKS = 10 -> external reference clock. */\r
+ | (0x04 << 3 ) /* RDIV = 2^4 -> 25MHz/16 = 1.5625 MHz */\r
+ | MCGC1_IRCLKEN_MASK; /* IRCLK to RTC enabled */\r
+ \r
+ /* Wait for Reference and Clock status bits to update. */\r
+ while( MCGSC_IREFST | ( MCGSC_CLKST != 0x02 ) )\r
+ {\r
+ /* Nothing to do here. */\r
+ }\r
+\r
+ /* Switch from FBE to PBE (PLL bypassed internal) mode. */\r
+ MCGC3 = 0x08 /* Set PLL multi 50MHz. */\r
+ | MCGC3_PLLS_MASK; /* Select PLL. */\r
+\r
+ /* Wait for PLL status and lock bits to update. */\r
+ while( !MCGSC_PLLST | !MCGSC_LOCK )\r
+ {\r
+ /* Nothing to do here. */\r
+ }\r
+\r
+\r
+ /* Now in PBE Mode, finally switch from PBE to PEE (PLL enabled external \r
+ mode). */\r
+ MCGC1_CLKS = 0b00; /* PLL clock to system (MCGOUT) */\r
+\r
+ /* Wait for the clock status bits to update. */\r
+ while( MCGSC_CLKST != 0x03 )\r
+ {\r
+ /* Nothing to do here. */\r
+ }\r
+\r
+ /* Setup the IO for the LED outputs. */\r
+ vParTestInitialise();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTaskName )\r
+{\r
+ /* This will get called if a stack overflow is detected during the context\r
+ switch. Set configCHECK_FOR_STACK_OVERFLOWS to 2 to also check for stack\r
+ problems within nested interrupts, but only do this for debug purposes as\r
+ it will increase the context switch time. */\r
+\r
+ ( void ) pxTask;\r
+ ( void ) pcTaskName;\r
+\r
+ for( ;; )\r
+ {\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vRegTest1Task( void *pvParameters )\r
+{\r
+ /* Just to remove compiler warnings. */\r
+ ( void ) pvParameters;\r
+ \r
+ /* Set all the registers to known values, then check that each retains its\r
+ expected value - as described at the top of this file. If an error is\r
+ found then the loop counter will no longer be incremented allowing the check\r
+ task to recognise the error. */\r
+ asm volatile ( "reg_test_1_start: \n\t"\r
+ " moveq #1, d0 \n\t"\r
+ " moveq #2, d1 \n\t"\r
+ " moveq #3, d2 \n\t"\r
+ " moveq #4, d3 \n\t"\r
+ " moveq #5, d4 \n\t"\r
+ " moveq #6, d5 \n\t" \r
+ " moveq #7, d6 \n\t"\r
+ " moveq #8, d7 \n\t"\r
+ " move #9, a0 \n\t"\r
+ " move #10, a1 \n\t"\r
+ " move #11, a2 \n\t"\r
+ " move #12, a3 \n\t"\r
+ " move #13, a4 \n\t"\r
+ " move #15, a6 \n\t"\r
+ " \n\t"\r
+ " cmpi.l #1, d0 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " cmpi.l #2, d1 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " cmpi.l #3, d2 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " cmpi.l #4, d3 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " cmpi.l #5, d4 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " cmpi.l #6, d5 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " cmpi.l #7, d6 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " cmpi.l #8, d7 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " move a0, d0 \n\t"\r
+ " cmpi.l #9, d0 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " move a1, d0 \n\t"\r
+ " cmpi.l #10, d0 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " move a2, d0 \n\t"\r
+ " cmpi.l #11, d0 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " move a3, d0 \n\t"\r
+ " cmpi.l #12, d0 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " move a4, d0 \n\t"\r
+ " cmpi.l #13, d0 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " move a6, d0 \n\t"\r
+ " cmpi.l #15, d0 \n\t"\r
+ " bne reg_test_1_error \n\t"\r
+ " move ulRegTest1Counter, d0 \n\t"\r
+ " addq #1, d0 \n\t"\r
+ " move d0, ulRegTest1Counter \n\t"\r
+ " bra reg_test_1_start \n\t"\r
+ "reg_test_1_error: \n\t"\r
+ " bra reg_test_1_error \n\t"\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vRegTest2Task( void *pvParameters )\r
+{\r
+ /* Just to remove compiler warnings. */\r
+ ( void ) pvParameters;\r
+\r
+ /* Set all the registers to known values, then check that each retains its\r
+ expected value - as described at the top of this file. If an error is\r
+ found then the loop counter will no longer be incremented allowing the check\r
+ task to recognise the error. */\r
+ asm volatile ( "reg_test_2_start: \n\t"\r
+ " moveq #10, d0 \n\t"\r
+ " moveq #20, d1 \n\t"\r
+ " moveq #30, d2 \n\t"\r
+ " moveq #40, d3 \n\t"\r
+ " moveq #50, d4 \n\t"\r
+ " moveq #60, d5 \n\t"\r
+ " moveq #70, d6 \n\t"\r
+ " moveq #80, d7 \n\t"\r
+ " move #90, a0 \n\t"\r
+ " move #100, a1 \n\t"\r
+ " move #110, a2 \n\t"\r
+ " move #120, a3 \n\t"\r
+ " move #130, a4 \n\t"\r
+ " move #150, a6 \n\t"\r
+ " \n\t"\r
+ " cmpi.l #10, d0 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " cmpi.l #20, d1 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " cmpi.l #30, d2 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " cmpi.l #40, d3 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " cmpi.l #50, d4 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " cmpi.l #60, d5 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " cmpi.l #70, d6 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " cmpi.l #80, d7 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " move a0, d0 \n\t"\r
+ " cmpi.l #90, d0 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " move a1, d0 \n\t"\r
+ " cmpi.l #100, d0 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " move a2, d0 \n\t"\r
+ " cmpi.l #110, d0 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " move a3, d0 \n\t"\r
+ " cmpi.l #120, d0 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " move a4, d0 \n\t"\r
+ " cmpi.l #130, d0 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " move a6, d0 \n\t"\r
+ " cmpi.l #150, d0 \n\t"\r
+ " bne reg_test_2_error \n\t"\r
+ " move ulRegTest1Counter, d0 \n\t"\r
+ " addq #1, d0 \n\t"\r
+ " move d0, ulRegTest2Counter \n\t"\r
+ " bra reg_test_2_start \n\t"\r
+ "reg_test_2_error: \n\t"\r
+ " bra reg_test_2_error \n\t"\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
--- /dev/null
+/*\r
+ * File: mii.h\r
+ * Purpose: \r
+ *\r
+ * Notes:\r
+ */\r
+\r
+#ifndef _MII_H_\r
+#define _MII_H_\r
+\r
+/********************************************************************/\r
+\r
+/* Timeout for MII communications */\r
+#define FEC_MII_TIMEOUT 0x10000\r
+\r
+\r
+/********************************************************************/\r
+//Fucntion Protoypes\r
+\r
+int FEC_Mii_Write(int, int, int);\r
+int FEC_Mii_Read(int, int, unsigned short*);\r
+void FEC_Mii_Init(void);\r
+void fec_mii_reg_printf(void);\r
+\r
+/********************************************************************/\r
+//Register Mask and Other\r
+//===============\r
+/* Definition of allowed values for MDCSEL */\r
+#define MII_MDCSEL(x) x/5000000\r
+\r
+#define MII_WRITE 0x01\r
+#define MII_READ 0x02\r
+\r
+#define TCMD_START 0x01 /* Transmit buffer frame */\r
+#define TCMD_PAUSE 0x02 /* Transmit PAUSE frame */\r
+#define TCMD_ABORT 0x03 /* Abort transmission */\r
+\r
+/* PHY registers symbolic names */\r
+/* (located in MII memory map, accessible through MDIO) */\r
+#define PHY_REG_CR 0x00 /* Control Register */\r
+#define PHY_REG_SR 0x01 /* Status Register */\r
+#define PHY_REG_ID1 0x02 /* PHY Identification Register 1 */\r
+#define PHY_REG_ID2 0x03 /* PHY Identification Register 2 */\r
+#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement Register */\r
+#define PHY_REG_ANLPAR 0x05 /* Auto-Negotiation Link Partner Ability Register */\r
+#define PHY_REG_ER 0x06 /* Auto-Negotiation Expansion Register */\r
+#define PHY_REG_NPTR 0x07 /* Auto-Negotiation Next Page Transfer Register */\r
+#define PHY_REG_IR 0x10 /* Interrupt Register */\r
+#define PHY_REG_PSR 0x11 /* Proprietary Status Register */\r
+#define PHY_REG_PCR 0x12 /* Proprietary Control Register */\r
+#define PHY_REG_10BTBC 0x13 /* 10Base-T Bypass Control Register */\r
+#define PHY_REG_100BXBC 0x14 /* 100Base-X Bypass Control Register */\r
+#define PHY_REG_ADDR 0x15 /* Test & Trim Control Register */\r
+#define PHY_REG_DSPRC 0x17 /* DSP Reset Control */\r
+#define PHY_REG_DSPRR1 0x18 /* 100Base-X DSP Read Registers */\r
+#define PHY_REG_DSPRR2 0x19\r
+#define PHY_REG_DSPRR3 0x1A\r
+#define PHY_REG_DSPWR1 0x1B /* 100Base-X DSP Write Registers */\r
+#define PHY_REG_DSPWR2 0x1C\r
+#define PHY_REG_DSPWR3 0x1D\r
+\r
+/* PHY registers structure */\r
+/* 0 - Control Register */\r
+#define PHY_R0_RESET 0x8000 /* Reset */\r
+#define PHY_R0_LB 0x4000 /* Loop Back */\r
+#define PHY_R0_DR 0x2000 /* Data Rate (100Mb/s) */\r
+#define PHY_R0_ANE 0x1000 /* Auto-Negotiation Enable */\r
+#define PHY_R0_PD 0x0800 /* Power Down */\r
+#define PHY_R0_ISOLATE 0x0400 /* Isolate (MII is disconnected) */\r
+#define PHY_R0_RAN 0x0200 /* Restart Auto-Negotiation */\r
+#define PHY_R0_DPLX 0x0100 /* Duplex (Full duplex) */\r
+#define PHY_R0_CT 0x0080 /* Collision Test (Enable) */\r
+\r
+/* 1 - Status Register */\r
+#define PHY_R1_100T4 0x8000 /* 100BASET4 Supported */\r
+#define PHY_R1_100F 0x4000 /* 100Mb/s Full Duplex Supported */\r
+#define PHY_R1_100H 0x2000 /* 100Mb/s Half Duplex Supported */\r
+#define PHY_R1_10F 0x1000 /* 10Mb/s Full Duplex Supported */\r
+#define PHY_R1_10H 0x0800 /* 10Mb/s Half Duplex Supported */\r
+#define PHY_R1_SUP 0x0040 /* MI Preamble Supression (capable of) */\r
+#define PHY_R1_ANC 0x0020 /* Auto Negotiation Complete */\r
+#define PHY_R1_RF 0x0010 /* Remote Fault */\r
+#define PHY_R1_ANA 0x0008 /* Auto-Negotiation Ability (present) */\r
+#define PHY_R1_LS 0x0004 /* Link Status (Link is Up) */\r
+#define PHY_R1_JD 0x0002 /* Jabber Detect (detected) */\r
+#define PHY_R1_EC 0x0001 /* Extended Capability (regs 2 to 31 exists) */\r
+\r
+/* 2 - PHY Identifier Register 1 */\r
+/* 3 - PHY Identifier Register 2 */\r
+/* read only - contains Manufacturer's info etc.\r
+ see documentation for the detailed description */\r
+\r
+/* 4 - Auto Negotiation Advertisement Register */\r
+#define PHY_R4_NP 0x8000 /* Next Page (capable of sending next pages) */\r
+#define PHY_R4_RF 0x2000 /* Remote Fault */\r
+#define PHY_R4_FC 0x0400 /* Flow Control */\r
+#define PHY_R4_100F 0x0100 /* 100Base-TX Full Duplex Capable */\r
+#define PHY_R4_100H 0x0080 /* 100Base-TX Half Duplex Capable */\r
+#define PHY_R4_10F 0x0040 /* 10Base-T Full Duplex Capable */\r
+#define PHY_R4_10H 0x0020 /* 10Base-T Half Duplex Capable */\r
+/* bits 4 to 0 are Selector Field (IEEE Std 802.3 = 00001) */\r
+\r
+/* 5 - Auto Negotiation Link Partner Ability Register (Base Page & Next Page) */\r
+/* read only - please consult PHY documentation */\r
+#define PHY_R5_FCTL 0x0400 /* 10Base-T Half Duplex Capable */\r
+\r
+/* 16 - Interrupt Control Register */\r
+#define PHY_R16_ACKIE 0x4000 //Acknowledge Bit Received Interrupt Enable\r
+#define PHY_R16_PRIE 0x2000 //Page Received INT Enable\r
+#define PHY_R16_LCIE 0x1000 //Link Changed Enable\r
+#define PHY_R16_ANIE 0x0800 //Auto-Negotiation Changed Enable\r
+#define PHY_R16_PDFIE 0x0400 //Parallel Detect Fault Enable\r
+#define PHY_R16_RFIE 0x0200 //Remote Fault Interrupt Enable\r
+#define PHY_R16_JABIE 0x0100 //Jabber Interrupt Enable\r
+\r
+#define PHY_R16_ACKR 0x0040 //Acknowledge Bit Received Interrupt\r
+#define PHY_R16_PGR 0x0020 //Page Received \r
+#define PHY_R16_LKC 0x0010 //Link Changed \r
+#define PHY_R16_ANC 0x0008 //Auto-Negotiation Changed \r
+#define PHY_R16_PDF 0x0004 //Parallel Detect Fault\r
+#define PHY_R16_RMTF 0x0002 //Remote Fault Interrupt\r
+#define PHY_R16_JABI 0x0001 //Jabber Interrupt\r
+\r
+////Proprietary Status Register\r
+#define PHY_R17_LNK 0x4000 //\r
+#define PHY_R17_DPM 0x2000 //Duplex Mode\r
+#define PHY_R17_SPD 0x1000 //Speed\r
+#define PHY_R17_ANNC 0x0400 //Auto-Negotiation Complete\r
+#define PHY_R17_PRCVD 0x0200 //\r
+#define PHY_R17_ANCM 0x0100 // Auto-Negotiation (A-N) Common Operating Mode\r
+#define PHY_R17_PLR 0x0020 //\r
+\r
+/* Bit definitions and macros for MCF_FEC_MMFR */\r
+#define FEC_MMFR_DATA(x) (((x)&0x0000FFFF)<<0)\r
+#define FEC_MMFR_TA(x) (((x)&0x00000003)<<16)\r
+#define FEC_MMFR_RA(x) (((x)&0x0000001F)<<18)\r
+#define FEC_MMFR_PA(x) (((x)&0x0000001F)<<23)\r
+#define FEC_MMFR_OP(x) (((x)&0x00000003)<<28)\r
+#define FEC_MMFR_ST(x) (((x)&0x00000003)<<30)\r
+#define FEC_MMFR_ST_01 (0x40000000)\r
+#define FEC_MMFR_OP_READ (0x20000000)\r
+#define FEC_MMFR_OP_WRITE (0x10000000)\r
+#define FEC_MMFR_TA_10 (0x00020000)\r
+\r
+/********************************************************************/\r
+\r
+#endif /* _MII_H_ */\r
--- /dev/null
+/*\r
+ Copyright 2001, 2002 Georges Menie (www.menie.org)\r
+ stdarg version contributed by Christian Ettinger\r
+\r
+ This program is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU Lesser General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ This program is distributed in the hope that it will be useful,\r
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ GNU Lesser General Public License for more details.\r
+\r
+ You should have received a copy of the GNU Lesser General Public License\r
+ along with this program; if not, write to the Free Software\r
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+*/\r
+\r
+/*\r
+ putchar is the only external dependency for this file,\r
+ if you have a working putchar, leave it commented out.\r
+ If not, uncomment the define below and\r
+ replace outbyte(c) by your own function call.\r
+\r
+*/\r
+\r
+#define putchar(c) c\r
+\r
+#include <stdarg.h>\r
+\r
+static void printchar(char **str, int c)\r
+{\r
+ //extern int putchar(int c);\r
+ \r
+ if (str) {\r
+ **str = (char)c;\r
+ ++(*str);\r
+ }\r
+ else\r
+ { \r
+ (void)putchar(c);\r
+ }\r
+}\r
+\r
+#define PAD_RIGHT 1\r
+#define PAD_ZERO 2\r
+\r
+static int prints(char **out, const char *string, int width, int pad)\r
+{\r
+ register int pc = 0, padchar = ' ';\r
+\r
+ if (width > 0) {\r
+ register int len = 0;\r
+ register const char *ptr;\r
+ for (ptr = string; *ptr; ++ptr) ++len;\r
+ if (len >= width) width = 0;\r
+ else width -= len;\r
+ if (pad & PAD_ZERO) padchar = '0';\r
+ }\r
+ if (!(pad & PAD_RIGHT)) {\r
+ for ( ; width > 0; --width) {\r
+ printchar (out, padchar);\r
+ ++pc;\r
+ }\r
+ }\r
+ for ( ; *string ; ++string) {\r
+ printchar (out, *string);\r
+ ++pc;\r
+ }\r
+ for ( ; width > 0; --width) {\r
+ printchar (out, padchar);\r
+ ++pc;\r
+ }\r
+\r
+ return pc;\r
+}\r
+\r
+/* the following should be enough for 32 bit int */\r
+#define PRINT_BUF_LEN 12\r
+\r
+static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)\r
+{\r
+ char print_buf[PRINT_BUF_LEN];\r
+ register char *s;\r
+ register int t, neg = 0, pc = 0;\r
+ register unsigned int u = (unsigned int)i;\r
+\r
+ if (i == 0) {\r
+ print_buf[0] = '0';\r
+ print_buf[1] = '\0';\r
+ return prints (out, print_buf, width, pad);\r
+ }\r
+\r
+ if (sg && b == 10 && i < 0) {\r
+ neg = 1;\r
+ u = (unsigned int)-i;\r
+ }\r
+\r
+ s = print_buf + PRINT_BUF_LEN-1;\r
+ *s = '\0';\r
+\r
+ while (u) {\r
+ t = (int)u % b;\r
+ if( t >= 10 )\r
+ t += letbase - '0' - 10;\r
+ *--s = (char)(t + '0');\r
+ u /= b;\r
+ }\r
+\r
+ if (neg) {\r
+ if( width && (pad & PAD_ZERO) ) {\r
+ printchar (out, '-');\r
+ ++pc;\r
+ --width;\r
+ }\r
+ else {\r
+ *--s = '-';\r
+ }\r
+ }\r
+\r
+ return pc + prints (out, s, width, pad);\r
+}\r
+\r
+static int print( char **out, const char *format, va_list args )\r
+{\r
+ register int width, pad;\r
+ register int pc = 0;\r
+ char scr[2];\r
+\r
+ for (; *format != 0; ++format) {\r
+ if (*format == '%') {\r
+ ++format;\r
+ width = pad = 0;\r
+ if (*format == '\0') break;\r
+ if (*format == '%') goto out;\r
+ if (*format == '-') {\r
+ ++format;\r
+ pad = PAD_RIGHT;\r
+ }\r
+ while (*format == '0') {\r
+ ++format;\r
+ pad |= PAD_ZERO;\r
+ }\r
+ for ( ; *format >= '0' && *format <= '9'; ++format) {\r
+ width *= 10;\r
+ width += *format - '0';\r
+ }\r
+ if( *format == 's' ) {\r
+ register char *s = (char *)va_arg( args, int );\r
+ pc += prints (out, s?s:"(null)", width, pad);\r
+ continue;\r
+ }\r
+ if( *format == 'd' ) {\r
+ pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');\r
+ continue;\r
+ }\r
+ if( *format == 'x' ) {\r
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');\r
+ continue;\r
+ }\r
+ if( *format == 'X' ) {\r
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');\r
+ continue;\r
+ }\r
+ if( *format == 'u' ) {\r
+ pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');\r
+ continue;\r
+ }\r
+ if( *format == 'c' ) {\r
+ /* char are converted to int then pushed on the stack */\r
+ scr[0] = (char)va_arg( args, int );\r
+ scr[1] = '\0';\r
+ pc += prints (out, scr, width, pad);\r
+ continue;\r
+ }\r
+ }\r
+ else {\r
+ out:\r
+ printchar (out, *format);\r
+ ++pc;\r
+ }\r
+ }\r
+ if (out) **out = '\0';\r
+ va_end( args );\r
+ return pc;\r
+}\r
+\r
+int printf(const char *format, ...)\r
+{\r
+ va_list args;\r
+ \r
+ va_start( args, format );\r
+ return print( 0, format, args );\r
+}\r
+\r
+int sprintf(char *out, const char *format, ...)\r
+{\r
+ va_list args;\r
+ \r
+ va_start( args, format );\r
+ return print( &out, format, args );\r
+}\r
+\r
+\r
+int snprintf( char *buf, unsigned int count, const char *format, ... )\r
+{\r
+ va_list args;\r
+ \r
+ ( void ) count;\r
+ \r
+ va_start( args, format );\r
+ return print( &buf, format, args );\r
+}\r
+\r
+\r
+#ifdef TEST_PRINTF\r
+int main(void)\r
+{\r
+ char *ptr = "Hello world!";\r
+ char *np = 0;\r
+ int i = 5;\r
+ unsigned int bs = sizeof(int)*8;\r
+ int mi;\r
+ char buf[80];\r
+\r
+ mi = (1 << (bs-1)) + 1;\r
+ printf("%s\n", ptr);\r
+ printf("printf test\n");\r
+ printf("%s is null pointer\n", np);\r
+ printf("%d = 5\n", i);\r
+ printf("%d = - max int\n", mi);\r
+ printf("char %c = 'a'\n", 'a');\r
+ printf("hex %x = ff\n", 0xff);\r
+ printf("hex %02x = 00\n", 0);\r
+ printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);\r
+ printf("%d %s(s)%", 0, "message");\r
+ printf("\n");\r
+ printf("%d %s(s) with %%\n", 0, "message");\r
+ sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);\r
+ sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);\r
+ sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);\r
+ sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);\r
+ sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);\r
+ sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);\r
+ sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);\r
+ sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);\r
+\r
+ return 0;\r
+}\r
+\r
+/*\r
+ * if you compile this file with\r
+ * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c\r
+ * you will get a normal warning:\r
+ * printf.c:214: warning: spurious trailing `%' in format\r
+ * this line is testing an invalid % at the end of the format string.\r
+ *\r
+ * this should display (on 32bit int machine) :\r
+ *\r
+ * Hello world!\r
+ * printf test\r
+ * (null) is null pointer\r
+ * 5 = 5\r
+ * -2147483647 = - max int\r
+ * char a = 'a'\r
+ * hex ff = ff\r
+ * hex 00 = 00\r
+ * signed -3 = unsigned 4294967293 = hex fffffffd\r
+ * 0 message(s)\r
+ * 0 message(s) with %\r
+ * justif: "left "\r
+ * justif: " right"\r
+ * 3: 0003 zero padded\r
+ * 3: 3 left justif.\r
+ * 3: 3 right justif.\r
+ * -3: -003 zero padded\r
+ * -3: -3 left justif.\r
+ * -3: -3 right justif.\r
+ */\r
+\r
+#endif\r
+\r
+\r
+/* To keep linker happy. */\r
+int write( int i, char* c, int n)\r
+{\r
+ (void)i;\r
+ (void)n;\r
+ (void)c;\r
+ return 0;\r
+}\r
+\r
--- /dev/null
+/*\r
+ * CF_Startup.c - Default init/startup/termination routines for\r
+ * Embedded Metrowerks C++\r
+ *\r
+ * Copyright © 1993-1998 Metrowerks, Inc. All Rights Reserved.\r
+ * Copyright © 2005 Freescale semiConductor Inc. All Rights Reserved.\r
+ *\r
+ *\r
+ * THEORY OF OPERATION\r
+ *\r
+ * This version of thestartup code is intended for linker relocated\r
+ * executables. The startup code will assign the stack pointer to\r
+ * __SP_INIT, assign the address of the data relative base address\r
+ * to a5, initialize the .bss/.sbss sections to zero, call any\r
+ * static C++ initializers and then call main. Upon returning from\r
+ * main it will call C++ destructors and call exit to terminate.\r
+ */\r
+\r
+#ifdef __cplusplus\r
+#pragma cplusplus off\r
+#endif\r
+#pragma PID off\r
+#pragma PIC off\r
+\r
+#include "startcf.h"\r
+#include "RuntimeConfig.h"\r
+\r
+ /* imported data */\r
+\r
+extern unsigned long far _SP_INIT, _SDA_BASE;\r
+extern unsigned long far _START_BSS, _END_BSS;\r
+extern unsigned long far _START_SBSS, _END_SBSS;\r
+extern unsigned long far __DATA_RAM, __DATA_ROM, __DATA_END;\r
+\r
+ /* imported routines */\r
+\r
+extern void __call_static_initializers(void);\r
+extern int main(int, char **);\r
+extern void exit(int);\r
+\r
+ /* exported routines */\r
+\r
+extern void _ExitProcess(void);\r
+extern asm void _startup(void);\r
+extern void __initialize_hardware(void);\r
+extern void __initialize_system(void);\r
+\r
+\r
+/*\r
+ * Dummy routine for initializing hardware. For user's custom systems, you\r
+ * can create your own routine of the same name that will perform HW\r
+ * initialization. The linker will do the right thing to ignore this\r
+ * definition and use the version in your file.\r
+ */\r
+#pragma overload void __initialize_hardware(void);\r
+void __initialize_hardware(void)\r
+{\r
+}\r
+\r
+/*\r
+ * Dummy routine for initializing systems. For user's custom systems,\r
+ * you can create your own routine of the same name that will perform\r
+ * initialization. The linker will do the right thing to ignore this\r
+ * definition and use the version in your file.\r
+ */\r
+#pragma overload void __initialize_system(void);\r
+void __initialize_system(void)\r
+{\r
+}\r
+\r
+/*\r
+ * Dummy routine for initializing C++. This routine will get overloaded by the C++ runtime.\r
+ */\r
+#pragma overload void __call_static_initializers(void);\r
+void __call_static_initializers(void)\r
+{\r
+}\r
+\r
+/*\r
+ * Routine to copy a single section from ROM to RAM ...\r
+ */\r
+static __declspec(register_abi) void __copy_rom_section(char* dst, const char* src, unsigned long size)\r
+{\r
+ if (dst != src)\r
+ while (size--)\r
+ *dst++ = *src++;\r
+}\r
+\r
+/*\r
+ * Routine that copies all sections the user marked as ROM into\r
+ * their target RAM addresses ...\r
+ *\r
+ * __S_romp is automatically generated by the linker if it\r
+ * is referenced by the program. It is a table of RomInfo\r
+ * structures. The final entry in the table has all-zero\r
+ * fields.\r
+ */\r
+static void __copy_rom_sections_to_ram(void)\r
+{\r
+ RomInfo *info;\r
+\r
+ /*\r
+ * Go through the entire table, copying sections from ROM to RAM.\r
+ */\r
+ for (info = _S_romp; info->Source != 0L || info->Target != 0L || info->Size != 0; ++info)\r
+ __copy_rom_section( (char *)info->Target,(char *)info->Source, info->Size);\r
+ \r
+}\r
+\r
+/*\r
+ * Exit handler called from the exit routine, if your OS needs\r
+ * to do something special for exit handling just replace this\r
+ * routines with what the OS needs to do ...\r
+ */\r
+asm void _ExitProcess(void)\r
+{\r
+ illegal\r
+ rts\r
+}\r
+\r
+/*\r
+ * Routine to clear out blocks of memory should give good\r
+ * performance regardless of 68k or ColdFire part.\r
+ */\r
+static __declspec(register_abi) void clear_mem(char *dst, unsigned long n)\r
+{\r
+ unsigned long i;\r
+ long *lptr;\r
+\r
+ if (n >= 32)\r
+ {\r
+ /* align start address to a 4 byte boundary */\r
+ i = (- (unsigned long) dst) & 3;\r
+\r
+ if (i)\r
+ {\r
+ n -= i;\r
+ do\r
+ *dst++ = 0;\r
+ while (--i);\r
+ }\r
+\r
+ /* use an unrolled loop to zero out 32byte blocks */\r
+ i = n >> 5;\r
+ if (i)\r
+ {\r
+ lptr = (long *)dst;\r
+ dst += i * 32;\r
+ do\r
+ {\r
+ *lptr++ = 0;\r
+ *lptr++ = 0;\r
+ *lptr++ = 0;\r
+ *lptr++ = 0;\r
+ *lptr++ = 0;\r
+ *lptr++ = 0;\r
+ *lptr++ = 0;\r
+ *lptr++ = 0;\r
+ }\r
+ while (--i);\r
+ }\r
+ i = (n & 31) >> 2;\r
+\r
+ /* handle any 4 byte blocks left */\r
+ if (i)\r
+ {\r
+ lptr = (long *)dst;\r
+ dst += i * 4;\r
+ do\r
+ *lptr++ = 0;\r
+ while (--i);\r
+ }\r
+ n &= 3;\r
+ }\r
+\r
+ /* handle any byte blocks left */\r
+ if (n)\r
+ do\r
+ *dst++ = 0;\r
+ while (--n);\r
+}\r
+\r
+/*\r
+ * Startup routine for embedded application ...\r
+ */\r
+\r
+asm void _startup(void)\r
+{\r
+ /* disable interrupts */\r
+ move.w #0x2700,sr\r
+\r
+ /* Pre-init SP, in case memory for stack is not valid it should be setup using \r
+ MEMORY_INIT before __initialize_hardware is called \r
+ */\r
+ lea __SP_AFTER_RESET,a7; \r
+\r
+ /* initialize memory */\r
+ MEMORY_INIT\r
+\r
+ /* initialize any hardware specific issues */\r
+ jsr __initialize_hardware \r
+ \r
+ /* setup the stack pointer */\r
+ lea _SP_INIT,a7\r
+\r
+ /* setup A6 dummy stackframe */\r
+ movea.l #0,a6\r
+ link a6,#0\r
+\r
+ /* setup A5 */\r
+ lea _SDA_BASE,a5\r
+\r
+\r
+ /* zero initialize the .bss section */\r
+\r
+ lea _END_BSS, a0\r
+ lea _START_BSS, a1\r
+ suba.l a1, a0\r
+ move.l a0, d0\r
+\r
+ beq __skip_bss__\r
+\r
+ lea _START_BSS, a0\r
+\r
+ /* call clear_mem with base pointer in a0 and size in d0 */\r
+ jsr clear_mem\r
+\r
+__skip_bss__:\r
+\r
+ /* zero initialize the .sbss section */\r
+\r
+ lea _END_SBSS, a0\r
+ lea _START_SBSS, a1\r
+ suba.l a1, a0\r
+ move.l a0, d0\r
+\r
+ beq __skip_sbss__\r
+\r
+ lea _START_SBSS, a0\r
+\r
+ /* call clear_mem with base pointer in a0 and size in d0 */\r
+ jsr clear_mem\r
+\r
+__skip_sbss__:\r
+\r
+ /* copy all ROM sections to their RAM locations ... */\r
+#if SUPPORT_ROM_TO_RAM\r
+\r
+ /*\r
+ * _S_romp is a null terminated array of\r
+ * typedef struct RomInfo {\r
+ * unsigned long Source;\r
+ * unsigned long Target;\r
+ * unsigned long Size;\r
+ * } RomInfo;\r
+ *\r
+ * Watch out if you're rebasing using _PICPID_DELTA\r
+ */\r
+\r
+ lea _S_romp, a0\r
+ move.l a0, d0\r
+ beq __skip_rom_copy__ \r
+ jsr __copy_rom_sections_to_ram\r
+\r
+#else\r
+\r
+ /*\r
+ * There's a single block to copy from ROM to RAM, perform\r
+ * the copy directly without using the __S_romp structure\r
+ */\r
+\r
+ lea __DATA_RAM, a0\r
+ lea __DATA_ROM, a1\r
+ \r
+ cmpa a0,a1\r
+ beq __skip_rom_copy__\r
+ \r
+ move.l #__DATA_END, d0\r
+ sub.l a0, d0\r
+ \r
+ jsr __copy_rom_section\r
+\r
+#endif\r
+__skip_rom_copy__:\r
+ \r
+ /* call C++ static initializers (__sinit__(void)) */\r
+ jsr __call_static_initializers\r
+\r
+ jsr __initialize_system\r
+\r
+ /* call main(int, char **) */\r
+ pea __argv\r
+ clr.l -(sp) /* clearing a long is ok since it's caller cleanup */\r
+ jsr main\r
+ addq.l #8, sp\r
+ \r
+ unlk a6\r
+ \r
+ /* now call exit(0) to terminate the application */\r
+ clr.l -(sp)\r
+ jsr exit\r
+ addq.l #4, sp\r
+\r
+ /* should never reach here but just in case */\r
+ illegal\r
+ rts\r
+\r
+ /* exit will never return */\r
+__argv:\r
+ dc.l 0\r
+}\r
+\r
--- /dev/null
+/******************************************************************************\r
+ FILE : startcf.h\r
+ PURPOSE : startup code for ColdFire\r
+ LANGUAGE: C\r
+\r
+\r
+ Notes:\r
+ 1) Default entry point is _startup. \r
+ . disable interrupts\r
+ . the SP is set to __SP_AFTER_RESET\r
+ . SP must be initialized to valid memory \r
+ in case the memory it points to is not valid using MEMORY_INIT macro\r
+ 2) __initialize_hardware is called. Here you can initialize memory and some peripherics\r
+ at this point global variables are not initialized yet\r
+ 3) After __initialize_hardware memory is setup; initialize SP to _SP_INIT and perform \r
+ needed initialisations for the language (clear memory, data rom copy).\r
+ 4) void __initialize_system(void); is called\r
+ to allow additional hardware initialization (UART, GPIOs, etc...)\r
+ 5) Jump to main \r
+\r
+*/\r
+/********************************************************************************/\r
+\r
+#ifndef STARTCF_H\r
+#define STARTCF_H\r
+\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#ifdef STARTCF_INCLUDE\r
+#include STARTCF_INCLUDE\r
+#endif\r
+\r
+#pragma warn_any_ptr_int_conv off\r
+#pragma warn_absolute off\r
+\r
+extern unsigned long far __SP_INIT[];\r
+extern unsigned long far __SP_AFTER_RESET[];\r
+\r
+#ifndef MEMORY_INIT\r
+/* If MEMORY_INIT is set then it performs\r
+ minimal memory initialization (to preset SP to __SP_AFTER_RESET, etc...) \r
+*/\r
+#define MEMORY_INIT\r
+#endif\r
+\r
+void _startup(void);\r
+\r
+#ifndef SUPPORT_ROM_TO_RAM\r
+ /*\r
+ * If SUPPORT_ROM_TO_RAM is set, _S_romp is used to define the copy to be performed.\r
+ * If it is not set, there's a single block to copy, performed directly without \r
+ * using the __S_romp structure, based on __DATA_RAM, __DATA_ROM and\r
+ * __DATA_END symbols.\r
+ *\r
+ * Set to 0 for more aggressive dead stripping ...\r
+ */\r
+#define SUPPORT_ROM_TO_RAM 1\r
+#endif\r
+\r
+/* format of the ROM table info entry ... */\r
+typedef struct RomInfo {\r
+ void *Source;\r
+ void *Target;\r
+ unsigned long Size;\r
+} RomInfo;\r
+\r
+/* imported data */\r
+extern far RomInfo _S_romp[]; /* linker defined symbol */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
--- /dev/null
+/* FILENAME: stdlib.c\r
+ *\r
+ * Functions normally found in a standard C lib.\r
+ *\r
+ * 12/28/2005 - added memcmp and memmove\r
+ *\r
+ * Notes: These functions support ASCII only!!!\r
+ */\r
+\r
+//#include "m51cn128evb.h"\r
+#include "stdlib.h"\r
+\r
+#define TRUE 1\r
+#define FALSE 0\r
+#define NULL 0\r
+\r
+/****************************************************************/\r
+int\r
+isspace (int ch)\r
+{\r
+ if ((ch == ' ') || (ch == '\t')) /* \n ??? */\r
+ return TRUE;\r
+ else\r
+ return FALSE;\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+isalnum (int ch)\r
+{\r
+ /* ASCII only */\r
+ if (((ch >= '0') && (ch <= '9')) ||\r
+ ((ch >= 'A') && (ch <= 'Z')) ||\r
+ ((ch >= 'a') && (ch <= 'z')))\r
+ return TRUE;\r
+ else\r
+ return FALSE;\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+isdigit (int ch)\r
+{\r
+ /* ASCII only */\r
+ if ((ch >= '0') && (ch <= '9'))\r
+ return TRUE;\r
+ else\r
+ return FALSE;\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+isupper (int ch)\r
+{\r
+ /* ASCII only */\r
+ if ((ch >= 'A') && (ch <= 'Z'))\r
+ return TRUE;\r
+ else\r
+ return FALSE;\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+strcasecmp (const char *s1, const char *s2)\r
+{\r
+ char c1, c2;\r
+ int result = 0;\r
+\r
+ while (result == 0)\r
+ {\r
+ c1 = *s1++;\r
+ c2 = *s2++;\r
+ if ((c1 >= 'a') && (c1 <= 'z'))\r
+ c1 = (char)(c1 - ' ');\r
+ if ((c2 >= 'a') && (c2 <= 'z'))\r
+ c2 = (char)(c2 - ' ');\r
+ if ((result = (c1 - c2)) != 0)\r
+ break;\r
+ if ((c1 == 0) || (c2 == 0))\r
+ break;\r
+ }\r
+ return result;\r
+}\r
+\r
+\r
+/****************************************************************/\r
+int\r
+stricmp (const char *s1, const char *s2)\r
+{\r
+ return (strcasecmp(s1, s2));\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+strncasecmp (const char *s1, const char *s2, int n)\r
+{\r
+ char c1, c2;\r
+ int k = 0;\r
+ int result = 0;\r
+\r
+ while ( k++ < n )\r
+ {\r
+ c1 = *s1++;\r
+ c2 = *s2++;\r
+ if ((c1 >= 'a') && (c1 <= 'z'))\r
+ c1 = (char)(c1 - ' ');\r
+ if ((c2 >= 'a') && (c2 <= 'z'))\r
+ c2 = (char)(c2 - ' ');\r
+ if ((result = (c1 - c2)) != 0)\r
+ break;\r
+ if ((c1 == 0) || (c2 == 0))\r
+ break;\r
+ }\r
+ return result;\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+strnicmp (const char *s1, const char *s2, int n)\r
+{\r
+ return (strncasecmp(s1, s2, n));\r
+}\r
+\r
+/****************************************************************/\r
+unsigned long\r
+strtoul (char *str, char **ptr, int base)\r
+{\r
+ unsigned long rvalue = 0;\r
+ int neg = 0;\r
+ int c;\r
+\r
+ /* Validate parameters */\r
+ if ((str != NULL) && (base >= 0) && (base <= 36))\r
+ {\r
+ /* Skip leading white spaces */\r
+ while (isspace(*str))\r
+ {\r
+ ++str;\r
+ }\r
+\r
+ /* Check for notations */\r
+ switch (str[0])\r
+ {\r
+ case '0':\r
+ if (base == 0)\r
+ {\r
+ if ((str[1] == 'x') || (str[1] == 'X'))\r
+ {\r
+ base = 16;\r
+ str += 2;\r
+ }\r
+ else\r
+ {\r
+ base = 8;\r
+ str++;\r
+ }\r
+ }\r
+ break;\r
+ \r
+ case '-':\r
+ neg = 1;\r
+ str++;\r
+ break;\r
+\r
+ case '+':\r
+ str++;\r
+ break;\r
+\r
+ default:\r
+ break;\r
+ }\r
+\r
+ if (base == 0)\r
+ base = 10;\r
+\r
+ /* Valid "digits" are 0..9, A..Z, a..z */\r
+ while (isalnum(c = *str))\r
+ {\r
+ /* Convert char to num in 0..36 */\r
+ if ((c -= ('a' - 10)) < 10) /* 'a'..'z' */\r
+ {\r
+ if ((c += ('a' - 'A')) < 10) /* 'A'..'Z' */\r
+ {\r
+ c += ('A' - '0' - 10); /* '0'..'9' */\r
+ }\r
+ }\r
+\r
+ /* check c against base */\r
+ if (c >= base)\r
+ {\r
+ break;\r
+ }\r
+\r
+ if (neg)\r
+ {\r
+ rvalue = (rvalue * base) - c;\r
+ }\r
+ else\r
+ {\r
+ rvalue = (rvalue * base) + c;\r
+ }\r
+\r
+ ++str;\r
+ }\r
+ }\r
+\r
+ /* Upon exit, 'str' points to the character at which valid info */\r
+ /* STOPS. No chars including and beyond 'str' are used. */\r
+\r
+ if (ptr != NULL)\r
+ *ptr = str;\r
+ \r
+ return rvalue;\r
+ }\r
+\r
+/****************************************************************/\r
+int\r
+atoi (const char *str)\r
+{\r
+ char *s = (char *)str;\r
+ \r
+ return ((int)strtoul(s, NULL, 10));\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+strlen (const char *str)\r
+{\r
+ char *s = (char *)str;\r
+ int len = 0;\r
+\r
+ if (s == NULL)\r
+ return 0;\r
+\r
+ while (*s++ != '\0')\r
+ ++len;\r
+\r
+ return len;\r
+}\r
+\r
+/****************************************************************/\r
+char *\r
+strcat (char *dest, const char *src)\r
+{\r
+ char *dp;\r
+ char *sp = (char *)src;\r
+\r
+ if ((dest != NULL) && (src != NULL))\r
+ {\r
+ dp = &dest[strlen(dest)];\r
+\r
+ while (*sp != '\0')\r
+ {\r
+ *dp++ = *sp++;\r
+ }\r
+ *dp = '\0';\r
+ }\r
+ return dest;\r
+}\r
+\r
+/****************************************************************/\r
+char *\r
+strncat (char *dest, const char *src, int n)\r
+{\r
+ char *dp;\r
+ char *sp = (char *)src;\r
+\r
+ if ((dest != NULL) && (src != NULL) && (n > 0))\r
+ {\r
+ dp = &dest[strlen(dest)];\r
+\r
+ while ((*sp != '\0') && (n-- > 0))\r
+ {\r
+ *dp++ = *sp++;\r
+ }\r
+ *dp = '\0';\r
+ }\r
+ return dest;\r
+}\r
+\r
+/****************************************************************/\r
+char *\r
+strcpy (char *dest, const char *src)\r
+{\r
+ char *dp = (char *)dest;\r
+ char *sp = (char *)src;\r
+\r
+ if ((dest != NULL) && (src != NULL))\r
+ {\r
+ while (*sp != '\0')\r
+ {\r
+ *dp++ = *sp++;\r
+ }\r
+ *dp = '\0';\r
+ }\r
+ return dest;\r
+}\r
+\r
+/****************************************************************/\r
+char *\r
+strncpy (char *dest, const char *src, int n)\r
+{\r
+ char *dp = (char *)dest;\r
+ char *sp = (char *)src;\r
+\r
+ if ((dest != NULL) && (src != NULL) && (n > 0))\r
+ {\r
+ while ((*sp != '\0') && (n-- > 0))\r
+ {\r
+ *dp++ = *sp++;\r
+ }\r
+ *dp = '\0';\r
+ }\r
+ return dest;\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+strcmp (const char *s1, const char *s2)\r
+{\r
+ /* No checks for NULL */\r
+ char *s1p = (char *)s1;\r
+ char *s2p = (char *)s2;\r
+\r
+ while (*s2p != '\0')\r
+ {\r
+ if (*s1p != *s2p)\r
+ break;\r
+\r
+ ++s1p;\r
+ ++s2p;\r
+ }\r
+ return (*s1p - *s2p);\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+strncmp (const char *s1, const char *s2, int n)\r
+{\r
+ /* No checks for NULL */\r
+ char *s1p = (char *)s1;\r
+ char *s2p = (char *)s2;\r
+\r
+ if (n <= 0)\r
+ return 0;\r
+\r
+ while (*s2p != '\0')\r
+ {\r
+ if (*s1p != *s2p)\r
+ break;\r
+\r
+ if (--n == 0)\r
+ break;\r
+\r
+ ++s1p;\r
+ ++s2p;\r
+ }\r
+ return (*s1p - *s2p);\r
+}\r
+\r
+/****************************************************************/\r
+char *\r
+strstr(const char *s1, const char *s2)\r
+{\r
+ char *sp = (char *)s1;\r
+ int len1 = strlen(s1);\r
+ int len2 = strlen(s2);\r
+\r
+ while (len1 >= len2) \r
+ {\r
+ if (strncmp(sp, s2, len2) == 0)\r
+ {\r
+ return (sp);\r
+ }\r
+ ++sp;\r
+ --len1;\r
+ }\r
+\r
+ return (NULL);\r
+}\r
+\r
+/****************************************************************/\r
+char *\r
+strchr(const char *str, int c)\r
+{\r
+ char *sp = (char *)str;\r
+ char ch = (char)(c & 0xff);\r
+\r
+ while (*sp != '\0')\r
+ {\r
+ if (*sp == ch)\r
+ {\r
+ return (sp);\r
+ }\r
+ ++sp;\r
+ }\r
+\r
+ return (NULL);\r
+}\r
+\r
+/****************************************************************/\r
+void *\r
+memcpy (void *dest, const void *src, unsigned n)\r
+{\r
+ unsigned char *dbp = (unsigned char *)dest;\r
+ unsigned char *sbp = (unsigned char *)src;\r
+\r
+ if ((dest != NULL) && (src != NULL) && (n > 0))\r
+ {\r
+ while (n--)\r
+ *dbp++ = *sbp++;\r
+ }\r
+ return dest;\r
+}\r
+\r
+/****************************************************************/\r
+void *\r
+memset (void *s, int c, unsigned n)\r
+{\r
+ /* Not optimized, but very portable */\r
+ unsigned char *sp = (unsigned char *)s;\r
+\r
+ if ((s != NULL) && (n > 0))\r
+ {\r
+ while (n--)\r
+ {\r
+ *sp++ = (unsigned char)c;\r
+ }\r
+ }\r
+ return s;\r
+}\r
+\r
+/****************************************************************/\r
+int\r
+memcmp (const void *s1, const void *s2, unsigned n)\r
+{\r
+ unsigned char *s1p, *s2p;\r
+\r
+ if (s1 && s2 && (n > 0))\r
+ {\r
+ s1p = (unsigned char *)s1;\r
+ s2p = (unsigned char *)s2;\r
+\r
+ while ((--n >= 0) && (*s1p == *s2p))\r
+ {\r
+ if (*s1p != *s2p)\r
+ return (*s1p - *s2p);\r
+ ++s1p;\r
+ ++s2p;\r
+ }\r
+ }\r
+\r
+ return (0);\r
+}\r
+\r
+/****************************************************************/\r
+void *\r
+memmove (void *dest, const void *src, unsigned n)\r
+{\r
+ unsigned char *dbp = (unsigned char *)dest;\r
+ unsigned char *sbp = (unsigned char *)src;\r
+ unsigned char *dend = dbp + n;\r
+ unsigned char *send = sbp + n;\r
+\r
+ if ((dest != NULL) && (src != NULL) && (n > 0))\r
+ {\r
+ /* see if a memcpy would overwrite source buffer */\r
+ if ((sbp < dbp) && (dbp < send))\r
+ {\r
+ while (n--)\r
+ *(--dend) = *(--send);\r
+ }\r
+ else\r
+ {\r
+ while (n--)\r
+ *dbp++ = *sbp++;\r
+ }\r
+ }\r
+\r
+ return dest;\r
+}\r
+\r
+/****************************************************************/\r
+\r
+char *\r
+strrchr(const char *s, int c)\r
+{\r
+ const char *last = NULL;\r
+ if (c == '\0')\r
+ return strchr(s, c);\r
+ while ((s = strchr(s, c)) != NULL) {\r
+ last = s;\r
+ s++;\r
+ }\r
+ return (char *) last;\r
+}\r
+\r
--- /dev/null
+/*\r
+ * File: stdlib.h\r
+ * Purpose: Function prototypes for standard library functions\r
+ *\r
+ * Notes:\r
+ */\r
+\r
+#ifndef _STDLIB_H\r
+#define _STDLIB_H\r
+\r
+/********************************************************************\r
+ * Standard library functions\r
+ ********************************************************************/\r
+\r
+int\r
+isspace (int);\r
+\r
+int\r
+isalnum (int);\r
+\r
+int\r
+isdigit (int);\r
+\r
+int\r
+isupper (int);\r
+\r
+int\r
+strcasecmp (const char *, const char *);\r
+\r
+int\r
+strncasecmp (const char *, const char *, int);\r
+\r
+unsigned long\r
+strtoul (char *, char **, int);\r
+\r
+int\r
+strlen (const char *);\r
+\r
+char *\r
+strcat (char *, const char *);\r
+\r
+char *\r
+strncat (char *, const char *, int);\r
+\r
+char *\r
+strcpy (char *, const char *);\r
+\r
+char *\r
+strncpy (char *, const char *, int);\r
+\r
+int\r
+strcmp (const char *, const char *);\r
+\r
+int\r
+strncmp (const char *, const char *, int);\r
+\r
+void *\r
+memcpy (void *, const void *, unsigned);\r
+\r
+void *\r
+memset (void *, int, unsigned);\r
+\r
+void\r
+free (void *);\r
+ \r
+void *\r
+malloc (unsigned);\r
+\r
+#define RAND_MAX 32767\r
+\r
+int\r
+rand (void);\r
+\r
+void\r
+srand (int);\r
+\r
+/********************************************************************/\r
+\r
+#endif\r
--- /dev/null
+// After load the commands written below will be executed\r
--- /dev/null
+// Before load the commands written below will be executed\r
--- /dev/null
+// After reset the commands written below will be executed\r
--- /dev/null
+// At startup the commands written below will be executed\r
--- /dev/null
+// After load the commands written below will be executed\r
--- /dev/null
+// Before load the commands written below will be executed\r
--- /dev/null
+// After reset the commands written below will be executed\r
--- /dev/null
+// At startup the commands written below will be executed\r
--- /dev/null
+# Sample Linker Command File for CodeWarrior for ColdFire MCF51CN128\r
+\r
+# Memory ranges\r
+\r
+MEMORY {\r
+ code (RX) : ORIGIN = 0x00000410, LENGTH = 0x0001FBF0\r
+ userram (RWX) : ORIGIN = 0x00800000, LENGTH = 0x00006000\r
+}\r
+\r
+SECTIONS {\r
+\r
+# Heap and Stack sizes definition\r
+ ___heap_size = 0x04;\r
+ ___stack_size = 0x0200;\r
+\r
+# MCF51CN128 Derivative Memory map definitions from linker command files:\r
+# ___RAM_ADDRESS, ___RAM_SIZE, ___FLASH_ADDRESS, ___FLASH_SIZE linker\r
+# symbols must be defined in the linker command file.\r
+\r
+# 24 Kbytes Internal SRAM\r
+ ___RAM_ADDRESS = 0x00800000;\r
+ ___RAM_SIZE = 0x00006000;\r
+\r
+# 128 KByte Internal Flash Memory\r
+ ___FLASH_ADDRESS = 0x00000000;\r
+ ___FLASH_SIZE = 0x00020000;\r
+\r
+ .userram : {} > userram\r
+ .code : {} > code\r
+\r
+ .text :\r
+ {\r
+ *(.text)\r
+ . = ALIGN (0x4);\r
+ *(.rodata)\r
+ . = ALIGN (0x4);\r
+ ___ROM_AT = .;\r
+ ___DATA_ROM = .;\r
+ } >> code\r
+\r
+ .data : AT(___ROM_AT)\r
+ {\r
+ ___DATA_RAM = .;\r
+ . = ALIGN(0x4);\r
+ *(.exception)\r
+ . = ALIGN(0x4);\r
+ __exception_table_start__ = .;\r
+ EXCEPTION\r
+ __exception_table_end__ = .;\r
+\r
+ ___sinit__ = .;\r
+ STATICINIT\r
+ __START_DATA = .;\r
+\r
+ *(.data)\r
+ . = ALIGN (0x4);\r
+ __END_DATA = .;\r
+\r
+ __START_SDATA = .;\r
+ *(.sdata)\r
+ . = ALIGN (0x4);\r
+ __END_SDATA = .;\r
+\r
+ ___DATA_END = .;\r
+ __SDA_BASE = .;\r
+ . = ALIGN (0x4);\r
+ } >> userram\r
+\r
+ .bss :\r
+ {\r
+ ___BSS_START = .;\r
+ __START_SBSS = .;\r
+ *(.sbss)\r
+ . = ALIGN (0x4);\r
+ *(SCOMMON)\r
+ __END_SBSS = .;\r
+\r
+ __START_BSS = .;\r
+ *(.bss)\r
+ . = ALIGN (0x4);\r
+ *(COMMON)\r
+ __END_BSS = .;\r
+ ___BSS_END = .;\r
+\r
+ . = ALIGN(0x4);\r
+ } >> userram\r
+\r
+ .custom :\r
+ {\r
+ ___HEAP_START = .;\r
+ ___heap_addr = ___HEAP_START;\r
+ ___HEAP_END = ___HEAP_START + ___heap_size;\r
+ ___SP_END = ___HEAP_END;\r
+ ___SP_INIT = ___SP_END + ___stack_size;\r
+\r
+ . = ALIGN (0x4);\r
+ } >> userram\r
+\r
+ __SP_INIT = ___SP_INIT;\r
+\r
+ ___SP_AFTER_RESET = __SP_INIT;\r
+\r
+ _romp_at = ___ROM_AT + SIZEOF(.data);\r
+ .romp : AT(_romp_at)\r
+ {\r
+ __S_romp = _romp_at;\r
+ WRITEW(___ROM_AT);\r
+ WRITEW(ADDR(.data));\r
+ WRITEW(SIZEOF(.data));\r
+ WRITEW(0);\r
+ WRITEW(0);\r
+ WRITEW(0);\r
+ }\r
+}\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
licensing and training services.\r
*/\r
\r
+/* CodeWarrior often thinks it knows better than you which files you want to \r
+build - and changes the port.c and portasm.S files included in the project from\r
+the ColdFire V1 versions to the x86 versions. If you get lots of errors output\r
+when either file is compiled then delete the files from the project and then\r
+add back in the port.c and portasm.S files that are located in the \r
+FreeRTOS\Source\portable\GCC\ColdFire_V2 directory. Remove the line below\r
+before compiling. */\r
+\r
+#error Read the comment above this line, then delete this error statement!\r
+\r
+\r
#ifndef FREERTOS_CONFIG_H\r
#define FREERTOS_CONFIG_H\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
licensing and training services.\r
*/\r
\r
+/* CodeWarrior often thinks it knows better than you which files you want to \r
+build - and changes the port.c and portasm.S files included in the project from\r
+the ColdFire V1 versions to the x86 versions. If you get lots of errors output\r
+when either file is compiled then delete the files from the project and then\r
+add back in the port.c and portasm.S files that are located in the \r
+FreeRTOS\Source\portable\GCC\ColdFire_V2 directory. Remove the line below\r
+before compiling. */\r
+\r
+#error Read the comment above this line, then delete this error statement!\r
+\r
#ifndef FREERTOS_CONFIG_H\r
#define FREERTOS_CONFIG_H\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
#/*\r
-# FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+# FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
#\r
# This file is part of the FreeRTOS.org distribution.\r
#\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
;/*\r
-; FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+; FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
;\r
; This file is part of the FreeRTOS.org distribution.\r
;\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
;/*\r
-; FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+; FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
;\r
; This file is part of the FreeRTOS.org distribution.\r
;\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
;/*\r
-; FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+; FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
;\r
; This file is part of the FreeRTOS.org distribution.\r
;\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
http://dzcomm.sourceforge.net\r
\r
\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
#/*\r
-# FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+# FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
#\r
# This file is part of the FreeRTOS.org distribution.\r
#\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
#/*\r
-# FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+# FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
#\r
# This file is part of the FreeRTOS.org distribution.\r
#\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
#/*\r
-# FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+# FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
#\r
# This file is part of the FreeRTOS.org distribution.\r
#\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r
/*\r
- FreeRTOS.org V5.3.0 - Copyright (C) 2003-2009 Richard Barry.\r
+ FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
\r
This file is part of the FreeRTOS.org distribution.\r
\r