mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-11-16 12:34:29 +00:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c7acafee2 | ||
|
|
623aa3675f | ||
|
|
017740b75a | ||
|
|
67d0d1ec3b | ||
|
|
45410fcd3a | ||
|
|
9af97b86f8 | ||
|
|
22e434dfaf | ||
|
|
014d7f5b8f | ||
|
|
5a3272cdca | ||
|
|
b36ba44e0d | ||
|
|
0a6d59a611 | ||
|
|
6118595a07 | ||
|
|
504382bcb8 | ||
|
|
45d8ca15b5 | ||
|
|
06bbaed27a | ||
|
|
b578c75c4e | ||
|
|
bf2b676eaa | ||
|
|
b727359f1b | ||
|
|
4c3a1e29e0 | ||
|
|
5d413a0078 | ||
|
|
17228aca47 | ||
|
|
8b8a0eeff3 |
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
# FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
#
|
||||
# This file is part of the FreeRTOS.org distribution.
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,121 +1,121 @@
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* ATMEL Microcontroller Software Support - ROUSSET -
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* The software is delivered "AS IS" without warranty or condition of any
|
||||
//* kind, either express, implied or statutory. This includes without
|
||||
//* limitation any warranty or condition with respect to merchantability or
|
||||
//* fitness for any particular purpose, or against the infringements of
|
||||
//* intellectual property rights of others.
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* File Name : ebi.h
|
||||
//* Object : External Bus Interface Definition File
|
||||
//* Translator : ARM Software Development Toolkit V2.11a
|
||||
//*
|
||||
//* 1.0 03/11/97 JCZ : Creation
|
||||
//* 2.0 21/10/98 JCZ : Clean up
|
||||
//*-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef ebi_h
|
||||
#define ebi_h
|
||||
|
||||
/*----------------------------------------*/
|
||||
/* Memory Controller Interface Definition */
|
||||
/*----------------------------------------*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
at91_reg EBI_CSR[8] ; /* Chip Select Register */
|
||||
at91_reg EBI_RCR ; /* Remap Control Register */
|
||||
at91_reg EBI_MCR ; /* Memory Control Register */
|
||||
} StructEBI ;
|
||||
|
||||
/*-----------------------*/
|
||||
/* Chip Select Registers */
|
||||
/*-----------------------*/
|
||||
|
||||
/* Data Bus Width */
|
||||
#define DataBus16 (1<<0)
|
||||
#define DataBus8 (2<<0)
|
||||
#define DBW (3<<0)
|
||||
|
||||
/* Number of Wait States */
|
||||
#define B_NWS 2
|
||||
#define WaitState1 (0<<B_NWS)
|
||||
#define WaitState2 (1<<B_NWS)
|
||||
#define WaitState3 (2<<B_NWS)
|
||||
#define WaitState4 (3<<B_NWS)
|
||||
#define WaitState5 (4<<B_NWS)
|
||||
#define WaitState6 (5<<B_NWS)
|
||||
#define WaitState7 (6<<B_NWS)
|
||||
#define WaitState8 (7<<B_NWS)
|
||||
#define NWS (7<<B_NWS)
|
||||
|
||||
/* Wait State Enable */
|
||||
#define WaitStateDisable (0<<5)
|
||||
#define WaitStateEnable (1<<5)
|
||||
#define WSE (1<<5)
|
||||
|
||||
/* Page size */
|
||||
#define PageSize1M (0<<7)
|
||||
#define PageSize4M (1<<7)
|
||||
#define PageSize16M (2<<7)
|
||||
#define PageSize64M (3<<7)
|
||||
#define PAGES (3<<7)
|
||||
|
||||
/* Number of Data Float Output Time Clock Cycle */
|
||||
#define B_TDF 9
|
||||
#define tDF_0cycle (0<<B_TDF)
|
||||
#define tDF_1cycle (1<<B_TDF)
|
||||
#define tDF_2cycle (2<<B_TDF)
|
||||
#define tDF_3cycle (3<<B_TDF)
|
||||
#define tDF_4cycle (4<<B_TDF)
|
||||
#define tDF_5cycle (5<<B_TDF)
|
||||
#define tDF_6cycle (6<<B_TDF)
|
||||
#define tDF_7cycle (7<<B_TDF)
|
||||
#define TDF (7<<B_TDF)
|
||||
|
||||
/* Byte Access Type */
|
||||
#define ByteWriteAccessType (0<<12)
|
||||
#define ByteSelectAccessType (1<<12)
|
||||
#define BAT 1<<12)
|
||||
|
||||
/* Chip Select Enable */
|
||||
#define CSEnable (1<<13)
|
||||
#define CSDisable (0<<13)
|
||||
#define CSE (1<<13)
|
||||
|
||||
#define BA ((u_int)(0xFFF)<<20)
|
||||
|
||||
/*-------------------------*/
|
||||
/* Memory Control Register */
|
||||
/*-------------------------*/
|
||||
|
||||
/* Address Line Enable */
|
||||
#define ALE (7<<0)
|
||||
#define BankSize16M (0<<0)
|
||||
#define BankSize8M (4<<0)
|
||||
#define BankSize4M (5<<0)
|
||||
#define BankSize2M (6<<0)
|
||||
#define BankSize1M (7<<0)
|
||||
|
||||
/* Data Read Protocol */
|
||||
#define StandardReadProtocol (0<<4)
|
||||
#define EarlyReadProtocol (1<<4)
|
||||
#define DRP (1<<4)
|
||||
|
||||
/*------------------------*/
|
||||
/* Remap Control Register */
|
||||
/*------------------------*/
|
||||
|
||||
#define RCB (1<<0)
|
||||
|
||||
/*--------------------------------*/
|
||||
/* Device Dependancies Definition */
|
||||
/*--------------------------------*/
|
||||
|
||||
#ifdef AT91M40400
|
||||
/* External Bus Interface User Interface BAse Address */
|
||||
#define EBI_BASE ((StructEBI *) 0xFFE00000)
|
||||
#endif
|
||||
|
||||
#endif /* ebi_h */
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* ATMEL Microcontroller Software Support - ROUSSET -
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* The software is delivered "AS IS" without warranty or condition of any
|
||||
//* kind, either express, implied or statutory. This includes without
|
||||
//* limitation any warranty or condition with respect to merchantability or
|
||||
//* fitness for any particular purpose, or against the infringements of
|
||||
//* intellectual property rights of others.
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* File Name : ebi.h
|
||||
//* Object : External Bus Interface Definition File
|
||||
//* Translator : ARM Software Development Toolkit V2.11a
|
||||
//*
|
||||
//* 1.0 03/11/97 JCZ : Creation
|
||||
//* 2.0 21/10/98 JCZ : Clean up
|
||||
//*-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef ebi_h
|
||||
#define ebi_h
|
||||
|
||||
/*----------------------------------------*/
|
||||
/* Memory Controller Interface Definition */
|
||||
/*----------------------------------------*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
at91_reg EBI_CSR[8] ; /* Chip Select Register */
|
||||
at91_reg EBI_RCR ; /* Remap Control Register */
|
||||
at91_reg EBI_MCR ; /* Memory Control Register */
|
||||
} StructEBI ;
|
||||
|
||||
/*-----------------------*/
|
||||
/* Chip Select Registers */
|
||||
/*-----------------------*/
|
||||
|
||||
/* Data Bus Width */
|
||||
#define DataBus16 (1<<0)
|
||||
#define DataBus8 (2<<0)
|
||||
#define DBW (3<<0)
|
||||
|
||||
/* Number of Wait States */
|
||||
#define B_NWS 2
|
||||
#define WaitState1 (0<<B_NWS)
|
||||
#define WaitState2 (1<<B_NWS)
|
||||
#define WaitState3 (2<<B_NWS)
|
||||
#define WaitState4 (3<<B_NWS)
|
||||
#define WaitState5 (4<<B_NWS)
|
||||
#define WaitState6 (5<<B_NWS)
|
||||
#define WaitState7 (6<<B_NWS)
|
||||
#define WaitState8 (7<<B_NWS)
|
||||
#define NWS (7<<B_NWS)
|
||||
|
||||
/* Wait State Enable */
|
||||
#define WaitStateDisable (0<<5)
|
||||
#define WaitStateEnable (1<<5)
|
||||
#define WSE (1<<5)
|
||||
|
||||
/* Page size */
|
||||
#define PageSize1M (0<<7)
|
||||
#define PageSize4M (1<<7)
|
||||
#define PageSize16M (2<<7)
|
||||
#define PageSize64M (3<<7)
|
||||
#define PAGES (3<<7)
|
||||
|
||||
/* Number of Data Float Output Time Clock Cycle */
|
||||
#define B_TDF 9
|
||||
#define tDF_0cycle (0<<B_TDF)
|
||||
#define tDF_1cycle (1<<B_TDF)
|
||||
#define tDF_2cycle (2<<B_TDF)
|
||||
#define tDF_3cycle (3<<B_TDF)
|
||||
#define tDF_4cycle (4<<B_TDF)
|
||||
#define tDF_5cycle (5<<B_TDF)
|
||||
#define tDF_6cycle (6<<B_TDF)
|
||||
#define tDF_7cycle (7<<B_TDF)
|
||||
#define TDF (7<<B_TDF)
|
||||
|
||||
/* Byte Access Type */
|
||||
#define ByteWriteAccessType (0<<12)
|
||||
#define ByteSelectAccessType (1<<12)
|
||||
#define BAT 1<<12)
|
||||
|
||||
/* Chip Select Enable */
|
||||
#define CSEnable (1<<13)
|
||||
#define CSDisable (0<<13)
|
||||
#define CSE (1<<13)
|
||||
|
||||
#define BA ((u_int)(0xFFF)<<20)
|
||||
|
||||
/*-------------------------*/
|
||||
/* Memory Control Register */
|
||||
/*-------------------------*/
|
||||
|
||||
/* Address Line Enable */
|
||||
#define ALE (7<<0)
|
||||
#define BankSize16M (0<<0)
|
||||
#define BankSize8M (4<<0)
|
||||
#define BankSize4M (5<<0)
|
||||
#define BankSize2M (6<<0)
|
||||
#define BankSize1M (7<<0)
|
||||
|
||||
/* Data Read Protocol */
|
||||
#define StandardReadProtocol (0<<4)
|
||||
#define EarlyReadProtocol (1<<4)
|
||||
#define DRP (1<<4)
|
||||
|
||||
/*------------------------*/
|
||||
/* Remap Control Register */
|
||||
/*------------------------*/
|
||||
|
||||
#define RCB (1<<0)
|
||||
|
||||
/*--------------------------------*/
|
||||
/* Device Dependancies Definition */
|
||||
/*--------------------------------*/
|
||||
|
||||
#ifdef AT91M40400
|
||||
/* External Bus Interface User Interface BAse Address */
|
||||
#define EBI_BASE ((StructEBI *) 0xFFE00000)
|
||||
#endif
|
||||
|
||||
#endif /* ebi_h */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,149 +1,149 @@
|
||||
//*---------------------------------------------------------------------------
|
||||
//* ATMEL Microcontroller Software Support - ROUSSET -
|
||||
//*---------------------------------------------------------------------------
|
||||
//* The software is delivered "AS IS" without warranty or condition of any
|
||||
//* kind, either express, implied or statutory. This includes without
|
||||
//* limitation any warranty or condition with respect to merchantability or
|
||||
//* fitness for any particular purpose, or against the infringements of
|
||||
//* intellectual property rights of others.
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* File Name : pio.h
|
||||
//* Object : Parallel I/O Definition File
|
||||
//* Translator : ARM Software Development Toolkit V2.11a
|
||||
//*
|
||||
//* 1.0 20/10/97 JCZ : Creation
|
||||
//* 2.0 21/10/98 JCZ : Clean up
|
||||
//*---------------------------------------------------------------------------
|
||||
|
||||
#ifndef pio_h
|
||||
#define pio_h
|
||||
|
||||
/*---------------------------------------------*/
|
||||
/* Parallel I/O Interface Structure Definition */
|
||||
/*---------------------------------------------*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
at91_reg PIO_PER ; /* PIO Enable Register */
|
||||
at91_reg PIO_PDR ; /* PIO Disable Register */
|
||||
at91_reg PIO_PSR ; /* PIO Status Register */
|
||||
at91_reg Reserved0 ;
|
||||
at91_reg PIO_OER ; /* Output Enable Register */
|
||||
at91_reg PIO_ODR ; /* Output Disable Register */
|
||||
at91_reg PIO_OSR ; /* Output Status Register */
|
||||
at91_reg Reserved1 ;
|
||||
at91_reg PIO_IFER ; /* Input Filter Enable Register */
|
||||
at91_reg PIO_IFDR ; /* Input Filter Disable Register */
|
||||
at91_reg PIO_IFSR ; /* Input Filter Status Register */
|
||||
at91_reg Reserved2 ;
|
||||
at91_reg PIO_SODR ; /* Set Output Data Register */
|
||||
at91_reg PIO_CODR ; /* Clear Output Data Register */
|
||||
at91_reg PIO_ODSR ; /* Output Data Status Register */
|
||||
at91_reg PIO_PDSR ; /* Pin Data Status Register */
|
||||
at91_reg PIO_IER ; /* Interrupt Enable Register */
|
||||
at91_reg PIO_IDR ; /* Interrupt Disable Register */
|
||||
at91_reg PIO_IMR ; /* Interrupt Mask Register */
|
||||
at91_reg PIO_ISR ; /* Interrupt Status Register */
|
||||
} StructPIO ;
|
||||
|
||||
/*-----------------------------*/
|
||||
/* PIO Handler type definition */
|
||||
/*-----------------------------*/
|
||||
|
||||
//typedef void (*TypePIOHandler) ( StructPIO *pio_pt, u_int pio_mask ) ;
|
||||
|
||||
/*--------------------------------*/
|
||||
/* Device Dependancies Definition */
|
||||
/*--------------------------------*/
|
||||
|
||||
/* Number of PIO Controller */
|
||||
#define NB_PIO_CTRL 1
|
||||
/* Base Address */
|
||||
#define PIO_BASE ((StructPIO *) 0xFFFF0000 )
|
||||
/* Number of PIO Lines */
|
||||
#define NB_PIO 32
|
||||
|
||||
/* Parallel I/O Bits Definition */
|
||||
#define P0 (1<<0)
|
||||
#define P1 (1<<1)
|
||||
#define P2 (1<<2)
|
||||
#define P3 (1<<3)
|
||||
#define P4 (1<<4)
|
||||
#define P5 (1<<5)
|
||||
#define P6 (1<<6)
|
||||
#define P7 (1<<7)
|
||||
#define P8 (1<<8)
|
||||
#define P9 (1<<9)
|
||||
#define P10 (1<<10)
|
||||
#define P11 (1<<11)
|
||||
#define P12 (1<<12)
|
||||
#define P13 (1<<13)
|
||||
#define P14 (1<<14)
|
||||
#define P15 (1<<15)
|
||||
#define P16 (1<<16)
|
||||
#define P17 (1<<17)
|
||||
#define P18 (1<<18)
|
||||
#define P19 (1<<19)
|
||||
#define P20 (1<<20)
|
||||
#define P21 (1<<21)
|
||||
#define P22 (1<<22)
|
||||
#define P23 (1<<23)
|
||||
#define P24 (1<<24)
|
||||
#define P25 (1<<25)
|
||||
#define P26 (1<<26)
|
||||
#define P27 (1<<27)
|
||||
#define P28 (1<<28)
|
||||
#define P29 (1<<29)
|
||||
#define P30 (1<<30)
|
||||
#define P31 (1<<31)
|
||||
|
||||
/* PIO Multiplexing Definition */
|
||||
|
||||
/* There is only one PIO Controller */
|
||||
#define PIO_CTRL 0
|
||||
|
||||
#define PIO_TC0 PIO_CTRL
|
||||
#define TCLK0 P0
|
||||
#define TIOA0 P1
|
||||
#define TIOB0 P2
|
||||
#define PIN_TC0 (TIOA0|TIOB0|TCLK0)
|
||||
|
||||
#define PIO_TC1 PIO_CTRL
|
||||
#define TCLK1 P3
|
||||
#define TIOA1 P4
|
||||
#define TIOB1 P5
|
||||
#define PIN_TC1 (TIOA1|TIOB1|TCLK1)
|
||||
|
||||
#define PIO_TC2 PIO_CTRL
|
||||
#define TCLK2 P6
|
||||
#define TIOA2 P7
|
||||
#define TIOB2 P8
|
||||
#define PIN_TC2 (TIOA2|TIOB2|TCLK2)
|
||||
|
||||
#define PIO_EXT_IRQ PIO_CTRL
|
||||
#define PIN_IRQ0 P9
|
||||
#define PIN_IRQ1 P10
|
||||
#define PIN_IRQ2 P11
|
||||
#define PIN_FIQ P12
|
||||
|
||||
#define PIO_USART0 PIO_CTRL
|
||||
#define SCK0 P13
|
||||
#define TXD0 P14
|
||||
#define RXD0 P15
|
||||
#define PIN_USART0 (SCK0|TXD0|RXD0)
|
||||
|
||||
#define PIO_USART1 PIO_CTRL
|
||||
#define SCK1 P20
|
||||
#define TXD1 P21
|
||||
#define RXD1 P22
|
||||
#define PIN_USART1 (SCK1|TXD1|RXD1)
|
||||
|
||||
#define MCKO P25
|
||||
#define CS2 P26
|
||||
#define CS3 P27
|
||||
#define CS4 P31
|
||||
#define CS5 P30
|
||||
#define CS6 P29
|
||||
#define CS7 P28
|
||||
|
||||
#endif /* pio_h */
|
||||
//*---------------------------------------------------------------------------
|
||||
//* ATMEL Microcontroller Software Support - ROUSSET -
|
||||
//*---------------------------------------------------------------------------
|
||||
//* The software is delivered "AS IS" without warranty or condition of any
|
||||
//* kind, either express, implied or statutory. This includes without
|
||||
//* limitation any warranty or condition with respect to merchantability or
|
||||
//* fitness for any particular purpose, or against the infringements of
|
||||
//* intellectual property rights of others.
|
||||
//*-----------------------------------------------------------------------------
|
||||
//* File Name : pio.h
|
||||
//* Object : Parallel I/O Definition File
|
||||
//* Translator : ARM Software Development Toolkit V2.11a
|
||||
//*
|
||||
//* 1.0 20/10/97 JCZ : Creation
|
||||
//* 2.0 21/10/98 JCZ : Clean up
|
||||
//*---------------------------------------------------------------------------
|
||||
|
||||
#ifndef pio_h
|
||||
#define pio_h
|
||||
|
||||
/*---------------------------------------------*/
|
||||
/* Parallel I/O Interface Structure Definition */
|
||||
/*---------------------------------------------*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
at91_reg PIO_PER ; /* PIO Enable Register */
|
||||
at91_reg PIO_PDR ; /* PIO Disable Register */
|
||||
at91_reg PIO_PSR ; /* PIO Status Register */
|
||||
at91_reg Reserved0 ;
|
||||
at91_reg PIO_OER ; /* Output Enable Register */
|
||||
at91_reg PIO_ODR ; /* Output Disable Register */
|
||||
at91_reg PIO_OSR ; /* Output Status Register */
|
||||
at91_reg Reserved1 ;
|
||||
at91_reg PIO_IFER ; /* Input Filter Enable Register */
|
||||
at91_reg PIO_IFDR ; /* Input Filter Disable Register */
|
||||
at91_reg PIO_IFSR ; /* Input Filter Status Register */
|
||||
at91_reg Reserved2 ;
|
||||
at91_reg PIO_SODR ; /* Set Output Data Register */
|
||||
at91_reg PIO_CODR ; /* Clear Output Data Register */
|
||||
at91_reg PIO_ODSR ; /* Output Data Status Register */
|
||||
at91_reg PIO_PDSR ; /* Pin Data Status Register */
|
||||
at91_reg PIO_IER ; /* Interrupt Enable Register */
|
||||
at91_reg PIO_IDR ; /* Interrupt Disable Register */
|
||||
at91_reg PIO_IMR ; /* Interrupt Mask Register */
|
||||
at91_reg PIO_ISR ; /* Interrupt Status Register */
|
||||
} StructPIO ;
|
||||
|
||||
/*-----------------------------*/
|
||||
/* PIO Handler type definition */
|
||||
/*-----------------------------*/
|
||||
|
||||
//typedef void (*TypePIOHandler) ( StructPIO *pio_pt, u_int pio_mask ) ;
|
||||
|
||||
/*--------------------------------*/
|
||||
/* Device Dependancies Definition */
|
||||
/*--------------------------------*/
|
||||
|
||||
/* Number of PIO Controller */
|
||||
#define NB_PIO_CTRL 1
|
||||
/* Base Address */
|
||||
#define PIO_BASE ((StructPIO *) 0xFFFF0000 )
|
||||
/* Number of PIO Lines */
|
||||
#define NB_PIO 32
|
||||
|
||||
/* Parallel I/O Bits Definition */
|
||||
#define P0 (1<<0)
|
||||
#define P1 (1<<1)
|
||||
#define P2 (1<<2)
|
||||
#define P3 (1<<3)
|
||||
#define P4 (1<<4)
|
||||
#define P5 (1<<5)
|
||||
#define P6 (1<<6)
|
||||
#define P7 (1<<7)
|
||||
#define P8 (1<<8)
|
||||
#define P9 (1<<9)
|
||||
#define P10 (1<<10)
|
||||
#define P11 (1<<11)
|
||||
#define P12 (1<<12)
|
||||
#define P13 (1<<13)
|
||||
#define P14 (1<<14)
|
||||
#define P15 (1<<15)
|
||||
#define P16 (1<<16)
|
||||
#define P17 (1<<17)
|
||||
#define P18 (1<<18)
|
||||
#define P19 (1<<19)
|
||||
#define P20 (1<<20)
|
||||
#define P21 (1<<21)
|
||||
#define P22 (1<<22)
|
||||
#define P23 (1<<23)
|
||||
#define P24 (1<<24)
|
||||
#define P25 (1<<25)
|
||||
#define P26 (1<<26)
|
||||
#define P27 (1<<27)
|
||||
#define P28 (1<<28)
|
||||
#define P29 (1<<29)
|
||||
#define P30 (1<<30)
|
||||
#define P31 (1<<31)
|
||||
|
||||
/* PIO Multiplexing Definition */
|
||||
|
||||
/* There is only one PIO Controller */
|
||||
#define PIO_CTRL 0
|
||||
|
||||
#define PIO_TC0 PIO_CTRL
|
||||
#define TCLK0 P0
|
||||
#define TIOA0 P1
|
||||
#define TIOB0 P2
|
||||
#define PIN_TC0 (TIOA0|TIOB0|TCLK0)
|
||||
|
||||
#define PIO_TC1 PIO_CTRL
|
||||
#define TCLK1 P3
|
||||
#define TIOA1 P4
|
||||
#define TIOB1 P5
|
||||
#define PIN_TC1 (TIOA1|TIOB1|TCLK1)
|
||||
|
||||
#define PIO_TC2 PIO_CTRL
|
||||
#define TCLK2 P6
|
||||
#define TIOA2 P7
|
||||
#define TIOB2 P8
|
||||
#define PIN_TC2 (TIOA2|TIOB2|TCLK2)
|
||||
|
||||
#define PIO_EXT_IRQ PIO_CTRL
|
||||
#define PIN_IRQ0 P9
|
||||
#define PIN_IRQ1 P10
|
||||
#define PIN_IRQ2 P11
|
||||
#define PIN_FIQ P12
|
||||
|
||||
#define PIO_USART0 PIO_CTRL
|
||||
#define SCK0 P13
|
||||
#define TXD0 P14
|
||||
#define RXD0 P15
|
||||
#define PIN_USART0 (SCK0|TXD0|RXD0)
|
||||
|
||||
#define PIO_USART1 PIO_CTRL
|
||||
#define SCK1 P20
|
||||
#define TXD1 P21
|
||||
#define RXD1 P22
|
||||
#define PIN_USART1 (SCK1|TXD1|RXD1)
|
||||
|
||||
#define MCKO P25
|
||||
#define CS2 P26
|
||||
#define CS3 P27
|
||||
#define CS4 P31
|
||||
#define CS5 P30
|
||||
#define CS6 P29
|
||||
#define CS7 P28
|
||||
|
||||
#endif /* pio_h */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
# FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
#
|
||||
# This file is part of the FreeRTOS.org distribution.
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,13 +27,16 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef FREERTOS_CONFIG_H
|
||||
#define FREERTOS_CONFIG_H
|
||||
|
||||
#include <LPC2138.h>
|
||||
#include <LPC21xx.h>
|
||||
#define vPortYieldProcessor swi_handler
|
||||
|
||||
/* For compatability with the LPC2106 header. */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
111
Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h
Normal file
111
Demo/ARM7_LPC2368_Rowley/FreeRTOSConfig.h
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
FreeRTOS V3.2.3 - Copyright (C) 2003-2005 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
FreeRTOS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FreeRTOS is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FreeRTOS; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
A special exception to the GPL can be applied should you wish to distribute
|
||||
a combined work that includes FreeRTOS, without being obliged to provide
|
||||
the source code for any proprietary components. See the licensing section
|
||||
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||
can be applied.
|
||||
|
||||
***************************************************************************
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef FREERTOS_CONFIG_H
|
||||
#define FREERTOS_CONFIG_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <targets/LPC2368.h>
|
||||
#define vPortYieldProcessor swi_handler
|
||||
/*-----------------------------------------------------------
|
||||
* Application specific definitions.
|
||||
*
|
||||
* These definitions should be adjusted for your particular hardware and
|
||||
* application requirements.
|
||||
*
|
||||
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
|
||||
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 0
|
||||
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 57600000 ) /* =12Mhz xtal multiplied by 5 using the PLL. */
|
||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )
|
||||
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 120 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 18 * 1024 ) )
|
||||
#define configMAX_TASK_NAME_LEN ( 16 )
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configIDLE_SHOULD_YIELD 1
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||
|
||||
|
||||
/* Set the following definitions to 1 to include the API function, or zero
|
||||
to exclude the API function. */
|
||||
|
||||
#define INCLUDE_vTaskPrioritySet 1
|
||||
#define INCLUDE_uxTaskPriorityGet 1
|
||||
#define INCLUDE_vTaskDelete 1
|
||||
#define INCLUDE_vTaskCleanUpResources 0
|
||||
#define INCLUDE_vTaskSuspend 1
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_xTaskGetCurrentTaskHandle 1
|
||||
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
||||
|
||||
|
||||
#ifndef sbi
|
||||
#define sbi(x,y) x|=(1 << (y))
|
||||
#endif
|
||||
|
||||
#ifndef cbi
|
||||
#define cbi(x,y) x&=~(1 << (y))
|
||||
#endif
|
||||
|
||||
#ifndef tstb
|
||||
#define tstb(x,y) (x & (1 << (y)) ? 1 : 0)
|
||||
#endif
|
||||
|
||||
#ifndef toggle
|
||||
#define toggle(x,y) x^=(1 << (y))
|
||||
#endif
|
||||
|
||||
#ifndef BIT
|
||||
#define BIT(x) (1 << (x))
|
||||
|
||||
|
||||
#define VICVectAddr VICAddress
|
||||
|
||||
typedef struct
|
||||
{
|
||||
long xColumn;
|
||||
signed char *pcMessage;
|
||||
} xLCDMessage;
|
||||
|
||||
#endif
|
||||
392
Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c
Normal file
392
Demo/ARM7_LPC2368_Rowley/LCD/portlcd.c
Normal file
@@ -0,0 +1,392 @@
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Project : lwIP Web
|
||||
* Subproject :
|
||||
* Name : portlcd.c
|
||||
* Function : Routines for LCD
|
||||
* Designer : K. Sterckx
|
||||
* Creation date : 22/01/2007
|
||||
* Compiler : GNU ARM
|
||||
* Processor : LPC2368
|
||||
* Last update :
|
||||
* Last updated by :
|
||||
* History :
|
||||
* based on example code from NXP
|
||||
*
|
||||
************************************************************************
|
||||
*
|
||||
* This code is used to place text on the LCD.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include <targets/LPC2368.h>
|
||||
#include "portlcd.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "Task.h"
|
||||
|
||||
/* Please note, on old MCB2300 board, the LCD_E bit is p1.30, on the new board
|
||||
it's p1.31, please check the schematic carefully, and change LCD_CTRL and LCD_E
|
||||
accordingly if you have a different board. */
|
||||
|
||||
/* LCD IO definitions */
|
||||
#define LCD_E 0x80000000 /* Enable control pin */
|
||||
#define LCD_RW 0x20000000 /* Read/Write control pin */
|
||||
#define LCD_RS 0x10000000 /* Data/Instruction control */
|
||||
#define LCD_CTRL 0xB0000000 /* Control lines mask */
|
||||
#define LCD_DATA 0x0F000000 /* Data lines mask */
|
||||
|
||||
/* Local variables */
|
||||
static unsigned int lcd_ptr;
|
||||
|
||||
/* 8 user defined characters to be loaded into CGRAM (used for bargraph) */
|
||||
static const unsigned char UserFont[8][8] = {
|
||||
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
|
||||
{ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 },
|
||||
{ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18 },
|
||||
{ 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C },
|
||||
{ 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E },
|
||||
{ 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F },
|
||||
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
|
||||
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }
|
||||
};
|
||||
|
||||
/* Local Function Prototypes */
|
||||
static void lcd_write( unsigned int c );
|
||||
static void lcd_write_4bit( unsigned int c );
|
||||
static unsigned int lcd_read_stat( void );
|
||||
static void lcd_write_cmd( unsigned int c );
|
||||
static void lcd_write_data( unsigned int d );
|
||||
static void lcd_wait_busy( void );
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: lcd_write_4bit
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: four bits to write
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
static void lcd_write_4bit(unsigned int c)
|
||||
{
|
||||
/* Write a 4-bit command to LCD controller. */
|
||||
FIO1DIR |= LCD_DATA | LCD_CTRL;
|
||||
FIO1CLR = LCD_RW | LCD_DATA;
|
||||
FIO1SET = (c & 0xF) << 24;
|
||||
FIO1SET = LCD_E;
|
||||
vTaskDelay(0);
|
||||
FIO1CLR = LCD_E;
|
||||
vTaskDelay(0);
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: lcd_write
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: word to write
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
static void lcd_write(unsigned int c)
|
||||
{
|
||||
/* Write data/command to LCD controller. */
|
||||
lcd_write_4bit (c >> 4);
|
||||
lcd_write_4bit (c);
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: lcd_read_stat
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: None
|
||||
** Returned value: status
|
||||
**
|
||||
******************************************************************************/
|
||||
static unsigned int lcd_read_stat(void)
|
||||
{
|
||||
/* Read status of LCD controller (ST7066) */
|
||||
unsigned int stat;
|
||||
|
||||
FIO1DIR &= ~LCD_DATA;
|
||||
FIO1CLR = LCD_RS;
|
||||
FIO1SET = LCD_RW;
|
||||
vTaskDelay( 0 );
|
||||
FIO1SET = LCD_E;
|
||||
vTaskDelay( 0 );
|
||||
stat = (FIO1PIN >> 20) & 0xF0;
|
||||
FIO1CLR = LCD_E;
|
||||
vTaskDelay( 0 );
|
||||
FIO1SET = LCD_E;
|
||||
vTaskDelay( 0 );
|
||||
stat |= (FIO1PIN >> 24) & 0xF;
|
||||
FIO1CLR = LCD_E;
|
||||
return (stat);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: lcd_wait_busy
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: None
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
static void lcd_wait_busy(void)
|
||||
{
|
||||
/* Wait until LCD controller (ST7066) is busy. */
|
||||
unsigned int stat;
|
||||
|
||||
do
|
||||
{
|
||||
stat = lcd_read_stat();
|
||||
}
|
||||
while (stat & 0x80); /* Wait for busy flag */
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: lcd_write_cmd
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: command word
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
static void lcd_write_cmd(unsigned int c)
|
||||
{
|
||||
/* Write command to LCD controller. */
|
||||
lcd_wait_busy();
|
||||
FIO1CLR = LCD_RS;
|
||||
lcd_write(c);
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: lcd_write_data
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: data word
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
static void lcd_write_data(unsigned int d)
|
||||
{
|
||||
/* Write data to LCD controller. */
|
||||
lcd_wait_busy();
|
||||
FIO1SET = LCD_RS;
|
||||
lcd_write(d);
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_init
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: None
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_init(void)
|
||||
{
|
||||
/* Initialize the ST7066 LCD controller to 4-bit mode. */
|
||||
PINSEL3 = 0x00000000;
|
||||
#if USE_FIO
|
||||
SCS |= 0x00000001;/* set GPIOx to use Fast I/O */
|
||||
#endif
|
||||
FIO1DIR |= LCD_CTRL | LCD_DATA;
|
||||
FIO1CLR = LCD_RW | LCD_RS | LCD_DATA;
|
||||
|
||||
lcd_write_4bit(0x3); /* Select 4-bit interface */
|
||||
vTaskDelay(100);
|
||||
lcd_write_4bit(0x3);
|
||||
vTaskDelay(100);
|
||||
lcd_write_4bit(0x3);
|
||||
lcd_write_4bit(0x2);
|
||||
|
||||
lcd_write_cmd(0x28); /* 2 lines, 5x8 character matrix */
|
||||
lcd_write_cmd(0x0e); /* Display ctrl:Disp/Curs/Blnk=ON */
|
||||
lcd_write_cmd(0x06); /* Entry mode: Move right, no shift */
|
||||
|
||||
LCD_load( (unsigned char *)&UserFont, sizeof (UserFont) );
|
||||
LCD_cls();
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_load
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: pointer to the buffer and counter
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_load(unsigned char *fp, unsigned int cnt)
|
||||
{
|
||||
/* Load user-specific characters into CGRAM */
|
||||
unsigned int i;
|
||||
|
||||
lcd_write_cmd( 0x40 ); /* Set CGRAM address counter to 0 */
|
||||
for (i = 0; i < cnt; i++, fp++)
|
||||
{
|
||||
lcd_write_data( *fp );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_gotoxy
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: pixel X and Y
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_gotoxy(unsigned int x, unsigned int y)
|
||||
{
|
||||
/* Set cursor position on LCD display. Left corner: 1,1, right: 16,2 */
|
||||
unsigned int c;
|
||||
|
||||
c = --x;
|
||||
if (--y)
|
||||
{
|
||||
c |= 0x40;
|
||||
}
|
||||
lcd_write_cmd (c | 0x80);
|
||||
lcd_ptr = y*16 + x;
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_cls
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: None
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_cls(void)
|
||||
{
|
||||
/* Clear LCD display, move cursor to home position. */
|
||||
lcd_write_cmd (0x01);
|
||||
LCD_gotoxy (1,1);
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_cur_off
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: None
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_cur_off(void)
|
||||
{
|
||||
/* Switch off LCD cursor. */
|
||||
lcd_write_cmd(0x0c);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_on
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: None
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_on(void)
|
||||
{
|
||||
/* Switch on LCD and enable cursor. */
|
||||
lcd_write_cmd (0x0e);
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_putc
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: unsigned char character
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_putc(unsigned char c)
|
||||
{
|
||||
/* Print a character to LCD at current cursor position. */
|
||||
if (lcd_ptr == 16)
|
||||
{
|
||||
lcd_write_cmd (0xc0);
|
||||
}
|
||||
lcd_write_data(c);
|
||||
lcd_ptr++;
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_puts
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: pointer to the buffer
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_puts(unsigned char *sp)
|
||||
{
|
||||
/* Print a string to LCD display. */
|
||||
while (*sp)
|
||||
{
|
||||
LCD_putc (*sp++);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
** Function name: LCD_bargraph
|
||||
**
|
||||
** Descriptions:
|
||||
**
|
||||
** parameters: value and size
|
||||
** Returned value: None
|
||||
**
|
||||
******************************************************************************/
|
||||
void LCD_bargraph(unsigned int val, unsigned int size)
|
||||
{
|
||||
/* Print a bargraph to LCD display. */
|
||||
/* - val: value 0..100 % */
|
||||
/* - size: size of bargraph 1..16 */
|
||||
unsigned int i;
|
||||
|
||||
val = val * size / 20; /* Display matrix 5 x 8 pixels */
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
if (val > 5)
|
||||
{
|
||||
LCD_putc(5);
|
||||
val -= 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_putc(val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
31
Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h
Normal file
31
Demo/ARM7_LPC2368_Rowley/LCD/portlcd.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*****************************************************************************
|
||||
* rtc.h: Header file for NXP LPC23xx/24xx Family Microprocessors
|
||||
*
|
||||
* Copyright(C) 2006, NXP Semiconductor
|
||||
* All rights reserved.
|
||||
*
|
||||
* History
|
||||
* 2006.07.13 ver 1.00 Prelimnary version, first Release
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __PORTLCD_H
|
||||
#define __PORTLCD_H
|
||||
|
||||
extern void LCD_init(void);
|
||||
extern void LCD_load(unsigned char *fp, unsigned int cnt);
|
||||
extern void LCD_gotoxy(unsigned int x, unsigned int y);
|
||||
extern void LCD_cls(void);
|
||||
extern void LCD_cur_off(void);
|
||||
extern void LCD_on(void);
|
||||
extern void LCD_putc(unsigned char c);
|
||||
extern void LCD_puts(unsigned char *sp);
|
||||
extern void LCD_bargraph(unsigned int val, unsigned int size);
|
||||
|
||||
extern void LCD_putnibble(unsigned char nibble);
|
||||
extern void LCD_puthexbyte(unsigned char abyte);
|
||||
|
||||
|
||||
#endif /* end __PORTLCD_H */
|
||||
/*****************************************************************************
|
||||
** End Of File
|
||||
******************************************************************************/
|
||||
114
Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c
Normal file
114
Demo/ARM7_LPC2368_Rowley/ParTest/ParTest.c
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FreeRTOS.org; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
A special exception to the GPL can be applied should you wish to distribute
|
||||
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||
the source code for any proprietary components. See the licensing section
|
||||
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||
can be applied.
|
||||
|
||||
***************************************************************************
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
/* FreeRTOS.org includes. */
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
/* Demo application includes. */
|
||||
#include "partest.h"
|
||||
|
||||
#define partstFIRST_IO ( ( unsigned portLONG ) 0x01 )
|
||||
#define partstNUM_LEDS ( 8 )
|
||||
#define partstALL_OUTPUTS_OFF ( ( unsigned portLONG ) 0xff )
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
* Simple parallel port IO routines.
|
||||
*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestInitialise( void )
|
||||
{
|
||||
PINSEL10 = 0;
|
||||
FIO2DIR = 0x000000FF;
|
||||
FIO2MASK = 0x00000000;
|
||||
FIO2CLR = 0xFF;
|
||||
SCS |= (1<<0); //fast mode for port 0 and 1
|
||||
|
||||
FIO2CLR = partstALL_OUTPUTS_OFF;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
|
||||
{
|
||||
unsigned portLONG ulLED = partstFIRST_IO;
|
||||
|
||||
if( uxLED < partstNUM_LEDS )
|
||||
{
|
||||
/* Rotate to the wanted bit of port */
|
||||
ulLED <<= ( unsigned portLONG ) uxLED;
|
||||
|
||||
/* Set of clear the output. */
|
||||
if( xValue )
|
||||
{
|
||||
FIO2CLR = ulLED;
|
||||
}
|
||||
else
|
||||
{
|
||||
FIO2SET = ulLED;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
|
||||
{
|
||||
unsigned portLONG ulLED = partstFIRST_IO, ulCurrentState;
|
||||
|
||||
if( uxLED < partstNUM_LEDS )
|
||||
{
|
||||
/* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED
|
||||
attached. */
|
||||
ulLED <<= ( unsigned portLONG ) uxLED;
|
||||
|
||||
/* If this bit is already set, clear it, and visa versa. */
|
||||
ulCurrentState = FIO2PIN;
|
||||
if( ulCurrentState & ulLED )
|
||||
{
|
||||
FIO2CLR = ulLED;
|
||||
}
|
||||
else
|
||||
{
|
||||
FIO2SET = ulLED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
unsigned portBASE_TYPE uxParTextGetLED( unsigned portBASE_TYPE uxLED )
|
||||
{
|
||||
unsigned portLONG ulLED = partstFIRST_IO;
|
||||
|
||||
ulLED <<= ( unsigned portLONG ) uxLED;
|
||||
|
||||
return ( FIO2PIN & ulLED );
|
||||
}
|
||||
|
||||
|
||||
103
Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp
Normal file
103
Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp
Normal file
@@ -0,0 +1,103 @@
|
||||
<!DOCTYPE CrossStudio_Project_File>
|
||||
<solution version="1" Name="RTOSDemo" >
|
||||
<project Name="RTOSDemo" >
|
||||
<configuration arm_target_loader_parameter="12000000" Target="LPC2368" arm_target_flash_loader_file_path="$(StudioDir)/targets/Philips_LPC210X/Release/Loader_lpc2300.elf" arm_simulator_memory_simulation_parameter="LPC23;0x80000;0x8000;0x10000;0x10000" property_groups_file_path="$(StudioDir)/targets/Philips_LPC210X/propertyGroups23xx.xml" oscillator_frequency="12MHz" linker_memory_map_file="$(StudioDir)/targets/Philips_LPC210X/Philips_LPC2368_MemoryMap.xml" gcc_entry_point="reset_handler" build_remove_unused_symbols="No" c_preprocessor_definitions="GCC_ARM7;SUPERVISOR_START;VECTORED_IRQ_INTERRUPTS;PACK_STRUCT_END=__attribute__((packed));ALIGN_STRUCT_END=__attribute__((aligned(4)))" arm_architecture="v4T" linker_additional_files="$(StudioDir)/lib/liblpc2000$(LibExt)$(LIB)" c_user_include_directories=".;$(ProjectDir)\\..\\..\\Source\\include;$(ProjectDir)\\..\\..\\Source\\GCC\\ARM7_LPC2000;$(ProjectDir)\\..\\Common\\Include;$(ProjectDir)\\LCD;$(ProjectDir)\\webserver;$(ProjectDir)\\..\\Common\\ethernet\\uIP\\uip-1.0\\uip" project_directory="" link_include_startup_code="No" gcc_optimization_level="Level 1" arm_target_flash_loader_type="LIBMEM RPC Loader" project_type="Executable" c_additional_options="" linker_printf_fmt_level="long" arm_linker_stack_size="10" Name="Common" c_system_include_directories="$(StudioDir)\include" arm_target_debug_interface_type="ARM7TDI" arm_core_type="ARM7TDMI-S" arm_simulator_memory_simulation_filename="$(StudioDir)/targets/Philips_LPC210X/LPC2000SimulatorMemory.dll" arm_linker_svc_stack_size="1024" />
|
||||
<configuration linker_section_placement_file="$(StudioDir)/targets/sram_placement.xml" target_reset_script="SRAMReset()" Name="RAM" Placement="RAM" />
|
||||
<configuration arm_target_flash_loader_file_path="$(StudioDir)/targets/Philips_LPC210X/Release/Loader_lpc2300.elf" linker_section_placement_file="$(StudioDir)/targets/flash_placement.xml" target_reset_script="FLASHReset()" arm_target_flash_loader_type="LIBMEM RPC Loader" Name="Flash" Placement="Flash" />
|
||||
<folder Name="Demo Source" >
|
||||
<configuration filter="c;cpp;cxx;cc;h;s;asm;inc" Name="Common" />
|
||||
<file file_name="main.c" Name="main.c" />
|
||||
<file file_name="LCD/portlcd.c" Name="portlcd.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/Minimal/blocktim.c" Name="blocktim.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/Minimal/integer.c" Name="integer.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/Minimal/BlockQ.c" Name="BlockQ.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="ParTest/ParTest.c" Name="ParTest.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/Minimal/flash.c" Name="flash.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="webserver/EMAC_ISR.c" Name="EMAC_ISR.c" >
|
||||
<configuration arm_instruction_set="ARM" Name="THUMB" />
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="webserver/emac.c" Name="emac.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
<configuration asm_additional_options="" Name="Common" />
|
||||
</file>
|
||||
<file file_name="../Common/Minimal/death.c" Name="death.c" />
|
||||
<file file_name="../Common/Minimal/PollQ.c" Name="PollQ.c" />
|
||||
<file file_name="../Common/Minimal/semtest.c" Name="semtest.c" />
|
||||
</folder>
|
||||
<folder Name="System Files" >
|
||||
<file file_name="$(StudioDir)/source/crt0.s" Name="crt0.s" />
|
||||
<file file_name="$(StudioDir)/targets/Philips_LPC210X/Philips_LPC230X_Startup.s" Name="Philips_LPC230X_Startup.s" />
|
||||
<file file_name="$(StudioDir)/targets/Philips_LPC210X/LPC230x.c" Name="LPC230x.c" />
|
||||
<file file_name="$(StudioDir)/targets/Philips_LPC210X/Philips_LPC210X_Target.js" Name="Philips_LPC210X_Target.js" >
|
||||
<configuration Name="Common" file_type="Reset Script" />
|
||||
</file>
|
||||
<file file_name="$(StudioDir)/targets/Philips_LPC210X/VIC_PL192.c" Name="VIC_PL192.c" />
|
||||
<file file_name="$(StudioDir)/targets/Philips_LPC210X/VIC_PL192_irq_handler.s" Name="VIC_PL192_irq_handler.s" />
|
||||
</folder>
|
||||
<folder Name="FreeRTOS.org Source" >
|
||||
<file file_name="../../Source/tasks.c" Name="tasks.c" />
|
||||
<file file_name="../../Source/list.c" Name="list.c" />
|
||||
<file file_name="../../Source/queue.c" Name="queue.c" />
|
||||
<file file_name="../../Source/portable/GCC/ARM7_LPC23xx/port.c" Name="port.c" />
|
||||
<file file_name="../../Source/portable/GCC/ARM7_LPC23xx/portISR.c" Name="portISR.c" >
|
||||
<configuration arm_instruction_set="ARM" Name="Common" />
|
||||
</file>
|
||||
<file file_name="../../Source/portable/MemMang/heap_2.c" Name="heap_2.c" />
|
||||
</folder>
|
||||
<configuration linker_scanf_fmt_level="int" linker_keep_symbols="_vectors" c_preprocessor_definitions="" gcc_optimization_level="Level 1" arm_target_flash_loader_type="LIBMEM RPC Loader" linker_scanf_character_group_matching_enabled="No" linker_printf_fmt_level="int" Name="ARM Flash Debug" />
|
||||
<folder Name="uIP Source" >
|
||||
<file file_name="webserver/uIP_Task.c" Name="uIP_Task.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="webserver/httpd.c" Name="httpd.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="webserver/httpd-cgi.c" Name="httpd-cgi.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="webserver/httpd-fs.c" Name="httpd-fs.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="webserver/http-strings.c" Name="http-strings.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/ethernet/uIP/uip-1.0/uip/uip_arp.c" Name="uip_arp.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/ethernet/uIP/uip-1.0/uip/psock.c" Name="psock.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/ethernet/uIP/uip-1.0/uip/timer.c" Name="timer.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
<file file_name="../Common/ethernet/uIP/uip-1.0/uip/uip.c" Name="uip.c" >
|
||||
<configuration build_exclude_from_build="No" Name="ARM Flash Debug" />
|
||||
</file>
|
||||
</folder>
|
||||
<configuration c_preprocessor_definitions="THUMB_INTERWORK" Name="THUMB" />
|
||||
<configuration c_preprocessor_definitions="STARTUP_FROM_RESET" gcc_optimization_level="Optimize For Size" Name="ARM Flash Release" />
|
||||
<configuration arm_linker_fiq_stack_size="0" arm_linker_stack_size="0" Name="THUMB Flash Debug" arm_linker_svc_stack_size="512" arm_linker_heap_size="0" />
|
||||
</project>
|
||||
<configuration inherited_configurations="ARM;Flash;Debug" Name="ARM Flash Debug" />
|
||||
<configuration arm_library_instruction_set="ARM" c_preprocessor_definitions="__ARM" arm_instruction_set="ARM" hidden="Yes" Name="ARM" />
|
||||
<configuration c_preprocessor_definitions="__FLASH_BUILD" hidden="Yes" Name="Flash" />
|
||||
<configuration c_preprocessor_definitions="DEBUG" link_include_startup_code="No" gcc_optimization_level="None" build_debug_information="Yes" hidden="Yes" Name="Debug" />
|
||||
<configuration inherited_configurations="ARM;Flash;Release" Name="ARM Flash Release" />
|
||||
<configuration c_preprocessor_definitions="NDEBUG" link_include_startup_code="No" gcc_optimization_level="Level 1" build_debug_information="No" hidden="Yes" Name="Release" />
|
||||
<configuration inherited_configurations="THUMB;Flash;Debug" Name="THUMB Flash Debug" />
|
||||
<configuration arm_library_instruction_set="THUMB" c_preprocessor_definitions="__THUMB" arm_instruction_set="THUMB" hidden="Yes" Name="THUMB" />
|
||||
<configuration arm_linker_stack_size="256" Name="Common" />
|
||||
</solution>
|
||||
74
Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs
Normal file
74
Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzs
Normal file
@@ -0,0 +1,74 @@
|
||||
<!DOCTYPE CrossStudio_for_ARM_Session_File>
|
||||
<session>
|
||||
<Autos>
|
||||
<Watches active="0" />
|
||||
</Autos>
|
||||
<Bookmarks/>
|
||||
<Breakpoints>
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="D_Abort" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="FIQ" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="IRQ" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="P_Abort" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="Reset" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="SWI" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="Undef" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="BusFault" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="ExceptionEntryReturnFault" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="HardFault" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="MemManage" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="Reset" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="UsageFault_CheckingError" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="UsageFault_Coprocessor" filename="" />
|
||||
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="UsageFault_StateError" filename="" />
|
||||
</Breakpoints>
|
||||
<ExecutionCountWindow/>
|
||||
<Memory1>
|
||||
<MemoryWindow autoEvaluate="0" addressText="0x4000592c" numColumns="8" sizeText="2000" dataSize="1" radix="16" addressSpace="" />
|
||||
</Memory1>
|
||||
<Memory2>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" addressSpace="" />
|
||||
</Memory2>
|
||||
<Memory3>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" addressSpace="" />
|
||||
</Memory3>
|
||||
<Memory4>
|
||||
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" addressSpace="" />
|
||||
</Memory4>
|
||||
<Project>
|
||||
<ProjectSessionItem path="RTOSDemo" name="unnamed" />
|
||||
<ProjectSessionItem path="RTOSDemo;RTOSDemo" name="unnamed" />
|
||||
<ProjectSessionItem path="RTOSDemo;RTOSDemo;Demo Source" name="unnamed" />
|
||||
</Project>
|
||||
<Register1>
|
||||
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="CPU - Current Mode" visibleGroups="CPU - Current Mode" decimalDisplays="" binaryDisplays="" />
|
||||
</Register1>
|
||||
<Register2>
|
||||
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="CPU - Current Mode" visibleGroups="CPU - Current Mode" decimalDisplays="" binaryDisplays="" />
|
||||
</Register2>
|
||||
<Register3>
|
||||
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="" visibleGroups="" decimalDisplays="" binaryDisplays="" />
|
||||
</Register3>
|
||||
<Register4>
|
||||
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="" visibleGroups="" decimalDisplays="" binaryDisplays="" />
|
||||
</Register4>
|
||||
<SourceNavigatorWindow/>
|
||||
<TraceWindow>
|
||||
<Trace wrap="Yes" type="1" enabled="Yes" />
|
||||
</TraceWindow>
|
||||
<Watch1>
|
||||
<Watches active="0" />
|
||||
</Watch1>
|
||||
<Watch2>
|
||||
<Watches active="0" />
|
||||
</Watch2>
|
||||
<Watch3>
|
||||
<Watches active="0" />
|
||||
</Watch3>
|
||||
<Watch4>
|
||||
<Watches active="1" >
|
||||
<Watchpoint linenumber="0" radix="-1" name="xStart" expression="xStart" filename="" />
|
||||
</Watches>
|
||||
</Watch4>
|
||||
<Files/>
|
||||
<ARMCrossStudioWindow activeProject="RTOSDemo" autoConnectTarget="/USB CrossConnect for ARM" debugSearchFileMap="" fileDialogInitialDirectory="C:\E\Dev\FreeRTOS\Demo\ARM7_LPC2368_Rowley\webserver" fileDialogDefaultFilter="*.cpp;*.cxx;*.cc;*.c;*.h" autoConnectCapabilities="1407" debugSearchPath="" buildConfiguration="ARM Flash Debug" />
|
||||
</session>
|
||||
235
Demo/ARM7_LPC2368_Rowley/main.c
Normal file
235
Demo/ARM7_LPC2368_Rowley/main.c
Normal file
@@ -0,0 +1,235 @@
|
||||
/*
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FreeRTOS.org; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
A special exception to the GPL can be applied should you wish to distribute
|
||||
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||
the source code for any proprietary components. See the licensing section
|
||||
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||
can be applied.
|
||||
|
||||
***************************************************************************
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
/* Environment includes. */
|
||||
#include <targets/LPC2368.h>
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "Task.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* Demo app includes. */
|
||||
#include "BlockQ.h"
|
||||
#include "death.h"
|
||||
#include "integer.h"
|
||||
#include "blocktim.h"
|
||||
#include "portlcd.h"
|
||||
#include "flash.h"
|
||||
#include "partest.h"
|
||||
#include "semtest.h"
|
||||
#include "pollq.h"
|
||||
|
||||
/* Demo application definitions. */
|
||||
#define mainQUEUE_SIZE ( 3 )
|
||||
#define mainCHECK_DELAY ( ( portTickType ) 5000 / portTICK_RATE_MS )
|
||||
#define mainBASIC_WEB_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2 )
|
||||
|
||||
/* Task priorities. */
|
||||
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainFLASH_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
|
||||
|
||||
/*
|
||||
* Checks the status of all the demo tasks then prints a message to the
|
||||
* CrossStudio terminal IO windows. The message will be either PASS or FAIL
|
||||
* depending on the status of the demo applications tasks. A FAIL status will
|
||||
* be latched.
|
||||
*
|
||||
* Messages are not written directly to the terminal, but passed to vPrintTask
|
||||
* via a queue.
|
||||
*/
|
||||
static void vCheckTask( void *pvParameters );
|
||||
|
||||
/*
|
||||
* The task that handles the uIP stack. All TCP/IP processing is performed in
|
||||
* this task.
|
||||
*/
|
||||
extern void vuIP_Task( void *pvParameters );
|
||||
|
||||
/*
|
||||
* The LCD is written two by more than one task so is controlled by a
|
||||
* 'gatekeeper' task. This is the only task that is actually permitted to
|
||||
* access the LCD directly. Other tasks wanting to display a message send
|
||||
* the message to the gatekeeper.
|
||||
*/
|
||||
static void vLCDTask( void *pvParameters );
|
||||
|
||||
/* The queue used to send messages to the LCD task. */
|
||||
xQueueHandle xLCDQueue;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
int main (void)
|
||||
{
|
||||
/* Setup the led's on the MCB2300 board */
|
||||
vParTestInitialise();
|
||||
|
||||
/* Create the queue used by the LCD task. Messages for display on the LCD
|
||||
are received via this queue. */
|
||||
xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( xLCDMessage ) );
|
||||
|
||||
/* Create the lwIP task. This uses the lwIP RTOS abstraction layer.*/
|
||||
xTaskCreate( vuIP_Task, ( signed portCHAR * ) "uIP", mainBASIC_WEB_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
|
||||
|
||||
/* Start the standard demo tasks. */
|
||||
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
|
||||
vCreateBlockTimeTasks();
|
||||
vStartLEDFlashTasks( mainFLASH_PRIORITY );
|
||||
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
||||
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
|
||||
vStartIntegerMathTasks( mainINTEGER_TASK_PRIORITY );
|
||||
|
||||
/* Start the tasks defined within this file/specific to this demo. */
|
||||
xTaskCreate( vCheckTask, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
|
||||
xTaskCreate( vLCDTask, ( signed portCHAR * ) "LCD", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
|
||||
|
||||
/* The suicide tasks must be created last as they need to know how many
|
||||
tasks were running prior to their creation in order to ascertain whether
|
||||
or not the correct/expected number of tasks are running at any given time. */
|
||||
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
||||
|
||||
/* Start the scheduler. */
|
||||
vTaskStartScheduler();
|
||||
|
||||
/* Will only get here if there was insufficient memory to create the idle
|
||||
task. */
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void vCheckTask( void *pvParameters )
|
||||
{
|
||||
portBASE_TYPE xErrorOccurred = pdFALSE;
|
||||
portTickType xLastExecutionTime;
|
||||
unsigned portBASE_TYPE uxColumn = 0;
|
||||
xLCDMessage xMessage;
|
||||
|
||||
xLastExecutionTime = xTaskGetTickCount();
|
||||
|
||||
xMessage.xColumn = 0;
|
||||
xMessage.pcMessage = "PASS";
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Perform this check every mainCHECK_DELAY milliseconds. */
|
||||
vTaskDelayUntil( &xLastExecutionTime, mainCHECK_DELAY );
|
||||
|
||||
/* Has an error been found in any task? */
|
||||
|
||||
if( xAreBlockingQueuesStillRunning() != pdTRUE )
|
||||
{
|
||||
xErrorOccurred = pdTRUE;
|
||||
}
|
||||
|
||||
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xErrorOccurred = pdTRUE;
|
||||
}
|
||||
|
||||
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xErrorOccurred = pdTRUE;
|
||||
}
|
||||
|
||||
if( xArePollingQueuesStillRunning() != pdTRUE )
|
||||
{
|
||||
xErrorOccurred = pdTRUE;
|
||||
}
|
||||
|
||||
if( xIsCreateTaskStillRunning() != pdTRUE )
|
||||
{
|
||||
xErrorOccurred = pdTRUE;
|
||||
}
|
||||
|
||||
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
|
||||
{
|
||||
xErrorOccurred = pdTRUE;
|
||||
}
|
||||
|
||||
LCD_cls();
|
||||
xMessage.xColumn++;
|
||||
LCD_gotoxy( ( uxColumn & 0x07 ) + 1, ( uxColumn & 0x01 ) + 1 );
|
||||
|
||||
if( xErrorOccurred == pdTRUE )
|
||||
{
|
||||
xMessage.pcMessage = "FAIL";
|
||||
}
|
||||
|
||||
/* Send the message to the LCD gatekeeper for display. */
|
||||
xQueueSend( xLCDQueue, &xMessage, portMAX_DELAY );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vLCDTask( void *pvParameters )
|
||||
{
|
||||
xLCDMessage xMessage;
|
||||
|
||||
/* Initialise the LCD and display a startup message. */
|
||||
LCD_init();
|
||||
LCD_cur_off();
|
||||
LCD_cls();
|
||||
LCD_gotoxy( 1, 1 );
|
||||
LCD_puts( ( signed portCHAR * ) "www.FreeRTOS.org" );
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait for a message to arrive that requires displaying. */
|
||||
while( xQueueReceive( xLCDQueue, &xMessage, portMAX_DELAY ) != pdPASS );
|
||||
|
||||
/* Display the message. Print each message to a different position. */
|
||||
LCD_cls();
|
||||
LCD_gotoxy( ( xMessage.xColumn & 0x07 ) + 1, ( xMessage.xColumn & 0x01 ) + 1 );
|
||||
LCD_puts( xMessage.pcMessage );
|
||||
}
|
||||
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* Keep the compiler quiet. */
|
||||
#include <stdio.h>
|
||||
int __putchar( int c )
|
||||
{
|
||||
return EOF;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
29
Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c
Normal file
29
Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c
Normal file
@@ -0,0 +1,29 @@
|
||||
#include "FreeRTOS.h"
|
||||
#include "Semphr.h"
|
||||
#include "Task.h"
|
||||
|
||||
void vEMAC_ISR( void ) __attribute__((naked));
|
||||
|
||||
extern xSemaphoreHandle xEMACSemaphore;
|
||||
|
||||
void vEMAC_ISR( void )
|
||||
{
|
||||
portENTER_SWITCHING_ISR();
|
||||
|
||||
portBASE_TYPE xSwitchRequired = pdFALSE;
|
||||
|
||||
/* Clear the interrupt. */
|
||||
IntClear = 0xffff;
|
||||
VICVectAddr = 0;
|
||||
|
||||
/* Ensure the uIP task is not blocked as data has arrived. */
|
||||
if( xSemaphoreGiveFromISR( xEMACSemaphore, pdFALSE ) )
|
||||
{
|
||||
xSwitchRequired = pdTRUE;
|
||||
}
|
||||
|
||||
/* Switch to the uIP task. */
|
||||
portEXIT_SWITCHING_ISR( xSwitchRequired );
|
||||
}
|
||||
|
||||
|
||||
42
Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h
Normal file
42
Demo/ARM7_LPC2368_Rowley/webserver/clock-arch.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2006, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the uIP TCP/IP stack
|
||||
*
|
||||
* $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CLOCK_ARCH_H__
|
||||
#define __CLOCK_ARCH_H__
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
|
||||
typedef unsigned long clock_time_t;
|
||||
#define CLOCK_CONF_SECOND configTICK_RATE_HZ
|
||||
|
||||
#endif /* __CLOCK_ARCH_H__ */
|
||||
412
Demo/ARM7_LPC2368_Rowley/webserver/emac.c
Normal file
412
Demo/ARM7_LPC2368_Rowley/webserver/emac.c
Normal file
@@ -0,0 +1,412 @@
|
||||
/******************************************************************
|
||||
***** *****
|
||||
***** Name: cs8900.c *****
|
||||
***** Ver.: 1.0 *****
|
||||
***** Date: 07/05/2001 *****
|
||||
***** Auth: Andreas Dannenberg *****
|
||||
***** HTWK Leipzig *****
|
||||
***** university of applied sciences *****
|
||||
***** Germany *****
|
||||
***** Func: ethernet packet-driver for use with LAN- *****
|
||||
***** controller CS8900 from Crystal/Cirrus Logic *****
|
||||
***** *****
|
||||
***** Keil: Module modified for use with Philips *****
|
||||
***** LPC2378 EMAC Ethernet controller *****
|
||||
***** *****
|
||||
******************************************************************/
|
||||
|
||||
/* Adapted from file originally written by Andreas Dannenberg. Supplied with permission. */
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "Semphr.h"
|
||||
#include "task.h"
|
||||
#include "EMAC.h"
|
||||
|
||||
/* The semaphore used to wake the uIP task when data arives. */
|
||||
xSemaphoreHandle xEMACSemaphore = NULL;
|
||||
|
||||
static unsigned short *rptr;
|
||||
static unsigned short *tptr;
|
||||
|
||||
// easyWEB internal function
|
||||
// help function to swap the byte order of a WORD
|
||||
|
||||
static unsigned short SwapBytes(unsigned short Data)
|
||||
{
|
||||
return (Data >> 8) | (Data << 8);
|
||||
}
|
||||
|
||||
// Keil: function added to write PHY
|
||||
void write_PHY (int PhyReg, int Value)
|
||||
{
|
||||
unsigned int tout;
|
||||
|
||||
MADR = DP83848C_DEF_ADR | PhyReg;
|
||||
MWTD = Value;
|
||||
|
||||
/* Wait utill operation completed */
|
||||
tout = 0;
|
||||
for (tout = 0; tout < MII_WR_TOUT; tout++) {
|
||||
if ((MIND & MIND_BUSY) == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Keil: function added to read PHY
|
||||
unsigned short read_PHY (unsigned char PhyReg)
|
||||
{
|
||||
unsigned int tout;
|
||||
|
||||
MADR = DP83848C_DEF_ADR | PhyReg;
|
||||
MCMD = MCMD_READ;
|
||||
|
||||
/* Wait until operation completed */
|
||||
tout = 0;
|
||||
for (tout = 0; tout < MII_RD_TOUT; tout++) {
|
||||
if ((MIND & MIND_BUSY) == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
MCMD = 0;
|
||||
return (MRDD);
|
||||
}
|
||||
|
||||
|
||||
// Keil: function added to initialize Rx Descriptors
|
||||
void rx_descr_init (void)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < NUM_RX_FRAG; i++) {
|
||||
RX_DESC_PACKET(i) = RX_BUF(i);
|
||||
RX_DESC_CTRL(i) = RCTRL_INT | (ETH_FRAG_SIZE-1);
|
||||
RX_STAT_INFO(i) = 0;
|
||||
RX_STAT_HASHCRC(i) = 0;
|
||||
}
|
||||
|
||||
/* Set EMAC Receive Descriptor Registers. */
|
||||
RxDescriptor = RX_DESC_BASE;
|
||||
RxStatus = RX_STAT_BASE;
|
||||
RxDescriptorNumber = NUM_RX_FRAG-1;
|
||||
|
||||
/* Rx Descriptors Point to 0 */
|
||||
RxConsumeIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
// Keil: function added to initialize Tx Descriptors
|
||||
void tx_descr_init (void) {
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < NUM_TX_FRAG; i++) {
|
||||
TX_DESC_PACKET(i) = TX_BUF(i);
|
||||
TX_DESC_CTRL(i) = 0;
|
||||
TX_STAT_INFO(i) = 0;
|
||||
}
|
||||
|
||||
/* Set EMAC Transmit Descriptor Registers. */
|
||||
TxDescriptor = TX_DESC_BASE;
|
||||
TxStatus = TX_STAT_BASE;
|
||||
TxDescriptorNumber = NUM_TX_FRAG-1;
|
||||
|
||||
/* Tx Descriptors Point to 0 */
|
||||
TxProduceIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
// configure port-pins for use with LAN-controller,
|
||||
// reset it and send the configuration-sequence
|
||||
|
||||
portBASE_TYPE Init_EMAC(void)
|
||||
{
|
||||
portBASE_TYPE xReturn = pdPASS;
|
||||
static portBASE_TYPE xAttempt = 0;
|
||||
// Keil: function modified to access the EMAC
|
||||
// Initializes the EMAC ethernet controller
|
||||
volatile unsigned int regv,tout,id1,id2;
|
||||
|
||||
/* Enable P1 Ethernet Pins. */
|
||||
PINSEL2 = 0x55555555;
|
||||
PINSEL3 = (PINSEL3 & ~0x0000000F) | 0x00000005;
|
||||
|
||||
/* Power Up the EMAC controller. */
|
||||
PCONP |= 0x40000000;
|
||||
vTaskDelay( 1 );
|
||||
|
||||
/* Reset all EMAC internal modules. */
|
||||
MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX | MAC1_RES_MCS_RX |
|
||||
MAC1_SIM_RES | MAC1_SOFT_RES;
|
||||
Command = CR_REG_RES | CR_TX_RES | CR_RX_RES;
|
||||
|
||||
/* A short delay after reset. */
|
||||
vTaskDelay( 1 );
|
||||
|
||||
/* Initialize MAC control registers. */
|
||||
MAC1 = MAC1_PASS_ALL;
|
||||
MAC2 = MAC2_CRC_EN | MAC2_PAD_EN;
|
||||
MAXF = ETH_MAX_FLEN;
|
||||
CLRT = CLRT_DEF;
|
||||
IPGR = IPGR_DEF;
|
||||
|
||||
/* Enable Reduced MII interface. */
|
||||
Command = CR_RMII | CR_PASS_RUNT_FRM;
|
||||
|
||||
/* Reset Reduced MII Logic. */
|
||||
SUPP = SUPP_RES_RMII;
|
||||
SUPP = 0;
|
||||
|
||||
/* Put the DP83848C in reset mode */
|
||||
write_PHY (PHY_REG_BMCR, 0x8000);
|
||||
write_PHY (PHY_REG_BMCR, 0x8000);
|
||||
|
||||
/* Wait for hardware reset to end. */
|
||||
for (tout = 0; tout < 100; tout++) {
|
||||
vTaskDelay( 10 );
|
||||
regv = read_PHY (PHY_REG_BMCR);
|
||||
if (!(regv & 0x8000)) {
|
||||
/* Reset complete */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if this is a DP83848C PHY. */
|
||||
id1 = read_PHY (PHY_REG_IDR1);
|
||||
id2 = read_PHY (PHY_REG_IDR2);
|
||||
if (((id1 << 16) | (id2 & 0xFFF0)) == DP83848C_ID) {
|
||||
/* Configure the PHY device */
|
||||
|
||||
/* Use autonegotiation about the link speed. */
|
||||
write_PHY (PHY_REG_BMCR, PHY_AUTO_NEG);
|
||||
/* Wait to complete Auto_Negotiation. */
|
||||
for (tout = 0; tout < 10; tout++) {
|
||||
vTaskDelay( 100 );
|
||||
regv = read_PHY (PHY_REG_BMSR);
|
||||
if (regv & 0x0020) {
|
||||
/* Autonegotiation Complete. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xReturn = pdFAIL;
|
||||
}
|
||||
|
||||
/* Check the link status. */
|
||||
if( xReturn == pdPASS )
|
||||
{
|
||||
xReturn = pdFAIL;
|
||||
for (tout = 0; tout < 10; tout++) {
|
||||
vTaskDelay( 100 );
|
||||
regv = read_PHY (PHY_REG_STS);
|
||||
if (regv & 0x0001) {
|
||||
/* Link is on. */
|
||||
xReturn = pdPASS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( xReturn == pdPASS )
|
||||
{
|
||||
/* Configure Full/Half Duplex mode. */
|
||||
if (regv & 0x0004) {
|
||||
/* Full duplex is enabled. */
|
||||
MAC2 |= MAC2_FULL_DUP;
|
||||
Command |= CR_FULL_DUP;
|
||||
IPGT = IPGT_FULL_DUP;
|
||||
}
|
||||
else {
|
||||
/* Half duplex mode. */
|
||||
IPGT = IPGT_HALF_DUP;
|
||||
}
|
||||
|
||||
/* Configure 100MBit/10MBit mode. */
|
||||
if (regv & 0x0002) {
|
||||
/* 10MBit mode. */
|
||||
SUPP = 0;
|
||||
}
|
||||
else {
|
||||
/* 100MBit mode. */
|
||||
SUPP = SUPP_SPEED;
|
||||
}
|
||||
|
||||
/* Set the Ethernet MAC Address registers */
|
||||
SA0 = (emacETHADDR0 << 8) | emacETHADDR1;
|
||||
SA1 = (emacETHADDR2 << 8) | emacETHADDR3;
|
||||
SA2 = (emacETHADDR4 << 8) | emacETHADDR5;
|
||||
|
||||
/* Initialize Tx and Rx DMA Descriptors */
|
||||
rx_descr_init ();
|
||||
tx_descr_init ();
|
||||
|
||||
/* Receive Broadcast and Perfect Match Packets */
|
||||
RxFilterCtrl = RFC_UCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN;
|
||||
|
||||
/* Create the semaphore used ot wake the uIP task. */
|
||||
vSemaphoreCreateBinary( xEMACSemaphore );
|
||||
|
||||
/* Reset all interrupts */
|
||||
IntClear = 0xFFFF;
|
||||
|
||||
/* Enable receive and transmit mode of MAC Ethernet core */
|
||||
Command |= (CR_RX_EN | CR_TX_EN);
|
||||
MAC1 |= MAC1_REC_EN;
|
||||
}
|
||||
|
||||
return xReturn;
|
||||
}
|
||||
|
||||
|
||||
// reads a word in little-endian byte order from RX_BUFFER
|
||||
|
||||
unsigned short ReadFrame_EMAC(void)
|
||||
{
|
||||
return (*rptr++);
|
||||
}
|
||||
|
||||
// reads a word in big-endian byte order from RX_FRAME_PORT
|
||||
// (useful to avoid permanent byte-swapping while reading
|
||||
// TCP/IP-data)
|
||||
|
||||
unsigned short ReadFrameBE_EMAC(void)
|
||||
{
|
||||
unsigned short ReturnValue;
|
||||
|
||||
ReturnValue = SwapBytes (*rptr++);
|
||||
return (ReturnValue);
|
||||
}
|
||||
|
||||
|
||||
// copies bytes from frame port to MCU-memory
|
||||
// NOTES: * an odd number of byte may only be transfered
|
||||
// if the frame is read to the end!
|
||||
// * MCU-memory MUST start at word-boundary
|
||||
|
||||
void CopyFromFrame_EMAC(void *Dest, unsigned short Size)
|
||||
{
|
||||
unsigned short * piDest; // Keil: Pointer added to correct expression
|
||||
|
||||
piDest = Dest; // Keil: Line added
|
||||
while (Size > 1) {
|
||||
*piDest++ = ReadFrame_EMAC();
|
||||
Size -= 2;
|
||||
}
|
||||
|
||||
if (Size) { // check for leftover byte...
|
||||
*(unsigned char *)piDest = (char)ReadFrame_EMAC();// the LAN-Controller will return 0
|
||||
} // for the highbyte
|
||||
}
|
||||
|
||||
// does a dummy read on frame-I/O-port
|
||||
// NOTE: only an even number of bytes is read!
|
||||
|
||||
void DummyReadFrame_EMAC(unsigned short Size) // discards an EVEN number of bytes
|
||||
{ // from RX-fifo
|
||||
while (Size > 1) {
|
||||
ReadFrame_EMAC();
|
||||
Size -= 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Reads the length of the received ethernet frame and checks if the
|
||||
// destination address is a broadcast message or not
|
||||
// returns the frame length
|
||||
unsigned short StartReadFrame(void) {
|
||||
unsigned short RxLen;
|
||||
unsigned int idx;
|
||||
|
||||
idx = RxConsumeIndex;
|
||||
RxLen = (RX_STAT_INFO(idx) & RINFO_SIZE) - 3;
|
||||
rptr = (unsigned short *)RX_DESC_PACKET(idx);
|
||||
return(RxLen);
|
||||
}
|
||||
|
||||
void EndReadFrame(void) {
|
||||
unsigned int idx;
|
||||
|
||||
/* DMA free packet. */
|
||||
idx = RxConsumeIndex;
|
||||
|
||||
if (++idx == NUM_RX_FRAG)
|
||||
idx = 0;
|
||||
|
||||
RxConsumeIndex = idx;
|
||||
}
|
||||
|
||||
unsigned int CheckFrameReceived(void) { // Packet received ?
|
||||
|
||||
if (RxProduceIndex != RxConsumeIndex) // more packets received ?
|
||||
return(1);
|
||||
else
|
||||
return(0);
|
||||
}
|
||||
|
||||
unsigned int uiGetEMACRxData( unsigned char *ucBuffer )
|
||||
{
|
||||
unsigned int uiLen = 0;
|
||||
|
||||
if( RxProduceIndex != RxConsumeIndex )
|
||||
{
|
||||
uiLen = StartReadFrame();
|
||||
CopyFromFrame_EMAC( ucBuffer, uiLen );
|
||||
EndReadFrame();
|
||||
}
|
||||
|
||||
return uiLen;
|
||||
}
|
||||
|
||||
// requests space in EMAC memory for storing an outgoing frame
|
||||
|
||||
void RequestSend(void)
|
||||
{
|
||||
unsigned int idx;
|
||||
|
||||
idx = TxProduceIndex;
|
||||
tptr = (unsigned short *)TX_DESC_PACKET(idx);
|
||||
}
|
||||
|
||||
// check if ethernet controller is ready to accept the
|
||||
// frame we want to send
|
||||
|
||||
unsigned int Rdy4Tx(void)
|
||||
{
|
||||
return (1); // the ethernet controller transmits much faster
|
||||
} // than the CPU can load its buffers
|
||||
|
||||
|
||||
// writes a word in little-endian byte order to TX_BUFFER
|
||||
void WriteFrame_EMAC(unsigned short Data)
|
||||
{
|
||||
*tptr++ = Data;
|
||||
}
|
||||
|
||||
// copies bytes from MCU-memory to frame port
|
||||
// NOTES: * an odd number of byte may only be transfered
|
||||
// if the frame is written to the end!
|
||||
// * MCU-memory MUST start at word-boundary
|
||||
|
||||
void CopyToFrame_EMAC(void *Source, unsigned int Size)
|
||||
{
|
||||
unsigned short * piSource;
|
||||
|
||||
piSource = Source;
|
||||
Size = (Size + 1) & 0xFFFE; // round Size up to next even number
|
||||
while (Size > 0) {
|
||||
WriteFrame_EMAC(*piSource++);
|
||||
Size -= 2;
|
||||
}
|
||||
}
|
||||
|
||||
void DoSend_EMAC(unsigned short FrameSize)
|
||||
{
|
||||
unsigned int idx;
|
||||
|
||||
idx = TxProduceIndex;
|
||||
TX_DESC_CTRL(idx) = FrameSize | TCTRL_LAST;
|
||||
if (++idx == NUM_TX_FRAG) idx = 0;
|
||||
TxProduceIndex = idx;
|
||||
}
|
||||
|
||||
322
Demo/ARM7_LPC2368_Rowley/webserver/emac.h
Normal file
322
Demo/ARM7_LPC2368_Rowley/webserver/emac.h
Normal file
@@ -0,0 +1,322 @@
|
||||
/*----------------------------------------------------------------------------
|
||||
* LPC2378 Ethernet Definitions
|
||||
*----------------------------------------------------------------------------
|
||||
* Name: EMAC.H
|
||||
* Purpose: Philips LPC2378 EMAC hardware definitions
|
||||
*----------------------------------------------------------------------------
|
||||
* Copyright (c) 2006 KEIL - An ARM Company. All rights reserved.
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifndef __EMAC_H
|
||||
#define __EMAC_H
|
||||
|
||||
/* MAC address definition. The MAC address must be unique on the network. */
|
||||
#define emacETHADDR0 0
|
||||
#define emacETHADDR1 0xbd
|
||||
#define emacETHADDR2 0x33
|
||||
#define emacETHADDR3 0x02
|
||||
#define emacETHADDR4 0x64
|
||||
#define emacETHADDR5 0x24
|
||||
|
||||
|
||||
/* EMAC Memory Buffer configuration for 16K Ethernet RAM. */
|
||||
#define NUM_RX_FRAG 4 /* Num.of RX Fragments 4*1536= 6.0kB */
|
||||
#define NUM_TX_FRAG 2 /* Num.of TX Fragments 2*1536= 3.0kB */
|
||||
#define ETH_FRAG_SIZE 1536 /* Packet Fragment size 1536 Bytes */
|
||||
|
||||
#define ETH_MAX_FLEN 1536 /* Max. Ethernet Frame Size */
|
||||
|
||||
/* EMAC variables located in 16K Ethernet SRAM */
|
||||
#define RX_DESC_BASE 0x7FE00000
|
||||
#define RX_STAT_BASE (RX_DESC_BASE + NUM_RX_FRAG*8)
|
||||
#define TX_DESC_BASE (RX_STAT_BASE + NUM_RX_FRAG*8)
|
||||
#define TX_STAT_BASE (TX_DESC_BASE + NUM_TX_FRAG*8)
|
||||
#define RX_BUF_BASE (TX_STAT_BASE + NUM_TX_FRAG*4)
|
||||
#define TX_BUF_BASE (RX_BUF_BASE + NUM_RX_FRAG*ETH_FRAG_SIZE)
|
||||
|
||||
/* RX and TX descriptor and status definitions. */
|
||||
#define RX_DESC_PACKET(i) (*(unsigned int *)(RX_DESC_BASE + 8*i))
|
||||
#define RX_DESC_CTRL(i) (*(unsigned int *)(RX_DESC_BASE+4 + 8*i))
|
||||
#define RX_STAT_INFO(i) (*(unsigned int *)(RX_STAT_BASE + 8*i))
|
||||
#define RX_STAT_HASHCRC(i) (*(unsigned int *)(RX_STAT_BASE+4 + 8*i))
|
||||
#define TX_DESC_PACKET(i) (*(unsigned int *)(TX_DESC_BASE + 8*i))
|
||||
#define TX_DESC_CTRL(i) (*(unsigned int *)(TX_DESC_BASE+4 + 8*i))
|
||||
#define TX_STAT_INFO(i) (*(unsigned int *)(TX_STAT_BASE + 4*i))
|
||||
#define RX_BUF(i) (RX_BUF_BASE + ETH_FRAG_SIZE*i)
|
||||
#define TX_BUF(i) (TX_BUF_BASE + ETH_FRAG_SIZE*i)
|
||||
|
||||
/* MAC Configuration Register 1 */
|
||||
#define MAC1_REC_EN 0x00000001 /* Receive Enable */
|
||||
#define MAC1_PASS_ALL 0x00000002 /* Pass All Receive Frames */
|
||||
#define MAC1_RX_FLOWC 0x00000004 /* RX Flow Control */
|
||||
#define MAC1_TX_FLOWC 0x00000008 /* TX Flow Control */
|
||||
#define MAC1_LOOPB 0x00000010 /* Loop Back Mode */
|
||||
#define MAC1_RES_TX 0x00000100 /* Reset TX Logic */
|
||||
#define MAC1_RES_MCS_TX 0x00000200 /* Reset MAC TX Control Sublayer */
|
||||
#define MAC1_RES_RX 0x00000400 /* Reset RX Logic */
|
||||
#define MAC1_RES_MCS_RX 0x00000800 /* Reset MAC RX Control Sublayer */
|
||||
#define MAC1_SIM_RES 0x00004000 /* Simulation Reset */
|
||||
#define MAC1_SOFT_RES 0x00008000 /* Soft Reset MAC */
|
||||
|
||||
/* MAC Configuration Register 2 */
|
||||
#define MAC2_FULL_DUP 0x00000001 /* Full Duplex Mode */
|
||||
#define MAC2_FRM_LEN_CHK 0x00000002 /* Frame Length Checking */
|
||||
#define MAC2_HUGE_FRM_EN 0x00000004 /* Huge Frame Enable */
|
||||
#define MAC2_DLY_CRC 0x00000008 /* Delayed CRC Mode */
|
||||
#define MAC2_CRC_EN 0x00000010 /* Append CRC to every Frame */
|
||||
#define MAC2_PAD_EN 0x00000020 /* Pad all Short Frames */
|
||||
#define MAC2_VLAN_PAD_EN 0x00000040 /* VLAN Pad Enable */
|
||||
#define MAC2_ADET_PAD_EN 0x00000080 /* Auto Detect Pad Enable */
|
||||
#define MAC2_PPREAM_ENF 0x00000100 /* Pure Preamble Enforcement */
|
||||
#define MAC2_LPREAM_ENF 0x00000200 /* Long Preamble Enforcement */
|
||||
#undef MAC2_NO_BACKOFF /* Remove compiler warning. */
|
||||
#define MAC2_NO_BACKOFF 0x00001000 /* No Backoff Algorithm */
|
||||
#define MAC2_BACK_PRESSURE 0x00002000 /* Backoff Presurre / No Backoff */
|
||||
#define MAC2_EXCESS_DEF 0x00004000 /* Excess Defer */
|
||||
|
||||
/* Back-to-Back Inter-Packet-Gap Register */
|
||||
#define IPGT_FULL_DUP 0x00000015 /* Recommended value for Full Duplex */
|
||||
#define IPGT_HALF_DUP 0x00000012 /* Recommended value for Half Duplex */
|
||||
|
||||
/* Non Back-to-Back Inter-Packet-Gap Register */
|
||||
#define IPGR_DEF 0x00000012 /* Recommended value */
|
||||
|
||||
/* Collision Window/Retry Register */
|
||||
#define CLRT_DEF 0x0000370F /* Default value */
|
||||
|
||||
/* PHY Support Register */
|
||||
#undef SUPP_SPEED /* Remove compiler warning. */
|
||||
#define SUPP_SPEED 0x00000100 /* Reduced MII Logic Current Speed */
|
||||
#define SUPP_RES_RMII 0x00000800 /* Reset Reduced MII Logic */
|
||||
|
||||
/* Test Register */
|
||||
#define TEST_SHCUT_PQUANTA 0x00000001 /* Shortcut Pause Quanta */
|
||||
#define TEST_TST_PAUSE 0x00000002 /* Test Pause */
|
||||
#define TEST_TST_BACKP 0x00000004 /* Test Back Pressure */
|
||||
|
||||
/* MII Management Configuration Register */
|
||||
#define MCFG_SCAN_INC 0x00000001 /* Scan Increment PHY Address */
|
||||
#define MCFG_SUPP_PREAM 0x00000002 /* Suppress Preamble */
|
||||
#define MCFG_CLK_SEL 0x0000001C /* Clock Select Mask */
|
||||
#define MCFG_RES_MII 0x00008000 /* Reset MII Management Hardware */
|
||||
|
||||
/* MII Management Command Register */
|
||||
#undef MCMD_READ /* Remove compiler warning. */
|
||||
#define MCMD_READ 0x00000001 /* MII Read */
|
||||
#undef MCMD_SCAN /* Remove compiler warning. */
|
||||
#define MCMD_SCAN 0x00000002 /* MII Scan continuously */
|
||||
|
||||
#define MII_WR_TOUT 0x00050000 /* MII Write timeout count */
|
||||
#define MII_RD_TOUT 0x00050000 /* MII Read timeout count */
|
||||
|
||||
/* MII Management Address Register */
|
||||
#define MADR_REG_ADR 0x0000001F /* MII Register Address Mask */
|
||||
#define MADR_PHY_ADR 0x00001F00 /* PHY Address Mask */
|
||||
|
||||
/* MII Management Indicators Register */
|
||||
#undef MIND_BUSY /* Remove compiler warning. */
|
||||
#define MIND_BUSY 0x00000001 /* MII is Busy */
|
||||
#define MIND_SCAN 0x00000002 /* MII Scanning in Progress */
|
||||
#define MIND_NOT_VAL 0x00000004 /* MII Read Data not valid */
|
||||
#define MIND_MII_LINK_FAIL 0x00000008 /* MII Link Failed */
|
||||
|
||||
/* Command Register */
|
||||
#define CR_RX_EN 0x00000001 /* Enable Receive */
|
||||
#define CR_TX_EN 0x00000002 /* Enable Transmit */
|
||||
#define CR_REG_RES 0x00000008 /* Reset Host Registers */
|
||||
#define CR_TX_RES 0x00000010 /* Reset Transmit Datapath */
|
||||
#define CR_RX_RES 0x00000020 /* Reset Receive Datapath */
|
||||
#define CR_PASS_RUNT_FRM 0x00000040 /* Pass Runt Frames */
|
||||
#define CR_PASS_RX_FILT 0x00000080 /* Pass RX Filter */
|
||||
#define CR_TX_FLOW_CTRL 0x00000100 /* TX Flow Control */
|
||||
#define CR_RMII 0x00000200 /* Reduced MII Interface */
|
||||
#define CR_FULL_DUP 0x00000400 /* Full Duplex */
|
||||
|
||||
/* Status Register */
|
||||
#define SR_RX_EN 0x00000001 /* Enable Receive */
|
||||
#define SR_TX_EN 0x00000002 /* Enable Transmit */
|
||||
|
||||
/* Transmit Status Vector 0 Register */
|
||||
#define TSV0_CRC_ERR 0x00000001 /* CRC error */
|
||||
#define TSV0_LEN_CHKERR 0x00000002 /* Length Check Error */
|
||||
#define TSV0_LEN_OUTRNG 0x00000004 /* Length Out of Range */
|
||||
#define TSV0_DONE 0x00000008 /* Tramsmission Completed */
|
||||
#define TSV0_MCAST 0x00000010 /* Multicast Destination */
|
||||
#define TSV0_BCAST 0x00000020 /* Broadcast Destination */
|
||||
#define TSV0_PKT_DEFER 0x00000040 /* Packet Deferred */
|
||||
#define TSV0_EXC_DEFER 0x00000080 /* Excessive Packet Deferral */
|
||||
#define TSV0_EXC_COLL 0x00000100 /* Excessive Collision */
|
||||
#define TSV0_LATE_COLL 0x00000200 /* Late Collision Occured */
|
||||
#define TSV0_GIANT 0x00000400 /* Giant Frame */
|
||||
#define TSV0_UNDERRUN 0x00000800 /* Buffer Underrun */
|
||||
#define TSV0_BYTES 0x0FFFF000 /* Total Bytes Transferred */
|
||||
#define TSV0_CTRL_FRAME 0x10000000 /* Control Frame */
|
||||
#define TSV0_PAUSE 0x20000000 /* Pause Frame */
|
||||
#define TSV0_BACK_PRESS 0x40000000 /* Backpressure Method Applied */
|
||||
#define TSV0_VLAN 0x80000000 /* VLAN Frame */
|
||||
|
||||
/* Transmit Status Vector 1 Register */
|
||||
#define TSV1_BYTE_CNT 0x0000FFFF /* Transmit Byte Count */
|
||||
#define TSV1_COLL_CNT 0x000F0000 /* Transmit Collision Count */
|
||||
|
||||
/* Receive Status Vector Register */
|
||||
#define RSV_BYTE_CNT 0x0000FFFF /* Receive Byte Count */
|
||||
#define RSV_PKT_IGNORED 0x00010000 /* Packet Previously Ignored */
|
||||
#define RSV_RXDV_SEEN 0x00020000 /* RXDV Event Previously Seen */
|
||||
#define RSV_CARR_SEEN 0x00040000 /* Carrier Event Previously Seen */
|
||||
#define RSV_REC_CODEV 0x00080000 /* Receive Code Violation */
|
||||
#define RSV_CRC_ERR 0x00100000 /* CRC Error */
|
||||
#define RSV_LEN_CHKERR 0x00200000 /* Length Check Error */
|
||||
#define RSV_LEN_OUTRNG 0x00400000 /* Length Out of Range */
|
||||
#define RSV_REC_OK 0x00800000 /* Frame Received OK */
|
||||
#define RSV_MCAST 0x01000000 /* Multicast Frame */
|
||||
#define RSV_BCAST 0x02000000 /* Broadcast Frame */
|
||||
#define RSV_DRIB_NIBB 0x04000000 /* Dribble Nibble */
|
||||
#define RSV_CTRL_FRAME 0x08000000 /* Control Frame */
|
||||
#define RSV_PAUSE 0x10000000 /* Pause Frame */
|
||||
#define RSV_UNSUPP_OPC 0x20000000 /* Unsupported Opcode */
|
||||
#define RSV_VLAN 0x40000000 /* VLAN Frame */
|
||||
|
||||
/* Flow Control Counter Register */
|
||||
#define FCC_MIRR_CNT 0x0000FFFF /* Mirror Counter */
|
||||
#define FCC_PAUSE_TIM 0xFFFF0000 /* Pause Timer */
|
||||
|
||||
/* Flow Control Status Register */
|
||||
#define FCS_MIRR_CNT 0x0000FFFF /* Mirror Counter Current */
|
||||
|
||||
/* Receive Filter Control Register */
|
||||
#define RFC_UCAST_EN 0x00000001 /* Accept Unicast Frames Enable */
|
||||
#define RFC_BCAST_EN 0x00000002 /* Accept Broadcast Frames Enable */
|
||||
#define RFC_MCAST_EN 0x00000004 /* Accept Multicast Frames Enable */
|
||||
#define RFC_UCAST_HASH_EN 0x00000008 /* Accept Unicast Hash Filter Frames */
|
||||
#define RFC_MCAST_HASH_EN 0x00000010 /* Accept Multicast Hash Filter Fram.*/
|
||||
#define RFC_PERFECT_EN 0x00000020 /* Accept Perfect Match Enable */
|
||||
#define RFC_MAGP_WOL_EN 0x00001000 /* Magic Packet Filter WoL Enable */
|
||||
#define RFC_PFILT_WOL_EN 0x00002000 /* Perfect Filter WoL Enable */
|
||||
|
||||
/* Receive Filter WoL Status/Clear Registers */
|
||||
#define WOL_UCAST 0x00000001 /* Unicast Frame caused WoL */
|
||||
#define WOL_BCAST 0x00000002 /* Broadcast Frame caused WoL */
|
||||
#define WOL_MCAST 0x00000004 /* Multicast Frame caused WoL */
|
||||
#define WOL_UCAST_HASH 0x00000008 /* Unicast Hash Filter Frame WoL */
|
||||
#define WOL_MCAST_HASH 0x00000010 /* Multicast Hash Filter Frame WoL */
|
||||
#define WOL_PERFECT 0x00000020 /* Perfect Filter WoL */
|
||||
#define WOL_RX_FILTER 0x00000080 /* RX Filter caused WoL */
|
||||
#define WOL_MAG_PACKET 0x00000100 /* Magic Packet Filter caused WoL */
|
||||
|
||||
/* Interrupt Status/Enable/Clear/Set Registers */
|
||||
#define INT_RX_OVERRUN 0x00000001 /* Overrun Error in RX Queue */
|
||||
#define INT_RX_ERR 0x00000002 /* Receive Error */
|
||||
#define INT_RX_FIN 0x00000004 /* RX Finished Process Descriptors */
|
||||
#define INT_RX_DONE 0x00000008 /* Receive Done */
|
||||
#define INT_TX_UNDERRUN 0x00000010 /* Transmit Underrun */
|
||||
#define INT_TX_ERR 0x00000020 /* Transmit Error */
|
||||
#define INT_TX_FIN 0x00000040 /* TX Finished Process Descriptors */
|
||||
#define INT_TX_DONE 0x00000080 /* Transmit Done */
|
||||
#define INT_SOFT_INT 0x00001000 /* Software Triggered Interrupt */
|
||||
#define INT_WAKEUP 0x00002000 /* Wakeup Event Interrupt */
|
||||
|
||||
/* Power Down Register */
|
||||
#define PD_POWER_DOWN 0x80000000 /* Power Down MAC */
|
||||
|
||||
/* RX Descriptor Control Word */
|
||||
#define RCTRL_SIZE 0x000007FF /* Buffer size mask */
|
||||
#define RCTRL_INT 0x80000000 /* Generate RxDone Interrupt */
|
||||
|
||||
/* RX Status Hash CRC Word */
|
||||
#define RHASH_SA 0x000001FF /* Hash CRC for Source Address */
|
||||
#define RHASH_DA 0x001FF000 /* Hash CRC for Destination Address */
|
||||
|
||||
/* RX Status Information Word */
|
||||
#define RINFO_SIZE 0x000007FF /* Data size in bytes */
|
||||
#define RINFO_CTRL_FRAME 0x00040000 /* Control Frame */
|
||||
#define RINFO_VLAN 0x00080000 /* VLAN Frame */
|
||||
#define RINFO_FAIL_FILT 0x00100000 /* RX Filter Failed */
|
||||
#define RINFO_MCAST 0x00200000 /* Multicast Frame */
|
||||
#define RINFO_BCAST 0x00400000 /* Broadcast Frame */
|
||||
#define RINFO_CRC_ERR 0x00800000 /* CRC Error in Frame */
|
||||
#define RINFO_SYM_ERR 0x01000000 /* Symbol Error from PHY */
|
||||
#define RINFO_LEN_ERR 0x02000000 /* Length Error */
|
||||
#define RINFO_RANGE_ERR 0x04000000 /* Range Error (exceeded max. size) */
|
||||
#define RINFO_ALIGN_ERR 0x08000000 /* Alignment Error */
|
||||
#define RINFO_OVERRUN 0x10000000 /* Receive overrun */
|
||||
#define RINFO_NO_DESCR 0x20000000 /* No new Descriptor available */
|
||||
#define RINFO_LAST_FLAG 0x40000000 /* Last Fragment in Frame */
|
||||
#define RINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */
|
||||
|
||||
#define RINFO_ERR_MASK (RINFO_FAIL_FILT | RINFO_CRC_ERR | RINFO_SYM_ERR | \
|
||||
RINFO_LEN_ERR | RINFO_ALIGN_ERR | RINFO_OVERRUN)
|
||||
|
||||
/* TX Descriptor Control Word */
|
||||
#define TCTRL_SIZE 0x000007FF /* Size of data buffer in bytes */
|
||||
#define TCTRL_OVERRIDE 0x04000000 /* Override Default MAC Registers */
|
||||
#define TCTRL_HUGE 0x08000000 /* Enable Huge Frame */
|
||||
#define TCTRL_PAD 0x10000000 /* Pad short Frames to 64 bytes */
|
||||
#define TCTRL_CRC 0x20000000 /* Append a hardware CRC to Frame */
|
||||
#define TCTRL_LAST 0x40000000 /* Last Descriptor for TX Frame */
|
||||
#define TCTRL_INT 0x80000000 /* Generate TxDone Interrupt */
|
||||
|
||||
/* TX Status Information Word */
|
||||
#define TINFO_COL_CNT 0x01E00000 /* Collision Count */
|
||||
#define TINFO_DEFER 0x02000000 /* Packet Deferred (not an error) */
|
||||
#define TINFO_EXCESS_DEF 0x04000000 /* Excessive Deferral */
|
||||
#define TINFO_EXCESS_COL 0x08000000 /* Excessive Collision */
|
||||
#define TINFO_LATE_COL 0x10000000 /* Late Collision Occured */
|
||||
#define TINFO_UNDERRUN 0x20000000 /* Transmit Underrun */
|
||||
#define TINFO_NO_DESCR 0x40000000 /* No new Descriptor available */
|
||||
#define TINFO_ERR 0x80000000 /* Error Occured (OR of all errors) */
|
||||
|
||||
/* DP83848C PHY Registers */
|
||||
#define PHY_REG_BMCR 0x00 /* Basic Mode Control Register */
|
||||
#define PHY_REG_BMSR 0x01 /* Basic Mode Status Register */
|
||||
#define PHY_REG_IDR1 0x02 /* PHY Identifier 1 */
|
||||
#define PHY_REG_IDR2 0x03 /* PHY Identifier 2 */
|
||||
#define PHY_REG_ANAR 0x04 /* Auto-Negotiation Advertisement */
|
||||
#define PHY_REG_ANLPAR 0x05 /* Auto-Neg. Link Partner Abitily */
|
||||
#define PHY_REG_ANER 0x06 /* Auto-Neg. Expansion Register */
|
||||
#define PHY_REG_ANNPTR 0x07 /* Auto-Neg. Next Page TX */
|
||||
|
||||
/* PHY Extended Registers */
|
||||
#define PHY_REG_STS 0x10 /* Status Register */
|
||||
#define PHY_REG_MICR 0x11 /* MII Interrupt Control Register */
|
||||
#define PHY_REG_MISR 0x12 /* MII Interrupt Status Register */
|
||||
#define PHY_REG_FCSCR 0x14 /* False Carrier Sense Counter */
|
||||
#define PHY_REG_RECR 0x15 /* Receive Error Counter */
|
||||
#define PHY_REG_PCSR 0x16 /* PCS Sublayer Config. and Status */
|
||||
#define PHY_REG_RBR 0x17 /* RMII and Bypass Register */
|
||||
#define PHY_REG_LEDCR 0x18 /* LED Direct Control Register */
|
||||
#define PHY_REG_PHYCR 0x19 /* PHY Control Register */
|
||||
#define PHY_REG_10BTSCR 0x1A /* 10Base-T Status/Control Register */
|
||||
#define PHY_REG_CDCTRL1 0x1B /* CD Test Control and BIST Extens. */
|
||||
#define PHY_REG_EDCR 0x1D /* Energy Detect Control Register */
|
||||
|
||||
#define PHY_FULLD_100M 0x2100 /* Full Duplex 100Mbit */
|
||||
#define PHY_HALFD_100M 0x2000 /* Half Duplex 100Mbit */
|
||||
#define PHY_FULLD_10M 0x0100 /* Full Duplex 10Mbit */
|
||||
#define PHY_HALFD_10M 0x0000 /* Half Duplex 10MBit */
|
||||
#define PHY_AUTO_NEG 0x3000 /* Select Auto Negotiation */
|
||||
|
||||
#define DP83848C_DEF_ADR 0x0100 /* Default PHY device address */
|
||||
#define DP83848C_ID 0x20005C90 /* PHY Identifier */
|
||||
|
||||
// prototypes
|
||||
portBASE_TYPE Init_EMAC(void);
|
||||
unsigned short ReadFrameBE_EMAC(void);
|
||||
void CopyToFrame_EMAC(void *Source, unsigned int Size);
|
||||
void CopyFromFrame_EMAC(void *Dest, unsigned short Size);
|
||||
void DummyReadFrame_EMAC(unsigned short Size);
|
||||
unsigned short StartReadFrame(void);
|
||||
void EndReadFrame(void);
|
||||
unsigned int CheckFrameReceived(void);
|
||||
void RequestSend(void);
|
||||
unsigned int Rdy4Tx(void);
|
||||
void DoSend_EMAC(unsigned short FrameSize);
|
||||
void vEMACWaitForInput( void );
|
||||
unsigned int uiGetEMACRxData( unsigned char *ucBuffer );
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* end of file
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
35
Demo/ARM7_LPC2368_Rowley/webserver/http-strings
Normal file
35
Demo/ARM7_LPC2368_Rowley/webserver/http-strings
Normal file
@@ -0,0 +1,35 @@
|
||||
http_http "http://"
|
||||
http_200 "200 "
|
||||
http_301 "301 "
|
||||
http_302 "302 "
|
||||
http_get "GET "
|
||||
http_10 "HTTP/1.0"
|
||||
http_11 "HTTP/1.1"
|
||||
http_content_type "content-type: "
|
||||
http_texthtml "text/html"
|
||||
http_location "location: "
|
||||
http_host "host: "
|
||||
http_crnl "\r\n"
|
||||
http_index_html "/index.html"
|
||||
http_404_html "/404.html"
|
||||
http_referer "Referer:"
|
||||
http_header_200 "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n"
|
||||
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"
|
||||
http_content_type_plain "Content-type: text/plain\r\n\r\n"
|
||||
http_content_type_html "Content-type: text/html\r\n\r\n"
|
||||
http_content_type_css "Content-type: text/css\r\n\r\n"
|
||||
http_content_type_text "Content-type: text/text\r\n\r\n"
|
||||
http_content_type_png "Content-type: image/png\r\n\r\n"
|
||||
http_content_type_gif "Content-type: image/gif\r\n\r\n"
|
||||
http_content_type_jpg "Content-type: image/jpeg\r\n\r\n"
|
||||
http_content_type_binary "Content-type: application/octet-stream\r\n\r\n"
|
||||
http_html ".html"
|
||||
http_shtml ".shtml"
|
||||
http_htm ".htm"
|
||||
http_css ".css"
|
||||
http_png ".png"
|
||||
http_gif ".gif"
|
||||
http_jpg ".jpg"
|
||||
http_text ".txt"
|
||||
http_txt ".txt"
|
||||
|
||||
102
Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c
Normal file
102
Demo/ARM7_LPC2368_Rowley/webserver/http-strings.c
Normal file
@@ -0,0 +1,102 @@
|
||||
const char http_http[8] =
|
||||
/* "http://" */
|
||||
{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, };
|
||||
const char http_200[5] =
|
||||
/* "200 " */
|
||||
{0x32, 0x30, 0x30, 0x20, };
|
||||
const char http_301[5] =
|
||||
/* "301 " */
|
||||
{0x33, 0x30, 0x31, 0x20, };
|
||||
const char http_302[5] =
|
||||
/* "302 " */
|
||||
{0x33, 0x30, 0x32, 0x20, };
|
||||
const char http_get[5] =
|
||||
/* "GET " */
|
||||
{0x47, 0x45, 0x54, 0x20, };
|
||||
const char http_10[9] =
|
||||
/* "HTTP/1.0" */
|
||||
{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, };
|
||||
const char http_11[9] =
|
||||
/* "HTTP/1.1" */
|
||||
{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, };
|
||||
const char http_content_type[15] =
|
||||
/* "content-type: " */
|
||||
{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, };
|
||||
const char http_texthtml[10] =
|
||||
/* "text/html" */
|
||||
{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, };
|
||||
const char http_location[11] =
|
||||
/* "location: " */
|
||||
{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, };
|
||||
const char http_host[7] =
|
||||
/* "host: " */
|
||||
{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, };
|
||||
const char http_crnl[3] =
|
||||
/* "\r\n" */
|
||||
{0xd, 0xa, };
|
||||
const char http_index_html[12] =
|
||||
/* "/index.html" */
|
||||
{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
|
||||
const char http_404_html[10] =
|
||||
/* "/404.html" */
|
||||
{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
|
||||
const char http_referer[9] =
|
||||
/* "Referer:" */
|
||||
{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, };
|
||||
const char http_header_200[84] =
|
||||
/* "HTTP/1.0 200 OK\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */
|
||||
{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, };
|
||||
const char http_header_404[91] =
|
||||
/* "HTTP/1.0 404 Not found\r\nServer: uIP/1.0 http://www.sics.se/~adam/uip/\r\nConnection: close\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_plain[29] =
|
||||
/* "Content-type: text/plain\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_html[28] =
|
||||
/* "Content-type: text/html\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_css [27] =
|
||||
/* "Content-type: text/css\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_text[28] =
|
||||
/* "Content-type: text/text\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_png [28] =
|
||||
/* "Content-type: image/png\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_gif [28] =
|
||||
/* "Content-type: image/gif\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_jpg [29] =
|
||||
/* "Content-type: image/jpeg\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_content_type_binary[43] =
|
||||
/* "Content-type: application/octet-stream\r\n\r\n" */
|
||||
{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, };
|
||||
const char http_html[6] =
|
||||
/* ".html" */
|
||||
{0x2e, 0x68, 0x74, 0x6d, 0x6c, };
|
||||
const char http_shtml[7] =
|
||||
/* ".shtml" */
|
||||
{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, };
|
||||
const char http_htm[5] =
|
||||
/* ".htm" */
|
||||
{0x2e, 0x68, 0x74, 0x6d, };
|
||||
const char http_css[5] =
|
||||
/* ".css" */
|
||||
{0x2e, 0x63, 0x73, 0x73, };
|
||||
const char http_png[5] =
|
||||
/* ".png" */
|
||||
{0x2e, 0x70, 0x6e, 0x67, };
|
||||
const char http_gif[5] =
|
||||
/* ".gif" */
|
||||
{0x2e, 0x67, 0x69, 0x66, };
|
||||
const char http_jpg[5] =
|
||||
/* ".jpg" */
|
||||
{0x2e, 0x6a, 0x70, 0x67, };
|
||||
const char http_text[5] =
|
||||
/* ".txt" */
|
||||
{0x2e, 0x74, 0x78, 0x74, };
|
||||
const char http_txt[5] =
|
||||
/* ".txt" */
|
||||
{0x2e, 0x74, 0x78, 0x74, };
|
||||
34
Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h
Normal file
34
Demo/ARM7_LPC2368_Rowley/webserver/http-strings.h
Normal file
@@ -0,0 +1,34 @@
|
||||
extern const char http_http[8];
|
||||
extern const char http_200[5];
|
||||
extern const char http_301[5];
|
||||
extern const char http_302[5];
|
||||
extern const char http_get[5];
|
||||
extern const char http_10[9];
|
||||
extern const char http_11[9];
|
||||
extern const char http_content_type[15];
|
||||
extern const char http_texthtml[10];
|
||||
extern const char http_location[11];
|
||||
extern const char http_host[7];
|
||||
extern const char http_crnl[3];
|
||||
extern const char http_index_html[12];
|
||||
extern const char http_404_html[10];
|
||||
extern const char http_referer[9];
|
||||
extern const char http_header_200[84];
|
||||
extern const char http_header_404[91];
|
||||
extern const char http_content_type_plain[29];
|
||||
extern const char http_content_type_html[28];
|
||||
extern const char http_content_type_css [27];
|
||||
extern const char http_content_type_text[28];
|
||||
extern const char http_content_type_png [28];
|
||||
extern const char http_content_type_gif [28];
|
||||
extern const char http_content_type_jpg [29];
|
||||
extern const char http_content_type_binary[43];
|
||||
extern const char http_html[6];
|
||||
extern const char http_shtml[7];
|
||||
extern const char http_htm[5];
|
||||
extern const char http_css[5];
|
||||
extern const char http_png[5];
|
||||
extern const char http_gif[5];
|
||||
extern const char http_jpg[5];
|
||||
extern const char http_text[5];
|
||||
extern const char http_txt[5];
|
||||
276
Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c
Normal file
276
Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c
Normal file
@@ -0,0 +1,276 @@
|
||||
/**
|
||||
* \addtogroup httpd
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file
|
||||
* Web server script interface
|
||||
* \author
|
||||
* Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001-2006, Adam Dunkels.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the uIP TCP/IP stack.
|
||||
*
|
||||
* $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include "uip.h"
|
||||
#include "psock.h"
|
||||
#include "httpd.h"
|
||||
#include "httpd-cgi.h"
|
||||
#include "httpd-fs.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
HTTPD_CGI_CALL(file, "file-stats", file_stats);
|
||||
HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats);
|
||||
HTTPD_CGI_CALL(net, "net-stats", net_stats);
|
||||
HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats );
|
||||
HTTPD_CGI_CALL(io, "led-io", led_io );
|
||||
|
||||
|
||||
static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, &io, NULL };
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
httpd_cgifunction
|
||||
httpd_cgi(char *name)
|
||||
{
|
||||
const struct httpd_cgi_call **f;
|
||||
|
||||
/* Find the matching name in the table, return the function. */
|
||||
for(f = calls; *f != NULL; ++f) {
|
||||
if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {
|
||||
return (*f)->function;
|
||||
}
|
||||
}
|
||||
return nullfunction;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static unsigned short
|
||||
generate_file_stats(void *arg)
|
||||
{
|
||||
char *f = (char *)arg;
|
||||
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f));
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
|
||||
PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1);
|
||||
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static const char closed[] = /* "CLOSED",*/
|
||||
{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
|
||||
static const char syn_rcvd[] = /* "SYN-RCVD",*/
|
||||
{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
|
||||
0x44, 0};
|
||||
static const char syn_sent[] = /* "SYN-SENT",*/
|
||||
{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
|
||||
0x54, 0};
|
||||
static const char established[] = /* "ESTABLISHED",*/
|
||||
{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
|
||||
0x45, 0x44, 0};
|
||||
static const char fin_wait_1[] = /* "FIN-WAIT-1",*/
|
||||
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
|
||||
0x54, 0x2d, 0x31, 0};
|
||||
static const char fin_wait_2[] = /* "FIN-WAIT-2",*/
|
||||
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
|
||||
0x54, 0x2d, 0x32, 0};
|
||||
static const char closing[] = /* "CLOSING",*/
|
||||
{0x43, 0x4c, 0x4f, 0x53, 0x49,
|
||||
0x4e, 0x47, 0};
|
||||
static const char time_wait[] = /* "TIME-WAIT,"*/
|
||||
{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
|
||||
0x49, 0x54, 0};
|
||||
static const char last_ack[] = /* "LAST-ACK"*/
|
||||
{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
|
||||
0x4b, 0};
|
||||
|
||||
static const char *states[] = {
|
||||
closed,
|
||||
syn_rcvd,
|
||||
syn_sent,
|
||||
established,
|
||||
fin_wait_1,
|
||||
fin_wait_2,
|
||||
closing,
|
||||
time_wait,
|
||||
last_ack};
|
||||
|
||||
|
||||
static unsigned short
|
||||
generate_tcp_stats(void *arg)
|
||||
{
|
||||
struct uip_conn *conn;
|
||||
struct httpd_state *s = (struct httpd_state *)arg;
|
||||
|
||||
conn = &uip_conns[s->count];
|
||||
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
|
||||
"<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
|
||||
htons(conn->lport),
|
||||
htons(conn->ripaddr[0]) >> 8,
|
||||
htons(conn->ripaddr[0]) & 0xff,
|
||||
htons(conn->ripaddr[1]) >> 8,
|
||||
htons(conn->ripaddr[1]) & 0xff,
|
||||
htons(conn->rport),
|
||||
states[conn->tcpstateflags & UIP_TS_MASK],
|
||||
conn->nrtx,
|
||||
conn->timer,
|
||||
(uip_outstanding(conn))? '*':' ',
|
||||
(uip_stopped(conn))? '!':' ');
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr))
|
||||
{
|
||||
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
|
||||
for(s->count = 0; s->count < UIP_CONNS; ++s->count) {
|
||||
if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) {
|
||||
PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s);
|
||||
}
|
||||
}
|
||||
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static unsigned short
|
||||
generate_net_stats(void *arg)
|
||||
{
|
||||
struct httpd_state *s = (struct httpd_state *)arg;
|
||||
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
|
||||
"%5u\n", ((uip_stats_t *)&uip_stat)[s->count]);
|
||||
}
|
||||
|
||||
static
|
||||
PT_THREAD(net_stats(struct httpd_state *s, char *ptr))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
|
||||
#if UIP_STATISTICS
|
||||
|
||||
for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t);
|
||||
++s->count) {
|
||||
PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s);
|
||||
}
|
||||
|
||||
#endif /* UIP_STATISTICS */
|
||||
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
extern void vTaskList( signed char *pcWriteBuffer );
|
||||
static char cCountBuf[ 32 ];
|
||||
long lRefreshCount = 0;
|
||||
static unsigned short
|
||||
generate_rtos_stats(void *arg)
|
||||
{
|
||||
lRefreshCount++;
|
||||
sprintf( cCountBuf, "<p><br>Refresh count = %d", lRefreshCount );
|
||||
vTaskList( uip_appdata );
|
||||
strcat( uip_appdata, cCountBuf );
|
||||
|
||||
return strlen( uip_appdata );
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
static
|
||||
PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL);
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
char *pcStatus[ 3 ];
|
||||
unsigned long ulString;
|
||||
extern unsigned long uxParTextGetLED( unsigned long uxLED );
|
||||
|
||||
static unsigned short generate_io_state( void *arg )
|
||||
{
|
||||
for( ulString = 0; ulString < 4; ulString++ )
|
||||
{
|
||||
if( uxParTextGetLED( ulString + 5 ) )
|
||||
{
|
||||
pcStatus[ ulString ] = "checked";
|
||||
}
|
||||
else
|
||||
{
|
||||
pcStatus[ ulString ] = "";
|
||||
}
|
||||
}
|
||||
|
||||
sprintf( uip_appdata,
|
||||
"<input type=\"checkbox\" name=\"LED0\" value=\"1\" %s>LED 2.5,"\
|
||||
"<input type=\"checkbox\" name=\"LED1\" value=\"1\" %s>LED 2.6,"\
|
||||
"<input type=\"checkbox\" name=\"LED2\" value=\"1\" %s>LED 2.7"\
|
||||
"<p>"\
|
||||
"<input type=\"text\" name=\"LCD\" value=\"Enter LCD text\" size=\"16\">",
|
||||
pcStatus[ 0 ],
|
||||
pcStatus[ 1 ],
|
||||
pcStatus[ 2 ] );
|
||||
|
||||
return strlen( uip_appdata );
|
||||
}
|
||||
|
||||
static PT_THREAD(led_io(struct httpd_state *s, char *ptr))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
PSOCK_GENERATOR_SEND(&s->sout, generate_io_state, NULL);
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
84
Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h
Normal file
84
Demo/ARM7_LPC2368_Rowley/webserver/httpd-cgi.h
Normal file
@@ -0,0 +1,84 @@
|
||||
/**
|
||||
* \addtogroup httpd
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file
|
||||
* Web server script interface header file
|
||||
* \author
|
||||
* Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001, Adam Dunkels.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the uIP TCP/IP stack.
|
||||
*
|
||||
* $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __HTTPD_CGI_H__
|
||||
#define __HTTPD_CGI_H__
|
||||
|
||||
#include "psock.h"
|
||||
#include "httpd.h"
|
||||
|
||||
typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *));
|
||||
|
||||
httpd_cgifunction httpd_cgi(char *name);
|
||||
|
||||
struct httpd_cgi_call {
|
||||
const char *name;
|
||||
const httpd_cgifunction function;
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief HTTPD CGI function declaration
|
||||
* \param name The C variable name of the function
|
||||
* \param str The string name of the function, used in the script file
|
||||
* \param function A pointer to the function that implements it
|
||||
*
|
||||
* This macro is used for declaring a HTTPD CGI
|
||||
* function. This function is then added to the list of
|
||||
* HTTPD CGI functions with the httpd_cgi_add() function.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define HTTPD_CGI_CALL(name, str, function) \
|
||||
static PT_THREAD(function(struct httpd_state *, char *)); \
|
||||
static const struct httpd_cgi_call name = {str, function}
|
||||
|
||||
void httpd_cgi_init(void);
|
||||
#endif /* __HTTPD_CGI_H__ */
|
||||
|
||||
/** @} */
|
||||
132
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c
Normal file
132
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.c
Normal file
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
* Copyright (c) 2001, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $
|
||||
*/
|
||||
|
||||
#include "httpd.h"
|
||||
#include "httpd-fs.h"
|
||||
#include "httpd-fsdata.h"
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif /* NULL */
|
||||
|
||||
#include "httpd-fsdata.c"
|
||||
|
||||
#if HTTPD_FS_STATISTICS
|
||||
static u16_t count[HTTPD_FS_NUMFILES];
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static u8_t
|
||||
httpd_fs_strcmp(const char *str1, const char *str2)
|
||||
{
|
||||
u8_t i;
|
||||
i = 0;
|
||||
loop:
|
||||
|
||||
if(str2[i] == 0 ||
|
||||
str1[i] == '\r' ||
|
||||
str1[i] == '\n') {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(str1[i] != str2[i]) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
goto loop;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
int
|
||||
httpd_fs_open(const char *name, struct httpd_fs_file *file)
|
||||
{
|
||||
#if HTTPD_FS_STATISTICS
|
||||
u16_t i = 0;
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
struct httpd_fsdata_file_noconst *f;
|
||||
|
||||
for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
|
||||
f != NULL;
|
||||
f = (struct httpd_fsdata_file_noconst *)f->next) {
|
||||
|
||||
if(httpd_fs_strcmp(name, f->name) == 0) {
|
||||
file->data = f->data;
|
||||
file->len = f->len;
|
||||
#if HTTPD_FS_STATISTICS
|
||||
++count[i];
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
return 1;
|
||||
}
|
||||
#if HTTPD_FS_STATISTICS
|
||||
++i;
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
void
|
||||
httpd_fs_init(void)
|
||||
{
|
||||
#if HTTPD_FS_STATISTICS
|
||||
u16_t i;
|
||||
for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
|
||||
count[i] = 0;
|
||||
}
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
#if HTTPD_FS_STATISTICS
|
||||
u16_t httpd_fs_count
|
||||
(char *name)
|
||||
{
|
||||
struct httpd_fsdata_file_noconst *f;
|
||||
u16_t i;
|
||||
|
||||
i = 0;
|
||||
for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
|
||||
f != NULL;
|
||||
f = (struct httpd_fsdata_file_noconst *)f->next) {
|
||||
|
||||
if(httpd_fs_strcmp(name, f->name) == 0) {
|
||||
return count[i];
|
||||
}
|
||||
++i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
57
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h
Normal file
57
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs.h
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (c) 2001, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: httpd-fs.h,v 1.1 2006/06/07 09:13:08 adam Exp $
|
||||
*/
|
||||
#ifndef __HTTPD_FS_H__
|
||||
#define __HTTPD_FS_H__
|
||||
|
||||
#define HTTPD_FS_STATISTICS 1
|
||||
|
||||
struct httpd_fs_file {
|
||||
char *data;
|
||||
int len;
|
||||
};
|
||||
|
||||
/* file must be allocated by caller and will be filled in
|
||||
by the function. */
|
||||
int httpd_fs_open(const char *name, struct httpd_fs_file *file);
|
||||
|
||||
#ifdef HTTPD_FS_STATISTICS
|
||||
#if HTTPD_FS_STATISTICS == 1
|
||||
u16_t httpd_fs_count(char *name);
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
|
||||
void httpd_fs_init(void);
|
||||
|
||||
#endif /* __HTTPD_FS_H__ */
|
||||
8
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html
Normal file
8
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/404.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<html>
|
||||
<body bgcolor="white">
|
||||
<center>
|
||||
<h1>404 - file not found</h1>
|
||||
<h3>Go <a href="/">here</a> instead.</h3>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
13
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html
Normal file
13
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||
</head>
|
||||
<BODY onLoad="window.setTimeout("location.href='index.shtml'",100)"bgcolor="#CCCCff">
|
||||
<font face="arial">
|
||||
Loading index.shtml. Click <a href="index.shtml">here</a> if not automatically redirected.
|
||||
</font>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
20
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml
Normal file
20
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/index.shtml
Normal file
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||
</head>
|
||||
<BODY onLoad="window.setTimeout("location.href='index.shtml'",2000)"bgcolor="#CCCCff">
|
||||
<font face="arial">
|
||||
<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>
|
||||
<br><p>
|
||||
<hr>
|
||||
<br><p>
|
||||
<h2>Task statistics</h2>
|
||||
Page will refresh evey 2 seconds.<p>
|
||||
<font face="courier"><pre>Task State Priority Stack #<br>************************************************<br>
|
||||
%! rtos-stats
|
||||
</pre></font>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
28
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml
Normal file
28
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/io.shtml
Normal file
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||
</head>
|
||||
<BODY bgcolor="#CCCCff">
|
||||
<font face="arial">
|
||||
<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>
|
||||
<br><p>
|
||||
<hr>
|
||||
<b>LED and LCD IO</b><br>
|
||||
|
||||
<p>
|
||||
|
||||
Use the check boxes to select the LED's to turn on or off, enter text to display on the LCD, then click "Update IO".
|
||||
|
||||
|
||||
<p>
|
||||
<form name="aForm" action="/io.shtml" method="get">
|
||||
%! led-io
|
||||
<p>
|
||||
<input type="submit" value="Update IO">
|
||||
</form>
|
||||
<br><p>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
41
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml
Normal file
41
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/stats.shtml
Normal file
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||
</head>
|
||||
<BODY bgcolor="#CCCCff">
|
||||
<font face="arial">
|
||||
<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>
|
||||
<br><p>
|
||||
<hr>
|
||||
<br><p>
|
||||
<h2>Network statistics</h2>
|
||||
<table width="300" border="0">
|
||||
<tr><td align="left"><font face="courier"><pre>
|
||||
IP Packets dropped
|
||||
Packets received
|
||||
Packets sent
|
||||
IP errors IP version/header length
|
||||
IP length, high byte
|
||||
IP length, low byte
|
||||
IP fragments
|
||||
Header checksum
|
||||
Wrong protocol
|
||||
ICMP Packets dropped
|
||||
Packets received
|
||||
Packets sent
|
||||
Type errors
|
||||
TCP Packets dropped
|
||||
Packets received
|
||||
Packets sent
|
||||
Checksum errors
|
||||
Data packets without ACKs
|
||||
Resets
|
||||
Retransmissions
|
||||
No connection avaliable
|
||||
Connection attempts to closed ports
|
||||
</pre></font></td><td><pre>%! net-stats
|
||||
</pre></table>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
21
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml
Normal file
21
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fs/tcp.shtml
Normal file
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FreeRTOS.org uIP WEB server demo</title>
|
||||
</head>
|
||||
<BODY bgcolor="#CCCCff">
|
||||
<font face="arial">
|
||||
<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>
|
||||
<br><p>
|
||||
<hr>
|
||||
<br>
|
||||
<h2>Network connections</h2>
|
||||
<p>
|
||||
<table>
|
||||
<tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th></tr>
|
||||
%! tcp-connections
|
||||
</pre></font>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
470
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c
Normal file
470
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.c
Normal file
@@ -0,0 +1,470 @@
|
||||
static const unsigned char data_404_html[] = {
|
||||
/* /404.html */
|
||||
0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20,
|
||||
0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f,
|
||||
0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63,
|
||||
0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30,
|
||||
0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e,
|
||||
0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f,
|
||||
0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61,
|
||||
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e,
|
||||
0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69,
|
||||
0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68,
|
||||
0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f,
|
||||
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20,
|
||||
0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
|
||||
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0};
|
||||
|
||||
static const unsigned char data_index_html[] = {
|
||||
/* /index.html */
|
||||
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||
0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64,
|
||||
0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73,
|
||||
0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28,
|
||||
0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d,
|
||||
0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74,
|
||||
0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c,
|
||||
0x31, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f, 0x6c,
|
||||
0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66,
|
||||
0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74,
|
||||
0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69,
|
||||
0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x4c, 0x6f, 0x61, 0x64,
|
||||
0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x20, 0x20, 0x43, 0x6c,
|
||||
0x69, 0x63, 0x6b, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
|
||||
0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73,
|
||||
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65,
|
||||
0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f,
|
||||
0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69,
|
||||
0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x64, 0x69,
|
||||
0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0xd, 0xa, 0x3c,
|
||||
0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f,
|
||||
0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62,
|
||||
0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74,
|
||||
0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0};
|
||||
|
||||
static const unsigned char data_index_shtml[] = {
|
||||
/* /index.shtml */
|
||||
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||
0x4f, 0x44, 0x59, 0x20, 0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64,
|
||||
0x3d, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73,
|
||||
0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28,
|
||||
0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d,
|
||||
0x27, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x73, 0x68, 0x74,
|
||||
0x6d, 0x6c, 0x27, 0x26, 0x71, 0x75, 0x6f, 0x74, 0x3b, 0x2c,
|
||||
0x32, 0x30, 0x30, 0x30, 0x29, 0x22, 0x62, 0x67, 0x63, 0x6f,
|
||||
0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43,
|
||||
0x66, 0x66, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e,
|
||||
0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72,
|
||||
0x69, 0x61, 0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20,
|
||||
0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65,
|
||||
0x78, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52,
|
||||
0x54, 0x4f, 0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c,
|
||||
0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f,
|
||||
0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
|
||||
0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68,
|
||||
0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53,
|
||||
0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c,
|
||||
0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61,
|
||||
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70,
|
||||
0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f,
|
||||
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c,
|
||||
0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f,
|
||||
0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
|
||||
0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
|
||||
0x77, 0x77, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f,
|
||||
0x73, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72,
|
||||
0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67,
|
||||
0x20, 0x48, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c,
|
||||
0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f,
|
||||
0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
|
||||
0x3d, 0x22, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
||||
0x22, 0x3e, 0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa,
|
||||
0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c,
|
||||
0x68, 0x72, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c,
|
||||
0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
|
||||
0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa,
|
||||
0x50, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20,
|
||||
0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76,
|
||||
0x65, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e,
|
||||
0x64, 0x73, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66,
|
||||
0x6f, 0x6e, 0x74, 0x20, 0x66, 0x61, 0x63, 0x65, 0x3d, 0x22,
|
||||
0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c,
|
||||
0x70, 0x72, 0x65, 0x3e, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x74,
|
||||
0x61, 0x74, 0x65, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6f, 0x72,
|
||||
0x69, 0x74, 0x79, 0x20, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b,
|
||||
0x9, 0x23, 0x3c, 0x62, 0x72, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||
0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
|
||||
0x2a, 0x2a, 0x2a, 0x2a, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa,
|
||||
0x25, 0x21, 0x20, 0x72, 0x74, 0x6f, 0x73, 0x2d, 0x73, 0x74,
|
||||
0x61, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f, 0x70, 0x72, 0x65,
|
||||
0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa,
|
||||
0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa, 0x3c,
|
||||
0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f,
|
||||
0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, 0};
|
||||
|
||||
static const unsigned char data_io_shtml[] = {
|
||||
/* /io.shtml */
|
||||
0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||
0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f,
|
||||
0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61,
|
||||
0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||
0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d,
|
||||
0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61,
|
||||
0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e,
|
||||
0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
||||
0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73,
|
||||
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e,
|
||||
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||
0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e,
|
||||
0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
|
||||
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48,
|
||||
0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
||||
0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62,
|
||||
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x62, 0x3e, 0x4c, 0x45, 0x44, 0x20,
|
||||
0x61, 0x6e, 0x64, 0x20, 0x4c, 0x43, 0x44, 0x20, 0x49, 0x4f,
|
||||
0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa,
|
||||
0xd, 0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x55,
|
||||
0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x65,
|
||||
0x63, 0x6b, 0x20, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x20, 0x74,
|
||||
0x6f, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x74,
|
||||
0x68, 0x65, 0x20, 0x4c, 0x45, 0x44, 0x27, 0x73, 0x20, 0x74,
|
||||
0x6f, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x6e, 0x20,
|
||||
0x6f, 0x72, 0x20, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x65, 0x6e,
|
||||
0x74, 0x65, 0x72, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74,
|
||||
0x6f, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20,
|
||||
0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x43, 0x44,
|
||||
0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6c, 0x69,
|
||||
0x63, 0x6b, 0x20, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||
0x20, 0x49, 0x4f, 0x22, 0x2e, 0xd, 0xa, 0xd, 0xa, 0xd,
|
||||
0xa, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x72,
|
||||
0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x61, 0x46,
|
||||
0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x3d, 0x22, 0x2f, 0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74,
|
||||
0x6d, 0x6c, 0x22, 0x20, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
|
||||
0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e, 0xd, 0xa, 0x25,
|
||||
0x21, 0x20, 0x6c, 0x65, 0x64, 0x2d, 0x69, 0x6f, 0xd, 0xa,
|
||||
0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6e, 0x70, 0x75,
|
||||
0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75,
|
||||
0x62, 0x6d, 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75,
|
||||
0x65, 0x3d, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20,
|
||||
0x49, 0x4f, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f,
|
||||
0x72, 0x6d, 0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c,
|
||||
0x70, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
|
||||
0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd,
|
||||
0xa, 0xd, 0xa, 0};
|
||||
|
||||
static const unsigned char data_stats_shtml[] = {
|
||||
/* /stats.shtml */
|
||||
0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||
0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f,
|
||||
0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61,
|
||||
0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||
0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d,
|
||||
0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61,
|
||||
0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e,
|
||||
0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
||||
0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73,
|
||||
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e,
|
||||
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||
0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e,
|
||||
0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
|
||||
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48,
|
||||
0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
||||
0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62,
|
||||
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e,
|
||||
0xd, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77,
|
||||
0x6f, 0x72, 0x6b, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73,
|
||||
0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd,
|
||||
0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69,
|
||||
0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x30, 0x30, 0x22, 0x20,
|
||||
0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x30, 0x22,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64,
|
||||
0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65,
|
||||
0x66, 0x74, 0x22, 0x3e, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x63, 0x6f, 0x75, 0x72,
|
||||
0x69, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x70, 0x72, 0x65, 0x3e,
|
||||
0xd, 0xa, 0x49, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||
0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||
0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
|
||||
0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b,
|
||||
0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa,
|
||||
0x49, 0x50, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20,
|
||||
0x20, 0x20, 0x20, 0x49, 0x50, 0x20, 0x76, 0x65, 0x72, 0x73,
|
||||
0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
|
||||
0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0xd, 0xa, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x49, 0x50, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74,
|
||||
0x68, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x62, 0x79,
|
||||
0x74, 0x65, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x50, 0x20,
|
||||
0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x6f,
|
||||
0x77, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd, 0xa, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x49, 0x50, 0x20, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65,
|
||||
0x6e, 0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65,
|
||||
0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b,
|
||||
0x73, 0x75, 0x6d, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x57, 0x72,
|
||||
0x6f, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
|
||||
0x6f, 0x6c, 0xd, 0xa, 0x49, 0x43, 0x4d, 0x50, 0x9, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
|
||||
0x73, 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0xd,
|
||||
0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
|
||||
0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||
0x74, 0x73, 0x20, 0x73, 0x65, 0x6e, 0x74, 0xd, 0xa, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x65, 0x72, 0x72,
|
||||
0x6f, 0x72, 0x73, 0xd, 0xa, 0x54, 0x43, 0x50, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61,
|
||||
0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x64, 0x72, 0x6f, 0x70,
|
||||
0x70, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x61,
|
||||
0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65,
|
||||
0x69, 0x76, 0x65, 0x64, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50,
|
||||
0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x73, 0x65, 0x6e,
|
||||
0x74, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x65, 0x63,
|
||||
0x6b, 0x73, 0x75, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72,
|
||||
0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61,
|
||||
0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x77,
|
||||
0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x41, 0x43, 0x4b,
|
||||
0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x73, 0x65,
|
||||
0x74, 0x73, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x74,
|
||||
0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
|
||||
0x6e, 0x73, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x61, 0x76, 0x61, 0x6c, 0x69, 0x61,
|
||||
0x62, 0x6c, 0x65, 0xd, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,
|
||||
0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64,
|
||||
0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0xd, 0xa, 0x3c, 0x2f,
|
||||
0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74,
|
||||
0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
|
||||
0x3c, 0x70, 0x72, 0x65, 0x3e, 0x25, 0x21, 0x20, 0x6e, 0x65,
|
||||
0x74, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0xd, 0xa, 0x3c,
|
||||
0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62,
|
||||
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e,
|
||||
0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||
0xd, 0xa, 0};
|
||||
|
||||
static const unsigned char data_tcp_shtml[] = {
|
||||
/* /tcp.shtml */
|
||||
0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x75, 0x49, 0x50, 0x20,
|
||||
0x57, 0x45, 0x42, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||
0x20, 0x64, 0x65, 0x6d, 0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68,
|
||||
0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x3c, 0x42,
|
||||
0x4f, 0x44, 0x59, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f,
|
||||
0x72, 0x3d, 0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20,
|
||||
0x66, 0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61,
|
||||
0x6c, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||
0x65, 0x66, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
|
||||
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x20, 0x53, 0x74, 0x61, 0x74, 0x73, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d,
|
||||
0x6c, 0x22, 0x3e, 0x54, 0x43, 0x50, 0x20, 0x53, 0x74, 0x61,
|
||||
0x74, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x62, 0x3e,
|
||||
0x7c, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
||||
0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73,
|
||||
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x6e,
|
||||
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||
0x2e, 0x66, 0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e,
|
||||
0x6f, 0x72, 0x67, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
|
||||
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x48,
|
||||
0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
|
||||
0x3e, 0x20, 0x3c, 0x62, 0x3e, 0x7c, 0x3c, 0x2f, 0x62, 0x3e,
|
||||
0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x69, 0x6f, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
||||
0x49, 0x4f, 0x3c, 0x2f, 0x61, 0x3e, 0xd, 0xa, 0x3c, 0x62,
|
||||
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x72,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xd, 0xa, 0x3c,
|
||||
0x68, 0x32, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
|
||||
0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xd, 0xa, 0x3c,
|
||||
0x70, 0x3e, 0xd, 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68,
|
||||
0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68,
|
||||
0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74,
|
||||
0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e,
|
||||
0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e,
|
||||
0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e,
|
||||
0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c,
|
||||
0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69,
|
||||
0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74,
|
||||
0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74,
|
||||
0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xd, 0xa, 0x25,
|
||||
0x21, 0x20, 0x74, 0x63, 0x70, 0x2d, 0x63, 0x6f, 0x6e, 0x6e,
|
||||
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xd, 0xa, 0x3c,
|
||||
0x2f, 0x70, 0x72, 0x65, 0x3e, 0x3c, 0x2f, 0x66, 0x6f, 0x6e,
|
||||
0x74, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74,
|
||||
0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
|
||||
0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd,
|
||||
0xa, 0xd, 0xa, 0};
|
||||
|
||||
const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
|
||||
|
||||
const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
|
||||
|
||||
const struct httpd_fsdata_file file_index_shtml[] = {{file_index_html, data_index_shtml, data_index_shtml + 13, sizeof(data_index_shtml) - 13}};
|
||||
|
||||
const struct httpd_fsdata_file file_io_shtml[] = {{file_index_shtml, data_io_shtml, data_io_shtml + 10, sizeof(data_io_shtml) - 10}};
|
||||
|
||||
const struct httpd_fsdata_file file_stats_shtml[] = {{file_io_shtml, data_stats_shtml, data_stats_shtml + 13, sizeof(data_stats_shtml) - 13}};
|
||||
|
||||
const struct httpd_fsdata_file file_tcp_shtml[] = {{file_stats_shtml, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}};
|
||||
|
||||
#define HTTPD_FS_ROOT file_tcp_shtml
|
||||
|
||||
#define HTTPD_FS_NUMFILES 6
|
||||
64
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h
Normal file
64
Demo/ARM7_LPC2368_Rowley/webserver/httpd-fsdata.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2001, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: httpd-fsdata.h,v 1.1 2006/06/07 09:13:08 adam Exp $
|
||||
*/
|
||||
#ifndef __HTTPD_FSDATA_H__
|
||||
#define __HTTPD_FSDATA_H__
|
||||
|
||||
#include "uip.h"
|
||||
|
||||
struct httpd_fsdata_file {
|
||||
const struct httpd_fsdata_file *next;
|
||||
const char *name;
|
||||
const char *data;
|
||||
const int len;
|
||||
#ifdef HTTPD_FS_STATISTICS
|
||||
#if HTTPD_FS_STATISTICS == 1
|
||||
u16_t count;
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
};
|
||||
|
||||
struct httpd_fsdata_file_noconst {
|
||||
struct httpd_fsdata_file *next;
|
||||
char *name;
|
||||
char *data;
|
||||
int len;
|
||||
#ifdef HTTPD_FS_STATISTICS
|
||||
#if HTTPD_FS_STATISTICS == 1
|
||||
u16_t count;
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
#endif /* HTTPD_FS_STATISTICS */
|
||||
};
|
||||
|
||||
#endif /* __HTTPD_FSDATA_H__ */
|
||||
346
Demo/ARM7_LPC2368_Rowley/webserver/httpd.c
Normal file
346
Demo/ARM7_LPC2368_Rowley/webserver/httpd.c
Normal file
@@ -0,0 +1,346 @@
|
||||
/**
|
||||
* \addtogroup apps
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* \defgroup httpd Web server
|
||||
* @{
|
||||
* The uIP web server is a very simplistic implementation of an HTTP
|
||||
* server. It can serve web pages and files from a read-only ROM
|
||||
* filesystem, and provides a very small scripting language.
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file
|
||||
* Web server
|
||||
* \author
|
||||
* Adam Dunkels <adam@sics.se>
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (c) 2004, Adam Dunkels.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the uIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $
|
||||
*/
|
||||
|
||||
#include "uip.h"
|
||||
#include "httpd.h"
|
||||
#include "httpd-fs.h"
|
||||
#include "httpd-cgi.h"
|
||||
#include "http-strings.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#define STATE_WAITING 0
|
||||
#define STATE_OUTPUT 1
|
||||
|
||||
#define ISO_nl 0x0a
|
||||
#define ISO_space 0x20
|
||||
#define ISO_bang 0x21
|
||||
#define ISO_percent 0x25
|
||||
#define ISO_period 0x2e
|
||||
#define ISO_slash 0x2f
|
||||
#define ISO_colon 0x3a
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static unsigned short
|
||||
generate_part_of_file(void *state)
|
||||
{
|
||||
struct httpd_state *s = (struct httpd_state *)state;
|
||||
|
||||
if(s->file.len > uip_mss()) {
|
||||
s->len = uip_mss();
|
||||
} else {
|
||||
s->len = s->file.len;
|
||||
}
|
||||
memcpy(uip_appdata, s->file.data, s->len);
|
||||
|
||||
return s->len;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(send_file(struct httpd_state *s))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
|
||||
do {
|
||||
PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s);
|
||||
s->file.len -= s->len;
|
||||
s->file.data += s->len;
|
||||
} while(s->file.len > 0);
|
||||
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(send_part_of_file(struct httpd_state *s))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
|
||||
PSOCK_SEND(&s->sout, s->file.data, s->len);
|
||||
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
next_scriptstate(struct httpd_state *s)
|
||||
{
|
||||
char *p;
|
||||
p = strchr(s->scriptptr, ISO_nl) + 1;
|
||||
s->scriptlen -= (unsigned short)(p - s->scriptptr);
|
||||
s->scriptptr = p;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(handle_script(struct httpd_state *s))
|
||||
{
|
||||
char *ptr;
|
||||
|
||||
PT_BEGIN(&s->scriptpt);
|
||||
|
||||
|
||||
while(s->file.len > 0) {
|
||||
|
||||
/* Check if we should start executing a script. */
|
||||
if(*s->file.data == ISO_percent &&
|
||||
*(s->file.data + 1) == ISO_bang) {
|
||||
s->scriptptr = s->file.data + 3;
|
||||
s->scriptlen = s->file.len - 3;
|
||||
if(*(s->scriptptr - 1) == ISO_colon) {
|
||||
httpd_fs_open(s->scriptptr + 1, &s->file);
|
||||
PT_WAIT_THREAD(&s->scriptpt, send_file(s));
|
||||
} else {
|
||||
PT_WAIT_THREAD(&s->scriptpt,
|
||||
httpd_cgi(s->scriptptr)(s, s->scriptptr));
|
||||
}
|
||||
next_scriptstate(s);
|
||||
|
||||
/* The script is over, so we reset the pointers and continue
|
||||
sending the rest of the file. */
|
||||
s->file.data = s->scriptptr;
|
||||
s->file.len = s->scriptlen;
|
||||
} else {
|
||||
/* See if we find the start of script marker in the block of HTML
|
||||
to be sent. */
|
||||
|
||||
if(s->file.len > uip_mss()) {
|
||||
s->len = uip_mss();
|
||||
} else {
|
||||
s->len = s->file.len;
|
||||
}
|
||||
|
||||
if(*s->file.data == ISO_percent) {
|
||||
ptr = strchr(s->file.data + 1, ISO_percent);
|
||||
} else {
|
||||
ptr = strchr(s->file.data, ISO_percent);
|
||||
}
|
||||
if(ptr != NULL &&
|
||||
ptr != s->file.data) {
|
||||
s->len = (int)(ptr - s->file.data);
|
||||
if(s->len >= uip_mss()) {
|
||||
s->len = uip_mss();
|
||||
}
|
||||
}
|
||||
PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s));
|
||||
s->file.data += s->len;
|
||||
s->file.len -= s->len;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
PT_END(&s->scriptpt);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr))
|
||||
{
|
||||
char *ptr;
|
||||
|
||||
PSOCK_BEGIN(&s->sout);
|
||||
|
||||
PSOCK_SEND_STR(&s->sout, statushdr);
|
||||
|
||||
ptr = strrchr(s->filename, ISO_period);
|
||||
if(ptr == NULL) {
|
||||
PSOCK_SEND_STR(&s->sout, http_content_type_binary);
|
||||
} else if(strncmp(http_html, ptr, 5) == 0 ||
|
||||
strncmp(http_shtml, ptr, 6) == 0) {
|
||||
PSOCK_SEND_STR(&s->sout, http_content_type_html);
|
||||
} else if(strncmp(http_css, ptr, 4) == 0) {
|
||||
PSOCK_SEND_STR(&s->sout, http_content_type_css);
|
||||
} else if(strncmp(http_png, ptr, 4) == 0) {
|
||||
PSOCK_SEND_STR(&s->sout, http_content_type_png);
|
||||
} else if(strncmp(http_gif, ptr, 4) == 0) {
|
||||
PSOCK_SEND_STR(&s->sout, http_content_type_gif);
|
||||
} else if(strncmp(http_jpg, ptr, 4) == 0) {
|
||||
PSOCK_SEND_STR(&s->sout, http_content_type_jpg);
|
||||
} else {
|
||||
PSOCK_SEND_STR(&s->sout, http_content_type_plain);
|
||||
}
|
||||
PSOCK_END(&s->sout);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(handle_output(struct httpd_state *s))
|
||||
{
|
||||
char *ptr;
|
||||
|
||||
PT_BEGIN(&s->outputpt);
|
||||
|
||||
if(!httpd_fs_open(s->filename, &s->file)) {
|
||||
httpd_fs_open(http_404_html, &s->file);
|
||||
strcpy(s->filename, http_404_html);
|
||||
PT_WAIT_THREAD(&s->outputpt,
|
||||
send_headers(s,
|
||||
http_header_404));
|
||||
PT_WAIT_THREAD(&s->outputpt,
|
||||
send_file(s));
|
||||
} else {
|
||||
PT_WAIT_THREAD(&s->outputpt,
|
||||
send_headers(s,
|
||||
http_header_200));
|
||||
ptr = strchr(s->filename, ISO_period);
|
||||
if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) {
|
||||
PT_INIT(&s->scriptpt);
|
||||
PT_WAIT_THREAD(&s->outputpt, handle_script(s));
|
||||
} else {
|
||||
PT_WAIT_THREAD(&s->outputpt,
|
||||
send_file(s));
|
||||
}
|
||||
}
|
||||
PSOCK_CLOSE(&s->sout);
|
||||
PT_END(&s->outputpt);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static
|
||||
PT_THREAD(handle_input(struct httpd_state *s))
|
||||
{
|
||||
PSOCK_BEGIN(&s->sin);
|
||||
|
||||
PSOCK_READTO(&s->sin, ISO_space);
|
||||
|
||||
|
||||
if(strncmp(s->inputbuf, http_get, 4) != 0) {
|
||||
PSOCK_CLOSE_EXIT(&s->sin);
|
||||
}
|
||||
PSOCK_READTO(&s->sin, ISO_space);
|
||||
|
||||
if(s->inputbuf[0] != ISO_slash) {
|
||||
PSOCK_CLOSE_EXIT(&s->sin);
|
||||
}
|
||||
|
||||
if(s->inputbuf[1] == ISO_space) {
|
||||
strncpy(s->filename, http_index_html, sizeof(s->filename));
|
||||
} else {
|
||||
|
||||
s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;
|
||||
|
||||
/* Process any form input being sent to the server. */
|
||||
{
|
||||
extern void vApplicationProcessFormInput( char *pcInputString, long xInputLength );
|
||||
vApplicationProcessFormInput( s->inputbuf, PSOCK_DATALEN(&s->sin) );
|
||||
}
|
||||
|
||||
strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename));
|
||||
}
|
||||
|
||||
/* httpd_log_file(uip_conn->ripaddr, s->filename);*/
|
||||
|
||||
s->state = STATE_OUTPUT;
|
||||
|
||||
while(1) {
|
||||
PSOCK_READTO(&s->sin, ISO_nl);
|
||||
|
||||
if(strncmp(s->inputbuf, http_referer, 8) == 0) {
|
||||
s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;
|
||||
/* httpd_log(&s->inputbuf[9]);*/
|
||||
}
|
||||
}
|
||||
|
||||
PSOCK_END(&s->sin);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
handle_connection(struct httpd_state *s)
|
||||
{
|
||||
handle_input(s);
|
||||
if(s->state == STATE_OUTPUT) {
|
||||
handle_output(s);
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
httpd_appcall(void)
|
||||
{
|
||||
struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate);
|
||||
|
||||
if(uip_closed() || uip_aborted() || uip_timedout()) {
|
||||
} else if(uip_connected()) {
|
||||
PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1);
|
||||
PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1);
|
||||
PT_INIT(&s->outputpt);
|
||||
s->state = STATE_WAITING;
|
||||
/* timer_set(&s->timer, CLOCK_SECOND * 100);*/
|
||||
s->timer = 0;
|
||||
handle_connection(s);
|
||||
} else if(s != NULL) {
|
||||
if(uip_poll()) {
|
||||
++s->timer;
|
||||
if(s->timer >= 20) {
|
||||
uip_abort();
|
||||
}
|
||||
} else {
|
||||
s->timer = 0;
|
||||
}
|
||||
handle_connection(s);
|
||||
} else {
|
||||
uip_abort();
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* \brief Initialize the web server
|
||||
*
|
||||
* This function initializes the web server and should be
|
||||
* called at system boot-up.
|
||||
*/
|
||||
void
|
||||
httpd_init(void)
|
||||
{
|
||||
uip_listen(HTONS(80));
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/** @} */
|
||||
62
Demo/ARM7_LPC2368_Rowley/webserver/httpd.h
Normal file
62
Demo/ARM7_LPC2368_Rowley/webserver/httpd.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2005, Adam Dunkels.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the uIP TCP/IP stack.
|
||||
*
|
||||
* $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __HTTPD_H__
|
||||
#define __HTTPD_H__
|
||||
|
||||
#include "psock.h"
|
||||
#include "httpd-fs.h"
|
||||
|
||||
struct httpd_state {
|
||||
unsigned char timer;
|
||||
struct psock sin, sout;
|
||||
struct pt outputpt, scriptpt;
|
||||
char inputbuf[50];
|
||||
char filename[20];
|
||||
char state;
|
||||
struct httpd_fs_file file;
|
||||
int len;
|
||||
char *scriptptr;
|
||||
int scriptlen;
|
||||
|
||||
unsigned short count;
|
||||
};
|
||||
|
||||
void httpd_init(void);
|
||||
void httpd_appcall(void);
|
||||
|
||||
void httpd_log(char *msg);
|
||||
void httpd_log_file(u16_t *requester, char *file);
|
||||
|
||||
#endif /* __HTTPD_H__ */
|
||||
78
Demo/ARM7_LPC2368_Rowley/webserver/makefsdata
Normal file
78
Demo/ARM7_LPC2368_Rowley/webserver/makefsdata
Normal file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
open(OUTPUT, "> httpd-fsdata.c");
|
||||
|
||||
chdir("httpd-fs");
|
||||
|
||||
opendir(DIR, ".");
|
||||
@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
|
||||
closedir(DIR);
|
||||
|
||||
foreach $file (@files) {
|
||||
|
||||
if(-d $file && $file !~ /^\./) {
|
||||
print "Processing directory $file\n";
|
||||
opendir(DIR, $file);
|
||||
@newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR);
|
||||
closedir(DIR);
|
||||
printf "Adding files @newfiles\n";
|
||||
@files = (@files, map { $_ = "$file/$_" } @newfiles);
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
foreach $file (@files) {
|
||||
if(-f $file) {
|
||||
|
||||
print "Adding file $file\n";
|
||||
|
||||
open(FILE, $file) || die "Could not open file $file\n";
|
||||
|
||||
$file =~ s-^-/-;
|
||||
$fvar = $file;
|
||||
$fvar =~ s-/-_-g;
|
||||
$fvar =~ s-\.-_-g;
|
||||
# for AVR, add PROGMEM here
|
||||
print(OUTPUT "static const unsigned char data".$fvar."[] = {\n");
|
||||
print(OUTPUT "\t/* $file */\n\t");
|
||||
for($j = 0; $j < length($file); $j++) {
|
||||
printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
|
||||
}
|
||||
printf(OUTPUT "0,\n");
|
||||
|
||||
|
||||
$i = 0;
|
||||
while(read(FILE, $data, 1)) {
|
||||
if($i == 0) {
|
||||
print(OUTPUT "\t");
|
||||
}
|
||||
printf(OUTPUT "%#02x, ", unpack("C", $data));
|
||||
$i++;
|
||||
if($i == 10) {
|
||||
print(OUTPUT "\n");
|
||||
$i = 0;
|
||||
}
|
||||
}
|
||||
print(OUTPUT "0};\n\n");
|
||||
close(FILE);
|
||||
push(@fvars, $fvar);
|
||||
push(@pfiles, $file);
|
||||
}
|
||||
}
|
||||
|
||||
for($i = 0; $i < @fvars; $i++) {
|
||||
$file = $pfiles[$i];
|
||||
$fvar = $fvars[$i];
|
||||
|
||||
if($i == 0) {
|
||||
$prevfile = "NULL";
|
||||
} else {
|
||||
$prevfile = "file" . $fvars[$i - 1];
|
||||
}
|
||||
print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
|
||||
print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");
|
||||
print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");
|
||||
}
|
||||
|
||||
print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");
|
||||
print(OUTPUT "#define HTTPD_FS_NUMFILES $i\n");
|
||||
40
Demo/ARM7_LPC2368_Rowley/webserver/makestrings
Normal file
40
Demo/ARM7_LPC2368_Rowley/webserver/makestrings
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
|
||||
sub stringify {
|
||||
my $name = shift(@_);
|
||||
open(OUTPUTC, "> $name.c");
|
||||
open(OUTPUTH, "> $name.h");
|
||||
|
||||
open(FILE, "$name");
|
||||
|
||||
while(<FILE>) {
|
||||
if(/(.+) "(.+)"/) {
|
||||
$var = $1;
|
||||
$data = $2;
|
||||
|
||||
$datan = $data;
|
||||
$datan =~ s/\\r/\r/g;
|
||||
$datan =~ s/\\n/\n/g;
|
||||
$datan =~ s/\\01/\01/g;
|
||||
$datan =~ s/\\0/\0/g;
|
||||
|
||||
printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1);
|
||||
printf(OUTPUTC "/* \"$data\" */\n");
|
||||
printf(OUTPUTC "{");
|
||||
for($j = 0; $j < length($datan); $j++) {
|
||||
printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1)));
|
||||
}
|
||||
printf(OUTPUTC "};\n");
|
||||
|
||||
printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1);
|
||||
|
||||
}
|
||||
}
|
||||
close(OUTPUTC);
|
||||
close(OUTPUTH);
|
||||
}
|
||||
stringify("http-strings");
|
||||
|
||||
exit 0;
|
||||
|
||||
318
Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c
Normal file
318
Demo/ARM7_LPC2368_Rowley/webserver/uIP_Task.c
Normal file
@@ -0,0 +1,318 @@
|
||||
/*
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
FreeRTOS.org is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FreeRTOS.org is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FreeRTOS.org; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
A special exception to the GPL can be applied should you wish to distribute
|
||||
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||
the source code for any proprietary components. See the licensing section
|
||||
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||
can be applied.
|
||||
|
||||
***************************************************************************
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
***************************************************************************
|
||||
*/
|
||||
/* Standard includes. */
|
||||
#include <string.h>
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* uip includes. */
|
||||
#include "uip.h"
|
||||
#include "uip_arp.h"
|
||||
#include "httpd.h"
|
||||
#include "timer.h"
|
||||
#include "clock-arch.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "emac.h"
|
||||
#include "partest.h"
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* MAC address configuration. */
|
||||
#define uipMAC_ADDR0 0x00
|
||||
#define uipMAC_ADDR1 0x12
|
||||
#define uipMAC_ADDR2 0x13
|
||||
#define uipMAC_ADDR3 0x10
|
||||
#define uipMAC_ADDR4 0x15
|
||||
#define uipMAC_ADDR5 0x11
|
||||
|
||||
/* IP address configuration. */
|
||||
#define uipIP_ADDR0 172
|
||||
#define uipIP_ADDR1 25
|
||||
#define uipIP_ADDR2 218
|
||||
#define uipIP_ADDR3 10
|
||||
|
||||
/* How long to wait before attempting to connect the MAC again. */
|
||||
#define uipINIT_WAIT 100
|
||||
|
||||
/* Shortcut to the header within the Rx buffer. */
|
||||
#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ])
|
||||
|
||||
/* Standard constant. */
|
||||
#define uipTOTAL_FRAME_HEADER_SIZE 54
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* Send the uIP buffer to the MAC.
|
||||
*/
|
||||
static void prvENET_Send(void);
|
||||
|
||||
/*
|
||||
* Setup the MAC address in the MAC itself, and in the uIP stack.
|
||||
*/
|
||||
static void prvSetMACAddress( void );
|
||||
|
||||
/*
|
||||
* Port functions required by the uIP stack.
|
||||
*/
|
||||
void clock_init( void );
|
||||
clock_time_t clock_time( void );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The semaphore used by the ISR to wake the uIP task. */
|
||||
extern xSemaphoreHandle xEMACSemaphore;
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void clock_init(void)
|
||||
{
|
||||
/* This is done when the scheduler starts. */
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
clock_time_t clock_time( void )
|
||||
{
|
||||
return xTaskGetTickCount();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vuIP_Task( void *pvParameters )
|
||||
{
|
||||
portBASE_TYPE i;
|
||||
uip_ipaddr_t xIPAddr;
|
||||
struct timer periodic_timer, arp_timer;
|
||||
extern void ( vEMAC_ISR )( void );
|
||||
|
||||
/* Create the semaphore used by the ISR to wake this task. */
|
||||
vSemaphoreCreateBinary( xEMACSemaphore );
|
||||
|
||||
/* Initialise the uIP stack. */
|
||||
timer_set( &periodic_timer, configTICK_RATE_HZ / 2 );
|
||||
timer_set( &arp_timer, configTICK_RATE_HZ * 10 );
|
||||
uip_init();
|
||||
uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 );
|
||||
uip_sethostaddr( xIPAddr );
|
||||
httpd_init();
|
||||
|
||||
/* Initialise the MAC. */
|
||||
while( Init_EMAC() != pdPASS )
|
||||
{
|
||||
vTaskDelay( uipINIT_WAIT );
|
||||
}
|
||||
|
||||
portENTER_CRITICAL();
|
||||
{
|
||||
IntEnable = INT_RX_DONE;
|
||||
VICIntEnable |= 0x00200000;
|
||||
VICVectAddr21 = ( portLONG ) vEMAC_ISR;
|
||||
prvSetMACAddress();
|
||||
}
|
||||
portEXIT_CRITICAL();
|
||||
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Is there received data ready to be processed? */
|
||||
uip_len = uiGetEMACRxData( uip_buf );
|
||||
|
||||
if( uip_len > 0 )
|
||||
{
|
||||
/* Standard uIP loop taken from the uIP manual. */
|
||||
if( xHeader->type == htons( UIP_ETHTYPE_IP ) )
|
||||
{
|
||||
uip_arp_ipin();
|
||||
uip_input();
|
||||
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
uip_len is set to a value > 0. */
|
||||
if( uip_len > 0 )
|
||||
{
|
||||
uip_arp_out();
|
||||
prvENET_Send();
|
||||
}
|
||||
}
|
||||
else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) )
|
||||
{
|
||||
uip_arp_arpin();
|
||||
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
uip_len is set to a value > 0. */
|
||||
if( uip_len > 0 )
|
||||
{
|
||||
prvENET_Send();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( timer_expired( &periodic_timer ) )
|
||||
{
|
||||
timer_reset( &periodic_timer );
|
||||
for( i = 0; i < UIP_CONNS; i++ )
|
||||
{
|
||||
uip_periodic( i );
|
||||
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
uip_len is set to a value > 0. */
|
||||
if( uip_len > 0 )
|
||||
{
|
||||
uip_arp_out();
|
||||
prvENET_Send();
|
||||
}
|
||||
}
|
||||
|
||||
/* Call the ARP timer function every 10 seconds. */
|
||||
if( timer_expired( &arp_timer ) )
|
||||
{
|
||||
timer_reset( &arp_timer );
|
||||
uip_arp_timer();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We did not receive a packet, and there was no periodic
|
||||
processing to perform. Block for a fixed period. If a packet
|
||||
is received during this period we will be woken by the ISR
|
||||
giving us the Semaphore. */
|
||||
xSemaphoreTake( xEMACSemaphore, configTICK_RATE_HZ / 2 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvENET_Send(void)
|
||||
{
|
||||
RequestSend();
|
||||
|
||||
/* Copy the header into the Tx buffer. */
|
||||
CopyToFrame_EMAC( uip_buf, uipTOTAL_FRAME_HEADER_SIZE );
|
||||
if( uip_len > uipTOTAL_FRAME_HEADER_SIZE )
|
||||
{
|
||||
CopyToFrame_EMAC( uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) );
|
||||
}
|
||||
|
||||
DoSend_EMAC( uip_len );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvSetMACAddress( void )
|
||||
{
|
||||
struct uip_eth_addr xAddr;
|
||||
|
||||
/* Configure the MAC address in the uIP stack. */
|
||||
xAddr.addr[ 0 ] = uipMAC_ADDR0;
|
||||
xAddr.addr[ 1 ] = uipMAC_ADDR1;
|
||||
xAddr.addr[ 2 ] = uipMAC_ADDR2;
|
||||
xAddr.addr[ 3 ] = uipMAC_ADDR3;
|
||||
xAddr.addr[ 4 ] = uipMAC_ADDR4;
|
||||
xAddr.addr[ 5 ] = uipMAC_ADDR5;
|
||||
uip_setethaddr( xAddr );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vApplicationProcessFormInput( portCHAR *pcInputString, portBASE_TYPE xInputLength )
|
||||
{
|
||||
char *c, *pcText;
|
||||
static portCHAR cMessageForDisplay[ 32 ];
|
||||
extern xQueueHandle xLCDQueue;
|
||||
xLCDMessage xLCDMessage;
|
||||
|
||||
/* Process the form input sent by the IO page of the served HTML. */
|
||||
|
||||
c = strstr( pcInputString, "?" );
|
||||
if( c )
|
||||
{
|
||||
/* Turn LED's on or off in accordance with the check box status. */
|
||||
if( strstr( c, "LED0=1" ) != NULL )
|
||||
{
|
||||
vParTestSetLED( 5, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
vParTestSetLED( 5, 1 );
|
||||
}
|
||||
|
||||
if( strstr( c, "LED1=1" ) != NULL )
|
||||
{
|
||||
vParTestSetLED( 6, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
vParTestSetLED( 6, 1 );
|
||||
}
|
||||
|
||||
if( strstr( c, "LED2=1" ) != NULL )
|
||||
{
|
||||
vParTestSetLED( 7, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
vParTestSetLED( 7, 1 );
|
||||
}
|
||||
|
||||
/* Find the start of the text to be displayed on the LCD. */
|
||||
pcText = strstr( c, "LCD=" );
|
||||
pcText += strlen( "LCD=" );
|
||||
|
||||
/* Terminate the file name for further processing within uIP. */
|
||||
*c = 0x00;
|
||||
|
||||
/* Terminate the LCD string. */
|
||||
c = strstr( pcText, " " );
|
||||
if( c != NULL )
|
||||
{
|
||||
*c = 0x00;
|
||||
}
|
||||
|
||||
/* Add required spaces. */
|
||||
while( ( c = strstr( pcText, "+" ) ) != NULL )
|
||||
{
|
||||
*c = ' ';
|
||||
}
|
||||
|
||||
/* Write the message to the LCD. */
|
||||
strcpy( cMessageForDisplay, pcText );
|
||||
xLCDMessage.xColumn = 0;
|
||||
xLCDMessage.pcMessage = cMessageForDisplay;
|
||||
xQueueSend( xLCDQueue, &xLCDMessage, portMAX_DELAY );
|
||||
}
|
||||
}
|
||||
|
||||
157
Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h
Normal file
157
Demo/ARM7_LPC2368_Rowley/webserver/uip-conf.h
Normal file
@@ -0,0 +1,157 @@
|
||||
/**
|
||||
* \addtogroup uipopt
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* \name Project-specific configuration options
|
||||
* @{
|
||||
*
|
||||
* uIP has a number of configuration options that can be overridden
|
||||
* for each project. These are kept in a project-specific uip-conf.h
|
||||
* file and all configuration names have the prefix UIP_CONF.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006, Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the Institute nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the uIP TCP/IP stack
|
||||
*
|
||||
* $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file
|
||||
* An example uIP configuration file
|
||||
* \author
|
||||
* Adam Dunkels <adam@sics.se>
|
||||
*/
|
||||
|
||||
#ifndef __UIP_CONF_H__
|
||||
#define __UIP_CONF_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* 8 bit datatype
|
||||
*
|
||||
* This typedef defines the 8-bit type used throughout uIP.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
typedef uint8_t u8_t;
|
||||
|
||||
/**
|
||||
* 16 bit datatype
|
||||
*
|
||||
* This typedef defines the 16-bit type used throughout uIP.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
typedef uint16_t u16_t;
|
||||
|
||||
/**
|
||||
* Statistics datatype
|
||||
*
|
||||
* This typedef defines the dataype used for keeping statistics in
|
||||
* uIP.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
typedef unsigned short uip_stats_t;
|
||||
|
||||
/**
|
||||
* Maximum number of TCP connections.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_MAX_CONNECTIONS 40
|
||||
|
||||
/**
|
||||
* Maximum number of listening TCP ports.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_MAX_LISTENPORTS 40
|
||||
|
||||
/**
|
||||
* uIP buffer size.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_BUFFER_SIZE 1480
|
||||
|
||||
/**
|
||||
* CPU byte order.
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN
|
||||
|
||||
/**
|
||||
* Logging on or off
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_LOGGING 0
|
||||
|
||||
/**
|
||||
* UDP support on or off
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_UDP 0
|
||||
|
||||
/**
|
||||
* UDP checksums on or off
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_UDP_CHECKSUMS 1
|
||||
|
||||
/**
|
||||
* uIP statistics on or off
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_STATISTICS 1
|
||||
|
||||
/* Here we include the header file for the application(s) we use in
|
||||
our project. */
|
||||
/*#include "smtp.h"*/
|
||||
/*#include "hello-world.h"*/
|
||||
/*#include "telnetd.h"*/
|
||||
#include "webserver.h"
|
||||
/*#include "dhcpc.h"*/
|
||||
/*#include "resolv.h"*/
|
||||
/*#include "webclient.h"*/
|
||||
|
||||
#endif /* __UIP_CONF_H__ */
|
||||
|
||||
/** @} */
|
||||
/** @} */
|
||||
49
Demo/ARM7_LPC2368_Rowley/webserver/webserver.h
Normal file
49
Demo/ARM7_LPC2368_Rowley/webserver/webserver.h
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2002, Adam Dunkels.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this software without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the uIP TCP/IP stack
|
||||
*
|
||||
* $Id: webserver.h,v 1.2 2006/06/11 21:46:38 adam Exp $
|
||||
*
|
||||
*/
|
||||
#ifndef __WEBSERVER_H__
|
||||
#define __WEBSERVER_H__
|
||||
|
||||
#include "httpd.h"
|
||||
|
||||
typedef struct httpd_state uip_tcp_appstate_t;
|
||||
/* UIP_APPCALL: the name of the application function. This function
|
||||
must return void and take no arguments (i.e., C type "void
|
||||
appfunc(void)"). */
|
||||
#ifndef UIP_APPCALL
|
||||
#define UIP_APPCALL httpd_appcall
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __WEBSERVER_H__ */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -140,6 +140,8 @@
|
||||
<state>STR91X_IAR</state>
|
||||
<state>DEBUG</state>
|
||||
<state>DONT_RUN_TASK_IN_ARM_MODE_</state>
|
||||
<state>PACK_STRUCT_END=</state>
|
||||
<state>ALIGN_STRUCT_END=</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCPreprocFile</name>
|
||||
@@ -179,7 +181,7 @@
|
||||
</option>
|
||||
<option>
|
||||
<name>CCDiagSuppress</name>
|
||||
<state>pe191,pa082, pe144, pe550, pe513, pe167, pe177</state>
|
||||
<state>pe191,pa082, pe144, pe550, pe513, pe167, pe177, pa039</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCDiagRemark</name>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
@@ -250,7 +253,6 @@ static void prvSetupHardware( void )
|
||||
SCU_AHBPeriphReset(__VIC, DISABLE);
|
||||
|
||||
/* Peripheral initialisation. */
|
||||
LCD_Init();
|
||||
vParTestInitialise();
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
@@ -397,6 +399,8 @@ portCHAR *pcString;
|
||||
scope variable anyway. */
|
||||
pxLCDQueue = ( xQueueHandle * ) pvParameters;
|
||||
|
||||
LCD_Init();
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait for a message to arrive. */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.3.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
|
||||
Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
|
||||
with commercial development and support options.
|
||||
***************************************************************************
|
||||
*/
|
||||
/* Standard includes. */
|
||||
@@ -252,9 +255,7 @@ static unsigned portCHAR *pcTxData;
|
||||
{
|
||||
/* Copy the header into the Tx buffer. */
|
||||
memcpy( ( void * ) pcTxData, ( void * ) uip_buf, uipTOTAL_FRAME_HEADER_SIZE );
|
||||
|
||||
/* If there is room, also copy in the application data if any. */
|
||||
if( ( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) && ( uip_len <= ( ENET_BUFFER_SIZE - uipTOTAL_FRAME_HEADER_SIZE ) ) )
|
||||
if( uip_len > uipTOTAL_FRAME_HEADER_SIZE )
|
||||
{
|
||||
memcpy( ( void * ) &( pcTxData[ uipTOTAL_FRAME_HEADER_SIZE ] ), ( void * ) uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) );
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ typedef unsigned short uip_stats_t;
|
||||
*
|
||||
* \hideinitializer
|
||||
*/
|
||||
#define UIP_CONF_BUFFER_SIZE 1500
|
||||
#define UIP_CONF_BUFFER_SIZE 1480
|
||||
|
||||
/**
|
||||
* CPU byte order.
|
||||
|
||||
464
Demo/AVR32_UC3/AT32UC3A/GCC/Makefile
Normal file
464
Demo/AVR32_UC3/AT32UC3A/GCC/Makefile
Normal file
@@ -0,0 +1,464 @@
|
||||
# Hey Emacs, this is a -*- makefile -*-
|
||||
|
||||
# Goals available on make command line:
|
||||
#
|
||||
# [all] Default goal: build the project.
|
||||
# clean Clean up the project.
|
||||
# rebuild Rebuild the project.
|
||||
# ccversion Display CC version information.
|
||||
# cppfiles file.i Generate preprocessed files from C source files.
|
||||
# asfiles file.x Generate preprocessed assembler files from C and assembler source files.
|
||||
# objfiles file.o Generate object files from C and assembler source files.
|
||||
# a file.a Archive: create A output file from object files.
|
||||
# elf file.elf Link: create ELF output file from object files.
|
||||
# lss file.lss Create extended listing from target output file.
|
||||
# sym file.sym Create symbol table from target output file.
|
||||
# bin file.bin Create binary image from ELF output file.
|
||||
# sizes Display target size information.
|
||||
# cpuinfo Get CPU information.
|
||||
# halt Stop CPU execution.
|
||||
# program Program MCU memory from ELF output file.
|
||||
# reset Reset CPU.
|
||||
# debug Open a debug connection with the MCU.
|
||||
# run Start CPU execution.
|
||||
# readregs Read CPU registers.
|
||||
# doc Build the documentation.
|
||||
# cleandoc Clean up the documentation.
|
||||
# rebuilddoc Rebuild the documentation.
|
||||
# verbose Display main executed commands.
|
||||
|
||||
# Copyright (c) 2007, Atmel Corporation All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation and/
|
||||
# or other materials provided with the distribution.
|
||||
#
|
||||
# 3. The name of ATMEL may not be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
|
||||
# SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
|
||||
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
# ** ** ** *** ** ** ** ** ** ** ** ** ** ** **
|
||||
# ENVIRONMENT SETTINGS
|
||||
# ** ** ** *** ** ** ** ** ** ** ** ** ** ** **
|
||||
|
||||
FirstWord = $(if $(1),$(word 1,$(1)))
|
||||
LastWord = $(if $(1),$(word $(words $(1)),$(1)))
|
||||
|
||||
MAKE = make
|
||||
MAKECFG = config.mk
|
||||
TGTTYPE = $(suffix $(TARGET))
|
||||
TGTFILE = $(PART)-$(TARGET)
|
||||
|
||||
RM = rm -Rf
|
||||
|
||||
AR = avr32-ar
|
||||
ARFLAGS = rcs
|
||||
|
||||
CPP = $(CC) -E
|
||||
CPPFLAGS = -march=$(ARCH) -mpart=$(PART) $(WARNINGS) $(DEFS) \
|
||||
$(PLATFORM_INC_PATH:%=-I%) $(INC_PATH:%=-I%) $(CPP_EXTRA_FLAGS)
|
||||
DPNDFILES = $(CSRCS:.c=.d) $(ASSRCS:.S=.d)
|
||||
CPPFILES = $(CSRCS:.c=.i)
|
||||
|
||||
CC = avr32-gcc
|
||||
CFLAGS = $(DEBUG) $(OPTIMIZATION) $(C_EXTRA_FLAGS)
|
||||
ASFILES = $(CSRCS:.c=.x) $(ASSRCS:.S=.x)
|
||||
|
||||
AS = avr32-as
|
||||
ASFLAGS = $(DEBUG) $(AS_EXTRA_FLAGS)
|
||||
OBJFILES = $(CSRCS:.c=.o) $(ASSRCS:.S=.o)
|
||||
|
||||
LD = avr32-ld
|
||||
LDFLAGS = -march=$(ARCH) -mpart=$(PART) \
|
||||
$(LIB_PATH:%=-L%) $(LINKER_SCRIPT:%=-T%) $(LD_EXTRA_FLAGS)
|
||||
LOADLIBES =
|
||||
LDLIBS = $(LIBS:%=-l%)
|
||||
|
||||
OBJDUMP = avr32-objdump
|
||||
LSS = $(TGTFILE:$(TGTTYPE)=.lss)
|
||||
|
||||
NM = avr32-nm
|
||||
SYM = $(TGTFILE:$(TGTTYPE)=.sym)
|
||||
|
||||
OBJCOPY = avr32-objcopy
|
||||
BIN = $(TGTFILE:$(TGTTYPE)=.bin)
|
||||
|
||||
SIZE = avr32-size
|
||||
|
||||
SUDO = $(shell if [ -x /usr/bin/sudo ]; then echo sudo; fi)
|
||||
|
||||
SLEEP = sleep
|
||||
SLEEPUSB = 9
|
||||
|
||||
PROGRAM = avr32program
|
||||
|
||||
DBGPROXY = avr32gdbproxy
|
||||
|
||||
DOCGEN = doxygen
|
||||
|
||||
|
||||
# ** ** ** *** ** ** ** ** ** ** ** ** ** ** **
|
||||
# MESSAGES
|
||||
# ** ** ** *** ** ** ** ** ** ** ** ** ** ** **
|
||||
|
||||
ERR_TARGET_TYPE = Target type not supported: `$(TGTTYPE)'
|
||||
MSG_CLEANING = Cleaning project.
|
||||
MSG_PREPROCESSING = Preprocessing \`$<\' to \`$@\'.
|
||||
MSG_COMPILING = Compiling \`$<\' to \`$@\'.
|
||||
MSG_ASSEMBLING = Assembling \`$<\' to \`$@\'.
|
||||
MSG_ARCHIVING = Archiving to \`$@\'.
|
||||
MSG_LINKING = Linking to \`$@\'.
|
||||
MSG_EXTENDED_LISTING = Creating extended listing to \`$@\'.
|
||||
MSG_SYMBOL_TABLE = Creating symbol table to \`$@\'.
|
||||
MSG_BINARY_IMAGE = Creating binary image to \`$@\'.
|
||||
MSG_GETTING_CPU_INFO = Getting CPU information.
|
||||
MSG_HALTING = Stopping CPU execution.
|
||||
MSG_PROGRAMMING = Programming MCU memory from \`$<\'.
|
||||
MSG_RESETTING = Resetting CPU.
|
||||
MSG_DEBUGGING = Opening debug connection with MCU.
|
||||
MSG_RUNNING = Starting CPU execution.
|
||||
MSG_READING_CPU_REGS = Reading CPU registers.
|
||||
MSG_CLEANING_DOC = Cleaning documentation.
|
||||
MSG_GENERATING_DOC = Generating documentation to \`$(DOC_PATH)\'.
|
||||
|
||||
|
||||
# ** ** ** *** ** ** ** ** ** ** ** ** ** ** **
|
||||
# MAKE RULES
|
||||
# ** ** ** *** ** ** ** ** ** ** ** ** ** ** **
|
||||
|
||||
# Include the make configuration file.
|
||||
include $(MAKECFG)
|
||||
|
||||
# ** ** TOP-LEVEL RULES ** **
|
||||
|
||||
# Default goal: build the project.
|
||||
ifeq ($(TGTTYPE),.a)
|
||||
.PHONY: all
|
||||
all: ccversion a lss sym
|
||||
else
|
||||
ifeq ($(TGTTYPE),.elf)
|
||||
.PHONY: all
|
||||
all: ccversion elf lss sym bin sizes
|
||||
else
|
||||
$(error $(ERR_TARGET_TYPE))
|
||||
endif
|
||||
endif
|
||||
|
||||
# Clean up the project.
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@echo $(MSG_CLEANING)
|
||||
-$(VERBOSE_CMD)$(RM) $(BIN)
|
||||
-$(VERBOSE_CMD)$(RM) $(SYM)
|
||||
-$(VERBOSE_CMD)$(RM) $(LSS)
|
||||
-$(VERBOSE_CMD)$(RM) $(TGTFILE)
|
||||
-$(VERBOSE_CMD)$(RM) $(OBJFILES)
|
||||
-$(VERBOSE_CMD)$(RM) $(ASFILES)
|
||||
-$(VERBOSE_CMD)$(RM) $(CPPFILES)
|
||||
-$(VERBOSE_CMD)$(RM) $(DPNDFILES)
|
||||
$(VERBOSE_NL)
|
||||
|
||||
# Rebuild the project.
|
||||
.PHONY: rebuild
|
||||
rebuild: clean all
|
||||
|
||||
# Display CC version information.
|
||||
.PHONY: ccversion
|
||||
ccversion:
|
||||
@echo
|
||||
@echo
|
||||
@$(CC) --version
|
||||
|
||||
# Generate preprocessed files from C source files.
|
||||
.PHONY: cppfiles
|
||||
cppfiles: $(CPPFILES)
|
||||
|
||||
# Generate preprocessed assembler files from C and assembler source files.
|
||||
.PHONY: asfiles
|
||||
asfiles: $(ASFILES)
|
||||
|
||||
# Generate object files from C and assembler source files.
|
||||
.PHONY: objfiles
|
||||
objfiles: $(OBJFILES)
|
||||
|
||||
ifeq ($(TGTTYPE),.a)
|
||||
# Archive: create A output file from object files.
|
||||
.PHONY: a
|
||||
a: $(TGTFILE)
|
||||
else
|
||||
ifeq ($(TGTTYPE),.elf)
|
||||
# Link: create ELF output file from object files.
|
||||
.PHONY: elf
|
||||
elf: $(TGTFILE)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Create extended listing from target output file.
|
||||
.PHONY: lss
|
||||
lss: $(LSS)
|
||||
|
||||
# Create symbol table from target output file.
|
||||
.PHONY: sym
|
||||
sym: $(SYM)
|
||||
|
||||
ifeq ($(TGTTYPE),.elf)
|
||||
# Create binary image from ELF output file.
|
||||
.PHONY: bin
|
||||
bin: $(BIN)
|
||||
endif
|
||||
|
||||
# Display target size information.
|
||||
.PHONY: sizes
|
||||
sizes: $(TGTFILE)
|
||||
@echo
|
||||
@echo
|
||||
@$(SIZE) -Ax $<
|
||||
|
||||
ifeq ($(TGTTYPE),.elf)
|
||||
|
||||
# Get CPU information.
|
||||
.PHONY: cpuinfo
|
||||
cpuinfo:
|
||||
@echo
|
||||
@echo $(MSG_GETTING_CPU_INFO)
|
||||
$(VERBOSE_CMD)$(SUDO) $(PROGRAM) -cUSB cpuinfo
|
||||
ifneq ($(call LastWord,$(filter cpuinfo program reset debug run readregs,$(MAKECMDGOALS))),cpuinfo)
|
||||
@$(SLEEP) $(SLEEPUSB)
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
# Stop CPU execution.
|
||||
.PHONY: halt
|
||||
halt:
|
||||
ifeq ($(filter cpuinfo program reset run readregs,$(MAKECMDGOALS)),)
|
||||
@echo
|
||||
@echo $(MSG_HALTING)
|
||||
$(VERBOSE_CMD)$(SUDO) $(PROGRAM) -cUSB halt
|
||||
ifneq ($(call LastWord,$(filter halt debug,$(MAKECMDGOALS))),halt)
|
||||
@$(SLEEP) $(SLEEPUSB)
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
else
|
||||
@echo > /dev/null
|
||||
endif
|
||||
|
||||
# Program MCU memory from ELF output file.
|
||||
.PHONY: program
|
||||
program: $(TGTFILE)
|
||||
@echo
|
||||
@echo $(MSG_PROGRAMMING)
|
||||
$(VERBOSE_CMD)$(SUDO) $(PROGRAM) -cUSB program $(FLASH:%=-f%) -e -v -R $(if $(findstring run,$(MAKECMDGOALS)),-r) $<
|
||||
ifneq ($(call LastWord,$(filter cpuinfo program debug readregs,$(MAKECMDGOALS))),program)
|
||||
@$(SLEEP) $(SLEEPUSB)
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
# Reset CPU.
|
||||
.PHONY: reset
|
||||
reset:
|
||||
ifeq ($(filter program run,$(MAKECMDGOALS)),)
|
||||
@echo
|
||||
@echo $(MSG_RESETTING)
|
||||
$(VERBOSE_CMD)$(SUDO) $(PROGRAM) -cUSB reset
|
||||
ifneq ($(call LastWord,$(filter cpuinfo reset debug readregs,$(MAKECMDGOALS))),reset)
|
||||
@$(SLEEP) $(SLEEPUSB)
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
else
|
||||
@echo > /dev/null
|
||||
endif
|
||||
|
||||
# Open a debug connection with the MCU.
|
||||
.PHONY: debug
|
||||
debug:
|
||||
@echo
|
||||
@echo $(MSG_DEBUGGING)
|
||||
$(VERBOSE_CMD)$(SUDO) $(DBGPROXY) -cUSB $(patsubst cfi@%,-f%,$(FLASH:internal@%=-f%))
|
||||
ifneq ($(call LastWord,$(filter cpuinfo halt program reset debug run readregs,$(MAKECMDGOALS))),debug)
|
||||
@$(SLEEP) $(SLEEPUSB)
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
# Start CPU execution.
|
||||
.PHONY: run
|
||||
run:
|
||||
ifeq ($(findstring program,$(MAKECMDGOALS)),)
|
||||
@echo
|
||||
@echo $(MSG_RUNNING)
|
||||
$(VERBOSE_CMD)$(SUDO) $(PROGRAM) -cUSB run $(if $(findstring reset,$(MAKECMDGOALS)),-R)
|
||||
ifneq ($(call LastWord,$(filter cpuinfo debug run readregs,$(MAKECMDGOALS))),run)
|
||||
@$(SLEEP) $(SLEEPUSB)
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
else
|
||||
@echo > /dev/null
|
||||
endif
|
||||
|
||||
# Read CPU registers.
|
||||
.PHONY: readregs
|
||||
readregs:
|
||||
@echo
|
||||
@echo $(MSG_READING_CPU_REGS)
|
||||
$(VERBOSE_CMD)$(SUDO) $(PROGRAM) -cUSB readregs
|
||||
ifneq ($(call LastWord,$(filter cpuinfo program reset debug run readregs,$(MAKECMDGOALS))),readregs)
|
||||
@$(SLEEP) $(SLEEPUSB)
|
||||
else
|
||||
@echo
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# Build the documentation.
|
||||
.PHONY: doc
|
||||
doc:
|
||||
@echo
|
||||
@echo $(MSG_GENERATING_DOC)
|
||||
$(VERBOSE_CMD)cd $(dir $(DOC_CFG)) && $(DOCGEN) $(notdir $(DOC_CFG))
|
||||
@echo
|
||||
|
||||
# Clean up the documentation.
|
||||
.PHONY: cleandoc
|
||||
cleandoc:
|
||||
@echo $(MSG_CLEANING_DOC)
|
||||
-$(VERBOSE_CMD)$(RM) $(DOC_PATH)
|
||||
$(VERBOSE_NL)
|
||||
|
||||
# Rebuild the documentation.
|
||||
.PHONY: rebuilddoc
|
||||
rebuilddoc: cleandoc doc
|
||||
|
||||
# Display main executed commands.
|
||||
.PHONY: verbose
|
||||
ifeq ($(MAKECMDGOALS),verbose)
|
||||
verbose: all
|
||||
else
|
||||
verbose:
|
||||
@echo > /dev/null
|
||||
endif
|
||||
ifneq ($(findstring verbose,$(MAKECMDGOALS)),)
|
||||
# Prefix displaying the following command if and only if verbose is a goal.
|
||||
VERBOSE_CMD =
|
||||
# New line displayed if and only if verbose is a goal.
|
||||
VERBOSE_NL = @echo
|
||||
else
|
||||
VERBOSE_CMD = @
|
||||
VERBOSE_NL =
|
||||
endif
|
||||
|
||||
# ** ** COMPILATION RULES ** **
|
||||
|
||||
# Include silently the dependency files.
|
||||
-include $(DPNDFILES)
|
||||
|
||||
# The dependency files are not built alone but along with first generation files.
|
||||
$(DPNDFILES):
|
||||
|
||||
# First generation files depend on make files.
|
||||
$(CPPFILES) $(ASFILES) $(OBJFILES): Makefile $(MAKECFG)
|
||||
|
||||
ifeq ($(TGTTYPE),.elf)
|
||||
# Files resulting from linking depend on linker script.
|
||||
$(TGTFILE): $(LINKER_SCRIPT)
|
||||
endif
|
||||
|
||||
# Preprocess: create preprocessed files from C source files.
|
||||
%.i: %.c %.d
|
||||
@echo $(MSG_PREPROCESSING)
|
||||
$(VERBOSE_CMD)$(CPP) $(CPPFLAGS) -MD -MP -MT '$*.i $*.x $*.o' -o $@ $<
|
||||
@touch $*.d
|
||||
@touch $@
|
||||
$(VERBOSE_NL)
|
||||
|
||||
# Preprocess & compile: create assembler files from C source files.
|
||||
%.x: %.c %.d
|
||||
@echo $(MSG_COMPILING)
|
||||
$(VERBOSE_CMD)$(CC) -S $(CPPFLAGS) -MD -MP -MT '$*.i $*.o' $(CFLAGS) -o $@ $<
|
||||
@touch $*.d
|
||||
@touch $@
|
||||
$(VERBOSE_NL)
|
||||
|
||||
# Preprocess: create preprocessed files from assembler source files.
|
||||
%.x: %.S %.d
|
||||
@echo $(MSG_PREPROCESSING)
|
||||
$(VERBOSE_CMD)$(CPP) $(CPPFLAGS) -MD -MP -MT '$*.x $*.o' -o $@ $<
|
||||
@touch $*.d
|
||||
@touch $@
|
||||
$(VERBOSE_NL)
|
||||
|
||||
# Preprocess, compile & assemble: create object files from C source files.
|
||||
%.o: %.c %.d
|
||||
@echo $(MSG_COMPILING)
|
||||
$(VERBOSE_CMD)$(CC) -c $(CPPFLAGS) -MD -MP -MT '$*.i $*.x' $(CFLAGS) -o $@ $<
|
||||
@touch $*.d
|
||||
@touch $@
|
||||
$(VERBOSE_NL)
|
||||
|
||||
# Preprocess & assemble: create object files from assembler source files.
|
||||
%.o: %.S %.d
|
||||
@echo $(MSG_ASSEMBLING)
|
||||
$(VERBOSE_CMD)$(CC) -c $(CPPFLAGS) -MD -MP -MT '$*.x' $(ASFLAGS) -o $@ $<
|
||||
@touch $*.d
|
||||
@touch $@
|
||||
$(VERBOSE_NL)
|
||||
|
||||
.PRECIOUS: $(OBJFILES)
|
||||
ifeq ($(TGTTYPE),.a)
|
||||
# Archive: create A output file from object files.
|
||||
.SECONDARY: $(TGTFILE)
|
||||
$(TGTFILE): $(OBJFILES)
|
||||
@echo $(MSG_ARCHIVING)
|
||||
$(VERBOSE_CMD)$(AR) $(ARFLAGS) $@ $(filter %.o,$+)
|
||||
$(VERBOSE_NL)
|
||||
else
|
||||
ifeq ($(TGTTYPE),.elf)
|
||||
# Link: create ELF output file from object files.
|
||||
.SECONDARY: $(TGTFILE)
|
||||
$(TGTFILE): $(OBJFILES)
|
||||
@echo $(MSG_LINKING)
|
||||
$(VERBOSE_CMD)$(CC) $(LDFLAGS) $(filter %.o,$+) $(LOADLIBES) $(LDLIBS) -o $@
|
||||
$(VERBOSE_NL)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Create extended listing from target output file.
|
||||
$(LSS): $(TGTFILE)
|
||||
@echo $(MSG_EXTENDED_LISTING)
|
||||
$(VERBOSE_CMD)$(OBJDUMP) -h -S $< > $@
|
||||
$(VERBOSE_NL)
|
||||
|
||||
# Create symbol table from target output file.
|
||||
$(SYM): $(TGTFILE)
|
||||
@echo $(MSG_SYMBOL_TABLE)
|
||||
$(VERBOSE_CMD)$(NM) -n $< > $@
|
||||
$(VERBOSE_NL)
|
||||
|
||||
ifeq ($(TGTTYPE),.elf)
|
||||
# Create binary image from ELF output file.
|
||||
$(BIN): $(TGTFILE)
|
||||
@echo $(MSG_BINARY_IMAGE)
|
||||
$(VERBOSE_CMD)$(OBJCOPY) -O binary $< $@
|
||||
$(VERBOSE_NL)
|
||||
endif
|
||||
144
Demo/AVR32_UC3/AT32UC3A/GCC/config.mk
Normal file
144
Demo/AVR32_UC3/AT32UC3A/GCC/config.mk
Normal file
@@ -0,0 +1,144 @@
|
||||
# Hey Emacs, this is a -*- makefile -*-
|
||||
|
||||
# The purpose of this file is to define the build configuration variables used
|
||||
# by the generic Makefile. See Makefile header for further information.
|
||||
|
||||
# Copyright (c) 2007, Atmel Corporation All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation and/
|
||||
# or other materials provided with the distribution.
|
||||
#
|
||||
# 3. The name of ATMEL may not be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
|
||||
# SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
|
||||
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
# Base paths
|
||||
PRJ_PATH = ../..
|
||||
APPS_PATH = $(PRJ_PATH)/APPLICATIONS
|
||||
BRDS_PATH = $(PRJ_PATH)/BOARDS
|
||||
COMP_PATH = $(PRJ_PATH)/COMPONENTS
|
||||
DRVR_PATH = $(PRJ_PATH)/DRIVERS
|
||||
SERV_PATH = $(PRJ_PATH)/SERVICES
|
||||
UTIL_PATH = $(PRJ_PATH)/UTILS
|
||||
|
||||
# CPU architecture: {ap|uc}
|
||||
ARCH = uc
|
||||
|
||||
# Part: {none|ap7000|ap7010|ap7020|uc3a0256|uc3a0512|uc3a1128|uc3a1256|uc3a1512}
|
||||
PART = uc3a0512
|
||||
|
||||
# Flash memories: [type@address,size]...
|
||||
FLASH = internal@0x80000000,512Kb
|
||||
|
||||
# Device/Platform/Board include path
|
||||
PLATFORM_INC_PATH = \
|
||||
$(BRDS_PATH)/
|
||||
|
||||
# Target name: {*.a|*.elf}
|
||||
TARGET = rtosdemo.elf
|
||||
|
||||
# Definitions: [-D name[=definition]...] [-U name...]
|
||||
# Things that might be added to DEFS:
|
||||
# BOARD Board used: {EVK1100}
|
||||
DEFS = -D BOARD=EVK1100
|
||||
|
||||
# Include path
|
||||
INC_PATH = \
|
||||
$(UTIL_PATH)/ \
|
||||
$(UTIL_PATH)/PREPROCESSOR/ \
|
||||
$(DRVR_PATH)/INTC/ \
|
||||
$(DRVR_PATH)/PM/ \
|
||||
$(DRVR_PATH)/GPIO/ \
|
||||
$(DRVR_PATH)/TC/ \
|
||||
../../../../Source/portable/GCC/AVR32_UC3/ \
|
||||
../../../../Source/include/ \
|
||||
../../../Common/include/ \
|
||||
../../
|
||||
|
||||
# C source files
|
||||
CSRCS = \
|
||||
$(BRDS_PATH)/EVK1100/led.c \
|
||||
$(DRVR_PATH)/INTC/intc.c \
|
||||
$(DRVR_PATH)/PM/pm.c \
|
||||
$(DRVR_PATH)/GPIO/gpio.c \
|
||||
$(DRVR_PATH)/TC/tc.c \
|
||||
../../../../Source/portable/GCC/AVR32_UC3/port.c \
|
||||
../../../../Source/portable/MemMang/heap_3.c \
|
||||
../../../../Source/list.c \
|
||||
../../../../Source/queue.c \
|
||||
../../../../Source/tasks.c \
|
||||
../../../Common/Minimal/BlockQ.c \
|
||||
../../../Common/Minimal/comtest.c \
|
||||
../../../Common/Minimal/death.c \
|
||||
../../../Common/Minimal/dynamic.c \
|
||||
../../../Common/Minimal/flash.c \
|
||||
../../../Common/Minimal/flop.c \
|
||||
../../../Common/Minimal/integer.c \
|
||||
../../../Common/Minimal/PollQ.c \
|
||||
../../../Common/Minimal/semtest.c \
|
||||
../../ParTest/ParTest.c \
|
||||
../../serial/serial.c \
|
||||
../../main.c
|
||||
|
||||
# Assembler source files
|
||||
ASSRCS = \
|
||||
../../../../Source/portable/GCC/AVR32_UC3/exception.S
|
||||
|
||||
# Library path
|
||||
LIB_PATH =
|
||||
|
||||
# Libraries to link with the project
|
||||
LIBS =
|
||||
|
||||
# Linker script file if any
|
||||
LINKER_SCRIPT =
|
||||
|
||||
# Options to request or suppress warnings: [-fsyntax-only] [-pedantic[-errors]] [-w] [-Wwarning...]
|
||||
# For further details, refer to the chapter "GCC Command Options" of the GCC manual.
|
||||
WARNINGS = -Wall
|
||||
|
||||
# Options for debugging: [-g]...
|
||||
# For further details, refer to the chapter "GCC Command Options" of the GCC manual.
|
||||
DEBUG = -g
|
||||
|
||||
# Options that control optimization: [-O[0|1|2|3|s]]...
|
||||
# For further details, refer to the chapter "GCC Command Options" of the GCC manual.
|
||||
OPTIMIZATION = -O0 -ffunction-sections -fdata-sections
|
||||
|
||||
# Extra flags to use when preprocessing
|
||||
CPP_EXTRA_FLAGS =
|
||||
|
||||
# Extra flags to use when compiling
|
||||
C_EXTRA_FLAGS = -DGCC_AVR32_PORT
|
||||
|
||||
# Extra flags to use when assembling
|
||||
AS_EXTRA_FLAGS =
|
||||
|
||||
# Extra flags to use when linking
|
||||
LD_EXTRA_FLAGS = -Wl,--gc-sections
|
||||
|
||||
# Documentation path
|
||||
DOC_PATH = \
|
||||
../../DOC/
|
||||
|
||||
# Documentation configuration file
|
||||
DOC_CFG = \
|
||||
../../doxyfile.doxygen
|
||||
29
Demo/AVR32_UC3/AT32UC3A/GCC/gdb.ini
Normal file
29
Demo/AVR32_UC3/AT32UC3A/GCC/gdb.ini
Normal file
@@ -0,0 +1,29 @@
|
||||
target extended-remote :1024
|
||||
symbol uc3a0512-rtosdemo.elf
|
||||
|
||||
b _handle_Unrecoverable_Exception
|
||||
b _handle_TLB_Multiple_Hit
|
||||
b _handle_Bus_Error_Data_Fetch
|
||||
b _handle_Bus_Error_Instruction_Fetch
|
||||
b _handle_NMI
|
||||
b _handle_Instruction_Address
|
||||
b _handle_ITLB_Protection
|
||||
b _handle_Breakpoint
|
||||
b _handle_Illegal_Opcode
|
||||
b _handle_Unimplemented_Instruction
|
||||
b _handle_Privilege_Violation
|
||||
b _handle_Floating_Point
|
||||
b _handle_Coprocessor_Absent
|
||||
b _handle_Data_Address_Read
|
||||
b _handle_Data_Address_Write
|
||||
b _handle_DTLB_Protection_Read
|
||||
b _handle_DTLB_Protection_Write
|
||||
b _handle_DTLB_Modified
|
||||
b _handle_ITLB_Miss
|
||||
b _handle_DTLB_Miss_Read
|
||||
b _handle_DTLB_Miss_Write
|
||||
|
||||
define current_task
|
||||
printf "Task name: %s\n", ((tskTCB *)pxCurrentTCB)->pcTaskName
|
||||
printf "pxTopOfStack: %x\n", ((tskTCB *)pxCurrentTCB)->pxTopOfStack
|
||||
end
|
||||
1213
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.dep
Normal file
1213
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.dep
Normal file
File diff suppressed because it is too large
Load Diff
357
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewd
Normal file
357
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewd
Normal file
@@ -0,0 +1,357 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
|
||||
<project>
|
||||
<fileVersion>1</fileVersion>
|
||||
<configuration>
|
||||
<name>Debug</name>
|
||||
<toolchain>
|
||||
<name>AVR32</name>
|
||||
</toolchain>
|
||||
<debug>1</debug>
|
||||
<settings>
|
||||
<name>C-SPY</name>
|
||||
<archiveVersion>2</archiveVersion>
|
||||
<data>
|
||||
<version>0</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>1</debug>
|
||||
<option>
|
||||
<name>CMandatory</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CInput</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCore</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CRunToEnable</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CRunToName</name>
|
||||
<state>main</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CMacOverride</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CMacFile</name>
|
||||
<state></state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DynDriver</name>
|
||||
<state>JTAGICEMKIIAVR32</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DDFOverride</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DDFFile</name>
|
||||
<state>$TOOLKIT_DIR$\config\iouc3a0512.ddf</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DebuggerUseUbrofResetVector</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>IExtraOptionsCheck</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>IExtraOptions</name>
|
||||
<state></state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
<settings>
|
||||
<name>JTAGICEMKIIAVR32</name>
|
||||
<archiveVersion>2</archiveVersion>
|
||||
<data>
|
||||
<version>0</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>1</debug>
|
||||
<option>
|
||||
<name>CJtagIceMkIIMandatory</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIPeripherals</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIReset</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIISWBreakpoints</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIISuppressDownload</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIVerifyDownload</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJTagIceMkIICommunicationLogging</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIICommLogFile</name>
|
||||
<state></state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIConnectionRage</name>
|
||||
<version>0</version>
|
||||
<state>2</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIConnectionPort</name>
|
||||
<version>0</version>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIJtagFrequence</name>
|
||||
<version>0</version>
|
||||
<state>8</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChain</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainBeforeDevices</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainBeforeBits</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainAfterDevices</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainAfterBits</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
<settings>
|
||||
<name>SIMAVR32</name>
|
||||
<archiveVersion>2</archiveVersion>
|
||||
<data>
|
||||
<version>0</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>1</debug>
|
||||
<option>
|
||||
<name>CSimMandatory</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
<debuggerPlugins>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
|
||||
<loadFlag>1</loadFlag>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\Orti\Orti.ewplugin</file>
|
||||
<loadFlag>0</loadFlag>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
|
||||
<loadFlag>1</loadFlag>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\Stack\Stack.ewplugin</file>
|
||||
<loadFlag>1</loadFlag>
|
||||
</plugin>
|
||||
</debuggerPlugins>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>Release</name>
|
||||
<toolchain>
|
||||
<name>AVR32</name>
|
||||
</toolchain>
|
||||
<debug>0</debug>
|
||||
<settings>
|
||||
<name>C-SPY</name>
|
||||
<archiveVersion>2</archiveVersion>
|
||||
<data>
|
||||
<version>0</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>0</debug>
|
||||
<option>
|
||||
<name>CMandatory</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CInput</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCore</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CRunToEnable</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CRunToName</name>
|
||||
<state>main</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CMacOverride</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CMacFile</name>
|
||||
<state></state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DynDriver</name>
|
||||
<state>JTAGICEMKIIAVR32</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DDFOverride</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DDFFile</name>
|
||||
<state>$TOOLKIT_DIR$\config\iouc3a0512.ddf</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>DebuggerUseUbrofResetVector</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>IExtraOptionsCheck</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>IExtraOptions</name>
|
||||
<state></state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
<settings>
|
||||
<name>JTAGICEMKIIAVR32</name>
|
||||
<archiveVersion>2</archiveVersion>
|
||||
<data>
|
||||
<version>0</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>0</debug>
|
||||
<option>
|
||||
<name>CJtagIceMkIIMandatory</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIPeripherals</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIReset</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIISWBreakpoints</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIISuppressDownload</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIVerifyDownload</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJTagIceMkIICommunicationLogging</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIICommLogFile</name>
|
||||
<state></state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIConnectionRage</name>
|
||||
<version>0</version>
|
||||
<state>2</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIConnectionPort</name>
|
||||
<version>0</version>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIJtagFrequence</name>
|
||||
<version>0</version>
|
||||
<state>8</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChain</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainBeforeDevices</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainBeforeBits</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainAfterDevices</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CJtagIceMkIIDaisyChainAfterBits</name>
|
||||
<state>0</state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
<settings>
|
||||
<name>SIMAVR32</name>
|
||||
<archiveVersion>2</archiveVersion>
|
||||
<data>
|
||||
<version>0</version>
|
||||
<wantNonLocal>1</wantNonLocal>
|
||||
<debug>0</debug>
|
||||
<option>
|
||||
<name>CSimMandatory</name>
|
||||
<state>1</state>
|
||||
</option>
|
||||
</data>
|
||||
</settings>
|
||||
<debuggerPlugins>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
|
||||
<loadFlag>1</loadFlag>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\Orti\Orti.ewplugin</file>
|
||||
<loadFlag>0</loadFlag>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
|
||||
<loadFlag>1</loadFlag>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<file>$EW_DIR$\common\plugins\Stack\Stack.ewplugin</file>
|
||||
<loadFlag>1</loadFlag>
|
||||
</plugin>
|
||||
</debuggerPlugins>
|
||||
</configuration>
|
||||
</project>
|
||||
|
||||
|
||||
1751
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewp
Normal file
1751
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewp
Normal file
File diff suppressed because it is too large
Load Diff
10
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.eww
Normal file
10
Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.eww
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
|
||||
<workspace>
|
||||
<project>
|
||||
<path>$WS_DIR$\rtosdemo.ewp</path>
|
||||
</project>
|
||||
<batchBuild/>
|
||||
</workspace>
|
||||
|
||||
|
||||
32
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.cspy.bat
Normal file
32
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.cspy.bat
Normal file
@@ -0,0 +1,32 @@
|
||||
@REM This bat file has been generated by the IAR Embeddded Workbench
|
||||
@REM C-SPY interactive debugger,as an aid to preparing a command
|
||||
@REM line for running the cspybat command line utility with the
|
||||
@REM appropriate settings.
|
||||
@REM
|
||||
@REM After making some adjustments to this file, you can launch cspybat
|
||||
@REM by typing the name of this file followed by the name of the debug
|
||||
@REM file (usually an ubrof file). Note that this file is generated
|
||||
@REM every time a new debug session is initialized, so you may want to
|
||||
@REM move or rename the file before making changes.
|
||||
@REM
|
||||
@REM Note: some command line arguments cannot be properly generated
|
||||
@REM by this process. Specifically, the plugin which is responsible
|
||||
@REM for the Terminal I/O window (and other C runtime functionality)
|
||||
@REM comes in a special version for cspybat, and the name of that
|
||||
@REM plugin dll is not known when generating this file. It resides in
|
||||
@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or
|
||||
@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding
|
||||
@REM tool chain. Replace the '<libsupport_plugin>' parameter
|
||||
@REM below with the appropriate file name. Other plugins loaded by
|
||||
@REM C-SPY are usually not needed by, or will not work in, cspybat
|
||||
@REM but they are listed at the end of this file for reference.
|
||||
|
||||
|
||||
"C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\bin\cspybat" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\bin\avr32proc.dll" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\bin\avr32jtagicemkII.dll" %1 --plugin "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\bin\<libsupport_plugin>" --backend -B "--core" "avr32a" "--avr32_simd_instructions" "disabled" "--avr32_dsp_instructions" "enabled" "--avr32_rmw_instructions" "enabled" "-p" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\config\iouc3a0512.ddf" "-d" "jtagicemkII" "--drv_communication" "USB" "--jtagice_clock" "100000"
|
||||
|
||||
|
||||
@REM loaded plugins:
|
||||
@REM avr32LibSupport.dll
|
||||
@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\CodeCoverage\CodeCoverage.dll
|
||||
@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\Profiling\Profiling.dll
|
||||
@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\stack\stack.dll
|
||||
5
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dbgdt
Normal file
5
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dbgdt
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
|
||||
<Project/>
|
||||
|
||||
|
||||
5
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dni
Normal file
5
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dni
Normal file
@@ -0,0 +1,5 @@
|
||||
[Breakpoints]
|
||||
Count=0
|
||||
[TraceHelper]
|
||||
Enabled=0
|
||||
ShowSource=1
|
||||
97
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.wsdt
Normal file
97
Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.wsdt
Normal file
@@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
|
||||
<Workspace>
|
||||
<ConfigDictionary>
|
||||
<CurrentConfigs>
|
||||
<Project>rtosdemo/Debug</Project>
|
||||
</CurrentConfigs>
|
||||
</ConfigDictionary>
|
||||
<Desktop>
|
||||
<Static>
|
||||
<Workspace>
|
||||
<ColumnWidths>
|
||||
<Column0>124</Column0>
|
||||
<Column1>27</Column1>
|
||||
<Column2>27</Column2>
|
||||
<Column3>27</Column3>
|
||||
</ColumnWidths>
|
||||
</Workspace>
|
||||
</Static>
|
||||
<Windows>
|
||||
<Wnd0>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-27032-1807</Identity>
|
||||
<TabName>Workspace</TabName>
|
||||
<Factory>Workspace</Factory>
|
||||
<Session>
|
||||
<NodeDict>
|
||||
<ExpandedNode>rtosdemo</ExpandedNode>
|
||||
</NodeDict>
|
||||
</Session>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
<SelectedTab>0</SelectedTab>
|
||||
</Wnd0>
|
||||
</Windows>
|
||||
<Editor>
|
||||
<Pane/>
|
||||
<ActivePane>0</ActivePane>
|
||||
<Sizes>
|
||||
<Pane>
|
||||
<X>1000000</X>
|
||||
<Y>1000000</Y>
|
||||
</Pane>
|
||||
</Sizes>
|
||||
<SplitMode>1</SplitMode>
|
||||
</Editor>
|
||||
<Positions>
|
||||
<Top>
|
||||
<Row0>
|
||||
<Sizes>
|
||||
<Toolbar-008ecdd0>
|
||||
<key>iaridepm1</key>
|
||||
</Toolbar-008ecdd0>
|
||||
</Sizes>
|
||||
</Row0>
|
||||
</Top>
|
||||
<Left>
|
||||
<Row0>
|
||||
<Sizes>
|
||||
<Wnd0>
|
||||
<Rect>
|
||||
<Top>-2</Top>
|
||||
<Left>-2</Left>
|
||||
<Bottom>938</Bottom>
|
||||
<Right>198</Right>
|
||||
<x>-2</x>
|
||||
<y>-2</y>
|
||||
<xscreen>200</xscreen>
|
||||
<yscreen>200</yscreen>
|
||||
<sizeHorzCX>142857</sizeHorzCX>
|
||||
<sizeHorzCY>203666</sizeHorzCY>
|
||||
<sizeVertCX>142857</sizeVertCX>
|
||||
<sizeVertCY>957230</sizeVertCY>
|
||||
</Rect>
|
||||
</Wnd0>
|
||||
</Sizes>
|
||||
</Row0>
|
||||
</Left>
|
||||
<Right>
|
||||
<Row0>
|
||||
<Sizes/>
|
||||
</Row0>
|
||||
</Right>
|
||||
<Bottom>
|
||||
<Row0>
|
||||
<Sizes/>
|
||||
</Row0>
|
||||
</Bottom>
|
||||
<Float>
|
||||
<Sizes/>
|
||||
</Float>
|
||||
</Positions>
|
||||
</Desktop>
|
||||
</Workspace>
|
||||
|
||||
|
||||
318
Demo/AVR32_UC3/BOARDS/EVK1100/evk1100.h
Normal file
318
Demo/AVR32_UC3/BOARDS/EVK1100/evk1100.h
Normal file
@@ -0,0 +1,318 @@
|
||||
/* This header file is part of the ATMEL FREERTOS-0.9.0 Release */
|
||||
|
||||
/*This file is prepared for Doxygen automatic documentation generation.*/
|
||||
/*! \file *********************************************************************
|
||||
*
|
||||
* \brief AT32UC3A EVK1100 board header file.
|
||||
*
|
||||
* This file contains definitions and services related to the features of the
|
||||
* EVK1100 board.
|
||||
*
|
||||
* - Compiler: IAR EWAVR32 and GNU GCC for AVR32
|
||||
* - Supported devices: All AVR32 AT32UC3A devices can be used.
|
||||
* - AppNote:
|
||||
*
|
||||
* \author Atmel Corporation: http://www.atmel.com \n
|
||||
* Support email: avr32@atmel.com
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/* Copyright (c) 2007, Atmel Corporation All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name of ATMEL may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
|
||||
* SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _EVK1100_H_
|
||||
#define _EVK1100_H_
|
||||
|
||||
#include "compiler.h"
|
||||
|
||||
#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling.
|
||||
# include "led.h"
|
||||
#endif // __AVR32_ABI_COMPILER__
|
||||
|
||||
|
||||
/*! \name Oscillator Definitions
|
||||
*/
|
||||
//! @{
|
||||
|
||||
// RCOsc has no custom calibration by default. Set the following definition to
|
||||
// the appropriate value if a custom RCOsc calibration has been applied to your
|
||||
// part.
|
||||
//#define FRCOSC 115200 //!< RCOsc frequency: Hz.
|
||||
|
||||
#define FOSC32 32000 //!< Osc32 frequency: Hz.
|
||||
#define OSC32_STARTUP 3 //!< Osc32 startup time: RCOsc periods.
|
||||
|
||||
#define FOSC0 12000000 //!< Osc0 frequency: Hz.
|
||||
#define OSC0_STARTUP 3 //!< Osc0 startup time: RCOsc periods.
|
||||
|
||||
// Osc1 crystal is not mounted by default. Set the following definitions to the
|
||||
// appropriate values if a custom Osc1 crystal is mounted on your board.
|
||||
//#define FOSC1 12000000 //!< Osc1 frequency: Hz.
|
||||
//#define OSC1_STARTUP 3 //!< Osc1 startup time: RCOsc periods.
|
||||
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name SDRAM Definitions
|
||||
*/
|
||||
//! @{
|
||||
|
||||
//! Part header file of used SDRAM(s).
|
||||
#define SDRAM_PART_HDR "MT48LC16M16A2TG7E/mt48lc16m16a2tg7e.h"
|
||||
|
||||
//! Data bus width to use the SDRAM(s) with (16 or 32 bits; always 16 bits on
|
||||
//! UC3).
|
||||
#define SDRAM_DBW 16
|
||||
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name USB Definitions
|
||||
*/
|
||||
//! @{
|
||||
|
||||
//! Multiplexed pin used for USB_ID: AVR32_USBB_USB_ID_x_x.
|
||||
//! To be selected according to the AVR32_USBB_USB_ID_x_x_PIN and
|
||||
//! AVR32_USBB_USB_ID_x_x_FUNCTION definitions from <avr32/uc3axxxx.h>.
|
||||
#define USB_ID AVR32_USBB_USB_ID_0_0
|
||||
|
||||
//! Multiplexed pin used for USB_VBOF: AVR32_USBB_USB_VBOF_x_x.
|
||||
//! To be selected according to the AVR32_USBB_USB_VBOF_x_x_PIN and
|
||||
//! AVR32_USBB_USB_VBOF_x_x_FUNCTION definitions from <avr32/uc3axxxx.h>.
|
||||
#ifdef EVK1100_REVA
|
||||
# define USB_VBOF AVR32_USBB_USB_VBOF_0_0
|
||||
#else
|
||||
# define USB_VBOF AVR32_USBB_USB_VBOF_0_1
|
||||
#endif
|
||||
|
||||
//! Active level of the USB_VBOF output pin.
|
||||
#ifdef EVK1100_REVA
|
||||
# define USB_VBOF_ACTIVE_LEVEL HIGH
|
||||
#else
|
||||
# define USB_VBOF_ACTIVE_LEVEL LOW
|
||||
#endif
|
||||
|
||||
//! @}
|
||||
|
||||
|
||||
//! GPIO connection of the MAC PHY PWR_DOWN/INT signal.
|
||||
#ifdef EVK1100_REVA
|
||||
# define MACB_INTERRUPT_PIN AVR32_PIN_PX12
|
||||
#else
|
||||
# define MACB_INTERRUPT_PIN AVR32_PIN_PA24
|
||||
#endif
|
||||
|
||||
|
||||
//! Number of LEDs.
|
||||
#define LED_COUNT 8
|
||||
|
||||
/*! \name GPIO Connections of LEDs
|
||||
*/
|
||||
//! @{
|
||||
#ifdef EVK1100_REVA
|
||||
# define LED0_GPIO AVR32_PIN_PX13
|
||||
# define LED1_GPIO AVR32_PIN_PX14
|
||||
# define LED2_GPIO AVR32_PIN_PX15
|
||||
# define LED3_GPIO AVR32_PIN_PX16
|
||||
# define LED4_GPIO AVR32_PIN_PB19
|
||||
# define LED5_GPIO AVR32_PIN_PB20
|
||||
# define LED6_GPIO AVR32_PIN_PB21
|
||||
# define LED7_GPIO AVR32_PIN_PB22
|
||||
#else
|
||||
# define LED0_GPIO AVR32_PIN_PB27
|
||||
# define LED1_GPIO AVR32_PIN_PB28
|
||||
# define LED2_GPIO AVR32_PIN_PB29
|
||||
# define LED3_GPIO AVR32_PIN_PB30
|
||||
# define LED4_GPIO AVR32_PIN_PB19
|
||||
# define LED5_GPIO AVR32_PIN_PB20
|
||||
# define LED6_GPIO AVR32_PIN_PB21
|
||||
# define LED7_GPIO AVR32_PIN_PB22
|
||||
#endif
|
||||
//! @}
|
||||
|
||||
/*! \name PWM Channels of LEDs
|
||||
*/
|
||||
//! @{
|
||||
#define LED0_PWM (-1)
|
||||
#define LED1_PWM (-1)
|
||||
#define LED2_PWM (-1)
|
||||
#define LED3_PWM (-1)
|
||||
#define LED4_PWM 0
|
||||
#define LED5_PWM 1
|
||||
#define LED6_PWM 2
|
||||
#define LED7_PWM 3
|
||||
//! @}
|
||||
|
||||
/*! \name PWM Functions of LEDs
|
||||
*/
|
||||
//! @{
|
||||
#define LED0_PWM_FUNCTION (-1)
|
||||
#define LED1_PWM_FUNCTION (-1)
|
||||
#define LED2_PWM_FUNCTION (-1)
|
||||
#define LED3_PWM_FUNCTION (-1)
|
||||
#define LED4_PWM_FUNCTION AVR32_PWM_PWM_0_FUNCTION
|
||||
#define LED5_PWM_FUNCTION AVR32_PWM_PWM_1_FUNCTION
|
||||
#define LED6_PWM_FUNCTION AVR32_PWM_PWM_2_FUNCTION
|
||||
#define LED7_PWM_FUNCTION AVR32_PWM_PWM_3_FUNCTION
|
||||
//! @}
|
||||
|
||||
/*! \name Color Identifiers of LEDs to Use with LED Functions
|
||||
*/
|
||||
//! @{
|
||||
#ifdef EVK1100_REVA
|
||||
# define LED_MONO0_GREEN LED4
|
||||
# define LED_MONO1_GREEN LED5
|
||||
# define LED_MONO2_GREEN LED6
|
||||
# define LED_MONO3_GREEN LED7
|
||||
# define LED_BI0_GREEN LED1
|
||||
# define LED_BI0_RED LED0
|
||||
# define LED_BI1_GREEN LED3
|
||||
# define LED_BI1_RED LED2
|
||||
#else
|
||||
# define LED_MONO0_GREEN LED0
|
||||
# define LED_MONO1_GREEN LED1
|
||||
# define LED_MONO2_GREEN LED2
|
||||
# define LED_MONO3_GREEN LED3
|
||||
# define LED_BI0_GREEN LED5
|
||||
# define LED_BI0_RED LED4
|
||||
# define LED_BI1_GREEN LED7
|
||||
# define LED_BI1_RED LED6
|
||||
#endif
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name GPIO Connections of Push Buttons
|
||||
*/
|
||||
//! @{
|
||||
#ifdef EVK1100_REVA
|
||||
# define GPIO_PUSH_BUTTON_0 AVR32_PIN_PB28
|
||||
# define GPIO_PUSH_BUTTON_1 AVR32_PIN_PB29
|
||||
# define GPIO_PUSH_BUTTON_2 AVR32_PIN_PB27
|
||||
#else
|
||||
# define GPIO_PUSH_BUTTON_0 AVR32_PIN_PX16
|
||||
# define GPIO_PUSH_BUTTON_1 AVR32_PIN_PX19
|
||||
# define GPIO_PUSH_BUTTON_2 AVR32_PIN_PX22
|
||||
#endif
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name GPIO Connections of the Joystick
|
||||
*/
|
||||
//! @{
|
||||
#define GPIO_JOYSTICK_PUSH AVR32_PIN_PA20
|
||||
#define GPIO_JOYSTICK_LEFT AVR32_PIN_PA25
|
||||
#define GPIO_JOYSTICK_RIGHT AVR32_PIN_PA28
|
||||
#define GPIO_JOYSTICK_UP AVR32_PIN_PA26
|
||||
#define GPIO_JOYSTICK_DOWN AVR32_PIN_PA27
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name ADC Connection of the Potentiometer
|
||||
*/
|
||||
//! @{
|
||||
#define ADC_POTENTIOMETER_CHANNEL 1
|
||||
#define ADC_POTENTIOMETER_PIN AVR32_ADC_AD_1_PIN
|
||||
#define ADC_POTENTIOMETER_FUNCTION AVR32_ADC_AD_1_FUNCTION
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name ADC Connection of the Temperature Sensor
|
||||
*/
|
||||
//! @{
|
||||
#define ADC_TEMPERATURE_CHANNEL 0
|
||||
#define ADC_TEMPERATURE_PIN AVR32_ADC_AD_0_PIN
|
||||
#define ADC_TEMPERATURE_FUNCTION AVR32_ADC_AD_0_FUNCTION
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name ADC Connection of the Light Sensor
|
||||
*/
|
||||
//! @{
|
||||
#define ADC_LIGHT_CHANNEL 2
|
||||
#define ADC_LIGHT_PIN AVR32_ADC_AD_2_PIN
|
||||
#define ADC_LIGHT_FUNCTION AVR32_ADC_AD_2_FUNCTION
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name SPI Connections of the DIP204 LCD
|
||||
*/
|
||||
//! @{
|
||||
#define DIP204_SPI (&AVR32_SPI1)
|
||||
#define DIP204_SPI_CS 2
|
||||
#define DIP204_SPI_SCK_PIN AVR32_SPI1_SCK_0_PIN
|
||||
#define DIP204_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_FUNCTION
|
||||
#define DIP204_SPI_MISO_PIN AVR32_SPI1_MISO_0_PIN
|
||||
#define DIP204_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_FUNCTION
|
||||
#define DIP204_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_PIN
|
||||
#define DIP204_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_FUNCTION
|
||||
#define DIP204_SPI_NPCS_PIN AVR32_SPI1_NPCS_2_PIN
|
||||
#define DIP204_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_2_FUNCTION
|
||||
//! @}
|
||||
|
||||
/*! \name GPIO and PWM Connections of the DIP204 LCD Backlight
|
||||
*/
|
||||
//! @{
|
||||
#define DIP204_BACKLIGHT_PIN AVR32_PIN_PB18
|
||||
#define DIP204_PWM_CHANNEL AVR32_PWM_CHID6
|
||||
#define DIP204_PWM_PIN AVR32_PWM_PWM_6_PIN
|
||||
#define DIP204_PWM_FUNCTION AVR32_PWM_PWM_6_FUNCTION
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name SPI Connections of the AT45DBX Data Flash Memory
|
||||
*/
|
||||
//! @{
|
||||
#define AT45DBX_SPI (&AVR32_SPI1)
|
||||
#define AT45DBX_SPI_SCK_PIN AVR32_SPI1_SCK_0_PIN
|
||||
#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_FUNCTION
|
||||
#define AT45DBX_SPI_MISO_PIN AVR32_SPI1_MISO_0_PIN
|
||||
#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_FUNCTION
|
||||
#define AT45DBX_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_PIN
|
||||
#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_FUNCTION
|
||||
#define AT45DBX_SPI_NPCS0_PIN AVR32_SPI1_NPCS_0_PIN
|
||||
#define AT45DBX_SPI_NPCS0_FUNCTION AVR32_SPI1_NPCS_0_FUNCTION
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \name SPI Connections of the SD/MMC Connector
|
||||
*/
|
||||
//! @{
|
||||
#define SD_MMC_SPI (&AVR32_SPI1)
|
||||
#define SD_MMC_SPI_CS 1
|
||||
#define SD_MMC_SPI_SCK_PIN AVR32_SPI1_SCK_0_PIN
|
||||
#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_FUNCTION
|
||||
#define SD_MMC_SPI_MISO_PIN AVR32_SPI1_MISO_0_PIN
|
||||
#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_FUNCTION
|
||||
#define SD_MMC_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_PIN
|
||||
#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_FUNCTION
|
||||
#define SD_MMC_SPI_NPCS_PIN AVR32_SPI1_NPCS_1_PIN
|
||||
#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_1_FUNCTION
|
||||
//! @}
|
||||
|
||||
|
||||
#endif // _EVK1100_H_
|
||||
314
Demo/AVR32_UC3/BOARDS/EVK1100/led.c
Normal file
314
Demo/AVR32_UC3/BOARDS/EVK1100/led.c
Normal file
@@ -0,0 +1,314 @@
|
||||
/* This source file is part of the ATMEL FREERTOS-0.9.0 Release */
|
||||
|
||||
/*This file is prepared for Doxygen automatic documentation generation.*/
|
||||
/*! \file *********************************************************************
|
||||
*
|
||||
* \brief AT32UC3A EVK1100 board LEDs support package.
|
||||
*
|
||||
* This file contains definitions and services related to the LED features of
|
||||
* the EVK1100 board.
|
||||
*
|
||||
* - Compiler: IAR EWAVR32 and GNU GCC for AVR32
|
||||
* - Supported devices: All AVR32 AT32UC3A devices can be used.
|
||||
* - AppNote:
|
||||
*
|
||||
* \author Atmel Corporation: http://www.atmel.com \n
|
||||
* Support email: avr32@atmel.com
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/* Copyright (c) 2007, Atmel Corporation All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name of ATMEL may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
|
||||
* SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#if __GNUC__
|
||||
# include <avr32/io.h>
|
||||
#elif __ICCAVR32__
|
||||
# include <avr32/iouc3a0512.h>
|
||||
#else
|
||||
# error Unknown compiler
|
||||
#endif
|
||||
|
||||
#include "preprocessor.h"
|
||||
#include "compiler.h"
|
||||
#include "evk1100.h"
|
||||
#include "led.h"
|
||||
|
||||
|
||||
//! Structure describing LED hardware connections.
|
||||
typedef const struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
U32 PORT; //!< LED GPIO port.
|
||||
U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port.
|
||||
} GPIO; //!< LED GPIO descriptor.
|
||||
struct
|
||||
{
|
||||
S32 CHANNEL; //!< LED PWM channel (< 0 if N/A).
|
||||
S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A).
|
||||
} PWM; //!< LED PWM descriptor.
|
||||
} tLED_DESCRIPTOR;
|
||||
|
||||
|
||||
//! Hardware descriptors of all LEDs.
|
||||
static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] =
|
||||
{
|
||||
#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \
|
||||
{ \
|
||||
{LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\
|
||||
{LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \
|
||||
},
|
||||
MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~)
|
||||
#undef INSERT_LED_DESCRIPTOR
|
||||
};
|
||||
|
||||
|
||||
//! Saved state of all LEDs.
|
||||
static U32 LED_State = (1 << LED_COUNT) - 1;
|
||||
|
||||
|
||||
U32 LED_Read_Display(void)
|
||||
{
|
||||
return LED_State;
|
||||
}
|
||||
|
||||
|
||||
void LED_Display(U32 leds)
|
||||
{
|
||||
tLED_DESCRIPTOR *led_descriptor;
|
||||
volatile avr32_gpio_port_t *led_gpio_port;
|
||||
|
||||
leds &= (1 << LED_COUNT) - 1;
|
||||
LED_State = leds;
|
||||
for (led_descriptor = &LED_DESCRIPTOR[0];
|
||||
led_descriptor < LED_DESCRIPTOR + LED_COUNT;
|
||||
led_descriptor++)
|
||||
{
|
||||
led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
|
||||
if (leds & 1)
|
||||
{
|
||||
led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
|
||||
leds >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
U32 LED_Read_Display_Mask(U32 mask)
|
||||
{
|
||||
return Rd_bits(LED_State, mask);
|
||||
}
|
||||
|
||||
|
||||
void LED_Display_Mask(U32 mask, U32 leds)
|
||||
{
|
||||
tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
|
||||
volatile avr32_gpio_port_t *led_gpio_port;
|
||||
U8 led_shift;
|
||||
|
||||
mask &= (1 << LED_COUNT) - 1;
|
||||
Wr_bits(LED_State, mask, leds);
|
||||
while (mask)
|
||||
{
|
||||
led_shift = 1 + ctz(mask);
|
||||
led_descriptor += led_shift;
|
||||
led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
|
||||
leds >>= led_shift - 1;
|
||||
if (leds & 1)
|
||||
{
|
||||
led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
|
||||
leds >>= 1;
|
||||
mask >>= led_shift;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Bool LED_Test(U32 leds)
|
||||
{
|
||||
return Tst_bits(LED_State, leds);
|
||||
}
|
||||
|
||||
|
||||
void LED_Off(U32 leds)
|
||||
{
|
||||
tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
|
||||
volatile avr32_gpio_port_t *led_gpio_port;
|
||||
U8 led_shift;
|
||||
|
||||
leds &= (1 << LED_COUNT) - 1;
|
||||
Clr_bits(LED_State, leds);
|
||||
while (leds)
|
||||
{
|
||||
led_shift = 1 + ctz(leds);
|
||||
led_descriptor += led_shift;
|
||||
led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
|
||||
led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
|
||||
leds >>= led_shift;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LED_On(U32 leds)
|
||||
{
|
||||
tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
|
||||
volatile avr32_gpio_port_t *led_gpio_port;
|
||||
U8 led_shift;
|
||||
|
||||
leds &= (1 << LED_COUNT) - 1;
|
||||
Set_bits(LED_State, leds);
|
||||
while (leds)
|
||||
{
|
||||
led_shift = 1 + ctz(leds);
|
||||
led_descriptor += led_shift;
|
||||
led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
|
||||
led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
|
||||
leds >>= led_shift;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LED_Toggle(U32 leds)
|
||||
{
|
||||
tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
|
||||
volatile avr32_gpio_port_t *led_gpio_port;
|
||||
U8 led_shift;
|
||||
|
||||
leds &= (1 << LED_COUNT) - 1;
|
||||
Tgl_bits(LED_State, leds);
|
||||
while (leds)
|
||||
{
|
||||
led_shift = 1 + ctz(leds);
|
||||
led_descriptor += led_shift;
|
||||
led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
|
||||
led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK;
|
||||
led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK;
|
||||
leds >>= led_shift;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
U32 LED_Read_Display_Field(U32 field)
|
||||
{
|
||||
return Rd_bitfield(LED_State, field);
|
||||
}
|
||||
|
||||
|
||||
void LED_Display_Field(U32 field, U32 leds)
|
||||
{
|
||||
LED_Display_Mask(field, leds << ctz(field));
|
||||
}
|
||||
|
||||
|
||||
U8 LED_Get_Intensity(U32 led)
|
||||
{
|
||||
tLED_DESCRIPTOR *led_descriptor;
|
||||
|
||||
// Check that the argument value is valid.
|
||||
led = ctz(led);
|
||||
led_descriptor = &LED_DESCRIPTOR[led];
|
||||
if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0;
|
||||
|
||||
// Return the duty cycle value if the LED PWM channel is enabled, else 0.
|
||||
return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ?
|
||||
AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0;
|
||||
}
|
||||
|
||||
|
||||
void LED_Set_Intensity(U32 leds, U8 intensity)
|
||||
{
|
||||
tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1;
|
||||
volatile avr32_pwm_channel_t *led_pwm_channel;
|
||||
volatile avr32_gpio_port_t *led_gpio_port;
|
||||
U8 led_shift;
|
||||
|
||||
// For each specified LED...
|
||||
for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift)
|
||||
{
|
||||
// Select the next specified LED and check that it has a PWM channel.
|
||||
led_shift = 1 + ctz(leds);
|
||||
led_descriptor += led_shift;
|
||||
if (led_descriptor->PWM.CHANNEL < 0) continue;
|
||||
|
||||
// Initialize or update the LED PWM channel.
|
||||
led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL];
|
||||
if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)))
|
||||
{
|
||||
led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) &
|
||||
~(AVR32_PWM_CALG_MASK |
|
||||
AVR32_PWM_CPOL_MASK |
|
||||
AVR32_PWM_CPD_MASK);
|
||||
led_pwm_channel->cprd = 0x000000FF;
|
||||
led_pwm_channel->cdty = intensity;
|
||||
AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL;
|
||||
}
|
||||
else
|
||||
{
|
||||
AVR32_PWM.isr;
|
||||
while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL)));
|
||||
led_pwm_channel->cupd = intensity;
|
||||
}
|
||||
|
||||
// Switch the LED pin to its PWM function.
|
||||
led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT];
|
||||
if (led_descriptor->PWM.FUNCTION & 0x1)
|
||||
{
|
||||
led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
if (led_descriptor->PWM.FUNCTION & 0x2)
|
||||
{
|
||||
led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK;
|
||||
}
|
||||
}
|
||||
188
Demo/AVR32_UC3/BOARDS/EVK1100/led.h
Normal file
188
Demo/AVR32_UC3/BOARDS/EVK1100/led.h
Normal file
@@ -0,0 +1,188 @@
|
||||
/* This header file is part of the ATMEL FREERTOS-0.9.0 Release */
|
||||
|
||||
/*This file is prepared for Doxygen automatic documentation generation.*/
|
||||
/*! \file *********************************************************************
|
||||
*
|
||||
* \brief AT32UC3A EVK1100 board LEDs support package.
|
||||
*
|
||||
* This file contains definitions and services related to the LED features of
|
||||
* the EVK1100 board.
|
||||
*
|
||||
* - Compiler: IAR EWAVR32 and GNU GCC for AVR32
|
||||
* - Supported devices: All AVR32 AT32UC3A devices can be used.
|
||||
* - AppNote:
|
||||
*
|
||||
* \author Atmel Corporation: http://www.atmel.com \n
|
||||
* Support email: avr32@atmel.com
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/* Copyright (c) 2007, Atmel Corporation All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name of ATMEL may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
|
||||
* SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _LED_H_
|
||||
#define _LED_H_
|
||||
|
||||
#include "compiler.h"
|
||||
|
||||
|
||||
/*! \name Identifiers of LEDs to Use with LED Functions
|
||||
*/
|
||||
//! @{
|
||||
#define LED0 0x01
|
||||
#define LED1 0x02
|
||||
#define LED2 0x04
|
||||
#define LED3 0x08
|
||||
#define LED4 0x10
|
||||
#define LED5 0x20
|
||||
#define LED6 0x40
|
||||
#define LED7 0x80
|
||||
//! @}
|
||||
|
||||
|
||||
/*! \brief Gets the last state of all LEDs set through the LED API.
|
||||
*
|
||||
* \return State of all LEDs (1 bit per LED).
|
||||
*
|
||||
* \note The GPIO pin configuration of all LEDs is left unchanged.
|
||||
*/
|
||||
extern U32 LED_Read_Display(void);
|
||||
|
||||
/*! \brief Sets the state of all LEDs.
|
||||
*
|
||||
* \param leds New state of all LEDs (1 bit per LED).
|
||||
*
|
||||
* \note The pins of all LEDs are set to GPIO output mode.
|
||||
*/
|
||||
extern void LED_Display(U32 leds);
|
||||
|
||||
/*! \brief Gets the last state of the specified LEDs set through the LED API.
|
||||
*
|
||||
* \param mask LEDs of which to get the state (1 bit per LED).
|
||||
*
|
||||
* \return State of the specified LEDs (1 bit per LED).
|
||||
*
|
||||
* \note The GPIO pin configuration of all LEDs is left unchanged.
|
||||
*/
|
||||
extern U32 LED_Read_Display_Mask(U32 mask);
|
||||
|
||||
/*! \brief Sets the state of the specified LEDs.
|
||||
*
|
||||
* \param mask LEDs of which to set the state (1 bit per LED).
|
||||
*
|
||||
* \param leds New state of the specified LEDs (1 bit per LED).
|
||||
*
|
||||
* \note The pins of the specified LEDs are set to GPIO output mode.
|
||||
*/
|
||||
extern void LED_Display_Mask(U32 mask, U32 leds);
|
||||
|
||||
/*! \brief Tests the last state of the specified LEDs set through the LED API.
|
||||
*
|
||||
* \param leds LEDs of which to test the state (1 bit per LED).
|
||||
*
|
||||
* \return \c TRUE if at least one of the specified LEDs has a state on, else
|
||||
* \c FALSE.
|
||||
*
|
||||
* \note The GPIO pin configuration of all LEDs is left unchanged.
|
||||
*/
|
||||
extern Bool LED_Test(U32 leds);
|
||||
|
||||
/*! \brief Turns off the specified LEDs.
|
||||
*
|
||||
* \param leds LEDs to turn off (1 bit per LED).
|
||||
*
|
||||
* \note The pins of the specified LEDs are set to GPIO output mode.
|
||||
*/
|
||||
extern void LED_Off(U32 leds);
|
||||
|
||||
/*! \brief Turns on the specified LEDs.
|
||||
*
|
||||
* \param leds LEDs to turn on (1 bit per LED).
|
||||
*
|
||||
* \note The pins of the specified LEDs are set to GPIO output mode.
|
||||
*/
|
||||
extern void LED_On(U32 leds);
|
||||
|
||||
/*! \brief Toggles the specified LEDs.
|
||||
*
|
||||
* \param leds LEDs to toggle (1 bit per LED).
|
||||
*
|
||||
* \note The pins of the specified LEDs are set to GPIO output mode.
|
||||
*/
|
||||
extern void LED_Toggle(U32 leds);
|
||||
|
||||
/*! \brief Gets as a bit-field the last state of the specified LEDs set through
|
||||
* the LED API.
|
||||
*
|
||||
* \param field LEDs of which to get the state (1 bit per LED).
|
||||
*
|
||||
* \return State of the specified LEDs (1 bit per LED, beginning with the first
|
||||
* specified LED).
|
||||
*
|
||||
* \note The GPIO pin configuration of all LEDs is left unchanged.
|
||||
*/
|
||||
extern U32 LED_Read_Display_Field(U32 field);
|
||||
|
||||
/*! \brief Sets as a bit-field the state of the specified LEDs.
|
||||
*
|
||||
* \param field LEDs of which to set the state (1 bit per LED).
|
||||
* \param leds New state of the specified LEDs (1 bit per LED, beginning with
|
||||
* the first specified LED).
|
||||
*
|
||||
* \note The pins of the specified LEDs are set to GPIO output mode.
|
||||
*/
|
||||
extern void LED_Display_Field(U32 field, U32 leds);
|
||||
|
||||
/*! \brief Gets the intensity of the specified LED.
|
||||
*
|
||||
* \param led LED of which to get the intensity (1 bit per LED; only the least
|
||||
* significant set bit is used).
|
||||
*
|
||||
* \return Intensity of the specified LED (0x00 to 0xFF).
|
||||
*
|
||||
* \warning The PWM channel of the specified LED is supposed to be used only by
|
||||
* this module.
|
||||
*
|
||||
* \note The GPIO pin configuration of all LEDs is left unchanged.
|
||||
*/
|
||||
extern U8 LED_Get_Intensity(U32 led);
|
||||
|
||||
/*! \brief Sets the intensity of the specified LEDs.
|
||||
*
|
||||
* \param leds LEDs of which to set the intensity (1 bit per LED).
|
||||
* \param intensity New intensity of the specified LEDs (0x00 to 0xFF).
|
||||
*
|
||||
* \warning The PWM channels of the specified LEDs are supposed to be used only
|
||||
* by this module.
|
||||
*
|
||||
* \note The pins of the specified LEDs are set to PWM output mode.
|
||||
*/
|
||||
extern void LED_Set_Intensity(U32 leds, U8 intensity);
|
||||
|
||||
|
||||
#endif // _LED_H_
|
||||
73
Demo/AVR32_UC3/BOARDS/board.h
Normal file
73
Demo/AVR32_UC3/BOARDS/board.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/* This header file is part of the ATMEL FREERTOS-0.9.0 Release */
|
||||
|
||||
/*This file is prepared for Doxygen automatic documentation generation.*/
|
||||
/*! \file *********************************************************************
|
||||
*
|
||||
* \brief Standard board header file.
|
||||
*
|
||||
* This file includes the appropriate board header file according to the
|
||||
* defined board.
|
||||
*
|
||||
* - Compiler: IAR EWAVR32 and GNU GCC for AVR32
|
||||
* - Supported devices: All AVR32 devices can be used.
|
||||
* - AppNote:
|
||||
*
|
||||
* \author Atmel Corporation: http://www.atmel.com \n
|
||||
* Support email: avr32@atmel.com
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/* Copyright (c) 2007, Atmel Corporation All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. The name of ATMEL may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
|
||||
* SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _BOARD_H_
|
||||
#define _BOARD_H_
|
||||
|
||||
#if __GNUC__
|
||||
# include <avr32/io.h>
|
||||
#elif __ICCAVR32__ || __AAVR32__
|
||||
# include <avr32/iouc3a0512.h>
|
||||
#else
|
||||
# error Unknown compiler
|
||||
#endif
|
||||
|
||||
#define EVK1100 1 //!< AT32UC3A EVK1100 board.
|
||||
|
||||
#if BOARD == EVK1100
|
||||
# include "EVK1100/evk1100.h"
|
||||
#else
|
||||
# error No known AVR32 board defined
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef FRCOSC
|
||||
# define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency.
|
||||
#endif
|
||||
|
||||
|
||||
#endif // _BOARD_H_
|
||||
11
Demo/AVR32_UC3/DOC/_formulas.tex
Normal file
11
Demo/AVR32_UC3/DOC/_formulas.tex
Normal file
@@ -0,0 +1,11 @@
|
||||
\documentclass{article}
|
||||
\usepackage{epsfig}
|
||||
\pagestyle{empty}
|
||||
\begin{document}
|
||||
$ baudrate = \frac{Selected Clock}{16 \times CD} $
|
||||
\pagebreak
|
||||
|
||||
$ baudrate = \frac{Selected Clock}{8 \times CD} $
|
||||
\pagebreak
|
||||
|
||||
\end{document}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user