summaryrefslogtreecommitdiff
path: root/bsp/sam7x
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/sam7x')
-rw-r--r--bsp/sam7x/AT91SAM7X.h342
-rw-r--r--bsp/sam7x/board.c42
-rw-r--r--bsp/sam7x/board.h80
-rw-r--r--bsp/sam7x/mii.h156
-rw-r--r--bsp/sam7x/project.uvopt3166
-rw-r--r--bsp/sam7x/project.uvproj899
-rw-r--r--bsp/sam7x/rtconfig.h8
-rw-r--r--bsp/sam7x/sam7x_emac.c554
-rw-r--r--bsp/sam7x/sam7x_emac.h64
-rw-r--r--bsp/sam7x/serial.c396
-rw-r--r--bsp/sam7x/serial.h56
-rw-r--r--bsp/sam7x/startup.c1
12 files changed, 5698 insertions, 66 deletions
diff --git a/bsp/sam7x/AT91SAM7X.h b/bsp/sam7x/AT91SAM7X.h
new file mode 100644
index 0000000000..54a7d11c46
--- /dev/null
+++ b/bsp/sam7x/AT91SAM7X.h
@@ -0,0 +1,342 @@
+/*
+ * File : at91sam7x.h
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2006, RT-Thread Develop Team
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://openlab.rt-thread.com/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2006-08-23 Bernard first version
+ */
+
+#ifndef __AT91SAM7S_H__
+#define __AT91SAM7S_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AT91_REG *(volatile unsigned int *) /* Hardware register definition */
+
+/* ========== Register definition for TC0 peripheral ========== */
+#define AT91C_TC0_SR (AT91_REG(0xFFFA0020)) /* TC0 Status Register */
+#define AT91C_TC0_RC (AT91_REG(0xFFFA001C)) /* TC0 Register C */
+#define AT91C_TC0_RB (AT91_REG(0xFFFA0018)) /* TC0 Register B */
+#define AT91C_TC0_CCR (AT91_REG(0xFFFA0000)) /* TC0 Channel Control Register */
+#define AT91C_TC0_CMR (AT91_REG(0xFFFA0004)) /* TC0 Channel Mode Register (Capture Mode / Waveform Mode) */
+#define AT91C_TC0_IER (AT91_REG(0xFFFA0024)) /* TC0 Interrupt Enable Register */
+#define AT91C_TC0_RA (AT91_REG(0xFFFA0014)) /* TC0 Register A */
+#define AT91C_TC0_IDR (AT91_REG(0xFFFA0028)) /* TC0 Interrupt Disable Register */
+#define AT91C_TC0_CV (AT91_REG(0xFFFA0010)) /* TC0 Counter Value */
+#define AT91C_TC0_IMR (AT91_REG(0xFFFA002C)) /* TC0 Interrupt Mask Register */
+
+/* ========== Register definition for TC1 peripheral ========== */
+#define AT91C_TC1_RB (AT91_REG(0xFFFA0058)) /* TC1 Register B */
+#define AT91C_TC1_CCR (AT91_REG(0xFFFA0040)) /* TC1 Channel Control Register */
+#define AT91C_TC1_IER (AT91_REG(0xFFFA0064)) /* TC1 Interrupt Enable Register */
+#define AT91C_TC1_IDR (AT91_REG(0xFFFA0068)) /* TC1 Interrupt Disable Register */
+#define AT91C_TC1_SR (AT91_REG(0xFFFA0060)) /* TC1 Status Register */
+#define AT91C_TC1_CMR (AT91_REG(0xFFFA0044)) /* TC1 Channel Mode Register (Capture Mode / Waveform Mode) */
+#define AT91C_TC1_RA (AT91_REG(0xFFFA0054)) /* TC1 Register A */
+#define AT91C_TC1_RC (AT91_REG(0xFFFA005C)) /* TC1 Register C */
+#define AT91C_TC1_IMR (AT91_REG(0xFFFA006C)) /* TC1 Interrupt Mask Register */
+#define AT91C_TC1_CV (AT91_REG(0xFFFA0050)) /* TC1 Counter Value */
+
+/* ========== Register definition for TC2 peripheral ========== */
+#define AT91C_TC2_CMR (AT91_REG(0xFFFA0084)) /* TC2 Channel Mode Register (Capture Mode / Waveform Mode) */
+#define AT91C_TC2_CCR (AT91_REG(0xFFFA0080)) /* TC2 Channel Control Register */
+#define AT91C_TC2_CV (AT91_REG(0xFFFA0090)) /* TC2 Counter Value */
+#define AT91C_TC2_RA (AT91_REG(0xFFFA0094)) /* TC2 Register A */
+#define AT91C_TC2_RB (AT91_REG(0xFFFA0098)) /* TC2 Register B */
+#define AT91C_TC2_IDR (AT91_REG(0xFFFA00A8)) /* TC2 Interrupt Disable Register */
+#define AT91C_TC2_IMR (AT91_REG(0xFFFA00AC)) /* TC2 Interrupt Mask Register */
+#define AT91C_TC2_RC (AT91_REG(0xFFFA009C)) /* TC2 Register C */
+#define AT91C_TC2_IER (AT91_REG(0xFFFA00A4)) /* TC2 Interrupt Enable Register */
+#define AT91C_TC2_SR (AT91_REG(0xFFFA00A0)) /* TC2 Status Register */
+
+/* ========== Register definition for PITC peripheral ========== */
+#define AT91C_PITC_PIVR (AT91_REG(0xFFFFFD38)) /* PITC Period Interval Value Register */
+#define AT91C_PITC_PISR (AT91_REG(0xFFFFFD34)) /* PITC Period Interval Status Register */
+#define AT91C_PITC_PIIR (AT91_REG(0xFFFFFD3C)) /* PITC Period Interval Image Register */
+#define AT91C_PITC_PIMR (AT91_REG(0xFFFFFD30)) /* PITC Period Interval Mode Register */
+
+/* ========== Register definition for UDP peripheral ========== */
+#define AT91C_UDP_NUM (AT91_REG(0xFFFB0000)) /* UDP Frame Number Register */
+#define AT91C_UDP_STAT (AT91_REG(0xFFFB0004)) /* UDP Global State Register */
+#define AT91C_UDP_FADDR (AT91_REG(0xFFFB0008)) /* UDP Function Address Register */
+#define AT91C_UDP_IER (AT91_REG(0xFFFB0010)) /* UDP Interrupt Enable Register */
+#define AT91C_UDP_IDR (AT91_REG(0xFFFB0014)) /* UDP Interrupt Disable Register */
+#define AT91C_UDP_IMR (AT91_REG(0xFFFB0018)) /* UDP Interrupt Mask Register */
+#define AT91C_UDP_ISR (AT91_REG(0xFFFB001C)) /* UDP Interrupt Status Register */
+#define AT91C_UDP_ICR (AT91_REG(0xFFFB0020)) /* UDP Interrupt Clear Register */
+#define AT91C_UDP_RSTEP (AT91_REG(0xFFFB0028)) /* UDP Reset Endpoint Register */
+#define AT91C_UDP_CSR0 (AT91_REG(0xFFFB0030)) /* UDP Endpoint Control and Status Register */
+#define AT91C_UDP_CSR(n) (*(&AT91C_UDP_CSR0 + n))
+#define AT91C_UDP_FDR0 (AT91_REG(0xFFFB0050)) /* UDP Endpoint FIFO Data Register */
+#define AT91C_UDP_FDR(n) (*(&AT91C_UDP_FDR0 + n))
+#define AT91C_UDP_TXVC (AT91_REG(0xFFFB0074)) /* UDP Transceiver Control Register */
+
+/* ========== Register definition for US0 peripheral ========== */
+#define AT91C_US0_CR (AT91_REG(0xFFFC0000)) /* US0 Control Register */
+#define AT91C_US0_MR (AT91_REG(0xFFFC0004)) /* US0 Mode Register */
+#define AT91C_US0_IER (AT91_REG(0xFFFC0008)) /* US0 Interrupt Enable Register */
+#define AT91C_US0_IDR (AT91_REG(0xFFFC000C)) /* US0 Interrupt Disable Register */
+#define AT91C_US0_IMR (AT91_REG(0xFFFC0010)) /* US0 Interrupt Mask Register */
+#define AT91C_US0_CSR (AT91_REG(0xFFFC0014)) /* US0 Channel Status Register */
+#define AT91C_US0_RHR (AT91_REG(0xFFFC0018)) /* US0 Receiver Holding Register */
+#define AT91C_US0_THR (AT91_REG(0xFFFC001C)) /* US0 Transmitter Holding Register */
+#define AT91C_US0_BRGR (AT91_REG(0xFFFC0020)) /* US0 Baud Rate Generator Register */
+#define AT91C_US0_RTOR (AT91_REG(0xFFFC0024)) /* US0 Receiver Time-out Register */
+#define AT91C_US0_TTGR (AT91_REG(0xFFFC0028)) /* US0 Transmitter Time-guard Register */
+#define AT91C_US0_NER (AT91_REG(0xFFFC0044)) /* US0 Nb Errors Register */
+#define AT91C_US0_FIDI (AT91_REG(0xFFFC0040)) /* US0 FI_DI_Ratio Register */
+#define AT91C_US0_IF (AT91_REG(0xFFFC004C)) /* US0 IRDA_FILTER Register */
+
+/* ========== Register definition for AIC peripheral ========== */
+#define AT91C_AIC_SMR0 (AT91_REG(0xFFFFF000)) /* AIC Source Mode Register */
+#define AT91C_AIC_SMR(n) (*(&AT91C_AIC_SMR0 + n))
+#define AT91C_AIC_SVR0 (AT91_REG(0xFFFFF080)) /* AIC Source Vector Register */
+#define AT91C_AIC_SVR(n) (*(&AT91C_AIC_SVR0 + n))
+#define AT91C_AIC_IVR (AT91_REG(0xFFFFF100)) /* AIC Interrupt Vector Register */
+#define AT91C_AIC_FVR (AT91_REG(0xFFFFF104)) /* AIC FIQ Vector Register */
+#define AT91C_AIC_ISR (AT91_REG(0xFFFFF108)) /* AIC Interrupt Status Register */
+#define AT91C_AIC_IPR (AT91_REG(0xFFFFF10C)) /* AIC Interrupt Pending Register */
+#define AT91C_AIC_IMR (AT91_REG(0xFFFFF110)) /* AIC Interrupt Mask Register */
+#define AT91C_AIC_CISR (AT91_REG(0xFFFFF114)) /* AIC Core Interrupt Status Register */
+#define AT91C_AIC_IECR (AT91_REG(0xFFFFF120)) /* AIC Interrupt Enable Command Register */
+#define AT91C_AIC_IDCR (AT91_REG(0xFFFFF124)) /* AIC Interrupt Disable Command Register */
+#define AT91C_AIC_ICCR (AT91_REG(0xFFFFF128)) /* AIC Interrupt Clear Command Register */
+#define AT91C_AIC_ISCR (AT91_REG(0xFFFFF12C)) /* AIC Interrupt Set Command Register */
+#define AT91C_AIC_EOICR (AT91_REG(0xFFFFF130)) /* AIC End of Interrupt Command Register */
+#define AT91C_AIC_SPU (AT91_REG(0xFFFFF134)) /* AIC Spurious Vector Register */
+#define AT91C_AIC_DCR (AT91_REG(0xFFFFF138)) /* AIC Debug Control Register (Protect) */
+#define AT91C_AIC_FFER (AT91_REG(0xFFFFF140)) /* AIC Fast Forcing Enable Register */
+#define AT91C_AIC_FFDR (AT91_REG(0xFFFFF144)) /* AIC Fast Forcing Disable Register */
+#define AT91C_AIC_FFSR (AT91_REG(0xFFFFF148)) /* AIC Fast Forcing Status Register */
+
+
+/* ========== Register definition for DBGU peripheral ========== */
+#define AT91C_DBGU_EXID (AT91_REG(0xFFFFF244)) /* DBGU Chip ID Extension Register */
+#define AT91C_DBGU_BRGR (AT91_REG(0xFFFFF220)) /* DBGU Baud Rate Generator Register */
+#define AT91C_DBGU_IDR (AT91_REG(0xFFFFF20C)) /* DBGU Interrupt Disable Register */
+#define AT91C_DBGU_CSR (AT91_REG(0xFFFFF214)) /* DBGU Channel Status Register */
+#define AT91C_DBGU_CIDR (AT91_REG(0xFFFFF240)) /* DBGU Chip ID Register */
+#define AT91C_DBGU_MR (AT91_REG(0xFFFFF204)) /* DBGU Mode Register */
+#define AT91C_DBGU_IMR (AT91_REG(0xFFFFF210)) /* DBGU Interrupt Mask Register */
+#define AT91C_DBGU_CR (AT91_REG(0xFFFFF200)) /* DBGU Control Register */
+#define AT91C_DBGU_FNTR (AT91_REG(0xFFFFF248)) /* DBGU Force NTRST Register */
+#define AT91C_DBGU_THR (AT91_REG(0xFFFFF21C)) /* DBGU Transmitter Holding Register */
+#define AT91C_DBGU_RHR (AT91_REG(0xFFFFF218)) /* DBGU Receiver Holding Register */
+#define AT91C_DBGU_IER (AT91_REG(0xFFFFF208)) /* DBGU Interrupt Enable Register */
+
+/* ========== Register definition for PIO peripheral ========== */
+#define AT91C_PIO_ODR (AT91_REG(0xFFFFF414)) /* PIOA Output Disable Registerr */
+#define AT91C_PIO_SODR (AT91_REG(0xFFFFF430)) /* PIOA Set Output Data Register */
+#define AT91C_PIO_ISR (AT91_REG(0xFFFFF44C)) /* PIOA Interrupt Status Register */
+#define AT91C_PIO_ABSR (AT91_REG(0xFFFFF478)) /* PIOA AB Select Status Register */
+#define AT91C_PIO_IER (AT91_REG(0xFFFFF440)) /* PIOA Interrupt Enable Register */
+#define AT91C_PIO_PPUDR (AT91_REG(0xFFFFF460)) /* PIOA Pull-up Disable Register */
+#define AT91C_PIO_IMR (AT91_REG(0xFFFFF448)) /* PIOA Interrupt Mask Register */
+#define AT91C_PIO_PER (AT91_REG(0xFFFFF400)) /* PIOA PIO Enable Register */
+#define AT91C_PIO_IFDR (AT91_REG(0xFFFFF424)) /* PIOA Input Filter Disable Register */
+#define AT91C_PIO_OWDR (AT91_REG(0xFFFFF4A4)) /* PIOA Output Write Disable Register */
+#define AT91C_PIO_MDSR (AT91_REG(0xFFFFF458)) /* PIOA Multi-driver Status Register */
+#define AT91C_PIO_IDR (AT91_REG(0xFFFFF444)) /* PIOA Interrupt Disable Register */
+#define AT91C_PIO_ODSR (AT91_REG(0xFFFFF438)) /* PIOA Output Data Status Register */
+#define AT91C_PIO_PPUSR (AT91_REG(0xFFFFF468)) /* PIOA Pull-up Status Register */
+#define AT91C_PIO_OWSR (AT91_REG(0xFFFFF4A8)) /* PIOA Output Write Status Register */
+#define AT91C_PIO_BSR (AT91_REG(0xFFFFF474)) /* PIOA Select B Register */
+#define AT91C_PIO_OWER (AT91_REG(0xFFFFF4A0)) /* PIOA Output Write Enable Register */
+#define AT91C_PIO_IFER (AT91_REG(0xFFFFF420)) /* PIOA Input Filter Enable Register */
+#define AT91C_PIO_PDSR (AT91_REG(0xFFFFF43C)) /* PIOA Pin Data Status Register */
+#define AT91C_PIO_PPUER (AT91_REG(0xFFFFF464)) /* PIOA Pull-up Enable Register */
+#define AT91C_PIO_OSR (AT91_REG(0xFFFFF418)) /* PIOA Output Status Register */
+#define AT91C_PIO_ASR (AT91_REG(0xFFFFF470)) /* PIOA Select A Register */
+#define AT91C_PIO_MDDR (AT91_REG(0xFFFFF454)) /* PIOA Multi-driver Disable Register */
+#define AT91C_PIO_CODR (AT91_REG(0xFFFFF434)) /* PIOA Clear Output Data Register */
+#define AT91C_PIO_MDER (AT91_REG(0xFFFFF450)) /* PIOA Multi-driver Enable Register */
+#define AT91C_PIO_PDR (AT91_REG(0xFFFFF404)) /* PIOA PIO Disable Register */
+#define AT91C_PIO_IFSR (AT91_REG(0xFFFFF428)) /* PIOA Input Filter Status Register */
+#define AT91C_PIO_OER (AT91_REG(0xFFFFF410)) /* PIOA Output Enable Register */
+#define AT91C_PIO_PSR (AT91_REG(0xFFFFF408)) /* PIOA PIO Status Register */
+
+// ========== Register definition for PIOA peripheral ==========
+#define AT91C_PIOA_IMR (AT91_REG(0xFFFFF448)) // (PIOA) Interrupt Mask Register
+#define AT91C_PIOA_IER (AT91_REG(0xFFFFF440)) // (PIOA) Interrupt Enable Register
+#define AT91C_PIOA_OWDR (AT91_REG(0xFFFFF4A4)) // (PIOA) Output Write Disable Register
+#define AT91C_PIOA_ISR (AT91_REG(0xFFFFF44C)) // (PIOA) Interrupt Status Register
+#define AT91C_PIOA_PPUDR (AT91_REG(0xFFFFF460)) // (PIOA) Pull-up Disable Register
+#define AT91C_PIOA_MDSR (AT91_REG(0xFFFFF458)) // (PIOA) Multi-driver Status Register
+#define AT91C_PIOA_MDER (AT91_REG(0xFFFFF450)) // (PIOA) Multi-driver Enable Register
+#define AT91C_PIOA_PER (AT91_REG(0xFFFFF400)) // (PIOA) PIO Enable Register
+#define AT91C_PIOA_PSR (AT91_REG(0xFFFFF408)) // (PIOA) PIO Status Register
+#define AT91C_PIOA_OER (AT91_REG(0xFFFFF410)) // (PIOA) Output Enable Register
+#define AT91C_PIOA_BSR (AT91_REG(0xFFFFF474)) // (PIOA) Select B Register
+#define AT91C_PIOA_PPUER (AT91_REG(0xFFFFF464)) // (PIOA) Pull-up Enable Register
+#define AT91C_PIOA_MDDR (AT91_REG(0xFFFFF454)) // (PIOA) Multi-driver Disable Register
+#define AT91C_PIOA_PDR (AT91_REG(0xFFFFF404)) // (PIOA) PIO Disable Register
+#define AT91C_PIOA_ODR (AT91_REG(0xFFFFF414)) // (PIOA) Output Disable Registerr
+#define AT91C_PIOA_IFDR (AT91_REG(0xFFFFF424)) // (PIOA) Input Filter Disable Register
+#define AT91C_PIOA_ABSR (AT91_REG(0xFFFFF478)) // (PIOA) AB Select Status Register
+#define AT91C_PIOA_ASR (AT91_REG(0xFFFFF470)) // (PIOA) Select A Register
+#define AT91C_PIOA_PPUSR (AT91_REG(0xFFFFF468)) // (PIOA) Pull-up Status Register
+#define AT91C_PIOA_ODSR (AT91_REG(0xFFFFF438)) // (PIOA) Output Data Status Register
+#define AT91C_PIOA_SODR (AT91_REG(0xFFFFF430)) // (PIOA) Set Output Data Register
+#define AT91C_PIOA_IFSR (AT91_REG(0xFFFFF428)) // (PIOA) Input Filter Status Register
+#define AT91C_PIOA_IFER (AT91_REG(0xFFFFF420)) // (PIOA) Input Filter Enable Register
+#define AT91C_PIOA_OSR (AT91_REG(0xFFFFF418)) // (PIOA) Output Status Register
+#define AT91C_PIOA_IDR (AT91_REG(0xFFFFF444)) // (PIOA) Interrupt Disable Register
+#define AT91C_PIOA_PDSR (AT91_REG(0xFFFFF43C)) // (PIOA) Pin Data Status Register
+#define AT91C_PIOA_CODR (AT91_REG(0xFFFFF434)) // (PIOA) Clear Output Data Register
+#define AT91C_PIOA_OWSR (AT91_REG(0xFFFFF4A8)) // (PIOA) Output Write Status Register
+#define AT91C_PIOA_OWER (AT91_REG(0xFFFFF4A0)) // (PIOA) Output Write Enable Register
+// ========== Register definition for PIOB peripheral ==========
+#define AT91C_PIOB_OWSR (AT91_REG(0xFFFFF6A8)) // (PIOB) Output Write Status Register
+#define AT91C_PIOB_PPUSR (AT91_REG(0xFFFFF668)) // (PIOB) Pull-up Status Register
+#define AT91C_PIOB_PPUDR (AT91_REG(0xFFFFF660)) // (PIOB) Pull-up Disable Register
+#define AT91C_PIOB_MDSR (AT91_REG(0xFFFFF658)) // (PIOB) Multi-driver Status Register
+#define AT91C_PIOB_MDER (AT91_REG(0xFFFFF650)) // (PIOB) Multi-driver Enable Register
+#define AT91C_PIOB_IMR (AT91_REG(0xFFFFF648)) // (PIOB) Interrupt Mask Register
+#define AT91C_PIOB_OSR (AT91_REG(0xFFFFF618)) // (PIOB) Output Status Register
+#define AT91C_PIOB_OER (AT91_REG(0xFFFFF610)) // (PIOB) Output Enable Register
+#define AT91C_PIOB_PSR (AT91_REG(0xFFFFF608)) // (PIOB) PIO Status Register
+#define AT91C_PIOB_PER (AT91_REG(0xFFFFF600)) // (PIOB) PIO Enable Register
+#define AT91C_PIOB_BSR (AT91_REG(0xFFFFF674)) // (PIOB) Select B Register
+#define AT91C_PIOB_PPUER (AT91_REG(0xFFFFF664)) // (PIOB) Pull-up Enable Register
+#define AT91C_PIOB_IFDR (AT91_REG(0xFFFFF624)) // (PIOB) Input Filter Disable Register
+#define AT91C_PIOB_ODR (AT91_REG(0xFFFFF614)) // (PIOB) Output Disable Registerr
+#define AT91C_PIOB_ABSR (AT91_REG(0xFFFFF678)) // (PIOB) AB Select Status Register
+#define AT91C_PIOB_ASR (AT91_REG(0xFFFFF670)) // (PIOB) Select A Register
+#define AT91C_PIOB_IFER (AT91_REG(0xFFFFF620)) // (PIOB) Input Filter Enable Register
+#define AT91C_PIOB_IFSR (AT91_REG(0xFFFFF628)) // (PIOB) Input Filter Status Register
+#define AT91C_PIOB_SODR (AT91_REG(0xFFFFF630)) // (PIOB) Set Output Data Register
+#define AT91C_PIOB_ODSR (AT91_REG(0xFFFFF638)) // (PIOB) Output Data Status Register
+#define AT91C_PIOB_CODR (AT91_REG(0xFFFFF634)) // (PIOB) Clear Output Data Register
+#define AT91C_PIOB_PDSR (AT91_REG(0xFFFFF63C)) // (PIOB) Pin Data Status Register
+#define AT91C_PIOB_OWER (AT91_REG(0xFFFFF6A0)) // (PIOB) Output Write Enable Register
+#define AT91C_PIOB_IER (AT91_REG(0xFFFFF640)) // (PIOB) Interrupt Enable Register
+#define AT91C_PIOB_OWDR (AT91_REG(0xFFFFF6A4)) // (PIOB) Output Write Disable Register
+#define AT91C_PIOB_MDDR (AT91_REG(0xFFFFF654)) // (PIOB) Multi-driver Disable Register
+#define AT91C_PIOB_ISR (AT91_REG(0xFFFFF64C)) // (PIOB) Interrupt Status Register
+#define AT91C_PIOB_IDR (AT91_REG(0xFFFFF644)) // (PIOB) Interrupt Disable Register
+#define AT91C_PIOB_PDR (AT91_REG(0xFFFFF604)) // (PIOB) PIO Disable Register
+
+/* ========== Register definition for PMC peripheral ========== */
+#define AT91C_PMC_SCER (AT91_REG(0xFFFFFC00)) /* PMC System Clock Enable Register */
+#define AT91C_PMC_SCDR (AT91_REG(0xFFFFFC04)) /* PMC System Clock Disable Register */
+#define AT91C_PMC_SCSR (AT91_REG(0xFFFFFC08)) /* PMC System Clock Status Register */
+#define AT91C_PMC_PCER (AT91_REG(0xFFFFFC10)) /* PMC Peripheral Clock Enable Register */
+#define AT91C_PMC_PCDR (AT91_REG(0xFFFFFC14)) /* PMC Peripheral Clock Disable Register */
+#define AT91C_PMC_PCSR (AT91_REG(0xFFFFFC18)) /* PMC Peripheral Clock Status Register */
+#define AT91C_PMC_MOR (AT91_REG(0xFFFFFC20)) /* PMC Main Oscillator Register */
+#define AT91C_PMC_MCFR (AT91_REG(0xFFFFFC24)) /* PMC Main Clock Frequency Register */
+#define AT91C_PMC_PLLR (AT91_REG(0xFFFFFC2C)) /* PMC PLL Register */
+#define AT91C_PMC_MCKR (AT91_REG(0xFFFFFC30)) /* PMC Master Clock Register */
+#define AT91C_PMC_PCKR (AT91_REG(0xFFFFFC40)) /* PMC Programmable Clock Register */
+#define AT91C_PMC_IER (AT91_REG(0xFFFFFC60)) /* PMC Interrupt Enable Register */
+#define AT91C_PMC_IDR (AT91_REG(0xFFFFFC64)) /* PMC Interrupt Disable Register */
+#define AT91C_PMC_SR (AT91_REG(0xFFFFFC68)) /* PMC Status Register */
+#define AT91C_PMC_IMR (AT91_REG(0xFFFFFC6C)) /* PMC Interrupt Mask Register */
+
+// ========== Register definition for PDC_SPI1 peripheral ==========
+#define AT91C_SPI1_RNPR (AT91_REG(0xFFFE4110)) // (PDC_SPI1) Receive Next Pointer Register
+#define AT91C_SPI1_TPR (AT91_REG(0xFFFE4108)) // (PDC_SPI1) Transmit Pointer Register
+#define AT91C_SPI1_RPR (AT91_REG(0xFFFE4100)) // (PDC_SPI1) Receive Pointer Register
+#define AT91C_SPI1_PTSR (AT91_REG(0xFFFE4124)) // (PDC_SPI1) PDC Transfer Status Register
+#define AT91C_SPI1_RCR (AT91_REG(0xFFFE4104)) // (PDC_SPI1) Receive Counter Register
+#define AT91C_SPI1_TCR (AT91_REG(0xFFFE410C)) // (PDC_SPI1) Transmit Counter Register
+#define AT91C_SPI1_RNCR (AT91_REG(0xFFFE4114)) // (PDC_SPI1) Receive Next Counter Register
+#define AT91C_SPI1_TNCR (AT91_REG(0xFFFE411C)) // (PDC_SPI1) Transmit Next Counter Register
+#define AT91C_SPI1_TNPR (AT91_REG(0xFFFE4118)) // (PDC_SPI1) Transmit Next Pointer Register
+#define AT91C_SPI1_PTCR (AT91_REG(0xFFFE4120)) // (PDC_SPI1) PDC Transfer Control Register
+// ========== Register definition for SPI1 peripheral ==========
+#define AT91C_SPI1_CSR (AT91_REG(0xFFFE4030)) // (SPI1) Chip Select Register
+#define AT91C_SPI1_IDR (AT91_REG(0xFFFE4018)) // (SPI1) Interrupt Disable Register
+#define AT91C_SPI1_SR (AT91_REG(0xFFFE4010)) // (SPI1) Status Register
+#define AT91C_SPI1_RDR (AT91_REG(0xFFFE4008)) // (SPI1) Receive Data Register
+#define AT91C_SPI1_CR (AT91_REG(0xFFFE4000)) // (SPI1) Control Register
+#define AT91C_SPI1_IMR (AT91_REG(0xFFFE401C)) // (SPI1) Interrupt Mask Register
+#define AT91C_SPI1_IER (AT91_REG(0xFFFE4014)) // (SPI1) Interrupt Enable Register
+#define AT91C_SPI1_TDR (AT91_REG(0xFFFE400C)) // (SPI1) Transmit Data Register
+#define AT91C_SPI1_MR (AT91_REG(0xFFFE4004)) // (SPI1) Mode Register
+// ========== Register definition for PDC_SPI0 peripheral ==========
+#define AT91C_SPI0_PTCR (AT91_REG(0xFFFE0120)) // (PDC_SPI0) PDC Transfer Control Register
+#define AT91C_SPI0_TNPR (AT91_REG(0xFFFE0118)) // (PDC_SPI0) Transmit Next Pointer Register
+#define AT91C_SPI0_RNPR (AT91_REG(0xFFFE0110)) // (PDC_SPI0) Receive Next Pointer Register
+#define AT91C_SPI0_TPR (AT91_REG(0xFFFE0108)) // (PDC_SPI0) Transmit Pointer Register
+#define AT91C_SPI0_RPR (AT91_REG(0xFFFE0100)) // (PDC_SPI0) Receive Pointer Register
+#define AT91C_SPI0_PTSR (AT91_REG(0xFFFE0124)) // (PDC_SPI0) PDC Transfer Status Register
+#define AT91C_SPI0_TNCR (AT91_REG(0xFFFE011C)) // (PDC_SPI0) Transmit Next Counter Register
+#define AT91C_SPI0_RNCR (AT91_REG(0xFFFE0114)) // (PDC_SPI0) Receive Next Counter Register
+#define AT91C_SPI0_TCR (AT91_REG(0xFFFE010C)) // (PDC_SPI0) Transmit Counter Register
+#define AT91C_SPI0_RCR (AT91_REG(0xFFFE0104)) // (PDC_SPI0) Receive Counter Register
+// ========== Register definition for SPI0 peripheral ==========
+#define AT91C_SPI0_CSR (AT91_REG(0xFFFE0030)) // (SPI0) Chip Select Register
+#define AT91C_SPI0_IDR (AT91_REG(0xFFFE0018)) // (SPI0) Interrupt Disable Register
+#define AT91C_SPI0_SR (AT91_REG(0xFFFE0010)) // (SPI0) Status Register
+#define AT91C_SPI0_RDR (AT91_REG(0xFFFE0008)) // (SPI0) Receive Data Register
+#define AT91C_SPI0_CR (AT91_REG(0xFFFE0000)) // (SPI0) Control Register
+#define AT91C_SPI0_IMR (AT91_REG(0xFFFE001C)) // (SPI0) Interrupt Mask Register
+#define AT91C_SPI0_IER (AT91_REG(0xFFFE0014)) // (SPI0) Interrupt Enable Register
+#define AT91C_SPI0_TDR (AT91_REG(0xFFFE000C)) // (SPI0) Transmit Data Register
+#define AT91C_SPI0_MR (AT91_REG(0xFFFE0004)) // (SPI0) Mode Register
+
+/******************************************************************************/
+/* PERIPHERAL ID DEFINITIONS FOR AT91SAM7X256 */
+/******************************************************************************/
+#define AT91C_ID_FIQ ( 0) /* Advanced Interrupt Controller (FIQ) */
+#define AT91C_ID_SYS ( 1) /* System Peripheral */
+#define AT91C_ID_PIOA ( 2) /* Parallel IO Controller A */
+#define AT91C_ID_PIOB ( 3) /* Parallel IO Controller B */
+#define AT91C_ID_SPI0 ( 4) /* Serial Peripheral Interface 0 */
+#define AT91C_ID_SPI1 ( 5) /* Serial Peripheral Interface 1 */
+#define AT91C_ID_US0 ( 6) /* USART 0 */
+#define AT91C_ID_US1 ( 7) /* USART 1 */
+#define AT91C_ID_SSC ( 8) /* Serial Synchronous Controller */
+#define AT91C_ID_TWI ( 9) /* Two-Wire Interface */
+#define AT91C_ID_PWMC (10) /* PWM Controller */
+#define AT91C_ID_UDP (11) /* USB Device Port */
+#define AT91C_ID_TC0 (12) /* Timer Counter 0 */
+#define AT91C_ID_TC1 (13) /* Timer Counter 1 */
+#define AT91C_ID_TC2 (14) /* Timer Counter 2 */
+#define AT91C_ID_CAN (15) /* Control Area Network Controller */
+#define AT91C_ID_EMAC (16) /* Ethernet MAC */
+#define AT91C_ID_ADC (17) /* Analog-to-Digital Converter */
+#define AT91C_ID_AES (18) /* Advanced Encryption Standard 128-bit */
+#define AT91C_ID_TDES (19) /* Triple Data Encryption Standard */
+#define AT91C_ID_20_Reserved (20) /* Reserved */
+#define AT91C_ID_21_Reserved (21) /* Reserved */
+#define AT91C_ID_22_Reserved (22) /* Reserved */
+#define AT91C_ID_23_Reserved (23) /* Reserved */
+#define AT91C_ID_24_Reserved (24) /* Reserved */
+#define AT91C_ID_25_Reserved (25) /* Reserved */
+#define AT91C_ID_26_Reserved (26) /* Reserved */
+#define AT91C_ID_27_Reserved (27) /* Reserved */
+#define AT91C_ID_28_Reserved (28) /* Reserved */
+#define AT91C_ID_29_Reserved (29) /* Reserved */
+#define AT91C_ID_IRQ0 (30) /* Advanced Interrupt Controller (IRQ0) */
+#define AT91C_ID_IRQ1 (31) /* Advanced Interrupt Controller (IRQ1) */
+#define AT91C_ALL_INT (0xC00FFFFF) /* ALL VALID INTERRUPTS */
+
+#define MCK 48054857
+
+/*****************************/
+/* CPU Mode */
+/*****************************/
+#define USERMODE 0x10
+#define FIQMODE 0x11
+#define IRQMODE 0x12
+#define SVCMODE 0x13
+#define ABORTMODE 0x17
+#define UNDEFMODE 0x1b
+#define MODEMASK 0x1f
+#define NOINT 0xc0
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsp/sam7x/board.c b/bsp/sam7x/board.c
index d3f97c4112..c9a0613cb6 100644
--- a/bsp/sam7x/board.c
+++ b/bsp/sam7x/board.c
@@ -15,7 +15,7 @@
#include <rtthread.h>
#include <rthw.h>
-#include <AT91SAM7X.h>
+#include <AT91SAM7X256.h>
#include "board.h"
static void rt_hw_board_led_init(void);
@@ -34,18 +34,18 @@ static void rt_hw_board_led_init(void);
*/
void rt_hw_timer_handler(int vector)
{
- if (AT91C_PITC_PISR & 0x01)
+ if (AT91C_BASE_PITC->PITC_PISR & 0x01)
{
/* increase a tick */
rt_tick_increase();
/* ack interrupt */
- AT91C_AIC_EOICR = AT91C_PITC_PIVR;
+ AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_PITC->PITC_PIVR;
}
else
{
/* end of interrupt */
- AT91C_AIC_EOICR = 0;
+ AT91C_BASE_AIC->AIC_EOICR = 0;
}
}
/* PIO Flash PA PB PIN */
@@ -63,11 +63,11 @@ int leds[] = {LED1, LED2, LED3, LED4};
static void rt_hw_board_led_init()
{
/* enable the clock of the PIO A, PIO B */
- AT91C_PMC_PCER = 1 << AT91C_ID_PIOA | 1 << AT91C_ID_PIOB;
+ AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA | 1 << AT91C_ID_PIOB;
/* configure PIO as output for led */
- AT91C_PIOB_PER = LED_MASK;
- AT91C_PIOB_OER = LED_MASK;
+ AT91C_BASE_PIOB->PIO_PER = LED_MASK;
+ AT91C_BASE_PIOB->PIO_OER = LED_MASK;
}
/**
@@ -79,7 +79,7 @@ void rt_hw_board_led_on(int n)
{
if (n >= 0 && n < 4)
{
- AT91C_PIOB_CODR = leds[n];
+ AT91C_BASE_PIOB->PIO_CODR = leds[n];
}
}
@@ -92,7 +92,7 @@ void rt_hw_board_led_off(int n)
{
if (n >= 0 && n < 4)
{
- AT91C_PIOB_SODR = leds[n];
+ AT91C_BASE_PIOB->PIO_SODR = leds[n];
}
}
@@ -111,14 +111,14 @@ void rt_hw_console_output(const char* str)
{
if (*str == '\n')
{
- while (!(AT91C_US0_CSR & AT91C_US_TXRDY));
- AT91C_US0_THR = '\r';
+ while (!(AT91C_BASE_US0->US_CSR & AT91C_US_TXRDY));
+ AT91C_BASE_US0->US_THR = '\r';
}
/* Wait for Empty Tx Buffer */
- while (!(AT91C_US0_CSR & AT91C_US_TXRDY));
+ while (!(AT91C_BASE_US0->US_CSR & AT91C_US_TXRDY));
/* Transmit Character */
- AT91C_US0_THR = *str;
+ AT91C_BASE_US0->US_THR = *str;
str ++;
}
@@ -127,25 +127,25 @@ void rt_hw_console_output(const char* str)
static void rt_hw_console_init()
{
/* Enable Clock for USART0 */
- AT91C_PMC_PCER = 1 << AT91C_ID_US0;
+ AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_US0;
/* Enable RxD0 and TxDO Pin */
- AT91C_PIO_PDR = (1 << 5) | (1 << 6);
+ AT91C_BASE_PIOA->PIO_PDR = (1 << 5) | (1 << 6);
- AT91C_US0_CR = AT91C_US_RSTRX | /* Reset Receiver */
+ AT91C_BASE_US0->US_CR = AT91C_US_RSTRX | /* Reset Receiver */
AT91C_US_RSTTX | /* Reset Transmitter */
AT91C_US_RXDIS | /* Receiver Disable */
AT91C_US_TXDIS; /* Transmitter Disable */
- AT91C_US0_MR = AT91C_US_USMODE_NORMAL | /* Normal Mode */
+ AT91C_BASE_US0->US_MR = AT91C_US_USMODE_NORMAL | /* Normal Mode */
AT91C_US_CLKS_CLOCK | /* Clock = MCK */
AT91C_US_CHRL_8_BITS | /* 8-bit Data */
AT91C_US_PAR_NONE | /* No Parity */
AT91C_US_NBSTOP_1_BIT; /* 1 Stop Bit */
/* set baud rate divisor */
- AT91C_US0_BRGR = BRD;
+ AT91C_BASE_US0->US_BRGR = BRD;
- AT91C_US0_CR = AT91C_US_RXEN | /* Receiver Enable */
+ AT91C_BASE_US0->US_CR = AT91C_US_RXEN | /* Receiver Enable */
AT91C_US_TXEN; /* Transmitter Enable */
}
@@ -163,11 +163,11 @@ void rt_hw_board_init()
rt_hw_board_led_init();
/* init PITC */
- AT91C_PITC_PIMR = (1 << 25) | (1 << 24) | PIV;
+ AT91C_BASE_PITC->PITC_PIMR = (1 << 25) | (1 << 24) | PIV;
/* install timer handler */
rt_hw_interrupt_install(AT91C_ID_SYS, rt_hw_timer_handler, RT_NULL);
- AT91C_AIC_SMR(AT91C_ID_SYS) = 0;
+ AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SYS] = 0;
rt_hw_interrupt_umask(AT91C_ID_SYS);
}
/*@}*/
diff --git a/bsp/sam7x/board.h b/bsp/sam7x/board.h
index acaad92449..db4c456e4e 100644
--- a/bsp/sam7x/board.h
+++ b/bsp/sam7x/board.h
@@ -17,46 +17,46 @@
#include <rthw.h>
#include <rtthread.h>
-
-#define AT91C_US_RXRDY ((unsigned int) 0x1 << 0) /* US RXRDY Interrupt */
-#define AT91C_US_TXRDY ((unsigned int) 0x1 << 1) /* US TXRDY Interrupt */
-#define AT91C_US_RSTRX ((unsigned int) 0x1 << 2) /* US Reset Receiver */
-#define AT91C_US_RSTTX ((unsigned int) 0x1 << 3) /* US Reset Transmitter */
-#define AT91C_US_RXEN ((unsigned int) 0x1 << 4) /* US Receiver Enable */
-#define AT91C_US_RXDIS ((unsigned int) 0x1 << 5) /* US Receiver Disable */
-#define AT91C_US_TXEN ((unsigned int) 0x1 << 6) /* US Transmitter Enable */
-#define AT91C_US_TXDIS ((unsigned int) 0x1 << 7) /* US Transmitter Disable */
-#define AT91C_US_RSTSTA ((unsigned int) 0x1 << 8) /* US Reset Status Bits */
-
-#define AT91C_US_USMODE_NORMAL ((unsigned int) 0x0) /* USAR) Normal */
-#define AT91C_US_USMODE_RS485 ((unsigned int) 0x1) /* USAR) RS485 */
-#define AT91C_US_USMODE_HWHSH ((unsigned int) 0x2) /* USAR) Hardware Handshaking */
-#define AT91C_US_USMODE_MODEM ((unsigned int) 0x3) /* USAR) Modem */
-#define AT91C_US_USMODE_ISO7816_0 ((unsigned int) 0x4) /* USAR) ISO7816 protocol: T = 0 */
-#define AT91C_US_USMODE_ISO7816_1 ((unsigned int) 0x6) /* USAR) ISO7816 protocol: T = 1 */
-#define AT91C_US_USMODE_IRDA ((unsigned int) 0x8) /* USAR) IrDA */
-#define AT91C_US_USMODE_SWHSH ((unsigned int) 0xC) /* USAR) Software Handshaking */
-
-#define AT91C_US_CLKS_CLOCK ((unsigned int) 0x0 << 4) /* USAR) Clock */
-#define AT91C_US_CLKS_FDIV1 ((unsigned int) 0x1 << 4) /* USAR) fdiv1 */
-#define AT91C_US_CLKS_SLOW ((unsigned int) 0x2 << 4) /* USAR) slow_clock (ARM) */
-#define AT91C_US_CLKS_EXT ((unsigned int) 0x3 << 4) /* USAR) External (SCK) */
-
-#define AT91C_US_CHRL_5_BITS ((unsigned int) 0x0 << 6) /* USAR) Character Length: 5 bits */
-#define AT91C_US_CHRL_6_BITS ((unsigned int) 0x1 << 6) /* USAR) Character Length: 6 bits */
-#define AT91C_US_CHRL_7_BITS ((unsigned int) 0x2 << 6) /* USAR) Character Length: 7 bits */
-#define AT91C_US_CHRL_8_BITS ((unsigned int) 0x3 << 6) /* USAR) Character Length: 8 bits */
-
-#define AT91C_US_PAR_EVEN ((unsigned int) 0x0 << 9) /* DBGU Even Parity */
-#define AT91C_US_PAR_ODD ((unsigned int) 0x1 << 9) /* DBGU Odd Parity */
-#define AT91C_US_PAR_SPACE ((unsigned int) 0x2 << 9) /* DBGU Parity forced to 0 (Space) */
-#define AT91C_US_PAR_MARK ((unsigned int) 0x3 << 9) /* DBGU Parity forced to 1 (Mark) */
-#define AT91C_US_PAR_NONE ((unsigned int) 0x4 << 9) /* DBGU No Parity */
-#define AT91C_US_PAR_MULTI_DROP ((unsigned int) 0x6 << 9) /* DBGU Multi-drop mode */
-
-#define AT91C_US_NBSTOP_1_BIT ((unsigned int) 0x0 << 12) /* USART 1 stop bit */
-#define AT91C_US_NBSTOP_15_BIT ((unsigned int) 0x1 << 12) /* USART Asynchronous (SYNC=0) 2 stop bits Synchronous (SYNC=1) 2 stop bits */
-#define AT91C_US_NBSTOP_2_BIT ((unsigned int) 0x2 << 12) /* USART 2 stop bits */
+// These are defined in standard header (at91sam7x256.h) of realview MDK.
+//#define AT91C_US_RXRDY ((unsigned int) 0x1 << 0) /* US RXRDY Interrupt */
+//#define AT91C_US_TXRDY ((unsigned int) 0x1 << 1) /* US TXRDY Interrupt */
+//#define AT91C_US_RSTRX ((unsigned int) 0x1 << 2) /* US Reset Receiver */
+//#define AT91C_US_RSTTX ((unsigned int) 0x1 << 3) /* US Reset Transmitter */
+//#define AT91C_US_RXEN ((unsigned int) 0x1 << 4) /* US Receiver Enable */
+//#define AT91C_US_RXDIS ((unsigned int) 0x1 << 5) /* US Receiver Disable */
+//#define AT91C_US_TXEN ((unsigned int) 0x1 << 6) /* US Transmitter Enable */
+//#define AT91C_US_TXDIS ((unsigned int) 0x1 << 7) /* US Transmitter Disable */
+//#define AT91C_US_RSTSTA ((unsigned int) 0x1 << 8) /* US Reset Status Bits */
+//
+//#define AT91C_US_USMODE_NORMAL ((unsigned int) 0x0) /* USAR) Normal */
+//#define AT91C_US_USMODE_RS485 ((unsigned int) 0x1) /* USAR) RS485 */
+//#define AT91C_US_USMODE_HWHSH ((unsigned int) 0x2) /* USAR) Hardware Handshaking */
+//#define AT91C_US_USMODE_MODEM ((unsigned int) 0x3) /* USAR) Modem */
+//#define AT91C_US_USMODE_ISO7816_0 ((unsigned int) 0x4) /* USAR) ISO7816 protocol: T = 0 */
+//#define AT91C_US_USMODE_ISO7816_1 ((unsigned int) 0x6) /* USAR) ISO7816 protocol: T = 1 */
+//#define AT91C_US_USMODE_IRDA ((unsigned int) 0x8) /* USAR) IrDA */
+//#define AT91C_US_USMODE_SWHSH ((unsigned int) 0xC) /* USAR) Software Handshaking */
+//
+//#define AT91C_US_CLKS_CLOCK ((unsigned int) 0x0 << 4) /* USAR) Clock */
+//#define AT91C_US_CLKS_FDIV1 ((unsigned int) 0x1 << 4) /* USAR) fdiv1 */
+//#define AT91C_US_CLKS_SLOW ((unsigned int) 0x2 << 4) /* USAR) slow_clock (ARM) */
+//#define AT91C_US_CLKS_EXT ((unsigned int) 0x3 << 4) /* USAR) External (SCK) */
+//
+//#define AT91C_US_CHRL_5_BITS ((unsigned int) 0x0 << 6) /* USAR) Character Length: 5 bits */
+//#define AT91C_US_CHRL_6_BITS ((unsigned int) 0x1 << 6) /* USAR) Character Length: 6 bits */
+//#define AT91C_US_CHRL_7_BITS ((unsigned int) 0x2 << 6) /* USAR) Character Length: 7 bits */
+//#define AT91C_US_CHRL_8_BITS ((unsigned int) 0x3 << 6) /* USAR) Character Length: 8 bits */
+//
+//#define AT91C_US_PAR_EVEN ((unsigned int) 0x0 << 9) /* DBGU Even Parity */
+//#define AT91C_US_PAR_ODD ((unsigned int) 0x1 << 9) /* DBGU Odd Parity */
+//#define AT91C_US_PAR_SPACE ((unsigned int) 0x2 << 9) /* DBGU Parity forced to 0 (Space) */
+//#define AT91C_US_PAR_MARK ((unsigned int) 0x3 << 9) /* DBGU Parity forced to 1 (Mark) */
+//#define AT91C_US_PAR_NONE ((unsigned int) 0x4 << 9) /* DBGU No Parity */
+//#define AT91C_US_PAR_MULTI_DROP ((unsigned int) 0x6 << 9) /* DBGU Multi-drop mode */
+//
+//#define AT91C_US_NBSTOP_1_BIT ((unsigned int) 0x0 << 12) /* USART 1 stop bit */
+//#define AT91C_US_NBSTOP_15_BIT ((unsigned int) 0x1 << 12) /* USART Asynchronous (SYNC=0) 2 stop bits Synchronous (SYNC=1) 2 stop bits */
+//#define AT91C_US_NBSTOP_2_BIT ((unsigned int) 0x2 << 12) /* USART 2 stop bits */
#define MCK 48054857
#define BR 115200 /* Baud Rate */
diff --git a/bsp/sam7x/mii.h b/bsp/sam7x/mii.h
new file mode 100644
index 0000000000..4ec25667a3
--- /dev/null
+++ b/bsp/sam7x/mii.h
@@ -0,0 +1,156 @@
+/*
+ ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT 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 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT 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 this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/*
+ * Parts of this file are borrowed by the Linux include file linux/mii.h:
+ * Copyright (C) 1996, 1999, 2001 David S. Miller ([email protected])
+ */
+
+#ifndef _MII_H_
+#define _MII_H_
+
+/* Generic MII registers. */
+#define MII_BMCR 0x00 /* Basic mode control register */
+#define MII_BMSR 0x01 /* Basic mode status register */
+#define MII_PHYSID1 0x02 /* PHYS ID 1 */
+#define MII_PHYSID2 0x03 /* PHYS ID 2 */
+#define MII_ADVERTISE 0x04 /* Advertisement control reg */
+#define MII_LPA 0x05 /* Link partner ability reg */
+#define MII_EXPANSION 0x06 /* Expansion register */
+#define MII_CTRL1000 0x09 /* 1000BASE-T control */
+#define MII_STAT1000 0x0a /* 1000BASE-T status */
+#define MII_ESTATUS 0x0f /* Extended Status */
+#define MII_DCOUNTER 0x12 /* Disconnect counter */
+#define MII_FCSCOUNTER 0x13 /* False carrier counter */
+#define MII_NWAYTEST 0x14 /* N-way auto-neg test reg */
+#define MII_RERRCOUNTER 0x15 /* Receive error counter */
+#define MII_SREVISION 0x16 /* Silicon revision */
+#define MII_RESV1 0x17 /* Reserved... */
+#define MII_LBRERROR 0x18 /* Lpback, rx, bypass error */
+#define MII_PHYADDR 0x19 /* PHY address */
+#define MII_RESV2 0x1a /* Reserved... */
+#define MII_TPISTATUS 0x1b /* TPI status for 10mbps */
+#define MII_NCONFIG 0x1c /* Network interface config */
+
+/* Basic mode control register. */
+#define BMCR_RESV 0x003f /* Unused... */
+#define BMCR_SPEED1000 0x0040 /* MSB of Speed (1000) */
+#define BMCR_CTST 0x0080 /* Collision test */
+#define BMCR_FULLDPLX 0x0100 /* Full duplex */
+#define BMCR_ANRESTART 0x0200 /* Auto negotiation restart */
+#define BMCR_ISOLATE 0x0400 /* Disconnect DP83840 from MII */
+#define BMCR_PDOWN 0x0800 /* Powerdown the DP83840 */
+#define BMCR_ANENABLE 0x1000 /* Enable auto negotiation */
+#define BMCR_SPEED100 0x2000 /* Select 100Mbps */
+#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */
+#define BMCR_RESET 0x8000 /* Reset the DP83840 */
+
+/* Basic mode status register. */
+#define BMSR_ERCAP 0x0001 /* Ext-reg capability */
+#define BMSR_JCD 0x0002 /* Jabber detected */
+#define BMSR_LSTATUS 0x0004 /* Link status */
+#define BMSR_ANEGCAPABLE 0x0008 /* Able to do auto-negotiation */
+#define BMSR_RFAULT 0x0010 /* Remote fault detected */
+#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */
+#define BMSR_RESV 0x00c0 /* Unused... */
+#define BMSR_ESTATEN 0x0100 /* Extended Status in R15 */
+#define BMSR_100HALF2 0x0200 /* Can do 100BASE-T2 HDX */
+#define BMSR_100FULL2 0x0400 /* Can do 100BASE-T2 FDX */
+#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */
+#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */
+#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */
+#define BMSR_100FULL 0x4000 /* Can do 100mbps, full-duplex */
+#define BMSR_100BASE4 0x8000 /* Can do 100mbps, 4k packets */
+
+/* Advertisement control register. */
+#define ADVERTISE_SLCT 0x001f /* Selector bits */
+#define ADVERTISE_CSMA 0x0001 /* Only selector supported */
+#define ADVERTISE_10HALF 0x0020 /* Try for 10mbps half-duplex */
+#define ADVERTISE_1000XFULL 0x0020 /* Try for 1000BASE-X full-duplex */
+#define ADVERTISE_10FULL 0x0040 /* Try for 10mbps full-duplex */
+#define ADVERTISE_1000XHALF 0x0040 /* Try for 1000BASE-X half-duplex */
+#define ADVERTISE_100HALF 0x0080 /* Try for 100mbps half-duplex */
+#define ADVERTISE_1000XPAUSE 0x0080 /* Try for 1000BASE-X pause */
+#define ADVERTISE_100FULL 0x0100 /* Try for 100mbps full-duplex */
+#define ADVERTISE_1000XPSE_ASYM 0x0100 /* Try for 1000BASE-X asym pause */
+#define ADVERTISE_100BASE4 0x0200 /* Try for 100mbps 4k packets */
+#define ADVERTISE_PAUSE_CAP 0x0400 /* Try for pause */
+#define ADVERTISE_PAUSE_ASYM 0x0800 /* Try for asymetric pause */
+#define ADVERTISE_RESV 0x1000 /* Unused... */
+#define ADVERTISE_RFAULT 0x2000 /* Say we can detect faults */
+#define ADVERTISE_LPACK 0x4000 /* Ack link partners response */
+#define ADVERTISE_NPAGE 0x8000 /* Next page bit */
+
+#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
+ ADVERTISE_CSMA)
+#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \
+ ADVERTISE_100HALF | ADVERTISE_100FULL)
+
+/* Link partner ability register. */
+#define LPA_SLCT 0x001f /* Same as advertise selector */
+#define LPA_10HALF 0x0020 /* Can do 10mbps half-duplex */
+#define LPA_1000XFULL 0x0020 /* Can do 1000BASE-X full-duplex */
+#define LPA_10FULL 0x0040 /* Can do 10mbps full-duplex */
+#define LPA_1000XHALF 0x0040 /* Can do 1000BASE-X half-duplex */
+#define LPA_100HALF 0x0080 /* Can do 100mbps half-duplex */
+#define LPA_1000XPAUSE 0x0080 /* Can do 1000BASE-X pause */
+#define LPA_100FULL 0x0100 /* Can do 100mbps full-duplex */
+#define LPA_1000XPAUSE_ASYM 0x0100 /* Can do 1000BASE-X pause asym*/
+#define LPA_100BASE4 0x0200 /* Can do 100mbps 4k packets */
+#define LPA_PAUSE_CAP 0x0400 /* Can pause */
+#define LPA_PAUSE_ASYM 0x0800 /* Can pause asymetrically */
+#define LPA_RESV 0x1000 /* Unused... */
+#define LPA_RFAULT 0x2000 /* Link partner faulted */
+#define LPA_LPACK 0x4000 /* Link partner acked us */
+#define LPA_NPAGE 0x8000 /* Next page bit */
+
+#define LPA_DUPLEX (LPA_10FULL | LPA_100FULL)
+#define LPA_100 (LPA_100FULL | LPA_100HALF | LPA_100BASE4)
+
+/* Expansion register for auto-negotiation. */
+#define EXPANSION_NWAY 0x0001 /* Can do N-way auto-nego */
+#define EXPANSION_LCWP 0x0002 /* Got new RX page code word */
+#define EXPANSION_ENABLENPAGE 0x0004 /* This enables npage words */
+#define EXPANSION_NPCAPABLE 0x0008 /* Link partner supports npage */
+#define EXPANSION_MFAULTS 0x0010 /* Multiple faults detected */
+#define EXPANSION_RESV 0xffe0 /* Unused... */
+
+#define ESTATUS_1000_TFULL 0x2000 /* Can do 1000BT Full */
+#define ESTATUS_1000_THALF 0x1000 /* Can do 1000BT Half */
+
+/* N-way test register. */
+#define NWAYTEST_RESV1 0x00ff /* Unused... */
+#define NWAYTEST_LOOPBACK 0x0100 /* Enable loopback for N-way */
+#define NWAYTEST_RESV2 0xfe00 /* Unused... */
+
+/* 1000BASE-T Control register */
+#define ADVERTISE_1000FULL 0x0200 /* Advertise 1000BASE-T full duplex */
+#define ADVERTISE_1000HALF 0x0100 /* Advertise 1000BASE-T half duplex */
+
+/* 1000BASE-T Status register */
+#define LPA_1000LOCALRXOK 0x2000 /* Link partner local receiver status */
+#define LPA_1000REMRXOK 0x1000 /* Link partner remote receiver status */
+#define LPA_1000FULL 0x0800 /* Link partner 1000BASE-T full duplex */
+#define LPA_1000HALF 0x0400 /* Link partner 1000BASE-T half duplex */
+
+#define MII_DM9161_ID 0x0181b8a0
+#define MII_AM79C875_ID 0x00225540
+#define MII_MICREL_ID 0x00221610
+
+#endif /* _MII_H_ */
diff --git a/bsp/sam7x/project.uvopt b/bsp/sam7x/project.uvopt
new file mode 100644
index 0000000000..ffe2f990b8
--- /dev/null
+++ b/bsp/sam7x/project.uvopt
@@ -0,0 +1,3166 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>RT-Thread/AT91SAM7X</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>18432000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>1</RunSim>
+ <RunTarget>0</RunTarget>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\objs\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>0</CpuCode>
+ <DllOpt>
+ <SimDllName>SARM.DLL</SimDllName>
+ <SimDllArguments>-cAT91SAM7X</SimDllArguments>
+ <SimDlgDllName>DARMATS.DLL</SimDlgDllName>
+ <SimDlgDllArguments>-p91SAM7X256</SimDlgDllArguments>
+ <TargetDllName>SARM.DLL</TargetDllName>
+ <TargetDllArguments></TargetDllArguments>
+ <TargetDlgDllName>TARMATS.DLL</TargetDlgDllName>
+ <TargetDlgDllArguments>-p91SAM7X256</TargetDlgDllArguments>
+ </DllOpt>
+ <DebugOpt>
+ <uSim>1</uSim>
+ <uTrg>0</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>0</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>1</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <nTsel>2</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>Segger\JLTAgdi.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>DLGDARM</Key>
+ <Name>(117=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(130=150,182,741,760,0)(131=-1,-1,-1,-1,0)(191=-1,-1,-1,-1,0)(192=-1,-1,-1,-1,0)(140=165,198,843,668,0)(3010=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(115=-1,-1,-1,-1,0)(125=-1,-1,-1,-1,0)(3006=-1,-1,-1,-1,0)(135=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(120=-1,-1,-1,-1,0)</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>DLGTARM</Key>
+ <Name>(117=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(191=-1,-1,-1,-1,0)(192=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(3010=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(115=-1,-1,-1,-1,0)(125=-1,-1,-1,-1,0)(3006=-1,-1,-1,-1,0)(135=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(120=-1,-1,-1,-1,0)</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ARMDBGFLAGS</Key>
+ <Name>-T5F</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>JLTAgdi</Key>
+ <Name>-O1070 -J1 -Y1000 -Z1 -FO7 -FD200000 -FC800 -FN0</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>JLTDLG</Key>
+ <Name></Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <MemoryWindow1>
+ <Mm>
+ <WinNumber>1</WinNumber>
+ <SubType>2</SubType>
+ <ItemText>0x200508</ItemText>
+ </Mm>
+ </MemoryWindow1>
+ <MemoryWindow2>
+ <Mm>
+ <WinNumber>2</WinNumber>
+ <SubType>0</SubType>
+ <ItemText>0x103da0</ItemText>
+ </Mm>
+ </MemoryWindow2>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>0</periodic>
+ <aLwin>1</aLwin>
+ <aCover>0</aCover>
+ <aSer1>1</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>1</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Startup</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>2</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>55</TopLine>
+ <CurrentLine>69</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\rtconfig.h</PathWithFileName>
+ <FilenameWithoutPath>rtconfig.h</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>1</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>69</TopLine>
+ <CurrentLine>83</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\application.c</PathWithFileName>
+ <FilenameWithoutPath>application.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>37</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>127</TopLine>
+ <CurrentLine>132</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\board.c</PathWithFileName>
+ <FilenameWithoutPath>board.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>18</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>53</TopLine>
+ <CurrentLine>59</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\startup.c</PathWithFileName>
+ <FilenameWithoutPath>startup.c</FilenameWithoutPath>
+ <WindowPosition>
+ <length>44</length>
+ <flags>0</flags>
+ <showCmd>1</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-4</xPos>
+ <yPos>-30</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>0</Top>
+ <Left>0</Left>
+ <Right>698</Right>
+ <Bottom>198</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>22</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>1</TopLine>
+ <CurrentLine>6</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\sd.c</PathWithFileName>
+ <FilenameWithoutPath>sd.c</FilenameWithoutPath>
+ <WindowPosition>
+ <length>44</length>
+ <flags>2</flags>
+ <showCmd>3</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-4</xPos>
+ <yPos>-30</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>87</Top>
+ <Left>66</Left>
+ <Right>730</Right>
+ <Bottom>330</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>0</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>1</TopLine>
+ <CurrentLine>1</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\serial.c</PathWithFileName>
+ <FilenameWithoutPath>serial.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>0</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>26</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>31</TopLine>
+ <CurrentLine>51</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\sam7x_emac.c</PathWithFileName>
+ <FilenameWithoutPath>sam7x_emac.c</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Kernel</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>5</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>55</TopLine>
+ <CurrentLine>56</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\clock.c</PathWithFileName>
+ <FilenameWithoutPath>clock.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\idle.c</PathWithFileName>
+ <FilenameWithoutPath>idle.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\ipc.c</PathWithFileName>
+ <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>52</TopLine>
+ <CurrentLine>67</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\irq.c</PathWithFileName>
+ <FilenameWithoutPath>irq.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>47</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>41</TopLine>
+ <CurrentLine>57</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\kservice.c</PathWithFileName>
+ <FilenameWithoutPath>kservice.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>11</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\mem.c</PathWithFileName>
+ <FilenameWithoutPath>mem.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>12</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\mempool.c</PathWithFileName>
+ <FilenameWithoutPath>mempool.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>13</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\object.c</PathWithFileName>
+ <FilenameWithoutPath>object.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>14</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>5</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>349</TopLine>
+ <CurrentLine>349</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\timer.c</PathWithFileName>
+ <FilenameWithoutPath>timer.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>15</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>177</TopLine>
+ <CurrentLine>192</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\scheduler.c</PathWithFileName>
+ <FilenameWithoutPath>scheduler.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>16</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\slab.c</PathWithFileName>
+ <FilenameWithoutPath>slab.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>17</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>28</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>208</TopLine>
+ <CurrentLine>228</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\thread.c</PathWithFileName>
+ <FilenameWithoutPath>thread.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>18</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>81</TopLine>
+ <CurrentLine>81</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\src\device.c</PathWithFileName>
+ <FilenameWithoutPath>device.c</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>AT91SAM7X</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>19</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>5</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>82</TopLine>
+ <CurrentLine>82</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\libcpu\arm\AT91SAM7X\interrupt.c</PathWithFileName>
+ <FilenameWithoutPath>interrupt.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>21</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>44</TopLine>
+ <CurrentLine>54</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\libcpu\arm\AT91SAM7X\stack.c</PathWithFileName>
+ <FilenameWithoutPath>stack.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>22</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>26</TopLine>
+ <CurrentLine>26</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\libcpu\arm\AT91SAM7X\trap.c</PathWithFileName>
+ <FilenameWithoutPath>trap.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>23</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\libcpu\arm\AT91SAM7X\cpu.c</PathWithFileName>
+ <FilenameWithoutPath>cpu.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>24</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>16</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>421</TopLine>
+ <CurrentLine>439</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\libcpu\arm\AT91SAM7X\start_rvds.S</PathWithFileName>
+ <FilenameWithoutPath>start_rvds.S</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>25</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>56</TopLine>
+ <CurrentLine>81</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\libcpu\arm\AT91SAM7X\context_rvds.S</PathWithFileName>
+ <FilenameWithoutPath>context_rvds.S</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>finsh</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>27</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\cmd.c</PathWithFileName>
+ <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>28</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_compiler.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_compiler.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>29</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_error.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_error.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>30</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_heap.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_heap.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>31</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_init.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_init.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>32</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_node.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_node.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>33</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_ops.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_ops.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>34</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_parser.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_parser.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>35</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_token.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_token.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>36</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_var.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_var.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>37</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\finsh_vm.c</PathWithFileName>
+ <FilenameWithoutPath>finsh_vm.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>38</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\shell.c</PathWithFileName>
+ <FilenameWithoutPath>shell.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>4</GroupNumber>
+ <FileNumber>39</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\finsh\symbol.c</PathWithFileName>
+ <FilenameWithoutPath>symbol.c</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>LwIP</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>40</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\dhcp.c</PathWithFileName>
+ <FilenameWithoutPath>dhcp.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>41</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>31</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>148</TopLine>
+ <CurrentLine>156</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\dns.c</PathWithFileName>
+ <FilenameWithoutPath>dns.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>42</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\init.c</PathWithFileName>
+ <FilenameWithoutPath>init.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>43</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>81</TopLine>
+ <CurrentLine>90</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\netif.c</PathWithFileName>
+ <FilenameWithoutPath>netif.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>44</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\pbuf.c</PathWithFileName>
+ <FilenameWithoutPath>pbuf.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>45</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\raw.c</PathWithFileName>
+ <FilenameWithoutPath>raw.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>46</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\stats.c</PathWithFileName>
+ <FilenameWithoutPath>stats.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>47</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\sys.c</PathWithFileName>
+ <FilenameWithoutPath>sys.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>48</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\tcp.c</PathWithFileName>
+ <FilenameWithoutPath>tcp.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>49</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\tcp_in.c</PathWithFileName>
+ <FilenameWithoutPath>tcp_in.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>50</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\tcp_out.c</PathWithFileName>
+ <FilenameWithoutPath>tcp_out.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>51</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\udp.c</PathWithFileName>
+ <FilenameWithoutPath>udp.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>52</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\autoip.c</PathWithFileName>
+ <FilenameWithoutPath>autoip.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>53</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\icmp.c</PathWithFileName>
+ <FilenameWithoutPath>icmp.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>54</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\igmp.c</PathWithFileName>
+ <FilenameWithoutPath>igmp.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>55</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\inet.c</PathWithFileName>
+ <FilenameWithoutPath>inet.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>56</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\inet_chksum.c</PathWithFileName>
+ <FilenameWithoutPath>inet_chksum.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>57</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>158</TopLine>
+ <CurrentLine>166</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\ip.c</PathWithFileName>
+ <FilenameWithoutPath>ip.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>58</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\ip_addr.c</PathWithFileName>
+ <FilenameWithoutPath>ip_addr.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>59</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\ipv4\ip_frag.c</PathWithFileName>
+ <FilenameWithoutPath>ip_frag.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>60</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\snmp\asn1_dec.c</PathWithFileName>
+ <FilenameWithoutPath>asn1_dec.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>61</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\snmp\asn1_enc.c</PathWithFileName>
+ <FilenameWithoutPath>asn1_enc.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>62</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\snmp\mib2.c</PathWithFileName>
+ <FilenameWithoutPath>mib2.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>63</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\snmp\mib_structs.c</PathWithFileName>
+ <FilenameWithoutPath>mib_structs.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>64</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\snmp\msg_in.c</PathWithFileName>
+ <FilenameWithoutPath>msg_in.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>65</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\snmp\msg_out.c</PathWithFileName>
+ <FilenameWithoutPath>msg_out.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>66</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\api_lib.c</PathWithFileName>
+ <FilenameWithoutPath>api_lib.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>67</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\api_msg.c</PathWithFileName>
+ <FilenameWithoutPath>api_msg.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>68</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\err.c</PathWithFileName>
+ <FilenameWithoutPath>err.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>69</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\netbuf.c</PathWithFileName>
+ <FilenameWithoutPath>netbuf.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>70</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\netdb.c</PathWithFileName>
+ <FilenameWithoutPath>netdb.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>71</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\netifapi.c</PathWithFileName>
+ <FilenameWithoutPath>netifapi.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>72</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\tcpip.c</PathWithFileName>
+ <FilenameWithoutPath>tcpip.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>73</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\netif\etharp.c</PathWithFileName>
+ <FilenameWithoutPath>etharp.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>74</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>9</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>207</TopLine>
+ <CurrentLine>216</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\netif\ethernetif.c</PathWithFileName>
+ <FilenameWithoutPath>ethernetif.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>75</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\netif\loopif.c</PathWithFileName>
+ <FilenameWithoutPath>loopif.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>76</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\arch\sys_arch_init.c</PathWithFileName>
+ <FilenameWithoutPath>sys_arch_init.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>77</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\arch\sys_arch.c</PathWithFileName>
+ <FilenameWithoutPath>sys_arch.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>78</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\api\sockets.c</PathWithFileName>
+ <FilenameWithoutPath>sockets.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>5</GroupNumber>
+ <FileNumber>79</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\net\lwip\src\core\memp_tiny.c</PathWithFileName>
+ <FilenameWithoutPath>memp_tiny.c</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Filesystem</GroupName>
+ <tvExp>0</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>80</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\src\dfs_util.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_util.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>81</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\src\dfs_cache.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_cache.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>82</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\src\dfs_fs.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_fs.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>83</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\src\dfs_init.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_init.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>84</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\src\dfs_raw.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_raw.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>85</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\src\dfs_posix.c</PathWithFileName>
+ <FilenameWithoutPath>dfs_posix.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>86</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\base\plibc.c</PathWithFileName>
+ <FilenameWithoutPath>plibc.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>87</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\base\efs.c</PathWithFileName>
+ <FilenameWithoutPath>efs.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>88</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\base\extract.c</PathWithFileName>
+ <FilenameWithoutPath>extract.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>89</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\base\partition.c</PathWithFileName>
+ <FilenameWithoutPath>partition.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>90</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\ui.c</PathWithFileName>
+ <FilenameWithoutPath>ui.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>91</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\dir.c</PathWithFileName>
+ <FilenameWithoutPath>dir.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>92</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\fat.c</PathWithFileName>
+ <FilenameWithoutPath>fat.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>93</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\file.c</PathWithFileName>
+ <FilenameWithoutPath>file.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>94</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\fs.c</PathWithFileName>
+ <FilenameWithoutPath>fs.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>95</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\ls.c</PathWithFileName>
+ <FilenameWithoutPath>ls.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>6</GroupNumber>
+ <FileNumber>96</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\time.c</PathWithFileName>
+ <FilenameWithoutPath>time.c</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <AlienFiles>
+ <PathWithFilename>F:\nf\rt-thread@googlecode\libcpu\arm\AT91SAM7X\start_gcc.S</PathWithFilename>
+ <TopLine>22</TopLine>
+ <CurrentLine>22</CurrentLine>
+ <Constant>0</Constant>
+ <WindowPosition>
+ <length>0</length>
+ <flags>0</flags>
+ <showCmd>0</showCmd>
+ <MinPosition>
+ <xPos>0</xPos>
+ <yPos>0</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>0</xPos>
+ <yPos>0</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>0</Top>
+ <Left>0</Left>
+ <Right>0</Right>
+ <Bottom>0</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ </AlienFiles>
+
+ <AlienFiles>
+ <PathWithFilename>F:\nf\rt-thread@googlecode\include\rtdef.h</PathWithFilename>
+ <TopLine>122</TopLine>
+ <CurrentLine>122</CurrentLine>
+ <Constant>0</Constant>
+ <WindowPosition>
+ <length>0</length>
+ <flags>0</flags>
+ <showCmd>0</showCmd>
+ <MinPosition>
+ <xPos>0</xPos>
+ <yPos>0</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>0</xPos>
+ <yPos>0</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>0</Top>
+ <Left>0</Left>
+ <Right>0</Right>
+ <Bottom>0</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ </AlienFiles>
+
+ <WinLayout>
+ <sActiveDebugView>Default</sActiveDebugView>
+ <iActiveDebugViewLocation>1</iActiveDebugViewLocation>
+ <sActiveBuildView>Build</sActiveBuildView>
+ <iActiveBuildViewLocation>0</iActiveBuildViewLocation>
+ <View>
+ <ViewName>Default</ViewName>
+ <ViewType>1</ViewType>
+ <Window>
+ <WinId>35824</WinId>
+ <ItemNo>1</ItemNo>
+ <Name>Logic Analyzer</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>6</DockType>
+ <DockLocation>0</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>0</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>210</DockedRect_bottom>
+ <DockedRect_right>600</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>1</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>59392</WinId>
+ <ItemNo>2</ItemNo>
+ <Name>File</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>3</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>24</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>50</DockedRect_bottom>
+ <DockedRect_right>893</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>0</FloatingRect_bottom>
+ <FloatingRect_right>0</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>59398</WinId>
+ <ItemNo>3</ItemNo>
+ <Name>Build</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>3</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>50</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>76</DockedRect_bottom>
+ <DockedRect_right>384</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>0</FloatingRect_bottom>
+ <FloatingRect_right>0</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>59399</WinId>
+ <ItemNo>4</ItemNo>
+ <Name>Debug</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>3</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>50</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>76</DockedRect_bottom>
+ <DockedRect_right>626</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>0</FloatingRect_bottom>
+ <FloatingRect_right>0</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>197</WinId>
+ <ItemNo>5</ItemNo>
+ <Name>Build Output</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>4</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>198</WinId>
+ <ItemNo>6</ItemNo>
+ <Name>Command</Name>
+ <AnchorWinID>197</AnchorWinID>
+ <AnchorWinName>Build Output</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>199</WinId>
+ <ItemNo>7</ItemNo>
+ <Name>Find in Files</Name>
+ <AnchorWinID>198</AnchorWinID>
+ <AnchorWinName>Command</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>38007</WinId>
+ <ItemNo>8</ItemNo>
+ <Name>Browse</Name>
+ <AnchorWinID>199</AnchorWinID>
+ <AnchorWinName>Find in Files</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1939</WinId>
+ <ItemNo>9</ItemNo>
+ <Name>UART #1</Name>
+ <AnchorWinID>38007</AnchorWinID>
+ <AnchorWinName>Browser</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>1</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1940</WinId>
+ <ItemNo>10</ItemNo>
+ <Name>UART #2</Name>
+ <AnchorWinID>1939</AnchorWinID>
+ <AnchorWinName>UART #1</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1941</WinId>
+ <ItemNo>11</ItemNo>
+ <Name>UART #3</Name>
+ <AnchorWinID>1940</AnchorWinID>
+ <AnchorWinName>UART #2</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1942</WinId>
+ <ItemNo>12</ItemNo>
+ <Name>UART #4</Name>
+ <AnchorWinID>1941</AnchorWinID>
+ <AnchorWinName>UART #3</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>250</FloatingRect_bottom>
+ <FloatingRect_right>600</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1944</WinId>
+ <ItemNo>13</ItemNo>
+ <Name>Call Stack</Name>
+ <AnchorWinID>197</AnchorWinID>
+ <AnchorWinName>Build Output</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1507</WinId>
+ <ItemNo>14</ItemNo>
+ <Name>Call Stack</Name>
+ <AnchorWinID>1944</AnchorWinID>
+ <AnchorWinName>Call Stack</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1935</WinId>
+ <ItemNo>15</ItemNo>
+ <Name>Locals</Name>
+ <AnchorWinID>1507</AnchorWinID>
+ <AnchorWinName>Call Stack</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1936</WinId>
+ <ItemNo>16</ItemNo>
+ <Name>Watch 1</Name>
+ <AnchorWinID>1935</AnchorWinID>
+ <AnchorWinName>Locals</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1937</WinId>
+ <ItemNo>17</ItemNo>
+ <Name>Watch 2</Name>
+ <AnchorWinID>1936</AnchorWinID>
+ <AnchorWinName>Watch 1</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1465</WinId>
+ <ItemNo>18</ItemNo>
+ <Name>Memory 1</Name>
+ <AnchorWinID>1937</AnchorWinID>
+ <AnchorWinName>Watch 2</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1466</WinId>
+ <ItemNo>19</ItemNo>
+ <Name>Memory 2</Name>
+ <AnchorWinID>1465</AnchorWinID>
+ <AnchorWinName>Memory 1</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>1</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1467</WinId>
+ <ItemNo>20</ItemNo>
+ <Name>Memory 3</Name>
+ <AnchorWinID>1466</AnchorWinID>
+ <AnchorWinName>Memory 2</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1468</WinId>
+ <ItemNo>21</ItemNo>
+ <Name>Memory 4</Name>
+ <AnchorWinID>1467</AnchorWinID>
+ <AnchorWinName>Memory 3</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1506</WinId>
+ <ItemNo>22</ItemNo>
+ <Name>Symbols</Name>
+ <AnchorWinID>1468</AnchorWinID>
+ <AnchorWinName>Memory 4</AnchorWinName>
+ <OtherWinID>197</OtherWinID>
+ <OtherWinName>Build Output</OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>599</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>834</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>50</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1005</WinId>
+ <ItemNo>23</ItemNo>
+ <Name>Project</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>1</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>210</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>109</WinId>
+ <ItemNo>24</ItemNo>
+ <Name>Books</Name>
+ <AnchorWinID>1005</AnchorWinID>
+ <AnchorWinName>Project</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>210</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>195</WinId>
+ <ItemNo>25</ItemNo>
+ <Name>Functions</Name>
+ <AnchorWinID>109</AnchorWinID>
+ <AnchorWinName>Books</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>210</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>196</WinId>
+ <ItemNo>26</ItemNo>
+ <Name>Templates</Name>
+ <AnchorWinID>195</AnchorWinID>
+ <AnchorWinName>Functions</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>210</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>38003</WinId>
+ <ItemNo>27</ItemNo>
+ <Name>Registers</Name>
+ <AnchorWinID>196</AnchorWinID>
+ <AnchorWinName>Templates</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>0</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>210</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>1</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35885</WinId>
+ <ItemNo>28</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35886</WinId>
+ <ItemNo>29</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35885</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35887</WinId>
+ <ItemNo>30</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35886</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35888</WinId>
+ <ItemNo>31</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35887</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35889</WinId>
+ <ItemNo>32</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35888</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35890</WinId>
+ <ItemNo>33</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35889</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35891</WinId>
+ <ItemNo>34</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35890</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35892</WinId>
+ <ItemNo>35</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35891</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35893</WinId>
+ <ItemNo>36</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35892</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35894</WinId>
+ <ItemNo>37</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35893</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35895</WinId>
+ <ItemNo>38</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35894</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35896</WinId>
+ <ItemNo>39</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35895</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35897</WinId>
+ <ItemNo>40</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35896</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35898</WinId>
+ <ItemNo>41</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35897</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35899</WinId>
+ <ItemNo>42</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35898</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35900</WinId>
+ <ItemNo>43</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35899</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35901</WinId>
+ <ItemNo>44</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35900</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35902</WinId>
+ <ItemNo>45</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35901</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35903</WinId>
+ <ItemNo>46</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35902</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35904</WinId>
+ <ItemNo>47</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35903</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>35905</WinId>
+ <ItemNo>48</ItemNo>
+ <Name>not set</Name>
+ <AnchorWinID>35904</AnchorWinID>
+ <AnchorWinName>???</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>1230</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>0</FloatingRect_top>
+ <FloatingRect_left>0</FloatingRect_left>
+ <FloatingRect_bottom>600</FloatingRect_bottom>
+ <FloatingRect_right>250</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>203</WinId>
+ <ItemNo>49</ItemNo>
+ <Name>Disassembly</Name>
+ <AnchorWinID>0</AnchorWinID>
+ <AnchorWinName></AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>2</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>924</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>352</FloatingRect_top>
+ <FloatingRect_left>700</FloatingRect_left>
+ <FloatingRect_bottom>602</FloatingRect_bottom>
+ <FloatingRect_right>1300</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>1</ActiveTab>
+ <Visible>1</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>1913</WinId>
+ <ItemNo>50</ItemNo>
+ <Name>Instruction Trace</Name>
+ <AnchorWinID>203</AnchorWinID>
+ <AnchorWinName>Disassembly</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>924</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>352</FloatingRect_top>
+ <FloatingRect_left>700</FloatingRect_left>
+ <FloatingRect_bottom>602</FloatingRect_bottom>
+ <FloatingRect_right>1300</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>343</WinId>
+ <ItemNo>51</ItemNo>
+ <Name>Performance Analyzer</Name>
+ <AnchorWinID>1913</AnchorWinID>
+ <AnchorWinName>Instruction Trace</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>924</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>352</FloatingRect_top>
+ <FloatingRect_left>700</FloatingRect_left>
+ <FloatingRect_bottom>602</FloatingRect_bottom>
+ <FloatingRect_right>1300</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>204</WinId>
+ <ItemNo>52</ItemNo>
+ <Name>Performance Analyzer</Name>
+ <AnchorWinID>343</AnchorWinID>
+ <AnchorWinName>Performance Analyzer</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>924</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>352</FloatingRect_top>
+ <FloatingRect_left>700</FloatingRect_left>
+ <FloatingRect_bottom>602</FloatingRect_bottom>
+ <FloatingRect_right>1300</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ <Window>
+ <WinId>346</WinId>
+ <ItemNo>53</ItemNo>
+ <Name>Code Coverage</Name>
+ <AnchorWinID>204</AnchorWinID>
+ <AnchorWinName>Performance Analyzer</AnchorWinName>
+ <OtherWinID>0</OtherWinID>
+ <OtherWinName></OtherWinName>
+ <WinType>1</WinType>
+ <DockType>4</DockType>
+ <DockLocation>2</DockLocation>
+ <Pinned>0</Pinned>
+ <DockedRect_top>76</DockedRect_top>
+ <DockedRect_left>924</DockedRect_left>
+ <DockedRect_bottom>595</DockedRect_bottom>
+ <DockedRect_right>1440</DockedRect_right>
+ <FloatingRect_top>352</FloatingRect_top>
+ <FloatingRect_left>700</FloatingRect_left>
+ <FloatingRect_bottom>602</FloatingRect_bottom>
+ <FloatingRect_right>1300</FloatingRect_right>
+ <ContainerPercent>100</ContainerPercent>
+ <ActiveTab>0</ActiveTab>
+ <Visible>0</Visible>
+ <Dynamic>0</Dynamic>
+ </Window>
+ </View>
+ </WinLayout>
+
+ <MDIGroups>
+ <Orientation>1</Orientation>
+ <ActiveMDIGroup>0</ActiveMDIGroup>
+ <MDIGroup>
+ <Size>100</Size>
+ <ActiveTab>0</ActiveTab>
+ <Documents>
+ <Doc>
+ <Name>..\..\net\lwip\src\core\netif.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>81</TopLine>
+ <CurrentLine>90</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\src\thread.c</Name>
+ <ColumnNumber>28</ColumnNumber>
+ <TopLine>208</TopLine>
+ <CurrentLine>228</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>.\sam7x_emac.c</Name>
+ <ColumnNumber>26</ColumnNumber>
+ <TopLine>31</TopLine>
+ <CurrentLine>51</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>.\serial.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>1</TopLine>
+ <CurrentLine>1</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>.\sd.c</Name>
+ <ColumnNumber>22</ColumnNumber>
+ <TopLine>1</TopLine>
+ <CurrentLine>6</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>.\startup.c</Name>
+ <ColumnNumber>18</ColumnNumber>
+ <TopLine>53</TopLine>
+ <CurrentLine>59</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>.\application.c</Name>
+ <ColumnNumber>1</ColumnNumber>
+ <TopLine>69</TopLine>
+ <CurrentLine>83</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>.\board.c</Name>
+ <ColumnNumber>37</ColumnNumber>
+ <TopLine>127</TopLine>
+ <CurrentLine>132</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\net\lwip\src\core\ipv4\ip.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>158</TopLine>
+ <CurrentLine>166</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\net\lwip\src\netif\ethernetif.c</Name>
+ <ColumnNumber>9</ColumnNumber>
+ <TopLine>207</TopLine>
+ <CurrentLine>216</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\include\rtdef.h</Name>
+ <ColumnNumber>8</ColumnNumber>
+ <TopLine>122</TopLine>
+ <CurrentLine>122</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\libcpu\arm\AT91SAM7X\start_rvds.S</Name>
+ <ColumnNumber>16</ColumnNumber>
+ <TopLine>421</TopLine>
+ <CurrentLine>439</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>F:\nf\rt-thread@googlecode\libcpu\arm\AT91SAM7X\start_gcc.S</Name>
+ <ColumnNumber>11</ColumnNumber>
+ <TopLine>22</TopLine>
+ <CurrentLine>22</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\libcpu\arm\AT91SAM7X\stack.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>44</TopLine>
+ <CurrentLine>54</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\libcpu\arm\AT91SAM7X\trap.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>26</TopLine>
+ <CurrentLine>26</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\src\kservice.c</Name>
+ <ColumnNumber>47</ColumnNumber>
+ <TopLine>41</TopLine>
+ <CurrentLine>57</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\src\irq.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>52</TopLine>
+ <CurrentLine>67</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\libcpu\arm\AT91SAM7X\context_rvds.S</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>56</TopLine>
+ <CurrentLine>81</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>.\rtconfig.h</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>55</TopLine>
+ <CurrentLine>69</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\src\device.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>81</TopLine>
+ <CurrentLine>81</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\net\lwip\src\core\dns.c</Name>
+ <ColumnNumber>31</ColumnNumber>
+ <TopLine>148</TopLine>
+ <CurrentLine>156</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\src\clock.c</Name>
+ <ColumnNumber>5</ColumnNumber>
+ <TopLine>55</TopLine>
+ <CurrentLine>56</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\src\timer.c</Name>
+ <ColumnNumber>5</ColumnNumber>
+ <TopLine>349</TopLine>
+ <CurrentLine>349</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\libcpu\arm\AT91SAM7X\interrupt.c</Name>
+ <ColumnNumber>5</ColumnNumber>
+ <TopLine>82</TopLine>
+ <CurrentLine>82</CurrentLine>
+ </Doc>
+ <Doc>
+ <Name>..\..\src\scheduler.c</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>177</TopLine>
+ <CurrentLine>192</CurrentLine>
+ </Doc>
+ </Documents>
+ </MDIGroup>
+ </MDIGroups>
+
+</ProjectOpt>
diff --git a/bsp/sam7x/project.uvproj b/bsp/sam7x/project.uvproj
new file mode 100644
index 0000000000..71d2e3874b
--- /dev/null
+++ b/bsp/sam7x/project.uvproj
@@ -0,0 +1,899 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>RT-Thread/AT91SAM7X</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>AT91SAM7X256</Device>
+ <Vendor>Atmel</Vendor>
+ <Cpu>IRAM(0x200000-0x20FFFF) IROM(0x100000-0x13FFFF) CLOCK(18432000) CPUTYPE(ARM7TDMI)</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile>"STARTUP\Atmel\SAM7.s" ("Atmel AT91SAM7 Startup Code")</StartupFile>
+ <FlashDriverDll>UL2ARM(-U56240812 -O15 -S0 -C0 -FO7 -FD200000 -FC800 -FN1 -FF0AT91SAM7_256 -FS0100000 -FL040000)</FlashDriverDll>
+ <DeviceId>4081</DeviceId>
+ <RegisterFile>AT91SAM7X256.H</RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath>Atmel\SAM7X\</RegisterFilePath>
+ <DBRegisterFilePath>Atmel\SAM7X\</DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>.\objs\</OutputDirectory>
+ <OutputName>rtthread-sam7x</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath>.\objs\</ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARM.DLL</SimDllName>
+ <SimDllArguments>-cAT91SAM7X</SimDllArguments>
+ <SimDlgDll>DARMATS.DLL</SimDlgDll>
+ <SimDlgDllArguments>-p91SAM7X256</SimDlgDllArguments>
+ <TargetDllName>SARM.DLL</TargetDllName>
+ <TargetDllArguments></TargetDllArguments>
+ <TargetDlgDll>TARMATS.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-p91SAM7X256</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ <Simulator>
+ <UseSimulator>1</UseSimulator>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>0</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>1</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+ </Simulator>
+ <Target>
+ <UseTarget>0</UseTarget>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>1</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>0</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ </Target>
+ <RunDebugAfterBuild>0</RunDebugAfterBuild>
+ <TargetSelection>2</TargetSelection>
+ <SimDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ </SimDlls>
+ <TargetDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ <Driver>Segger\JLTAgdi.dll</Driver>
+ </TargetDlls>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4100</DriverSelection>
+ </Flash1>
+ <Flash2>Segger\JLTAgdi.dll</Flash2>
+ <Flash3>"" ()</Flash3>
+ <Flash4></Flash4>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>0</AdsALst>
+ <AdsACrf>1</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>ARM7TDMI</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>0</RvdsVP>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>0</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>1</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x200000</StartAddress>
+ <Size>0x10000</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x100000</StartAddress>
+ <Size>0x40000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x100000</StartAddress>
+ <Size>0x40000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x200000</StartAddress>
+ <Size>0x10000</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>1</interw>
+ <Optim>1</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>0</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath>.;..\..\include;..\sam7x;..\..\finsh;..\..\net\lwip\src\include;..\..\net\lwip\src;..\..\net\lwip\src\arch\include;..\..\net\lwip\src\include\ipv4;;..\..\filesystem\dfs;..\..\filesystem\dfs\include;..\..\filesystem\dfs\filesystems\efsl\src\include;..\..\filesystem\dfs\filesystems\efsl\src\base\include;..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\include</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>1</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x00100000</TextAddressRange>
+ <DataAddressRange>0x00200000</DataAddressRange>
+ <ScatterFile></ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--keep __fsym_* --keep __vsym_*</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Startup</GroupName>
+ <Files>
+ <File>
+ <FileName>rtconfig.h</FileName>
+ <FileType>5</FileType>
+ <FilePath>.\rtconfig.h</FilePath>
+ </File>
+ <File>
+ <FileName>application.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>.\application.c</FilePath>
+ </File>
+ <File>
+ <FileName>board.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>.\board.c</FilePath>
+ </File>
+ <File>
+ <FileName>startup.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>.\startup.c</FilePath>
+ </File>
+ <File>
+ <FileName>sd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>.\sd.c</FilePath>
+ </File>
+ <File>
+ <FileName>serial.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>.\serial.c</FilePath>
+ </File>
+ <File>
+ <FileName>sam7x_emac.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>.\sam7x_emac.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Kernel</GroupName>
+ <Files>
+ <File>
+ <FileName>clock.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\clock.c</FilePath>
+ </File>
+ <File>
+ <FileName>idle.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\idle.c</FilePath>
+ </File>
+ <File>
+ <FileName>ipc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\ipc.c</FilePath>
+ </File>
+ <File>
+ <FileName>irq.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\irq.c</FilePath>
+ </File>
+ <File>
+ <FileName>kservice.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\kservice.c</FilePath>
+ </File>
+ <File>
+ <FileName>mem.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\mem.c</FilePath>
+ </File>
+ <File>
+ <FileName>mempool.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\mempool.c</FilePath>
+ </File>
+ <File>
+ <FileName>object.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\object.c</FilePath>
+ </File>
+ <File>
+ <FileName>timer.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\timer.c</FilePath>
+ </File>
+ <File>
+ <FileName>scheduler.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\scheduler.c</FilePath>
+ </File>
+ <File>
+ <FileName>slab.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\slab.c</FilePath>
+ </File>
+ <File>
+ <FileName>thread.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\thread.c</FilePath>
+ </File>
+ <File>
+ <FileName>device.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\src\device.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>AT91SAM7X</GroupName>
+ <Files>
+ <File>
+ <FileName>interrupt.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\AT91SAM7X\interrupt.c</FilePath>
+ </File>
+ <File>
+ <FileName>stack.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\AT91SAM7X\stack.c</FilePath>
+ </File>
+ <File>
+ <FileName>trap.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\AT91SAM7X\trap.c</FilePath>
+ </File>
+ <File>
+ <FileName>cpu.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\libcpu\arm\AT91SAM7X\cpu.c</FilePath>
+ </File>
+ <File>
+ <FileName>start_rvds.S</FileName>
+ <FileType>2</FileType>
+ <FilePath>..\..\libcpu\arm\AT91SAM7X\start_rvds.S</FilePath>
+ </File>
+ <File>
+ <FileName>context_rvds.S</FileName>
+ <FileType>2</FileType>
+ <FilePath>..\..\libcpu\arm\AT91SAM7X\context_rvds.S</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>finsh</GroupName>
+ <Files>
+ <File>
+ <FileName>cmd.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\cmd.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_compiler.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_compiler.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_error.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_error.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_heap.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_heap.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_init.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_init.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_node.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_node.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_ops.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_ops.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_parser.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_parser.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_token.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_token.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_var.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_var.c</FilePath>
+ </File>
+ <File>
+ <FileName>finsh_vm.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\finsh_vm.c</FilePath>
+ </File>
+ <File>
+ <FileName>shell.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\shell.c</FilePath>
+ </File>
+ <File>
+ <FileName>symbol.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\finsh\symbol.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>LwIP</GroupName>
+ <Files>
+ <File>
+ <FileName>dhcp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\dhcp.c</FilePath>
+ </File>
+ <File>
+ <FileName>dns.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\dns.c</FilePath>
+ </File>
+ <File>
+ <FileName>init.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\init.c</FilePath>
+ </File>
+ <File>
+ <FileName>netif.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\netif.c</FilePath>
+ </File>
+ <File>
+ <FileName>pbuf.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\pbuf.c</FilePath>
+ </File>
+ <File>
+ <FileName>raw.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\raw.c</FilePath>
+ </File>
+ <File>
+ <FileName>stats.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\stats.c</FilePath>
+ </File>
+ <File>
+ <FileName>sys.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\sys.c</FilePath>
+ </File>
+ <File>
+ <FileName>tcp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\tcp.c</FilePath>
+ </File>
+ <File>
+ <FileName>tcp_in.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\tcp_in.c</FilePath>
+ </File>
+ <File>
+ <FileName>tcp_out.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\tcp_out.c</FilePath>
+ </File>
+ <File>
+ <FileName>udp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\udp.c</FilePath>
+ </File>
+ <File>
+ <FileName>autoip.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\autoip.c</FilePath>
+ </File>
+ <File>
+ <FileName>icmp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\icmp.c</FilePath>
+ </File>
+ <File>
+ <FileName>igmp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\igmp.c</FilePath>
+ </File>
+ <File>
+ <FileName>inet.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\inet.c</FilePath>
+ </File>
+ <File>
+ <FileName>inet_chksum.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\inet_chksum.c</FilePath>
+ </File>
+ <File>
+ <FileName>ip.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\ip.c</FilePath>
+ </File>
+ <File>
+ <FileName>ip_addr.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\ip_addr.c</FilePath>
+ </File>
+ <File>
+ <FileName>ip_frag.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\ipv4\ip_frag.c</FilePath>
+ </File>
+ <File>
+ <FileName>asn1_dec.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\snmp\asn1_dec.c</FilePath>
+ </File>
+ <File>
+ <FileName>asn1_enc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\snmp\asn1_enc.c</FilePath>
+ </File>
+ <File>
+ <FileName>mib2.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\snmp\mib2.c</FilePath>
+ </File>
+ <File>
+ <FileName>mib_structs.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\snmp\mib_structs.c</FilePath>
+ </File>
+ <File>
+ <FileName>msg_in.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\snmp\msg_in.c</FilePath>
+ </File>
+ <File>
+ <FileName>msg_out.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\snmp\msg_out.c</FilePath>
+ </File>
+ <File>
+ <FileName>api_lib.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\api_lib.c</FilePath>
+ </File>
+ <File>
+ <FileName>api_msg.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\api_msg.c</FilePath>
+ </File>
+ <File>
+ <FileName>err.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\err.c</FilePath>
+ </File>
+ <File>
+ <FileName>netbuf.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\netbuf.c</FilePath>
+ </File>
+ <File>
+ <FileName>netdb.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\netdb.c</FilePath>
+ </File>
+ <File>
+ <FileName>netifapi.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\netifapi.c</FilePath>
+ </File>
+ <File>
+ <FileName>tcpip.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\tcpip.c</FilePath>
+ </File>
+ <File>
+ <FileName>etharp.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\netif\etharp.c</FilePath>
+ </File>
+ <File>
+ <FileName>ethernetif.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\netif\ethernetif.c</FilePath>
+ </File>
+ <File>
+ <FileName>loopif.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\netif\loopif.c</FilePath>
+ </File>
+ <File>
+ <FileName>sys_arch_init.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\arch\sys_arch_init.c</FilePath>
+ </File>
+ <File>
+ <FileName>sys_arch.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\arch\sys_arch.c</FilePath>
+ </File>
+ <File>
+ <FileName>sockets.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\api\sockets.c</FilePath>
+ </File>
+ <File>
+ <FileName>memp_tiny.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\net\lwip\src\core\memp_tiny.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Filesystem</GroupName>
+ <Files>
+ <File>
+ <FileName>dfs_util.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\src\dfs_util.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs_cache.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\src\dfs_cache.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs_fs.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\src\dfs_fs.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs_init.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\src\dfs_init.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs_raw.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\src\dfs_raw.c</FilePath>
+ </File>
+ <File>
+ <FileName>dfs_posix.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\src\dfs_posix.c</FilePath>
+ </File>
+ <File>
+ <FileName>plibc.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\base\plibc.c</FilePath>
+ </File>
+ <File>
+ <FileName>efs.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\base\efs.c</FilePath>
+ </File>
+ <File>
+ <FileName>extract.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\base\extract.c</FilePath>
+ </File>
+ <File>
+ <FileName>partition.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\base\partition.c</FilePath>
+ </File>
+ <File>
+ <FileName>ui.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\ui.c</FilePath>
+ </File>
+ <File>
+ <FileName>dir.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\dir.c</FilePath>
+ </File>
+ <File>
+ <FileName>fat.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\fat.c</FilePath>
+ </File>
+ <File>
+ <FileName>file.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\file.c</FilePath>
+ </File>
+ <File>
+ <FileName>fs.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\fs.c</FilePath>
+ </File>
+ <File>
+ <FileName>ls.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\ls.c</FilePath>
+ </File>
+ <File>
+ <FileName>time.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\filesystem\dfs\filesystems\efsl\src\fs\vfat\time.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+</Project>
diff --git a/bsp/sam7x/rtconfig.h b/bsp/sam7x/rtconfig.h
index 4d41525990..6a47581def 100644
--- a/bsp/sam7x/rtconfig.h
+++ b/bsp/sam7x/rtconfig.h
@@ -81,7 +81,7 @@
/* SECTION: lwip, a lighwight TCP/IP protocol stack */
/* Using lighweight TCP/IP protocol stack*/
-#define RT_USING_LWIP
+//#define RT_USING_LWIP
/* Trace LwIP protocol*/
/* #define RT_LWIP_DEBUG */
@@ -139,12 +139,12 @@
#define RT_LWIP_MSKADDR3 0
/* SECTION: DFS options */
-#define RT_USING_DFS
+//#define RT_USING_DFS
/* the max number of mounted filesystem */
#define DFS_FILESYSTEMS_MAX 1
/* the max number of opened files */
#define DFS_FD_MAX 2
/* the max number of cached sector */
-#define DFS_CACHE_MAX_NUM 4
-
+#define DFS_CACHE_MAX_NUM 4
+
#endif
diff --git a/bsp/sam7x/sam7x_emac.c b/bsp/sam7x/sam7x_emac.c
new file mode 100644
index 0000000000..39fa8e5906
--- /dev/null
+++ b/bsp/sam7x/sam7x_emac.c
@@ -0,0 +1,554 @@
+#include <rthw.h>
+#include <rtthread.h>
+#include <netif/ethernetif.h>
+
+#include "sam7x_emac.h"
+#include "AT91SAM7X256.h"
+#include "lwipopts.h"
+
+#define MAX_ADDR_LEN 6
+#define EMAC_PIO_CFG (AT91C_PB0_ETXCK_EREFCK | \
+ AT91C_PB1_ETXEN | \
+ AT91C_PB2_ETX0 | \
+ AT91C_PB3_ETX1 | \
+ AT91C_PB4_ECRS | \
+ AT91C_PB5_ERX0 | \
+ AT91C_PB6_ERX1 | \
+ AT91C_PB7_ERXER | \
+ AT91C_PB8_EMDC | \
+ AT91C_PB9_EMDIO | \
+ AT91C_PB10_ETX2 | \
+ AT91C_PB11_ETX3 | \
+ AT91C_PB10_ETX2 | \
+ AT91C_PB13_ERX2 | \
+ AT91C_PB14_ERX3 | \
+ AT91C_PB15_ERXDV_ECRSDV| \
+ AT91C_PB16_ECOL | \
+ AT91C_PB17_ERXCK)
+
+#define RB_BUFFER_SIZE 8 /* max number of receive buffers */
+#define ETH_RX_BUF_SIZE 128
+
+#define TB_BUFFER_SIZE 4
+#define ETH_TX_BUF_SIZE (PBUF_POOL_BUFSIZE)
+
+struct rbf_t
+{
+ rt_uint32_t addr;
+ rt_uint32_t status;
+};
+
+static rt_uint32_t current_rb_index; /* current receive buffer index */
+static volatile struct rbf_t rb_descriptors[RB_BUFFER_SIZE];
+static volatile struct rbf_t tb_descriptors[TB_BUFFER_SIZE];
+static rt_uint8_t rx_buf[RB_BUFFER_SIZE][ETH_RX_BUF_SIZE] __attribute__ ((aligned (8)));
+static rt_uint8_t tx_buf[TB_BUFFER_SIZE][ETH_TX_BUF_SIZE] __attribute__ ((aligned (8)));
+static struct rt_semaphore tx_sem;
+
+struct net_device
+{
+ /* inherit from ethernet device */
+ struct eth_device parent;
+
+ /* interface address info. */
+ rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */
+};
+static struct net_device sam7x_dev_entry;
+static struct net_device *sam7x_dev =&sam7x_dev_entry;
+AT91PS_EMAC pEmac = AT91C_BASE_EMAC;
+
+rt_inline void write_phy(rt_uint8_t addr, rt_uint32_t value)
+{
+ AT91C_BASE_EMAC->EMAC_MAN = ((0x01<<30) | (2 << 16) | (1 << 28) |
+ (AT91C_PHY_ADDR << 23) | (addr << 18)) | value;
+
+ /* Wait until IDLE bit in Network Status register is cleared */
+ while (!(AT91C_BASE_EMAC->EMAC_NSR & AT91C_EMAC_IDLE));
+}
+
+rt_inline rt_uint32_t read_phy(rt_uint8_t addr)
+{
+ AT91C_BASE_EMAC->EMAC_MAN = (0x01<<30) | (0x02 << 16) | (0x02 << 28) |
+ (AT91C_PHY_ADDR << 23) | (addr << 18);
+
+ /* Wait until IDLE bit in Network Status register is cleared */
+ while (!(AT91C_BASE_EMAC->EMAC_NSR & AT91C_EMAC_IDLE));
+
+ return (AT91C_BASE_EMAC->EMAC_MAN & 0x0000ffff);
+}
+
+rt_inline void sam7xether_reset_tx_desc(void)
+{
+ static rt_uint32_t index = 0;
+
+ if(tb_descriptors[index].status & TxDESC_STATUS_USED)
+ {
+ while(!tb_descriptors[index].status & TxDESC_STATUS_LAST_BUF)
+ {
+ index ++;
+ if(index >= TB_BUFFER_SIZE)index = 0;
+
+ tb_descriptors[index].status |= TxDESC_STATUS_USED;
+ }
+
+ index ++;
+ if(index >= TB_BUFFER_SIZE)index = 0;
+ }
+}
+
+/* interrupt service routing */
+static void sam7xether_isr(int irq)
+{
+ /* Variable definitions can be made now. */
+ volatile rt_uint32_t isr, rsr;
+
+ /* get status */
+ isr = AT91C_BASE_EMAC->EMAC_ISR;
+ rsr = AT91C_BASE_EMAC->EMAC_RSR;
+
+ if( ( isr & AT91C_EMAC_RCOMP ) || ( rsr & AT91C_EMAC_REC ) )
+ {
+ rt_err_t result;
+
+ /* a frame has been received */
+ result = eth_device_ready((struct eth_device*)&(sam7x_dev->parent));
+ RT_ASSERT(result == RT_EOK);
+
+ AT91C_BASE_EMAC->EMAC_RSR = AT91C_EMAC_REC;
+ }
+
+ if( isr & AT91C_EMAC_TCOMP )
+ {
+ /* A frame has been transmitted. Mark all the buffers as free */
+ sam7xether_reset_tx_desc();
+
+ AT91C_BASE_EMAC->EMAC_TSR = AT91C_EMAC_COMP;
+ }
+}
+
+rt_inline void linksetup(void)
+{
+ rt_uint32_t value;
+
+ /* Check if this is a RTL8201 PHY. */
+ rt_uint16_t id1 = read_phy(PHY_REG_PHYID1);
+ rt_uint16_t id2 = read_phy(PHY_REG_PHYID2);
+
+ if (((id2 << 16) | (id1 & 0xfff0)) == MII_RTL8201_ID)
+ {
+ rt_uint32_t tout;
+
+ /* 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 < 0x100000; tout++)
+ {
+ value = read_phy (PHY_REG_BMSR);
+ if (value & BMSR_ANEGCOMPLETE) break; /* autonegotiation finished. */
+ }
+
+ /* Check the link status. */
+ for (tout = 0; tout < 0x10000; tout++)
+ {
+ value = read_phy (PHY_REG_BMSR);
+ if (value & BMSR_LINKST) break; /* Link is on. */
+ }
+ }
+
+ value = read_phy (PHY_REG_ANLPAR);
+
+ /* Update the MAC register NCFGR. */
+ AT91C_BASE_EMAC->EMAC_NCFGR &= ~(AT91C_EMAC_SPD | AT91C_EMAC_FD);
+
+ /* set full duplex . */
+ if (value & 0xA000) AT91C_BASE_EMAC->EMAC_NCFGR |= AT91C_EMAC_FD;
+ /* set speed */
+ if (value & 0xC000) AT91C_BASE_EMAC->EMAC_NCFGR |= AT91C_EMAC_SPD;
+}
+
+/*
+ * Set the MAC address.
+ */
+rt_inline void update_mac_address(struct net_device* device)
+{
+ AT91C_BASE_EMAC->EMAC_SA1L = (device->dev_addr[3] << 24) |
+ (device->dev_addr[2] << 16) |
+ (device->dev_addr[1] << 8) |
+ device->dev_addr[0];
+ AT91C_BASE_EMAC->EMAC_SA1H = (device->dev_addr[5] << 8) |
+ device->dev_addr[4];
+}
+
+rt_inline void sam7xether_desc_init()
+{
+ rt_uint32_t i;
+
+ /* Rx Buffer Descriptor initialization */
+ current_rb_index = 0;
+ for (i = 0; i < RB_BUFFER_SIZE; i++)
+ {
+ rb_descriptors[i].addr = (rt_uint32_t)&(rx_buf[i][0]);
+ rb_descriptors[i].status = 0;
+ }
+ /* Set the WRAP bit at the end of the list descriptor. */
+ rb_descriptors[RB_BUFFER_SIZE-1].addr |= 0x02;
+ /* Set Rx Queue pointer to descriptor list. */
+ AT91C_BASE_EMAC->EMAC_RBQP = (unsigned int)&(rb_descriptors[0]);
+
+ /* Tx Buffer Descriptor initialization */
+ for (i = 0; i < TB_BUFFER_SIZE; i++)
+ {
+ tb_descriptors[i].addr = (rt_uint32_t)&(tx_buf[i][0]);
+ tb_descriptors[i].status = TxDESC_STATUS_USED;
+ }
+ /* Set the WRAP bit at the end of the list descriptor. */
+ tb_descriptors[TB_BUFFER_SIZE-1].status |= TxDESC_STATUS_WRAP;
+ /* Set Tx Queue pointer to descriptor list. */
+ AT91C_BASE_EMAC->EMAC_TBQP = (unsigned int)&(tb_descriptors[0]);
+}
+
+/* RT-Thread Device Interface */
+
+/* initialize the interface */
+rt_err_t sam7xether_init(rt_device_t dev)
+{
+ /* enable peripheral clock for EMAC and PIO B */
+ AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB | 1 << AT91C_ID_EMAC;
+
+ /* Disable pull up on RXDV => PHY normal mode (not in test mode), */
+ /* and set MII mode. PHY has internal pull down. */
+ AT91C_BASE_PIOB->PIO_PPUDR = (1<<16) | (1 << 15);
+
+ /* Clear PB18 <=> PHY powerdown */
+ AT91C_BASE_PIOB->PIO_PER = 1<<18;
+ AT91C_BASE_PIOB->PIO_OER = 1<<18;
+ AT91C_BASE_PIOB->PIO_CODR = 1<<18;
+
+ /* EMAC IO init for EMAC-PHY communication. */
+ AT91C_BASE_PIOB->PIO_ASR = EMAC_PIO_CFG;
+ AT91C_BASE_PIOB->PIO_PDR = EMAC_PIO_CFG; // Set in Periph mode
+
+ /* Enable communication between EMAC-PHY. */
+ AT91C_BASE_EMAC->EMAC_NCR |= AT91C_EMAC_MPE;
+ /* MDC = MCK/32 */
+ AT91C_BASE_EMAC->EMAC_NCFGR |= 2<<10;
+
+ /* Reset PHY */
+ AT91C_BASE_PIOB->PIO_PPUDR = AT91C_PB7_ERXER;
+
+ AT91C_BASE_RSTC->RSTC_RMR = 0xA5000000 | (0x08 << 8) ;
+ AT91C_BASE_RSTC->RSTC_RCR = 0xA5000000 | AT91C_RSTC_EXTRST;
+ while(!(AT91C_BASE_RSTC->RSTC_RSR & AT91C_RSTC_NRSTL));
+
+ linksetup();
+
+ /* Disable management port in MAC control register. */
+ AT91C_BASE_EMAC->EMAC_NCR &= ~AT91C_EMAC_MPE;
+
+ /* Enable EMAC in MII mode, enable clock ERXCK and ETXCK */
+ AT91C_BASE_EMAC->EMAC_USRIO= AT91C_EMAC_CLKEN;
+
+ /* Transmit and Receive disable. */
+ AT91C_BASE_EMAC->EMAC_NCR &= ~(AT91C_EMAC_RE | AT91C_EMAC_TE);
+
+ /* init descriptor */
+ sam7xether_desc_init();
+
+ /* Clear receive and transmit status registers. */
+ AT91C_BASE_EMAC->EMAC_RSR = (AT91C_EMAC_OVR | AT91C_EMAC_REC | AT91C_EMAC_BNA);
+ AT91C_BASE_EMAC->EMAC_TSR = (AT91C_EMAC_UND | AT91C_EMAC_COMP| AT91C_EMAC_BEX |
+ AT91C_EMAC_RLES| AT91C_EMAC_COL | AT91C_EMAC_UBR);
+
+ /* Configure EMAC operation mode. */
+ AT91C_BASE_EMAC->EMAC_NCFGR |= (AT91C_EMAC_BIG | AT91C_EMAC_DRFCS);
+ AT91C_BASE_EMAC->EMAC_NCR |= (AT91C_EMAC_TE | AT91C_EMAC_RE | AT91C_EMAC_WESTAT);
+
+ /* update MAC address */
+ update_mac_address(sam7x_dev);
+
+ /* enable interrupt */
+ AT91C_BASE_EMAC->EMAC_IER = AT91C_EMAC_RCOMP | AT91C_EMAC_TCOMP;
+
+ /* setup interrupt */
+ rt_hw_interrupt_install(AT91C_ID_EMAC, sam7xether_isr, RT_NULL);
+ *(volatile unsigned int*)(0xFFFFF000 + AT91C_ID_EMAC * 4) = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 5;
+ // AT91C_AIC_SMR(AT91C_ID_EMAC) = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 5;
+ rt_hw_interrupt_umask(AT91C_ID_EMAC);
+
+ return RT_EOK;
+}
+
+/* control the interface */
+rt_err_t sam7xether_control(rt_device_t dev, rt_uint8_t cmd, void *args)
+{
+ switch(cmd)
+ {
+ case NIOCTL_GADDR:
+ /* get mac address */
+ if(args) rt_memcpy(args, sam7x_dev_entry.dev_addr, 6);
+ else return -RT_ERROR;
+ break;
+
+ default :
+ break;
+ }
+
+ return RT_EOK;
+}
+
+/* Open the ethernet interface */
+rt_err_t sam7xether_open(rt_device_t dev, rt_uint16_t oflags)
+{
+ return RT_EOK;
+}
+
+/* Close the interface */
+rt_err_t sam7xether_close(rt_device_t dev)
+{
+ return RT_EOK;
+}
+
+/* Read */
+rt_size_t sam7xether_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
+{
+ rt_set_errno(-RT_ENOSYS);
+ return 0;
+}
+
+/* Write */
+rt_size_t sam7xether_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size)
+{
+ rt_set_errno(-RT_ENOSYS);
+ return 0;
+}
+
+/* See the header file for descriptions of public functions. */
+void sam7xether_write_frame(rt_uint8_t *ptr, rt_uint32_t length, rt_bool_t eof)
+{
+ rt_uint8_t *buf_ptr;
+ static rt_uint32_t current_tb_index = 0;
+ rt_uint32_t is_last, tx_offset = 0, remain, pdu_length;
+
+ while(tx_offset < length)
+ {
+ /* check whether buffer is available */
+ while(!(tb_descriptors[current_tb_index].status & TxDESC_STATUS_USED))
+ {
+ /* no buffer */
+ rt_thread_delay(5);
+ }
+
+ /* Get the address of the buffer from the descriptor, then copy
+ the data into the buffer. */
+ buf_ptr = (rt_uint8_t *)tb_descriptors[current_tb_index].addr;
+
+ /* How much can we write to the buffer? */
+ remain = length - tx_offset;
+ pdu_length = (remain <= ETH_TX_BUF_SIZE)? remain : ETH_TX_BUF_SIZE;
+
+ /* Copy the data into the buffer. */
+ rt_memcpy(buf_ptr, &ptr[tx_offset], pdu_length );
+ tx_offset += pdu_length;
+
+ /* Is this the last data for the frame? */
+ if((eof == RT_TRUE) && ( tx_offset >= length )) is_last = TxDESC_STATUS_LAST_BUF;
+ else is_last = 0;
+
+ /* Fill out the necessary in the descriptor to get the data sent,
+ then move to the next descriptor, wrapping if necessary. */
+ if(current_tb_index >= (TB_BUFFER_SIZE - 1))
+ {
+ tb_descriptors[current_tb_index].status = ( pdu_length & TxDESC_STATUS_BUF_SIZE )
+ | is_last
+ | TxDESC_STATUS_WRAP;
+ current_tb_index = 0;
+ }
+ else
+ {
+ tb_descriptors[current_tb_index].status = ( pdu_length & TxDESC_STATUS_BUF_SIZE )
+ | is_last;
+ current_tb_index++;
+ }
+
+ /* If this is the last buffer to be sent for this frame we can
+ start the transmission. */
+ if(is_last)
+ {
+ AT91C_BASE_EMAC->EMAC_NCR |= AT91C_EMAC_TSTART;
+ }
+ }
+}
+
+/* ethernet device interface */
+/*
+ * Transmit packet.
+ */
+rt_err_t sam7xether_tx( rt_device_t dev, struct pbuf* p)
+{
+ struct pbuf* q;
+
+ /* lock tx operation */
+ rt_sem_take(&tx_sem, RT_WAITING_FOREVER);
+
+ for (q = p; q != NULL; q = q->next)
+ {
+ if (q->next == RT_NULL) sam7xether_write_frame(q->payload, q->len, RT_TRUE);
+ else sam7xether_write_frame(q->payload, q->len, RT_FALSE);
+ }
+
+ rt_sem_release(&tx_sem);
+
+ return 0;
+}
+
+void sam7xether_read_frame(rt_uint8_t* ptr, rt_uint32_t section_length, rt_uint32_t total)
+{
+ static rt_uint8_t* src_ptr;
+ register rt_uint32_t buf_remain, section_remain;
+ static rt_uint32_t section_read = 0, buf_offset = 0, frame_read = 0;
+
+ if(ptr == RT_NULL)
+ {
+ /* Reset our state variables ready for the next read from this buffer. */
+ src_ptr = (rt_uint8_t *)(rb_descriptors[current_rb_index].addr & RxDESC_FLAG_ADDR_MASK);
+ frame_read = (rt_uint32_t)0;
+ buf_offset = (rt_uint32_t)0;
+ }
+ else
+ {
+ /* Loop until we have obtained the required amount of data. */
+ section_read = 0;
+ while( section_read < section_length )
+ {
+ buf_remain = (ETH_RX_BUF_SIZE - buf_offset);
+ section_remain = section_length - section_read;
+
+ if( section_remain > buf_remain )
+ {
+ /* more data on section than buffer size */
+ rt_memcpy(&ptr[ section_read ], &src_ptr[buf_offset], buf_remain);
+ section_read += buf_remain;
+ frame_read += buf_remain;
+
+ /* free buffer */
+ rb_descriptors[current_rb_index].addr &= ~RxDESC_FLAG_OWNSHIP;
+
+ /* move to the next frame. */
+ current_rb_index++;
+ if(current_rb_index >= RB_BUFFER_SIZE) current_rb_index = 0;
+
+ /* Reset the variables for the new buffer. */
+ src_ptr = (rt_uint8_t *)(rb_descriptors[current_rb_index].addr & RxDESC_FLAG_ADDR_MASK);
+ buf_offset = 0;
+ }
+ else
+ {
+ /* more data on buffer than section size */
+ rt_memcpy(&ptr[section_read], &src_ptr[buf_offset], section_remain);
+ buf_offset += section_remain;
+ section_read += section_remain;
+ frame_read += section_remain;
+
+ /* finish this read */
+ if((buf_offset >= ETH_RX_BUF_SIZE) || (frame_read >= total))
+ {
+ /* free buffer */
+ rb_descriptors[current_rb_index].addr &= ~(RxDESC_FLAG_OWNSHIP);
+
+ /* move to the next frame. */
+ current_rb_index++;
+ if( current_rb_index >= RB_BUFFER_SIZE ) current_rb_index = 0;
+
+ src_ptr = (rt_uint8_t*)(rb_descriptors[current_rb_index].addr & RxDESC_FLAG_ADDR_MASK);
+ buf_offset = 0;
+ }
+ }
+ }
+ }
+}
+
+struct pbuf *sam7xether_rx(rt_device_t dev)
+{
+ struct pbuf *p = RT_NULL;
+
+ /* skip fragment frame */
+ while((rb_descriptors[current_rb_index].addr & RxDESC_FLAG_OWNSHIP)
+ && !(rb_descriptors[current_rb_index].status & RxDESC_STATUS_FRAME_START))
+ {
+ rb_descriptors[current_rb_index].addr &= (~RxDESC_FLAG_OWNSHIP);
+
+ current_rb_index++;
+ if(current_rb_index >= RB_BUFFER_SIZE) current_rb_index = 0;
+ }
+
+ if ((rb_descriptors[current_rb_index].addr & RxDESC_FLAG_OWNSHIP))
+ {
+ struct pbuf* q;
+ rt_uint32_t index, pkt_len = 0;
+
+ /* first of all, find the frame length */
+ index = current_rb_index;
+ while (rb_descriptors[index].addr & RxDESC_FLAG_OWNSHIP)
+ {
+ pkt_len = rb_descriptors[index].status & RxDESC_STATUS_BUF_SIZE;
+ if (pkt_len > 0) break;
+
+ index ++;
+ if (index > RB_BUFFER_SIZE) index = 0;
+ }
+
+ if (pkt_len)
+ {
+ p = pbuf_alloc(PBUF_LINK, pkt_len, PBUF_RAM);
+ if(p != RT_NULL)
+ {
+ sam7xether_read_frame(RT_NULL, 0, pkt_len);
+ for(q = p; q != RT_NULL; q= q->next)
+ sam7xether_read_frame(q->payload, q->len, pkt_len);
+ }
+ else
+ {
+ rt_kprintf("no memory in pbuf\n");
+ }
+ }
+ }
+
+ /* enable interrupt */
+ AT91C_BASE_EMAC->EMAC_IER = AT91C_EMAC_RCOMP;
+
+ return p;
+}
+
+int sam7xether_register(char *name)
+{
+ rt_err_t result;
+
+ /* init rt-thread device interface */
+ sam7x_dev_entry.parent.parent.init = sam7xether_init;
+ sam7x_dev_entry.parent.parent.open = sam7xether_open;
+ sam7x_dev_entry.parent.parent.close = sam7xether_close;
+ sam7x_dev_entry.parent.parent.read = sam7xether_read;
+ sam7x_dev_entry.parent.parent.write = sam7xether_write;
+ sam7x_dev_entry.parent.parent.control = sam7xether_control;
+ sam7x_dev_entry.parent.eth_rx = sam7xether_rx;
+ sam7x_dev_entry.parent.eth_tx = sam7xether_tx;
+
+ /* Update MAC address */
+ sam7x_dev_entry.dev_addr[0] = 0x1e;
+ sam7x_dev_entry.dev_addr[1] = 0x30;
+ sam7x_dev_entry.dev_addr[2] = 0x6c;
+ sam7x_dev_entry.dev_addr[3] = 0xa2;
+ sam7x_dev_entry.dev_addr[4] = 0x45;
+ sam7x_dev_entry.dev_addr[5] = 0x5e;
+ /* update mac address */
+ update_mac_address(sam7x_dev);
+
+ rt_sem_init(&tx_sem, "emac", 1, RT_IPC_FLAG_FIFO);
+
+ result = eth_device_init(&(sam7x_dev->parent), (char*)name);
+ RT_ASSERT(result == RT_EOK);
+
+ return RT_EOK;
+}
diff --git a/bsp/sam7x/sam7x_emac.h b/bsp/sam7x/sam7x_emac.h
new file mode 100644
index 0000000000..49d156f94b
--- /dev/null
+++ b/bsp/sam7x/sam7x_emac.h
@@ -0,0 +1,64 @@
+#ifndef __SAM7X_EMAC_H__
+#define __SAM7X_EMAC_H__
+
+#define AT91C_PHY_ADDR 0x01
+#define MII_RTL8201_ID 0x82010000
+
+/* RTL8201 PHY registers. */
+#define PHY_REG_BMCR 0x00 /* Basic mode control register */
+#define PHY_REG_BMSR 0x01 /* Basic mode status register */
+#define PHY_REG_PHYID1 0x02 /* PHY ID identifier #1 */
+#define PHY_REG_PHYID2 0x03 /* PHY ID identifier #2 */
+#define PHY_REG_ANAR 0x04 /* AutoNegotiation Advertisement reg.*/
+#define PHY_REG_ANLPAR 0x05 /* AutoNeg.Link partner ability reg */
+#define PHY_REG_ANER 0x06 /* AutoNeg. Expansion register */
+#define PHY_REG_DSCR 0x10 /* DAVICOM Specified Config. reg */
+#define PHY_REG_DSCSR 0x11 /* DAVICOM Spec. Config/Status reg */
+#define PHY_REG_10BTCSR 0x12 /* 10BASET Configuration/Status reg */
+#define PHY_REG_PWDOR 0x13 /* Power Down Control Register */
+#define PHY_REG_SCR 0x14 /* Specified Config register */
+#define PHY_REG_INTR 0x15 /* Interrupt register */
+#define PHY_REG_RECR 0x16 /* Receive Error Counter register */
+#define PHY_REG_DISCR 0x17 /* Disconnect Counter register */
+#define PHY_REG_RLSR 0x18 /* Hardware Reset Latch State reg. */
+
+#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 */
+
+/* Basic mode status register. */
+#define BMSR_ERCAP 0x0001 /* Ext-reg capability */
+#define BMSR_JCD 0x0002 /* Jabber detected */
+#define BMSR_LINKST 0x0004 /* Link status */
+#define BMSR_ANEGCAPABLE 0x0008 /* Able to do auto-negotiation */
+#define BMSR_RFAULT 0x0010 /* Remote fault detected */
+#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */
+#define BMSR_MIIPRESUP 0x0040 /* MII Frame Preamble Suppression */
+#define BMSR_RESV 0x0780 /* Unused... */
+#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */
+#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */
+#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */
+#define BMSR_100FULL 0x4000 /* Can do 100mbps, full-duplex */
+#define BMSR_100BASE4 0x8000 /* Can do 100mbps, 4k packets */
+
+#define RxDESC_FLAG_ADDR_MASK 0xfffffffc
+#define RxDESC_FLAG_WARP 0x00000002
+#define RxDESC_FLAG_OWNSHIP 0x00000001
+#define RxDESC_STATUS_BUF_SIZE (0x00000FFF)
+#define RxDESC_STATUS_FRAME_START (1U << 14)
+#define RxDESC_STATUS_FRAME_END (1U << 15)
+
+#define TxDESC_STATUS_BUF_SIZE (0x000007FF)
+#define TxDESC_STATUS_LAST_BUF (1U << 15)
+#define TxDESC_STATUS_NO_CRC (1U << 16)
+#define TxDESC_STATUS_BUF_EXHAUSTED (1U << 27)
+#define TxDESC_STATUS_Tx_UNDERRUN (1U << 28)
+#define TxDESC_STATUS_Tx_ERROR (1U << 29)
+#define TxDESC_STATUS_WRAP (1U << 30)
+#define TxDESC_STATUS_USED (1U << 31)
+
+int sam7xether_register(char *name);
+
+#endif
diff --git a/bsp/sam7x/serial.c b/bsp/sam7x/serial.c
new file mode 100644
index 0000000000..afc61c8165
--- /dev/null
+++ b/bsp/sam7x/serial.c
@@ -0,0 +1,396 @@
+/*
+ * File : serial.c
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2006, RT-Thread Development Team
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://openlab.rt-thread.com/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2006-08-23 Bernard first version
+ * 2009-05-14 Bernard add RT-THread device interface
+ */
+
+#include <rthw.h>
+#include <rtthread.h>
+
+#include "AT91SAM7X.h"
+#include "serial.h"
+
+/**
+ * @addtogroup AT91SAM7X256
+ */
+/*@{*/
+typedef volatile rt_uint32_t REG32;
+struct rt_at91serial_hw
+{
+ REG32 US_CR; // Control Register
+ REG32 US_MR; // Mode Register
+ REG32 US_IER; // Interrupt Enable Register
+ REG32 US_IDR; // Interrupt Disable Register
+ REG32 US_IMR; // Interrupt Mask Register
+ REG32 US_CSR; // Channel Status Register
+ REG32 US_RHR; // Receiver Holding Register
+ REG32 US_THR; // Transmitter Holding Register
+ REG32 US_BRGR; // Baud Rate Generator Register
+ REG32 US_RTOR; // Receiver Time-out Register
+ REG32 US_TTGR; // Transmitter Time-guard Register
+ REG32 Reserved0[5]; //
+ REG32 US_FIDI; // FI_DI_Ratio Register
+ REG32 US_NER; // Nb Errors Register
+ REG32 Reserved1[1]; //
+ REG32 US_IF; // IRDA_FILTER Register
+ REG32 Reserved2[44]; //
+ REG32 US_RPR; // Receive Pointer Register
+ REG32 US_RCR; // Receive Counter Register
+ REG32 US_TPR; // Transmit Pointer Register
+ REG32 US_TCR; // Transmit Counter Register
+ REG32 US_RNPR; // Receive Next Pointer Register
+ REG32 US_RNCR; // Receive Next Counter Register
+ REG32 US_TNPR; // Transmit Next Pointer Register
+ REG32 US_TNCR; // Transmit Next Counter Register
+ REG32 US_PTCR; // PDC Transfer Control Register
+ REG32 US_PTSR; // PDC Transfer Status Register
+};
+
+struct rt_at91serial
+{
+ struct rt_device parent;
+
+ struct rt_at91serial_hw* hw_base;
+ rt_uint16_t peripheral_id;
+ rt_uint32_t baudrate;
+
+ /* reception field */
+ rt_uint16_t save_index, read_index;
+ rt_uint8_t rx_buffer[RT_UART_RX_BUFFER_SIZE];
+};
+#ifdef RT_USING_UART1
+struct rt_at91serial serial1;
+#endif
+#ifdef RT_USING_UART2
+struct rt_at91serial serial2;
+#endif
+
+static void rt_hw_serial_isr(int irqno)
+{
+ rt_base_t level;
+ struct rt_device* device;
+ struct rt_at91serial* serial = RT_NULL;
+
+#ifdef RT_USING_UART1
+ if (irqno == AT91C_ID_US0)
+ {
+ /* serial 1 */
+ serial = &serial1;
+ }
+#endif
+
+#ifdef RT_USING_UART2
+ if (irqno == AT91C_ID_US1)
+ {
+ /* serial 2 */
+ serial = &serial2;
+ }
+#endif
+ RT_ASSERT(serial != RT_NULL);
+
+ /* get generic device object */
+ device = (rt_device_t)serial;
+
+ /* disable interrupt */
+ level = rt_hw_interrupt_disable();
+
+ /* get received character */
+ serial->rx_buffer[serial->save_index] = serial->hw_base->US_RHR;
+
+ /* move to next position */
+ serial->save_index ++;
+ if (serial->save_index >= RT_UART_RX_BUFFER_SIZE)
+ serial->save_index = 0;
+
+ /* if the next position is read index, discard this 'read char' */
+ if (serial->save_index == serial->read_index)
+ {
+ serial->read_index ++;
+ if (serial->read_index >= RT_UART_RX_BUFFER_SIZE)
+ serial->read_index = 0;
+ }
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+
+ /* indicate to upper layer application */
+ if (device->rx_indicate != RT_NULL)
+ device->rx_indicate(device, 1);
+
+ /* ack interrupt */
+ AT91C_AIC_EOICR = 1;
+}
+
+static rt_err_t rt_serial_init (rt_device_t dev)
+{
+ rt_uint32_t bd;
+ struct rt_at91serial* serial = (struct rt_at91serial*) dev;
+
+ RT_ASSERT(serial != RT_NULL);
+ /* must be US0 or US1 */
+ RT_ASSERT((serial->peripheral_id != AT91C_ID_US0) &&
+ (serial->peripheral_id != AT91C_ID_US1));
+
+ /* Enable Clock for USART */
+ AT91C_PMC_PCER = 1 << serial->peripheral_id;
+
+ /* Enable RxD0 and TxDO Pin */
+ if (serial->peripheral_id == AT91C_ID_US0)
+ {
+ /* set pinmux */
+ AT91C_PIO_PDR = (1 << 5) | (1 << 6);
+ }
+ else if (serial->peripheral_id == AT91C_ID_US1)
+ {
+ /* set pinmux */
+ AT91C_PIO_PDR = (1 << 21) | (1 << 22);
+ }
+
+ serial->hw_base->US_CR = AT91C_US_RSTRX | /* Reset Receiver */
+ AT91C_US_RSTTX | /* Reset Transmitter */
+ AT91C_US_RXDIS | /* Receiver Disable */
+ AT91C_US_TXDIS; /* Transmitter Disable */
+
+ serial->hw_base->US_MR = AT91C_US_USMODE_NORMAL | /* Normal Mode */
+ AT91C_US_CLKS_CLOCK | /* Clock = MCK */
+ AT91C_US_CHRL_8_BITS | /* 8-bit Data */
+ AT91C_US_PAR_NONE | /* No Parity */
+ AT91C_US_NBSTOP_1_BIT; /* 1 Stop Bit */
+
+ /* set baud rate divisor */
+ bd = ((MCK*10)/(serial->baudrate * 16));
+ if ((bd % 10) >= 5) bd = (bd / 10) + 1;
+ else bd /= 10;
+
+ serial->hw_base->US_BRGR = bd;
+ serial->hw_base->US_CR = AT91C_US_RXEN | /* Receiver Enable */
+ AT91C_US_TXEN; /* Transmitter Enable */
+
+ /* reset rx index */
+ serial->save_index = 0;
+ serial->read_index = 0;
+
+ /* reset rx buffer */
+ rt_memset(serial->rx_buffer, 0, RT_UART_RX_BUFFER_SIZE);
+
+ return RT_EOK;
+}
+
+static rt_err_t rt_serial_open(rt_device_t dev, rt_uint16_t oflag)
+{
+ struct rt_at91serial *serial = (struct rt_at91serial*)dev;
+ RT_ASSERT(serial != RT_NULL);
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ /* enable UART rx interrupt */
+ serial->hw_base->US_IER = 1 << 0; /* RxReady interrupt */
+ serial->hw_base->US_IMR |= 1 << 0; /* umask RxReady interrupt */
+
+ /* install UART handler */
+ rt_hw_interrupt_install(serial->peripheral_id, rt_hw_serial_isr, RT_NULL);
+ AT91C_AIC_SMR(serial->peripheral_id) = 5 | (0x01 << 5);
+ rt_hw_interrupt_umask(serial->peripheral_id);
+ }
+
+ return RT_EOK;
+}
+
+static rt_err_t rt_serial_close(rt_device_t dev)
+{
+ struct rt_at91serial *serial = (struct rt_at91serial*)dev;
+ RT_ASSERT(serial != RT_NULL);
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ /* disable interrupt */
+ serial->hw_base->US_IDR = 1 << 0; /* RxReady interrupt */
+ serial->hw_base->US_IMR &= ~(1 << 0); /* mask RxReady interrupt */
+ }
+
+ serial->hw_base->US_CR = AT91C_US_RSTRX | /* Reset Receiver */
+ AT91C_US_RSTTX | /* Reset Transmitter */
+ AT91C_US_RXDIS | /* Receiver Disable */
+ AT91C_US_TXDIS; /* Transmitter Disable */
+
+ return RT_EOK;
+}
+
+static rt_size_t rt_serial_read (rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
+{
+ rt_uint8_t* ptr;
+ struct rt_at91serial *serial = (struct rt_at91serial*)dev;
+ RT_ASSERT(serial != RT_NULL);
+
+ /* point to buffer */
+ ptr = (rt_uint8_t*) buffer;
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ while (size)
+ {
+ /* interrupt receive */
+ rt_base_t level;
+
+ /* disable interrupt */
+ level = rt_hw_interrupt_disable();
+ if (serial->read_index != serial->save_index)
+ {
+ *ptr = serial->rx_buffer[serial->read_index];
+
+ serial->read_index ++;
+ if (serial->read_index >= RT_UART_RX_BUFFER_SIZE)
+ serial->read_index = 0;
+ }
+ else
+ {
+ /* no data in rx buffer */
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+ break;
+ }
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+
+ ptr ++;
+ size --;
+ }
+
+ return (rt_uint32_t)ptr - (rt_uint32_t)buffer;
+ }
+ else if (dev->flag & RT_DEVICE_FLAG_DMA_RX)
+ {
+ /* not support right now */
+ RT_ASSERT(0);
+ }
+ else
+ {
+ /* poll mode */
+ while (size)
+ {
+ /* Wait for Full Rx Buffer */
+ while (!(serial->hw_base->US_CSR & AT91C_US_RXRDY));
+
+ /* Read Character */
+ *ptr = serial->hw_base->US_RHR;
+ ptr ++;
+ size --;
+ }
+
+ return (rt_size_t)ptr - (rt_size_t)buffer;
+ }
+
+ return 0;
+}
+
+static rt_size_t rt_serial_write (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size)
+{
+ rt_uint8_t* ptr;
+ struct rt_at91serial *serial = (struct rt_at91serial*)dev;
+ RT_ASSERT(serial != RT_NULL);
+
+ ptr = (rt_uint8_t*) buffer;
+ if (dev->open_flag & RT_DEVICE_OFLAG_WRONLY)
+ {
+ if (dev->flag & RT_DEVICE_FLAG_STREAM)
+ {
+ /* it's a stream mode device */
+ while (size)
+ {
+ /* stream mode */
+ if (*ptr == '\n')
+ {
+ while (!(serial->hw_base->US_CSR & AT91C_US_TXRDY));
+ serial->hw_base->US_THR = '\r';
+ }
+
+ /* Wait for Empty Tx Buffer */
+ while (!(serial->hw_base->US_CSR & AT91C_US_TXRDY));
+
+ /* Transmit Character */
+ serial->hw_base->US_THR = *ptr;
+ ptr ++;
+ size --;
+ }
+ }
+ else
+ {
+ while (size)
+ {
+ /* Wait for Empty Tx Buffer */
+ while (!(serial->hw_base->US_CSR & AT91C_US_TXRDY));
+
+ /* Transmit Character */
+ serial->hw_base->US_THR = *ptr;
+ ptr ++;
+ size --;
+ }
+ }
+ }
+
+ return (rt_size_t)ptr - (rt_size_t)buffer;
+}
+
+static rt_err_t rt_serial_control (rt_device_t dev, rt_uint8_t cmd, void *args)
+{
+ return RT_EOK;
+}
+
+rt_err_t rt_hw_serial_init()
+{
+ rt_device_t device;
+
+#ifdef RT_USING_UART1
+ device = (rt_device_t) &serial1;
+
+ /* init serial device private data */
+ serial1.hw_base = (struct rt_at91serial_hw*)AT91C_BASE_US0;
+ serial1.peripheral_id = AT91C_ID_US0;
+ serial1.baudrate = 115200;
+
+ /* set device virtual interface */
+ device->init = rt_serial_init;
+ device->open = rt_serial_open;
+ device->close = rt_serial_close;
+ device->read = rt_serial_read;
+ device->write = rt_serial_write;
+ device->control = rt_serial_control;
+
+ /* register uart1 on device subsystem */
+ rt_device_register(device, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
+#endif
+
+#ifdef RT_USING_UART2
+ device = (rt_device_t) &serial2;
+
+ serial2.hw_base = (struct rt_at91serial_hw*)AT91C_BASE_US1;
+ serial2.peripheral_id = AT91C_ID_US1;
+ serial2.baudrate = 115200;
+
+ /* set device virtual interface */
+ device->init = rt_serial_init;
+ device->open = rt_serial_open;
+ device->close = rt_serial_close;
+ device->read = rt_serial_read;
+ device->write = rt_serial_write;
+ device->control = rt_serial_control;
+
+ /* register uart2 on device subsystem */
+ rt_device_register(device, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
+#endif
+
+ return RT_EOK;
+}
+
+/*@}*/
diff --git a/bsp/sam7x/serial.h b/bsp/sam7x/serial.h
new file mode 100644
index 0000000000..5fe0928c9a
--- /dev/null
+++ b/bsp/sam7x/serial.h
@@ -0,0 +1,56 @@
+#ifndef __RT_SERIAL_H__
+#define __RT_SERIAL_H__
+
+#ifndef AT91C_BASE_US0
+#define AT91C_BASE_US0 (0xFFFC0000) // (US0) Base Address
+#endif
+
+#ifndef AT91C_BASE_US1
+#define AT91C_BASE_US1 (0xFFFC4000) // (US1) Base Address
+#endif
+
+#define AT91C_US_RXRDY ((unsigned int) 0x1 << 0) /* US RXRDY Interrupt */
+#define AT91C_US_TXRDY ((unsigned int) 0x1 << 1) /* US TXRDY Interrupt */
+#define AT91C_US_RSTRX ((unsigned int) 0x1 << 2) /* US Reset Receiver */
+#define AT91C_US_RSTTX ((unsigned int) 0x1 << 3) /* US Reset Transmitter */
+#define AT91C_US_RXEN ((unsigned int) 0x1 << 4) /* US Receiver Enable */
+#define AT91C_US_RXDIS ((unsigned int) 0x1 << 5) /* US Receiver Disable */
+#define AT91C_US_TXEN ((unsigned int) 0x1 << 6) /* US Transmitter Enable */
+#define AT91C_US_TXDIS ((unsigned int) 0x1 << 7) /* US Transmitter Disable */
+#define AT91C_US_RSTSTA ((unsigned int) 0x1 << 8) /* US Reset Status Bits */
+
+#define AT91C_US_USMODE_NORMAL ((unsigned int) 0x0) /* USAR) Normal */
+#define AT91C_US_USMODE_RS485 ((unsigned int) 0x1) /* USAR) RS485 */
+#define AT91C_US_USMODE_HWHSH ((unsigned int) 0x2) /* USAR) Hardware Handshaking */
+#define AT91C_US_USMODE_MODEM ((unsigned int) 0x3) /* USAR) Modem */
+#define AT91C_US_USMODE_ISO7816_0 ((unsigned int) 0x4) /* USAR) ISO7816 protocol: T = 0 */
+#define AT91C_US_USMODE_ISO7816_1 ((unsigned int) 0x6) /* USAR) ISO7816 protocol: T = 1 */
+#define AT91C_US_USMODE_IRDA ((unsigned int) 0x8) /* USAR) IrDA */
+#define AT91C_US_USMODE_SWHSH ((unsigned int) 0xC) /* USAR) Software Handshaking */
+
+#define AT91C_US_CLKS_CLOCK ((unsigned int) 0x0 << 4) /* USAR) Clock */
+#define AT91C_US_CLKS_FDIV1 ((unsigned int) 0x1 << 4) /* USAR) fdiv1 */
+#define AT91C_US_CLKS_SLOW ((unsigned int) 0x2 << 4) /* USAR) slow_clock (ARM) */
+#define AT91C_US_CLKS_EXT ((unsigned int) 0x3 << 4) /* USAR) External (SCK) */
+
+#define AT91C_US_CHRL_5_BITS ((unsigned int) 0x0 << 6) /* USAR) Character Length: 5 bits */
+#define AT91C_US_CHRL_6_BITS ((unsigned int) 0x1 << 6) /* USAR) Character Length: 6 bits */
+#define AT91C_US_CHRL_7_BITS ((unsigned int) 0x2 << 6) /* USAR) Character Length: 7 bits */
+#define AT91C_US_CHRL_8_BITS ((unsigned int) 0x3 << 6) /* USAR) Character Length: 8 bits */
+
+#define AT91C_US_PAR_EVEN ((unsigned int) 0x0 << 9) /* DBGU Even Parity */
+#define AT91C_US_PAR_ODD ((unsigned int) 0x1 << 9) /* DBGU Odd Parity */
+#define AT91C_US_PAR_SPACE ((unsigned int) 0x2 << 9) /* DBGU Parity forced to 0 (Space) */
+#define AT91C_US_PAR_MARK ((unsigned int) 0x3 << 9) /* DBGU Parity forced to 1 (Mark) */
+#define AT91C_US_PAR_NONE ((unsigned int) 0x4 << 9) /* DBGU No Parity */
+#define AT91C_US_PAR_MULTI_DROP ((unsigned int) 0x6 << 9) /* DBGU Multi-drop mode */
+
+#define AT91C_US_NBSTOP_1_BIT ((unsigned int) 0x0 << 12) /* USART 1 stop bit */
+#define AT91C_US_NBSTOP_15_BIT ((unsigned int) 0x1 << 12) /* USART Asynchronous (SYNC=0) 2 stop bits Synchronous (SYNC=1) 2 stop bits */
+#define AT91C_US_NBSTOP_2_BIT ((unsigned int) 0x2 << 12) /* USART 2 stop bits */
+
+#define MCK 48054857
+#define BR 115200 /* Baud Rate */
+#define BRD (MCK/16/BR) /* Baud Rate Divisor */
+
+#endif
diff --git a/bsp/sam7x/startup.c b/bsp/sam7x/startup.c
index c2ba230687..7945a55c5e 100644
--- a/bsp/sam7x/startup.c
+++ b/bsp/sam7x/startup.c
@@ -15,7 +15,6 @@
#include <rthw.h>
#include <rtthread.h>
-#include <AT91SAM7X.h>
#include "board.h"
#ifdef RT_USING_DFS