diff options
| author | [email protected] <[email protected]> | 2010-06-26 03:47:03 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2010-06-26 03:47:03 +0000 |
| commit | 360095ecb149cdca6eec2c9e92e978bca6462ab8 (patch) | |
| tree | 2b1ecdaf5719faa44f741aeea348603a0bf7e714 | |
| parent | 77b375741e95d31c11609bf7fdc8c16fa88733ec (diff) | |
add sep4020 porting
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@776 bbd45198-f89e-11dd-88c7-29a3b14d5316
| -rw-r--r-- | bsp/sep4020/Ext_SDRAM.ini | 40 | ||||
| -rw-r--r-- | bsp/sep4020/Memory.ini | 14 | ||||
| -rw-r--r-- | bsp/sep4020/application.c | 86 | ||||
| -rw-r--r-- | bsp/sep4020/board.c | 140 | ||||
| -rw-r--r-- | bsp/sep4020/board.h | 26 | ||||
| -rw-r--r-- | bsp/sep4020/project.uvopt | 2957 | ||||
| -rw-r--r-- | bsp/sep4020/project.uvproj | 1007 | ||||
| -rw-r--r-- | bsp/sep4020/rtconfig.h | 150 | ||||
| -rw-r--r-- | bsp/sep4020/rtthread-sep4020-rom.sct | 15 | ||||
| -rw-r--r-- | bsp/sep4020/rtthread-sep4020-sdram.sct | 15 | ||||
| -rw-r--r-- | bsp/sep4020/sep4020.h | 637 | ||||
| -rw-r--r-- | bsp/sep4020/startup.c | 132 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/clk.c | 112 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/context_rvds.S | 107 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/cpu.c | 42 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/interrupt.c | 107 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/serial.c | 281 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/serial.h | 56 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/stack.c | 61 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/start_rvds.S | 374 | ||||
| -rw-r--r-- | libcpu/arm/sep4020/trap.c | 66 |
21 files changed, 6425 insertions, 0 deletions
diff --git a/bsp/sep4020/Ext_SDRAM.ini b/bsp/sep4020/Ext_SDRAM.ini new file mode 100644 index 0000000000..19cb88911b --- /dev/null +++ b/bsp/sep4020/Ext_SDRAM.ini @@ -0,0 +1,40 @@ +/******************************************************************************/
+/* Ext_RAM.INI: External RAM (SDRAM) Initialization File */
+/******************************************************************************/
+// <<< Use Configuration Wizard in Context Menu >>> //
+/******************************************************************************/
+/* This file is part of the uVision/ARM development tools. */
+/* Copyright (c) 2005-2008 Keil Software. All rights reserved. */
+/* This software may only be used under the terms of a valid, current, */
+/* end user licence from KEIL for a compatible version of KEIL software */
+/* development tools. Nothing else gives you the right to use this software. */
+/******************************************************************************/
+
+
+FUNC void SetupForStart (void) {
+
+// <o> Program Entry Point
+ PC = 0x30000000;
+}
+
+
+FUNC void Init (void) {
+
+ _WDWORD(0x1000200C, 0x00000000); // Disable Watchdog
+
+ // Clock Setup
+
+ _WDWORD(0x10001000, 0x00fa00fa); //
+ _WDWORD(0x10001014, 0x00000001); //
+ _WDWORD(0x10001004, 0x00004009); //
+ _WDWORD(0x10001004, 0x0000C009); //
+ _WDWORD(0x11000018, 0x1E104177); //
+ _WDWORD(0x1100001c, 0x80001860); //
+
+
+}
+
+Init(); // Initialize memory
+LOAD build\rtthread-sep4020.axf INCREMENTAL // Download program
+SetupForStart(); // Setup for Running
+g, main // Goto Main
diff --git a/bsp/sep4020/Memory.ini b/bsp/sep4020/Memory.ini new file mode 100644 index 0000000000..205cc469ec --- /dev/null +++ b/bsp/sep4020/Memory.ini @@ -0,0 +1,14 @@ +/******************************************************************************/
+/* MEMORY.INI: Memory Debug Initialization File */
+/******************************************************************************/
+/* This file is part of the uVision/ARM development tools. */
+/* Copyright (c) 2005-2006 Keil Software. All rights reserved. */
+/* This software may only be used under the terms of a valid, current, */
+/* end user licence from KEIL for a compatible version of KEIL software */
+/* development tools. Nothing else gives you the right to use this software. */
+/******************************************************************************/
+
+MAP 0x00000000,0x0000FFFF READ EXEC // External ROM
+MAP 0x30000000,0x31FFFFFF READ WRITE // External RAM
+MAP 0x10000000,0x11000000 READ WRITE
+MAP 0x11000000,0x12000000 READ WRITE
diff --git a/bsp/sep4020/application.c b/bsp/sep4020/application.c new file mode 100644 index 0000000000..5245e52346 --- /dev/null +++ b/bsp/sep4020/application.c @@ -0,0 +1,86 @@ +/*
+ * File : application.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://www.rt-thread.org/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2009-01-05 Bernard the first version
+ */
+
+/**
+ * @addtogroup SEP4020
+ */
+/*@{*/
+
+#include <rtthread.h>
+#include "board.h"
+
+static void rt_thread_entry_led1(void* parameter)
+{
+ /* init led configuration */
+ /* rt_hw_led_init(); */
+
+ while (1)
+ {
+ /* led on */
+ //rt_kprintf("led1 on\r\n");
+ GPIO_PORTE_DATA |= 0x1<<3;
+ rt_thread_delay(50); /* sleep 0.5 second and switch to other thread */
+
+ /* led off */
+ //rt_kprintf("led1 off\r\n");
+ GPIO_PORTE_DATA &= ~(0x1<<3);
+ rt_thread_delay(50);
+ }
+}
+
+char thread_led2_stack[1024];
+struct rt_thread thread_led2;
+void rt_thread_entry_led2(void* parameter)
+{
+ unsigned int count=0;
+ while (1)
+ {
+ /* led on */
+ //rt_kprintf("led2 on,count : %d\r\n",count);
+ count++;
+ GPIO_PORTE_DATA |= 0x1<<4;
+ rt_thread_delay(RT_TICK_PER_SECOND);
+
+ /* led off */
+ //rt_kprintf("led2 off\r\n");
+ GPIO_PORTE_DATA &= ~(0x1<<4);
+ rt_thread_delay(RT_TICK_PER_SECOND);
+ }
+}
+
+int rt_application_init()
+{
+ rt_thread_t thread;
+
+ /* create led1 thread */
+ thread = rt_thread_create("led1",
+ rt_thread_entry_led1, RT_NULL,
+ 512,
+ 20, 5);
+ if (thread != RT_NULL)
+ rt_thread_startup(thread);
+
+ //------- init led2 thread
+ rt_thread_init(&thread_led2,
+ "led2",
+ rt_thread_entry_led2,
+ RT_NULL,
+ &thread_led2_stack[0],
+ sizeof(thread_led2_stack),10,10);
+ rt_thread_startup(&thread_led2);
+
+ return 0;
+}
+
+/*@}*/
diff --git a/bsp/sep4020/board.c b/bsp/sep4020/board.c new file mode 100644 index 0000000000..162b491f25 --- /dev/null +++ b/bsp/sep4020/board.c @@ -0,0 +1,140 @@ +/* + * File : board.c + * 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 implementation + */ + +#include <rtthread.h> +#include <rthw.h> + +#include <sep4020.h> +#include "board.h"
+#include "serial.h" + +/** + * @addtogroup sep4020 + */ +/*@{*/
+ +extern rt_uint32_t rt_hw_get_clock(void);
+ +/* uart0 */
+#define UART0 ((struct uartport *)UART0BASE)
+struct serial_int_rx uart0_int_rx;
+struct serial_device uart0 =
+{
+ UART0,
+ &uart0_int_rx,
+ RT_NULL
+};
+struct rt_device uart0_device; +/** + * This is the timer interrupt service routine. + * @param vector the irq number for timer + */ +void rt_hw_timer_handler(int vector) +{
+ /* clear interrupt */
+ TIMER_T1ISCR; + /* increase a tick */ + rt_tick_increase(); +}
+ +/** + * This is the uart0 interrupt service routine. + * @param vector the irq number for uart0 + */
+void rt_serial_handler(int vector)
+{
+ rt_hw_serial_isr(&uart0_device);
+}
+
+/**
+ * This function will handle init uart.
+ */
+void rt_hw_uart_init(void)
+{
+ rt_uint32_t baud;
+ rt_uint32_t sysclock;
+
+ sysclock = rt_hw_get_clock();
+ /* caculate baud rate register */
+ baud = sysclock/16/BR;
+
+ /* LCR */
+ uart0.uart_device->lcr = 0x83;
+ /* DLBH, IER */
+ uart0.uart_device->dlbh_ier = (baud>>8)&0xff;;
+ /* DLBL */
+ uart0.uart_device->dlbl_rxfifo_txfifo = baud&0xff;
+ /* LCR */
+ uart0.uart_device->lcr = 0x03;
+ /* IER */
+ uart0.uart_device->dlbh_ier = 0x01;
+ /* FCR */
+ uart0.uart_device->iir_fcr = 0x00;
+
+ rt_hw_serial_register(&uart0_device, "uart0",
+ RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
+ &uart0);
+ /* install uart isr */
+ INTC_IER |= (1<<INT_UART0);
+
+ rt_hw_interrupt_install(INT_UART0, rt_serial_handler, RT_NULL);
+ rt_hw_interrupt_umask(INT_UART0);
+} +/** + * This function will init led on the board + */ +static void rt_hw_board_led_init(void) +{ + /* PE3 PE4 PE5 for led */
+ GPIO_PORTE_SEL |=0x38; /* GPIO */
+
+ GPIO_PORTE_DIR &= ~0x38; /* output*/
+
+ GPIO_PORTE_DATA &= ~0x38; /* low */ +}
+
+/**
+ * This function will init timer1 for system ticks
+ */
+ static void rt_hw_timer_init(void)
+ {
+ TIMER_T1CR = 0x06; /* reload mode and interrupt enable */
+ TIMER_T1LCR = 0xAFC80; /* 10ms under 72MHz 0xAFC80=720000 */
+
+ INTC_IER |= (1<<INT_TIMER1); /* interrupt enable */
+
+ rt_hw_interrupt_install(INT_TIMER1, rt_hw_timer_handler, RT_NULL);
+ rt_hw_interrupt_umask(INT_TIMER1);
+
+ TIMER_T1CR |= 0x01; /* enable the timer 1 */
+ } + +/** + * This function will initial sam7x board. + */ +void rt_hw_board_init() +{ + + /* init hardware uart */
+ rt_hw_uart_init();
+ rt_console_set_device("uart0"); + + /* init led */ + rt_hw_board_led_init(); + + /* init timer for tick */
+ rt_hw_timer_init(); + +} +/*@}*/ diff --git a/bsp/sep4020/board.h b/bsp/sep4020/board.h new file mode 100644 index 0000000000..1edc635bdc --- /dev/null +++ b/bsp/sep4020/board.h @@ -0,0 +1,26 @@ +/* + * File : board.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-10-08 Bernard add board.h to this bsp + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include <rthw.h> +#include <rtthread.h>
+#include <sep4020.h> + +#define BR 115200 /* Baud Rate */ + +void rt_hw_board_init(void); + +#endif diff --git a/bsp/sep4020/project.uvopt b/bsp/sep4020/project.uvopt new file mode 100644 index 0000000000..b93f867bef --- /dev/null +++ b/bsp/sep4020/project.uvopt @@ -0,0 +1,2957 @@ +<?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/SEP4020</TargetName> + <ToolsetNumber>0x4</ToolsetNumber> + <ToolsetName>ARM-ADS</ToolsetName> + <TargetOption> + <CLKADS>14745600</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>.\build\</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></SimDllArguments> + <SimDlgDllName>DARMSH.DLL</SimDlgDllName> + <SimDlgDllArguments></SimDlgDllArguments> + <TargetDllName>SARM.DLL</TargetDllName> + <TargetDllArguments></TargetDllArguments> + <TargetDlgDllName>TARMSH.DLL</TargetDlgDllName> + <TargetDlgDllArguments></TargetDlgDllArguments> + </DllOpt> + <DebugOpt> + <uSim>0</uSim> + <uTrg>1</uTrg> + <sLdApp>1</sLdApp> + <sGomain>0</sGomain> + <sRbreak>1</sRbreak> + <sRwatch>1</sRwatch> + <sRmem>1</sRmem> + <sRfunc>1</sRfunc> + <sRbox>1</sRbox> + <tLdApp>0</tLdApp> + <tGomain>0</tGomain> + <tRbreak>0</tRbreak> + <tRwatch>1</tRwatch> + <tRmem>1</tRmem> + <tRfunc>0</tRfunc> + <tRbox>1</tRbox> + <sRunDeb>0</sRunDeb> + <sLrtime>0</sLrtime> + <nTsel>6</nTsel> + <sDll></sDll> + <sDllPa></sDllPa> + <sDlgDll></sDlgDll> + <sDlgPa></sDlgPa> + <sIfile>.\Memory.ini</sIfile> + <tDll></tDll> + <tDllPa></tDllPa> + <tDlgDll></tDlgDll> + <tDlgPa></tDlgPa> + <tIfile>.\Ext_SDRAM.ini</tIfile> + <pMon>Segger\JLTAgdi.dll</pMon> + </DebugOpt> + <TargetDriverDllRegistry> + <SetRegEntry> + <Number>0</Number> + <Key>DLGTARM</Key> + <Name></Name> + </SetRegEntry> + <SetRegEntry> + <Number>0</Number> + <Key>ARMDBGFLAGS</Key> + <Name></Name> + </SetRegEntry> + <SetRegEntry> + <Number>0</Number> + <Key>JLTDLG</Key> + <Name></Name> + </SetRegEntry> + <SetRegEntry> + <Number>0</Number> + <Key>JLTAgdi</Key> + <Name></Name> + </SetRegEntry> + </TargetDriverDllRegistry> + <DebugFlag> + <trace>0</trace> + <periodic>0</periodic> + <aLwin>1</aLwin> + <aCover>0</aCover> + <aSer1>0</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>bsp</GroupName> + <tvExp>1</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>1</GroupNumber> + <FileNumber>1</FileNumber> + <FileType>5</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>.\rtconfig.h</PathWithFileName> + <FilenameWithoutPath>rtconfig.h</FilenameWithoutPath> + </File> + <File> + <GroupNumber>1</GroupNumber> + <FileNumber>2</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>.\application.c</PathWithFileName> + <FilenameWithoutPath>application.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>1</GroupNumber> + <FileNumber>3</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>.\board.c</PathWithFileName> + <FilenameWithoutPath>board.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>1</GroupNumber> + <FileNumber>4</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>113</TopLine> + <CurrentLine>120</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>.\startup.c</PathWithFileName> + <FilenameWithoutPath>startup.c</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>kernel</GroupName> + <tvExp>1</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>5</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\clock.c</PathWithFileName> + <FilenameWithoutPath>clock.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>6</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>57</TopLine> + <CurrentLine>65</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\src\idle.c</PathWithFileName> + <FilenameWithoutPath>idle.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\ipc.c</PathWithFileName> + <FilenameWithoutPath>ipc.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\irq.c</PathWithFileName> + <FilenameWithoutPath>irq.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>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\src\kservice.c</PathWithFileName> + <FilenameWithoutPath>kservice.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>10</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>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\mempool.c</PathWithFileName> + <FilenameWithoutPath>mempool.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\object.c</PathWithFileName> + <FilenameWithoutPath>object.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\timer.c</PathWithFileName> + <FilenameWithoutPath>timer.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>14</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\scheduler.c</PathWithFileName> + <FilenameWithoutPath>scheduler.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>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\src\slab.c</PathWithFileName> + <FilenameWithoutPath>slab.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\thread.c</PathWithFileName> + <FilenameWithoutPath>thread.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>2</GroupNumber> + <FileNumber>17</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\device.c</PathWithFileName> + <FilenameWithoutPath>device.c</FilenameWithoutPath> + </File> + </Group> + + <Group> + <GroupName>sep4020</GroupName> + <tvExp>0</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>18</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>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\interrupt.c</PathWithFileName> + <FilenameWithoutPath>interrupt.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>19</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>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\stack.c</PathWithFileName> + <FilenameWithoutPath>stack.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>20</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>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\trap.c</PathWithFileName> + <FilenameWithoutPath>trap.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>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\cpu.c</PathWithFileName> + <FilenameWithoutPath>cpu.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>22</FileNumber> + <FileType>2</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>87</TopLine> + <CurrentLine>94</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\start_rvds.S</PathWithFileName> + <FilenameWithoutPath>start_rvds.S</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>23</FileNumber> + <FileType>2</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\context_rvds.S</PathWithFileName> + <FilenameWithoutPath>context_rvds.S</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>24</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\sep4020\clk.c</PathWithFileName> + <FilenameWithoutPath>clk.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>25</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\sep4020\serial.c</PathWithFileName> + <FilenameWithoutPath>serial.c</FilenameWithoutPath> + </File> + <File> + <GroupNumber>3</GroupNumber> + <FileNumber>26</FileNumber> + <FileType>5</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\sep4020\serial.h</PathWithFileName> + <FilenameWithoutPath>serial.h</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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>..\..\components\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>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</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>0</TopLine> + <CurrentLine>0</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>0</TopLine> + <CurrentLine>0</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>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</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.c</PathWithFileName> + <FilenameWithoutPath>memp.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>E:\rt-thread\src\kservice.h</PathWithFilename> + <TopLine>1</TopLine> + <CurrentLine>1</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>515</DockedRect_top> + <DockedRect_left>0</DockedRect_left> + <DockedRect_bottom>725</DockedRect_bottom> + <DockedRect_right>1280</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>511</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>511</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>511</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>511</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>511</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>1070</DockedRect_left> + <DockedRect_bottom>511</DockedRect_bottom> + <DockedRect_right>1280</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>3</DockLocation> + <Pinned>0</Pinned> + <DockedRect_top>76</DockedRect_top> + <DockedRect_left>214</DockedRect_left> + <DockedRect_bottom>286</DockedRect_bottom> + <DockedRect_right>1280</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>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>214</DockedRect_left> + <DockedRect_bottom>286</DockedRect_bottom> + <DockedRect_right>1280</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>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>214</DockedRect_left> + <DockedRect_bottom>286</DockedRect_bottom> + <DockedRect_right>1280</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>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>214</DockedRect_left> + <DockedRect_bottom>286</DockedRect_bottom> + <DockedRect_right>1280</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>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>214</DockedRect_left> + <DockedRect_bottom>286</DockedRect_bottom> + <DockedRect_right>1280</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> + </View> + </WinLayout> + + <MDIGroups> + <Orientation>1</Orientation> + <ActiveMDIGroup>0</ActiveMDIGroup> + <MDIGroup> + <Size>100</Size> + <ActiveTab>2</ActiveTab> + <Documents> + <Doc> + <Name>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\start_rvds.S</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>87</TopLine> + <CurrentLine>94</CurrentLine> + </Doc> + <Doc> + <Name>.\startup.c</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>113</TopLine> + <CurrentLine>120</CurrentLine> + </Doc> + <Doc> + <Name>..\..\src\idle.c</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>57</TopLine> + <CurrentLine>65</CurrentLine> + </Doc> + <Doc> + <Name>..\..\src\kservice.h</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>1</TopLine> + <CurrentLine>1</CurrentLine> + </Doc> + </Documents> + </MDIGroup> + </MDIGroups> + +</ProjectOpt> diff --git a/bsp/sep4020/project.uvproj b/bsp/sep4020/project.uvproj new file mode 100644 index 0000000000..07e5664179 --- /dev/null +++ b/bsp/sep4020/project.uvproj @@ -0,0 +1,1007 @@ +<?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/SEP4020</TargetName> + <ToolsetNumber>0x4</ToolsetNumber> + <ToolsetName>ARM-ADS</ToolsetName> + <TargetOption> + <TargetCommonOption> + <Device>SEP4020</Device> + <Vendor>SeuIC</Vendor> + <Cpu>IRAM(0x60000000-0x60007FFF) CLOCK(14745600) CPUTYPE(ARM7TDMI)</Cpu> + <FlashUtilSpec></FlashUtilSpec> + <StartupFile></StartupFile> + <FlashDriverDll></FlashDriverDll> + <DeviceId>0</DeviceId> + <RegisterFile></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>.\build\</OutputDirectory> + <OutputName>rtthread-sep4020</OutputName> + <CreateExecutable>1</CreateExecutable> + <CreateLib>0</CreateLib> + <CreateHexFile>0</CreateHexFile> + <DebugInformation>1</DebugInformation> + <BrowseInformation>1</BrowseInformation> + <ListingPath>.\build\</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>1</RunUserProg1> + <RunUserProg2>0</RunUserProg2> + <UserProg1Name>fromelf.exe --bin -o ./build/SEP4020.bin ./build/*.axf</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></SimDllArguments> + <SimDlgDll>DARMSH.DLL</SimDlgDll> + <SimDlgDllArguments></SimDlgDllArguments> + <TargetDllName>SARM.DLL</TargetDllName> + <TargetDllArguments></TargetDllArguments> + <TargetDlgDll>TARMSH.DLL</TargetDlgDll> + <TargetDlgDllArguments></TargetDlgDllArguments> + </DllOption> + <DebugOption> + <OPTHX> + <HexSelection>1</HexSelection> + <HexRangeLowAddress>0</HexRangeLowAddress> + <HexRangeHighAddress>0</HexRangeHighAddress> + <HexOffset>0</HexOffset> + <Oh166RecLen>16</Oh166RecLen> + </OPTHX> + <Simulator> + <UseSimulator>0</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>1</UseTarget> + <LoadApplicationAtStartup>0</LoadApplicationAtStartup> + <RunToMain>0</RunToMain> + <RestoreBreakpoints>0</RestoreBreakpoints> + <RestoreWatchpoints>1</RestoreWatchpoints> + <RestoreMemoryDisplay>1</RestoreMemoryDisplay> + <RestoreFunctions>0</RestoreFunctions> + <RestoreToolbox>1</RestoreToolbox> + </Target> + <RunDebugAfterBuild>0</RunDebugAfterBuild> + <TargetSelection>6</TargetSelection> + <SimDlls> + <CpuDll></CpuDll> + <CpuDllArguments></CpuDllArguments> + <PeripheralDll></PeripheralDll> + <PeripheralDllArguments></PeripheralDllArguments> + <InitializationFile>.\Memory.ini</InitializationFile> + </SimDlls> + <TargetDlls> + <CpuDll></CpuDll> + <CpuDllArguments></CpuDllArguments> + <PeripheralDll></PeripheralDll> + <PeripheralDllArguments></PeripheralDllArguments> + <InitializationFile>.\Ext_SDRAM.ini</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>0</hadIROM> + <hadIRAM>1</hadIRAM> + <hadXRAM>0</hadXRAM> + <uocXRam>0</uocXRam> + <RvdsVP>0</RvdsVP> + <hadIRAM2>0</hadIRAM2> + <hadIROM2>0</hadIROM2> + <StupSel>0</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>1</Ro1Chk> + <Ro2Chk>0</Ro2Chk> + <Ro3Chk>0</Ro3Chk> + <Ir1Chk>0</Ir1Chk> + <Ir2Chk>0</Ir2Chk> + <Ra1Chk>1</Ra1Chk> + <Ra2Chk>0</Ra2Chk> + <Ra3Chk>0</Ra3Chk> + <Im1Chk>0</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>0x60000000</StartAddress> + <Size>0x8000</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>0x200000</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>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT4> + <OCR_RVCT5> + <Type>1</Type> + <StartAddress>0x0</StartAddress> + <Size>0x0</Size> + </OCR_RVCT5> + <OCR_RVCT6> + <Type>0</Type> + <StartAddress>0x30000000</StartAddress> + <Size>0x2000000</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>0x60000000</StartAddress> + <Size>0x8000</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;..\..\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;..\..\libcpu\arm\sep4020;..\..\libcpu\arm\sep4020;..\..\components\finsh</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>RAM_INTVEC REMAP</Define> + <Undefine></Undefine> + <IncludePath></IncludePath> + </VariousControls> + </Aads> + <LDads> + <umfTarg>0</umfTarg> + <Ropi>0</Ropi> + <Rwpi>0</Rwpi> + <noStLib>0</noStLib> + <RepFail>1</RepFail> + <useFile>0</useFile> + <TextAddressRange>0x0</TextAddressRange> + <DataAddressRange></DataAddressRange> + <ScatterFile>.\rtthread-sep4020-sdram.sct</ScatterFile> + <IncludeLibs></IncludeLibs> + <IncludeLibsPath></IncludeLibsPath> + <Misc>--keep __fsym_* --keep __vsym_*</Misc> + <LinkerInputFile></LinkerInputFile> + <DisabledWarnings></DisabledWarnings> + </LDads> + </TargetArmAds> + </TargetOption> + <Groups> + <Group> + <GroupName>bsp</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> + </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>sep4020</GroupName> + <Files> + <File> + <FileName>interrupt.c</FileName> + <FileType>1</FileType> + <FilePath>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\interrupt.c</FilePath> + </File> + <File> + <FileName>stack.c</FileName> + <FileType>1</FileType> + <FilePath>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\stack.c</FilePath> + </File> + <File> + <FileName>trap.c</FileName> + <FileType>1</FileType> + <FilePath>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\trap.c</FilePath> + </File> + <File> + <FileName>cpu.c</FileName> + <FileType>1</FileType> + <FilePath>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\cpu.c</FilePath> + </File> + <File> + <FileName>start_rvds.S</FileName> + <FileType>2</FileType> + <FilePath>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\start_rvds.S</FilePath> + </File> + <File> + <FileName>context_rvds.S</FileName> + <FileType>2</FileType> + <FilePath>E:\temp\rt-thread-sep4020\libcpu\arm\sep4020\context_rvds.S</FilePath> + </File> + <File> + <FileName>clk.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\libcpu\arm\sep4020\clk.c</FilePath> + </File> + <File> + <FileName>serial.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\libcpu\arm\sep4020\serial.c</FilePath> + </File> + <File> + <FileName>serial.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\libcpu\arm\sep4020\serial.h</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>finsh</GroupName> + <Files> + <File> + <FileName>cmd.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\cmd.c</FilePath> + </File> + <File> + <FileName>finsh_compiler.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_compiler.c</FilePath> + </File> + <File> + <FileName>finsh_error.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_error.c</FilePath> + </File> + <File> + <FileName>finsh_heap.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_heap.c</FilePath> + </File> + <File> + <FileName>finsh_init.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_init.c</FilePath> + </File> + <File> + <FileName>finsh_node.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_node.c</FilePath> + </File> + <File> + <FileName>finsh_ops.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_ops.c</FilePath> + </File> + <File> + <FileName>finsh_parser.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_parser.c</FilePath> + </File> + <File> + <FileName>finsh_token.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_token.c</FilePath> + </File> + <File> + <FileName>finsh_var.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_var.c</FilePath> + </File> + <File> + <FileName>finsh_vm.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\finsh_vm.c</FilePath> + </File> + <File> + <FileName>shell.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\shell.c</FilePath> + </File> + <File> + <FileName>symbol.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\components\finsh\symbol.c</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>lwip</GroupName> + <GroupOption> + <CommonProperty> + <UseCPPCompiler>0</UseCPPCompiler> + <RVCTCodeConst>0</RVCTCodeConst> + <RVCTZI>0</RVCTZI> + <RVCTOtherData>0</RVCTOtherData> + <ModuleSelection>0</ModuleSelection> + <IncludeInBuild>0</IncludeInBuild> + <AlwaysBuild>0</AlwaysBuild> + <GenerateAssemblyFile>2</GenerateAssemblyFile> + <AssembleAssemblyFile>2</AssembleAssemblyFile> + <PublicsOnly>2</PublicsOnly> + <StopOnExitCode>11</StopOnExitCode> + <CustomArgument></CustomArgument> + <IncludeLibraryModules></IncludeLibraryModules> + </CommonProperty> + <GroupArmAds> + <Cads> + <interw>2</interw> + <Optim>0</Optim> + <oTime>2</oTime> + <SplitLS>2</SplitLS> + <OneElfS>2</OneElfS> + <Strict>2</Strict> + <EnumInt>2</EnumInt> + <PlainCh>2</PlainCh> + <Ropi>2</Ropi> + <Rwpi>2</Rwpi> + <wLevel>0</wLevel> + <uThumb>2</uThumb> + <VariousControls> + <MiscControls></MiscControls> + <Define></Define> + <Undefine></Undefine> + <IncludePath></IncludePath> + </VariousControls> + </Cads> + <Aads> + <interw>2</interw> + <Ropi>2</Ropi> + <Rwpi>2</Rwpi> + <thumb>2</thumb> + <SplitLS>2</SplitLS> + <SwStkChk>2</SwStkChk> + <NoWarn>2</NoWarn> + <VariousControls> + <MiscControls></MiscControls> + <Define></Define> + <Undefine></Undefine> + <IncludePath></IncludePath> + </VariousControls> + </Aads> + </GroupArmAds> + </GroupOption> + <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.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\net\lwip\src\core\memp.c</FilePath> + </File> + </Files> + </Group> + <Group> + <GroupName>filesystem</GroupName> + <GroupOption> + <CommonProperty> + <UseCPPCompiler>0</UseCPPCompiler> + <RVCTCodeConst>0</RVCTCodeConst> + <RVCTZI>0</RVCTZI> + <RVCTOtherData>0</RVCTOtherData> + <ModuleSelection>0</ModuleSelection> + <IncludeInBuild>0</IncludeInBuild> + <AlwaysBuild>0</AlwaysBuild> + <GenerateAssemblyFile>2</GenerateAssemblyFile> + <AssembleAssemblyFile>2</AssembleAssemblyFile> + <PublicsOnly>2</PublicsOnly> + <StopOnExitCode>11</StopOnExitCode> + <CustomArgument></CustomArgument> + <IncludeLibraryModules></IncludeLibraryModules> + </CommonProperty> + <GroupArmAds> + <Cads> + <interw>2</interw> + <Optim>0</Optim> + <oTime>2</oTime> + <SplitLS>2</SplitLS> + <OneElfS>2</OneElfS> + <Strict>2</Strict> + <EnumInt>2</EnumInt> + <PlainCh>2</PlainCh> + <Ropi>2</Ropi> + <Rwpi>2</Rwpi> + <wLevel>0</wLevel> + <uThumb>2</uThumb> + <VariousControls> + <MiscControls></MiscControls> + <Define></Define> + <Undefine></Undefine> + <IncludePath></IncludePath> + </VariousControls> + </Cads> + <Aads> + <interw>2</interw> + <Ropi>2</Ropi> + <Rwpi>2</Rwpi> + <thumb>2</thumb> + <SplitLS>2</SplitLS> + <SwStkChk>2</SwStkChk> + <NoWarn>2</NoWarn> + <VariousControls> + <MiscControls></MiscControls> + <Define></Define> + <Undefine></Undefine> + <IncludePath></IncludePath> + </VariousControls> + </Aads> + </GroupArmAds> + </GroupOption> + <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/sep4020/rtconfig.h b/bsp/sep4020/rtconfig.h new file mode 100644 index 0000000000..6a47581def --- /dev/null +++ b/bsp/sep4020/rtconfig.h @@ -0,0 +1,150 @@ +/* RT-Thread config file */
+#ifndef __RTTHREAD_CFG_H__
+#define __RTTHREAD_CFG_H__
+
+/* RT_NAME_MAX*/
+#define RT_NAME_MAX 8
+
+/* RT_ALIGN_SIZE*/
+#define RT_ALIGN_SIZE 4
+
+/* PRIORITY_MAX*/
+#define RT_THREAD_PRIORITY_MAX 32
+
+/* Tick per Second*/
+#define RT_TICK_PER_SECOND 100
+
+/* SECTION: RT_DEBUG */
+/* Thread Debug*/
+/* #define RT_THREAD_DEBUG */
+
+/* Using Hook*/
+#define RT_USING_HOOK
+
+/* SECTION: IPC */
+/* Using Semaphore*/
+#define RT_USING_SEMAPHORE
+
+/* Using Mutex*/
+#define RT_USING_MUTEX
+
+/* Using Event*/
+#define RT_USING_EVENT
+
+/* Using Faset Event*/
+/* #define RT_USING_FASTEVENT */
+
+/* Using MailBox*/
+#define RT_USING_MAILBOX
+
+/* Using Message Queue*/
+#define RT_USING_MESSAGEQUEUE
+
+/* SECTION: Memory Management */
+/* Using Memory Pool Management*/
+#define RT_USING_MEMPOOL
+
+/* Using Dynamic Heap Management*/
+#define RT_USING_HEAP
+
+/* Using Small MM*/
+#define RT_USING_SMALL_MEM
+#define RT_MEM_STATS
+
+/* Using SLAB Allocator*/
+/* #define RT_USING_SLAB */
+
+/* SECTION: Device System */
+/* Using Device System*/
+#define RT_USING_DEVICE
+#define RT_USING_UART1
+#define RT_UART_RX_BUFFER_SIZE 128
+
+/* SECTION: Console options */
+/* the buffer size of console*/
+#define RT_CONSOLEBUF_SIZE 128
+
+/* SECTION: FinSH shell options */
+/* Using FinSH as Shell*/
+#define RT_USING_FINSH
+/* use symbol table */
+#define FINSH_USING_SYMTAB
+#define FINSH_USING_DESCRIPTION
+
+/* SECTION: a mini libc */
+/* Using mini libc library*/
+/* #define RT_USING_MINILIBC */
+
+/* SECTION: C++ support */
+/* Using C++ support*/
+/* #define RT_USING_CPLUSPLUS */
+
+/* SECTION: lwip, a lighwight TCP/IP protocol stack */
+/* Using lighweight TCP/IP protocol stack*/
+//#define RT_USING_LWIP
+
+/* Trace LwIP protocol*/
+/* #define RT_LWIP_DEBUG */
+
+/* LwIP tcp thread option */
+#define RT_LWIP_TCPTHREAD_PRIORITY 8
+#define RT_LWIP_TCPTHREAD_STACKSIZE 4096
+#define RT_LWIP_TCPTHREAD_MBOX_SIZE 32
+
+/* LwIP eth thread option */
+#define RT_LWIP_ETHTHREAD_PRIORITY 15
+#define RT_LWIP_ETHTHREAD_STACKSIZE 1024
+#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8
+
+/* Enable ICMP protocol*/
+#define RT_LWIP_ICMP
+
+/* Enable IGMP protocol*/
+#define RT_LWIP_IGMP
+
+/* Enable UDP protocol*/
+#define RT_LWIP_UDP
+
+/* Enable TCP protocol*/
+#define RT_LWIP_TCP
+
+/* the number of simulatenously active TCP connections*/
+#define RT_LWIP_TCP_PCB_NUM 5
+
+/* TCP sender buffer space*/
+#define RT_LWIP_TCP_SND_BUF 1500
+
+/* Enable SNMP protocol*/
+/* #define RT_LWIP_SNMP */
+
+/* Using DHCP*/
+/* #define RT_LWIP_DHCP */
+
+/* ip address of target*/
+#define RT_LWIP_IPADDR0 192
+#define RT_LWIP_IPADDR1 168
+#define RT_LWIP_IPADDR2 1
+#define RT_LWIP_IPADDR3 30
+
+/* gateway address of target*/
+#define RT_LWIP_GWADDR0 192
+#define RT_LWIP_GWADDR1 168
+#define RT_LWIP_GWADDR2 1
+#define RT_LWIP_GWADDR3 1
+
+/* mask address of target*/
+#define RT_LWIP_MSKADDR0 255
+#define RT_LWIP_MSKADDR1 255
+#define RT_LWIP_MSKADDR2 255
+#define RT_LWIP_MSKADDR3 0
+
+/* SECTION: DFS options */
+//#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
+ +#endif
diff --git a/bsp/sep4020/rtthread-sep4020-rom.sct b/bsp/sep4020/rtthread-sep4020-rom.sct new file mode 100644 index 0000000000..c28581f0d1 --- /dev/null +++ b/bsp/sep4020/rtthread-sep4020-rom.sct @@ -0,0 +1,15 @@ +; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_ROM1 0x00000000 0x00200000 { ; load region size_region
+ ER_ROM1 0x00000000 0x00200000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_RAM1 0x30000000 0x32000000 { ; RW data
+ .ANY (+RW +ZI)
+ }
+}
+
diff --git a/bsp/sep4020/rtthread-sep4020-sdram.sct b/bsp/sep4020/rtthread-sep4020-sdram.sct new file mode 100644 index 0000000000..bac01fca63 --- /dev/null +++ b/bsp/sep4020/rtthread-sep4020-sdram.sct @@ -0,0 +1,15 @@ +; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_ROM1 0x30000000 0x02000000 { ; load region size_region
+ ER_ROM1 0x30000000 0x02000000 { ; load address = execution address
+ *.o (RESET, +First)
+ *(InRoot$$Sections)
+ .ANY (+RO)
+ }
+ RW_RAM1 0x31000000{
+ .ANY (+RW +ZI)
+ }
+}
+
diff --git a/bsp/sep4020/sep4020.h b/bsp/sep4020/sep4020.h new file mode 100644 index 0000000000..06a50f8efa --- /dev/null +++ b/bsp/sep4020/sep4020.h @@ -0,0 +1,637 @@ +/*************************************************************************************
+ *
+ * File name: sep4020.h
+ *
+ * Change Logs: + * Date Author Notes
+ * 2010-03-17 zchong first version
+ **************************************************************************************/
+
+#ifndef __SEP4020_H__
+#define __SEP4020_H__
+
+/*************************************
+ macros for INTC
+*************************************/
+
+/*interrupt resources */
+
+#define INTGLOBAL 32
+
+#define INT_RTC 31
+#define INT_DMAC 30
+#define INT_EMI 29
+#define INT_MAC 28
+#define INT_TIMER1 27
+#define INT_TIMER2 26
+#define INT_TIMER3 25
+#define INT_UART0 24
+#define INT_UART1 23
+#define INT_UART2 22
+#define INT_UART3 21
+#define INT_PWM 20
+#define INT_LCDC 19
+#define INT_I2S 18
+#define INT_SSI 17
+#define INT_NOTUSED16 16
+#define INT_USB 15
+#define INT_SMC0 14
+#define INT_SMC1 13
+#define INT_SDIO 12
+#define INT_EXINT10 11
+#define INT_EXINT9 10
+#define INT_EXINT8 9
+#define INT_EXINT7 8
+#define INT_EXINT6 7
+#define INT_EXINT5 6
+#define INT_EXINT4 5
+#define INT_EXINT3 4
+#define INT_EXINT2 3
+#define INT_EXINT1 2
+#define INT_EXINT0 1
+#define INT_NOTUSED0 0
+
+/******************************************************************************************
+ * INTC�
+ * ��ַ: 0x10000000
+ ******************************************************************************************/
+
+#define INTC_IER (*(volatile unsigned *)0x10000000) /* IRQ interrupt enable register */
+#define INTC_IMR (*(volatile unsigned *)0x10000008) /* IRQ interrupt mask register */
+#define INTC_IFR (*(volatile unsigned *)0x10000010) /* IRQ����ǿ���жϼĴ��� */
+#define INTC_IRSR (*(volatile unsigned *)0x10000018) /* IRQδ�����ж�״̬�Ĵ��� */
+#define INTC_ISR (*(volatile unsigned *)0x10000020) /* IRQ�ж�״̬�Ĵ��� */
+#define INTC_IMSR (*(volatile unsigned *)0x10000028) /* IRQ�����ж�״̬�Ĵ��� */
+#define INTC_IFSR (*(volatile unsigned *)0x10000030) /* IRQ�ж�����״̬�Ĵ��� */
+#define INTC_FIER (*(volatile unsigned *)0x100000C0) /* FIQ�ж������Ĵ��� */
+#define INTC_FIMR (*(volatile unsigned *)0x100000C4) /* FIQ�ж����μĴ��� */
+#define INTC_FIFR (*(volatile unsigned *)0x100000C8) /* FIQ����ǿ���жϼĴ��� */
+#define INTC_FIRSR (*(volatile unsigned *)0x100000CC) /* FIQδ�����ж�״̬�Ĵ��� */
+#define INTC_FISR (*(volatile unsigned *)0x100000D0) /* FIQ�ж�״̬�Ĵ��� */
+#define INTC_FIFSR (*(volatile unsigned *)0x100000D4) /* FIQ�ж�����״̬�Ĵ��� */
+#define INTC_IPLR (*(volatile unsigned *)0x100000D8) /* IRQ�ж����ȼ��Ĵ��� */
+#define INTC_ICR1 (*(volatile unsigned *)0x100000DC) /* IRQ�ڲ��ж����ȼ����ƼĴ���1 */
+#define INTC_ICR2 (*(volatile unsigned *)0x100000E0) /* IRQ�ڲ��ж����ȼ����ƼĴ���2 */
+#define INTC_EXICR1 (*(volatile unsigned *)0x100000E4) /* IRQ�ⲿ�ж����ȼ����ƼĴ���1 */
+#define INTC_EXICR2 (*(volatile unsigned *)0x100000E8) /* IRQ�ⲿ�ж����ȼ����ƼĴ���2 */
+
+
+/******************************************************************************************
+ * PMC�
+ * ��ַ: 0x10001000
+ ******************************************************************************************/
+
+#define PMC_PLTR (*(volatile unsigned *)0x10001000) /* PLL���ȶ�����ʱ�� */
+#define PMC_PMCR (*(volatile unsigned *)0x10001004) /* ϵͳ��ʱ��PLL�Ŀ��ƼĴ��� */
+#define PMC_PUCR (*(volatile unsigned *)0x10001008) /* USBʱ��PLL�Ŀ��ƼĴ��� */
+#define PMC_PCSR (*(volatile unsigned *)0x1000100C) /* �ڲ�ģ��ʱ��Դ�����Ŀ��ƼĴ��� */
+#define PMC_PDSLOW (*(volatile unsigned *)0x10001010) /* SLOW״̬��ʱ�ӵķ�Ƶ���� */
+#define PMC_PMDR (*(volatile unsigned *)0x10001014) /* оƬ����ģʽ�Ĵ��� */
+#define PMC_RCTR (*(volatile unsigned *)0x10001018) /* Reset���ƼĴ��� */
+#define PMC_CLRWAKUP (*(volatile unsigned *)0x1000101C) /* WakeUp����Ĵ��� */
+
+
+/******************************************************************************************
+ * RTC�
+ * ��ַ: 0x10002000
+ ******************************************************************************************/
+
+#define RTC_STA_YMD (*(volatile unsigned *)0x10002000) /* ��, ��, �ռ����Ĵ��� */
+#define RTC_STA_HMS (*(volatile unsigned *)0x10002004) /* Сʱ, ����, ��Ĵ��� */
+#define RTC_ALARM_ALL (*(volatile unsigned *)0x10002008) /* ��ʱ��, ��, ʱ, �ּĴ��� */
+#define RTC_CTR (*(volatile unsigned *)0x1000200C) /* ���ƼĴ��� */
+#define RTC_INT_EN (*(volatile unsigned *)0x10002010) /* �ж�ʹ�ܼĴ��� */
+#define RTC_INT_STS (*(volatile unsigned *)0x10002014) /* �ж�״̬�Ĵ��� */
+#define RTC_SAMP (*(volatile unsigned *)0x10002018) /* �������ڼĴ��� */
+#define RTC_WD_CNT (*(volatile unsigned *)0x1000201C) /* Watch-Dog����ֵ�Ĵ��� */
+#define RTC_WD_SEV (*(volatile unsigned *)0x10002020) /* Watch-Dog����Ĵ��� */
+#define RTC_CONFIG_CHECK (*(volatile unsigned *)0x10002024) /* ����ʱ��ȷ�ϼĴ��� (������ʱ��֮ǰ��д0xaaaaaaaa) */
+#define RTC_SOFTRESET (*(volatile unsigned *)0x10002028) /* ������λ���ƼĴ���, 4020�б�ȥ���� */
+#define RTC_KEY0 (*(volatile unsigned *)0x1000202C) /* ��Կ�Ĵ���0, 4020��ֻ����һ���Ĵ��� */
+#define RTC_KEY1 (*(volatile unsigned *)0x10002030) /* ��Կ�Ĵ���1 */
+#define RTC_KEY2 (*(volatile unsigned *)0x10002034) /* ��Կ�Ĵ���2 */
+#define RTC_KEY3 (*(volatile unsigned *)0x10002038) /* ��Կ�Ĵ���3 */
+#define RTC_KEY4 (*(volatile unsigned *)0x1000203C) /* ��Կ�Ĵ���4 */
+#define RTC_KEY5 (*(volatile unsigned *)0x10002040) /* ��Կ�Ĵ���5 */
+
+
+/******************************************************************************************
+ * TIMER�
+ * ��ַ: 0x10003000
+ ******************************************************************************************/
+
+#define TIMER_T1LCR (*(volatile unsigned *)0x10003000) /* ͨ��1���ؼ����Ĵ��� */
+#define TIMER_T1CCR (*(volatile unsigned *)0x10003004) /* ͨ��1��ǰ����ֵ�Ĵ��� */
+#define TIMER_T1CR (*(volatile unsigned *)0x10003008) /* ͨ��1���ƼĴ��� */
+#define TIMER_T1ISCR (*(volatile unsigned *)0x1000300C) /* ͨ��1�ж�״̬����Ĵ��� */
+#define TIMER_T1IMSR (*(volatile unsigned *)0x10003010) /* ͨ��1�ж�����״̬�Ĵ��� */
+#define TIMER_T2LCR (*(volatile unsigned *)0x10003020) /* ͨ��2���ؼ����Ĵ��� */
+#define TIMER_T2CCR (*(volatile unsigned *)0x10003024) /* ͨ��2��ǰ����ֵ�Ĵ��� */
+#define TIMER_T2CR (*(volatile unsigned *)0x10003028) /* ͨ��2���ƼĴ��� */
+#define TIMER_T2ISCR (*(volatile unsigned *)0x1000302C) /* ͨ��2�ж�״̬����Ĵ��� */
+#define TIMER_T2IMSR (*(volatile unsigned *)0x10003030) /* ͨ��2�ж�����״̬�Ĵ��� */
+#define TIMER_T3LCR (*(volatile unsigned *)0x10003040) /* ͨ��3���ؼ����Ĵ��� */
+#define TIMER_T3CCR (*(volatile unsigned *)0x10003044) /* ͨ��3��ǰ����ֵ�Ĵ��� */
+#define TIMER_T3CR (*(volatile unsigned *)0x10003048) /* ͨ��3���ƼĴ��� */
+#define TIMER_T3ISCR (*(volatile unsigned *)0x1000304C) /* ͨ��3�ж�״̬����Ĵ��� */
+#define TIMER_T3IMSR (*(volatile unsigned *)0x10003050) /* ͨ��3�ж�����״̬�Ĵ��� */
+#define TIMER_T3CAPR (*(volatile unsigned *)0x10003054) /* ͨ��3����Ĵ��� */
+#define TIMER_T4LCR (*(volatile unsigned *)0x10003060) /* ͨ��4���ؼ����Ĵ��� */
+#define TIMER_T4CCR (*(volatile unsigned *)0x10003064) /* ͨ��4��ǰ����ֵ�Ĵ��� */
+#define TIMER_T4CR (*(volatile unsigned *)0x10003068) /* ͨ��4���ƼĴ��� */
+#define TIMER_T4ISCR (*(volatile unsigned *)0x1000306C) /* ͨ��4�ж�״̬����Ĵ��� */
+#define TIMER_T4IMSR (*(volatile unsigned *)0x10003070) /* ͨ��4�ж�����״̬�Ĵ��� */
+#define TIMER_T4CAPR (*(volatile unsigned *)0x10003074) /* ͨ��4����Ĵ��� */
+#define TIMER_T5LCR (*(volatile unsigned *)0x10003080) /* ͨ��5���ؼ����Ĵ��� */
+#define TIMER_T5CCR (*(volatile unsigned *)0x10003084) /* ͨ��5��ǰ����ֵ�Ĵ��� */
+#define TIMER_T5CR (*(volatile unsigned *)0x10003088) /* ͨ��5���ƼĴ��� */
+#define TIMER_T5ISCR (*(volatile unsigned *)0x1000308C) /* ͨ��5�ж�״̬����Ĵ��� */
+#define TIMER_T5IMSR (*(volatile unsigned *)0x10003090) /* ͨ��5�ж�����״̬�Ĵ��� */
+#define TIMER_T5CAPR (*(volatile unsigned *)0x10003094) /* ͨ��5����Ĵ��� */
+#define TIMER_T6LCR (*(volatile unsigned *)0x100030A0) /* ͨ��6���ؼ����Ĵ��� */
+#define TIMER_T6CCR (*(volatile unsigned *)0x100030A4) /* ͨ��6��ǰ����ֵ�Ĵ��� */
+#define TIMER_T6CR (*(volatile unsigned *)0x100030A8) /* ͨ��6���ƼĴ��� */
+#define TIMER_T6ISCR (*(volatile unsigned *)0x100030AC) /* ͨ��6�ж�״̬����Ĵ��� */
+#define TIMER_T6IMSR (*(volatile unsigned *)0x100030B0) /* ͨ��6�ж�����״̬�Ĵ��� */
+#define TIMER_T6CAPR (*(volatile unsigned *)0x100030B4) /* ͨ��6����Ĵ��� */
+#define TIMER_T7LCR (*(volatile unsigned *)0x100030C0) /* ͨ��7���ؼ����Ĵ��� */
+#define TIMER_T7CCR (*(volatile unsigned *)0x100030C4) /* ͨ��7��ǰ����ֵ�Ĵ��� */
+#define TIMER_T7CR (*(volatile unsigned *)0x100030C8) /* ͨ��7���ƼĴ��� */
+#define TIMER_T7ISCR (*(volatile unsigned *)0x100030CC) /* ͨ��7�ж�״̬����Ĵ��� */
+#define TIMER_T7IMSR (*(volatile unsigned *)0x100030D0) /* ͨ��7�ж�����״̬�Ĵ��� */
+#define TIMER_T8LCR (*(volatile unsigned *)0x100030E0) /* ͨ��8���ؼ����Ĵ��� */
+#define TIMER_T8CCR (*(volatile unsigned *)0x100030E4) /* ͨ��8��ǰ����ֵ�Ĵ��� */
+#define TIMER_T8CR (*(volatile unsigned *)0x100030E8) /* ͨ��8���ƼĴ��� */
+#define TIMER_T8ISCR (*(volatile unsigned *)0x100030EC) /* ͨ��8�ж�״̬����Ĵ��� */
+#define TIMER_T8IMSR (*(volatile unsigned *)0x100030F0) /* ͨ��8�ж�����״̬�Ĵ��� */
+#define TIMER_T9LCR (*(volatile unsigned *)0x10003100) /* ͨ��9���ؼ����Ĵ��� */
+#define TIMER_T9CCR (*(volatile unsigned *)0x10003104) /* ͨ��9��ǰ����ֵ�Ĵ��� */
+#define TIMER_T9CR (*(volatile unsigned *)0x10003108) /* ͨ��9���ƼĴ��� */
+#define TIMER_T9ISCR (*(volatile unsigned *)0x1000310C) /* ͨ��9�ж�״̬����Ĵ��� */
+#define TIMER_T9IMSR (*(volatile unsigned *)0x10003110) /* ͨ��9�ж�����״̬�Ĵ��� */
+#define TIMER_T10LCR (*(volatile unsigned *)0x10003120) /* ͨ��10���ؼ����Ĵ��� */
+#define TIMER_T10CCR (*(volatile unsigned *)0x10003124) /* ͨ��10��ǰ����ֵ�Ĵ��� */
+#define TIMER_T10CR (*(volatile unsigned *)0x10003128) /* ͨ��10���ƼĴ��� */
+#define TIMER_T10ISCR (*(volatile unsigned *)0x1000312C) /* ͨ��10�ж�״̬����Ĵ��� */
+#define TIMER_T10IMSR (*(volatile unsigned *)0x10003130) /* ͨ��10�ж�����״̬�Ĵ��� */
+#define TIMER_TIMSR (*(volatile unsigned *)0x10003140) /* TIMER�ж�����״̬�Ĵ��� */
+#define TIMER_TISCR (*(volatile unsigned *)0x10003144) /* TIMER�ж�״̬����Ĵ��� */
+#define TIMER_TISR (*(volatile unsigned *)0x10003148) /* TIMER�ж�״̬�Ĵ��� */
+
+
+/******************************************************************************************
+ * PWM�
+ * ��ַ: 0x10004000
+ ******************************************************************************************/
+
+#define PWM1_CTRL (*(volatile unsigned *)0x10004000) /* PWM1���ƼĴ��� */
+#define PWM1_DIV (*(volatile unsigned *)0x10004004) /* PWM1��Ƶ�Ĵ��� */
+#define PWM1_PERIOD (*(volatile unsigned *)0x10004008) /* PWM1���ڼĴ��� */
+#define PWM1_DATA (*(volatile unsigned *)0x1000400C) /* PWM1���ݼĴ��� */
+#define PWM1_CNT (*(volatile unsigned *)0x10004010) /* PWM1�����Ĵ��� */
+#define PWM1_STATUS (*(volatile unsigned *)0x10004014) /* PWM1״̬�Ĵ��� */
+#define PWM2_CTRL (*(volatile unsigned *)0x10004020) /* PWM2���ƼĴ��� */
+#define PWM2_DIV (*(volatile unsigned *)0x10004024) /* PWM2��Ƶ�Ĵ��� */
+#define PWM2_PERIOD (*(volatile unsigned *)0x10004028) /* PWM2���ڼĴ��� */
+#define PWM2_DATA (*(volatile unsigned *)0x1000402C) /* PWM2���ݼĴ��� */
+#define PWM2_CNT (*(volatile unsigned *)0x10004030) /* PWM2�����Ĵ��� */
+#define PWM2_STATUS (*(volatile unsigned *)0x10004034) /* PWM2״̬�Ĵ��� */
+#define PWM3_CTRL (*(volatile unsigned *)0x10004040) /* PWM3���ƼĴ��� */
+#define PWM3_DIV (*(volatile unsigned *)0x10004044) /* PWM3��Ƶ�Ĵ��� */
+#define PWM3_PERIOD (*(volatile unsigned *)0x10004048) /* PWM3���ڼĴ��� */
+#define PWM3_DATA (*(volatile unsigned *)0x1000404C) /* PWM3���ݼĴ��� */
+#define PWM3_CNT (*(volatile unsigned *)0x10004050) /* PWM3�����Ĵ��� */
+#define PWM3_STATUS (*(volatile unsigned *)0x10004054) /* PWM3״̬�Ĵ��� */
+#define PWM4_CTRL (*(volatile unsigned *)0x10004060) /* PWM4���ƼĴ��� */
+#define PWM4_DIV (*(volatile unsigned *)0x10004064) /* PWM4��Ƶ�Ĵ��� */
+#define PWM4_PERIOD (*(volatile unsigned *)0x10004068) /* PWM4���ڼĴ��� */
+#define PWM4_DATA (*(volatile unsigned *)0x1000406C) /* PWM4���ݼĴ��� */
+#define PWM4_CNT (*(volatile unsigned *)0x10004070) /* PWM4�����Ĵ��� */
+#define PWM4_STATUS (*(volatile unsigned *)0x10004074) /* PWM4״̬�Ĵ��� */
+#define PWM_INTMASK (*(volatile unsigned *)0x10004080) /* PWM�ж����μĴ��� */
+#define PWM_INT (*(volatile unsigned *)0x10004084) /* PWM�жϼĴ��� */
+#define PWM_ENABLE (*(volatile unsigned *)0x10004088) /* PWMʹ�ܼĴ��� */
+
+
+/******************************************************************************************
+ * UART0�
+ * ��ַ: 0x10005000
+ ******************************************************************************************/
+#define UART0BASE ((volatile unsigned *)0x10005000)
+#define UART0_DLBL (*(volatile unsigned char*)0x10005000) /* ���������õͰ�λ�Ĵ��� */
+#define UART0_RXFIFO (*(volatile unsigned char*)0x10005000) /* ����FIFO */
+#define UART0_TXFIFO (*(volatile unsigned char*)0x10005000) /* ����FIFO */
+#define UART0_DLBH (*(volatile unsigned char*)0x10005004) /* ���������ø߰�λ�Ĵ��� */
+#define UART0_IER (*(volatile unsigned char*)0x10005004) /* �ж�ʹ�ܼĴ��� */
+#define UART0_IIR (*(volatile unsigned *)0x10005008) /* �ж�ʶ��Ĵ��� */
+#define UART0_FCR (*(volatile unsigned *)0x10005008) /* FIFO���ƼĴ��� */
+#define UART0_LCR (*(volatile unsigned *)0x1000500C) /* �п��ƼĴ��� */
+#define UART0_MCR (*(volatile unsigned *)0x10005010) /* Modem���ƼĴ��� */
+#define UART0_LSR (*(volatile unsigned *)0x10005014) /* ��״̬�Ĵ��� */
+#define UART0_MSR (*(volatile unsigned *)0x10005018) /* Modem״̬�Ĵ��� */
+
+
+/******************************************************************************************
+ * UART1�
+ * ��ַ: 0x10006000
+ ******************************************************************************************/
+ #define UART1BASE ((volatile unsigned *)0x10006000)
+#define UART1_DLBL (*(volatile unsigned *)0x10006000) /* ���������õͰ�λ�Ĵ��� */
+#define UART1_RXFIFO (*(volatile unsigned *)0x10006000) /* ����FIFO */
+#define UART1_TXFIFO (*(volatile unsigned *)0x10006000) /* ����FIFO */
+#define UART1_DLBH (*(volatile unsigned *)0x10006004) /* ���������ø߰�λ�Ĵ��� */
+#define UART1_IER (*(volatile unsigned *)0x10006004) /* �ж�ʹ�ܼĴ��� */
+#define UART1_IIR (*(volatile unsigned *)0x10006008) /* �ж�ʶ��Ĵ��� */
+#define UART1_FCR (*(volatile unsigned *)0x10006008) /* FIFO���ƼĴ��� */
+#define UART1_LCR (*(volatile unsigned *)0x1000600C) /* �п��ƼĴ��� */
+#define UART1_MCR (*(volatile unsigned *)0x10006010) /* Modem���ƼĴ��� */
+#define UART1_LSR (*(volatile unsigned *)0x10006014) /* ��״̬�Ĵ��� */
+#define UART1_MSR (*(volatile unsigned *)0x10006018) /* Modem״̬�Ĵ��� */
+
+
+/******************************************************************************************
+ * UART2�
+ * ��ַ: 0x10007000
+ ******************************************************************************************/
+#define UART2BASE ((volatile unsigned *)0x10007000)
+#define UART2_DLBL (*(volatile unsigned *)0x10007000) /* ���������õͰ�λ�Ĵ��� */
+#define UART2_RXFIFO (*(volatile unsigned *)0x10007000) /* ����FIFO */
+#define UART2_TXFIFO (*(volatile unsigned *)0x10007000) /* ����FIFO */
+#define UART2_DLBH (*(volatile unsigned *)0x10007004) /* ���������ø߰�λ�Ĵ��� */
+#define UART2_IER (*(volatile unsigned *)0x10007004) /* �ж�ʹ�ܼĴ��� */
+#define UART2_IIR (*(volatile unsigned *)0x10007008) /* �ж�ʶ��Ĵ��� */
+#define UART2_FCR (*(volatile unsigned *)0x10007008) /* FIFO���ƼĴ��� */
+#define UART2_LCR (*(volatile unsigned *)0x1000700C) /* �п��ƼĴ��� */
+#define UART2_MCR (*(volatile unsigned *)0x10007010) /* Modem���ƼĴ��� */
+#define UART2_LSR (*(volatile unsigned *)0x10007014) /* ��״̬�Ĵ��� */
+#define UART2_MSR (*(volatile unsigned *)0x10007018) /* Modem״̬�Ĵ��� */
+
+
+/******************************************************************************************
+ * UART3�
+ * ��ַ: 0x10008000
+ ******************************************************************************************/
+#define UART3BASE ((volatile unsigned *)0x10008000)
+#define UART3_DLBL (*(volatile unsigned *)0x10008000) /* ���������õͰ�λ�Ĵ��� */
+#define UART3_RXFIFO (*(volatile unsigned *)0x10008000) /* ����FIFO */
+#define UART3_TXFIFO (*(volatile unsigned *)0x10008000) /* ����FIFO */
+#define UART3_DLBH (*(volatile unsigned *)0x10008004) /* ���������ø߰�λ�Ĵ��� */
+#define UART3_IER (*(volatile unsigned *)0x10008004) /* �ж�ʹ�ܼĴ��� */
+#define UART3_IIR (*(volatile unsigned *)0x10008008) /* �ж�ʶ��Ĵ��� */
+#define UART3_FCR (*(volatile unsigned *)0x10008008) /* FIFO���ƼĴ��� */
+#define UART3_LCR (*(volatile unsigned *)0x1000800C) /* �п��ƼĴ��� */
+#define UART3_MCR (*(volatile unsigned *)0x10008010) /* Modem���ƼĴ��� */
+#define UART3_LSR (*(volatile unsigned *)0x10008014) /* ��״̬�Ĵ��� */
+#define UART3_MSR (*(volatile unsigned *)0x10008018) /* Modem״̬�Ĵ��� */
+
+
+/******************************************************************************************
+ * SSI�
+ * ��ַ: 0x10009000
+ ******************************************************************************************/
+
+#define SSI_CONTROL0 (*(volatile unsigned *)0x10009000) /* ���ƼĴ���0 */
+#define SSI_CONTROL1 (*(volatile unsigned *)0x10009004) /* ���ƼĴ���1 */
+#define SSI_SSIENR (*(volatile unsigned *)0x10009008) /* SSIʹ�ܼĴ��� */
+#define SSI_MWCR (*(volatile unsigned *)0x1000900C) /* Microwire���ƼĴ��� */
+#define SSI_SER (*(volatile unsigned *)0x10009010) /* ���豸ʹ�ܼĴ��� */
+#define SSI_BAUDR (*(volatile unsigned *)0x10009014) /* ���������üĴ��� */
+#define SSI_TXFTLR (*(volatile unsigned *)0x10009018) /* ����FIFO��ֵ�Ĵ��� */
+#define SSI_RXFTLR (*(volatile unsigned *)0x1000901C) /* ����FIFO��ֵ�Ĵ��� */
+#define SSI_TXFLR (*(volatile unsigned *)0x10009020) /* ����FIFO״̬�Ĵ��� */
+#define SSI_RXFLR (*(volatile unsigned *)0x10009024) /* ����FIFO״̬�Ĵ��� */
+#define SSI_SR (*(volatile unsigned *)0x10009028) /* ״̬�Ĵ��� */
+#define SSI_IMR (*(volatile unsigned *)0x1000902C) /* �ж����μĴ��� */
+#define SSI_ISR (*(volatile unsigned *)0x10009030) /* �ж�����״̬�Ĵ��� */
+#define SSI_RISR (*(volatile unsigned *)0x10009034) /* �ж�ԭʼ״̬�Ĵ��� */
+#define SSI_TXOICR (*(volatile unsigned *)0x10009038) /* ����FIFO�����ж�����Ĵ��� */
+#define SSI_RXOICR (*(volatile unsigned *)0x1000903C) /* ����FIFO�����ж�����Ĵ��� */
+#define SSI_RXUICR (*(volatile unsigned *)0x10009040) /* ����FIFO�����ж�����Ĵ��� */
+#define SSI_ICR (*(volatile unsigned *)0x1000902C) /* �ж�����Ĵ��� */
+#define SSI_DMACR (*(volatile unsigned *)0x1000904C) /* DMA���ƼĴ��� */
+#define SSI_DMATDLR (*(volatile unsigned *)0x10009050) /* DMA����״̬�Ĵ��� */
+#define SSI_DMARDLR (*(volatile unsigned *)0x10009054) /* DMA����״̬�Ĵ��� */
+#define SSI_DR (*(volatile unsigned *)0x10009060) /* ���ݼĴ��� */
+
+
+/******************************************************************************************
+ * I2S�
+ * ��ַ: 0x1000A000
+ ******************************************************************************************/
+
+#define I2S_CTRL (*(volatile unsigned *)0x1000A000) /* I2S���ƼĴ��� */
+#define I2S_DATA (*(volatile unsigned *)0x1000A004) /* I2S���ݼĴ��� */
+#define I2S_INT (*(volatile unsigned *)0x1000A008) /* I2S�жϼĴ��� */
+#define I2S_STATUS (*(volatile unsigned *)0x1000A00C) /* I2S״̬�Ĵ��� */
+
+
+/******************************************************************************************
+ * GPIO�
+ * ��ַ: 0x1000F000
+ ******************************************************************************************/
+
+#define GPIO_DBCLK_DIV (*(volatile unsigned *)0x1000F000) /* ȥë�̲���ʱ�ӷ�Ƶ�����üĴ��� */
+#define GPIO_PORTA_DIR (*(volatile unsigned *)0x1000F004) /* A��˿���������������üĴ��� */
+#define GPIO_PORTA_SEL (*(volatile unsigned *)0x1000F008) /* A��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTA_INCTL (*(volatile unsigned *)0x1000F00C) /* A��˿�ͨ����;����ʱ�������üĴ��� */
+#define GPIO_PORTA_INTRCTL (*(volatile unsigned *)0x1000F010) /* A��˿��жϴ����������üĴ��� */
+#define GPIO_PORTA_INTRCLR (*(volatile unsigned *)0x1000F014) /* A��˿�ͨ����;�ж�������üĴ��� */
+#define GPIO_PORTA_DATA (*(volatile unsigned *)0x1000F018) /* A��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTB_DIR (*(volatile unsigned *)0x1000F01C) /* B��˿���������������üĴ��� */
+#define GPIO_PORTB_SEL (*(volatile unsigned *)0x1000F020) /* B��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTB_DATA (*(volatile unsigned *)0x1000F024) /* B��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTC_DIR (*(volatile unsigned *)0x1000F028) /* C��˿���������������üĴ��� */
+#define GPIO_PORTC_SEL (*(volatile unsigned *)0x1000F02C) /* C��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTC_DATA (*(volatile unsigned *)0x1000F030) /* C��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTD_DIR (*(volatile unsigned *)0x1000F034) /* D��˿���������������üĴ��� */
+#define GPIO_PORTD_SEL (*(volatile unsigned *)0x1000F038) /* D��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTD_SPECII (*(volatile unsigned *)0x1000F03C) /* D��˿�ר����;2ѡ�����üĴ��� */
+#define GPIO_PORTD_DATA (*(volatile unsigned *)0x1000F040) /* D��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTE_DIR (*(volatile unsigned *)0x1000F044) /* E��˿���������������üĴ��� */
+#define GPIO_PORTE_SEL (*(volatile unsigned *)0x1000F048) /* E��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTE_DATA (*(volatile unsigned *)0x1000F04C) /* E��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTF_DIR (*(volatile unsigned *)0x1000F050) /* F��˿���������������üĴ��� */
+#define GPIO_PORTF_SEL (*(volatile unsigned *)0x1000F054) /* F��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTF_INCTL (*(volatile unsigned *)0x1000F058) /* F��˿�ͨ����;����ʱ�������üĴ��� */
+#define GPIO_PORTF_INTRCTL (*(volatile unsigned *)0x1000F05C) /* F��˿��жϴ����������üĴ��� */
+#define GPIO_PORTF_INTRCLR (*(volatile unsigned *)0x1000F060) /* F��˿�ͨ����;�ж�������üĴ��� */
+#define GPIO_PORTF_DATA (*(volatile unsigned *)0x1000F064) /* F��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTG_DIR (*(volatile unsigned *)0x1000F068) /* G��˿���������������üĴ��� */
+#define GPIO_PORTG_SEL (*(volatile unsigned *)0x1000F06C) /* G��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTG_DATA (*(volatile unsigned *)0x1000F070) /* G��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTH_DIR (*(volatile unsigned *)0x1000F074) /* H��˿���������������üĴ��� */
+#define GPIO_PORTH_SEL (*(volatile unsigned *)0x1000F078) /* H��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTH_DATA (*(volatile unsigned *)0x1000F07c) /* H��˿�ͨ����;�������üĴ��� */
+#define GPIO_PORTI_DIR (*(volatile unsigned *)0x1000F080) /* I��˿���������������üĴ��� */
+#define GPIO_PORTI_SEL (*(volatile unsigned *)0x1000F084) /* I��˿�ͨ����;ѡ�����üĴ��� */
+#define GPIO_PORTI_DATA (*(volatile unsigned *)0x1000F088) /* I��˿�ͨ����;�������üĴ��� */
+
+
+/******************************************************************************************
+ * SMC0�
+ * ��ַ: 0x1000C000
+ ******************************************************************************************/
+
+#define SMC0_CTRL (*(volatile unsigned *)0x1000C000) /* SMC0���ƼĴ��� */
+#define SMC0_INT (*(volatile unsigned *)0x1000C004) /* SMC0�жϼĴ��� */
+#define SMC0_FD (*(volatile unsigned *)0x1000C008) /* SMC0������Ԫʱ��Ĵ��� */
+#define SMC0_CT (*(volatile unsigned *)0x1000C00C) /* SMC0�ַ�����ʱ��Ĵ��� */
+#define SMC0_BT (*(volatile unsigned *)0x1000C010) /* SMC0�鴫��ʱ��Ĵ��� */
+
+
+/******************************************************************************************
+ * SMC1�
+ * ��ַ: 0x1000D000
+ ******************************************************************************************/
+
+#define SMC1_CTRL (*(volatile unsigned *)0x1000D000) /* SMC1���ƼĴ��� */
+#define SMC1_INT (*(volatile unsigned *)0x1000D004) /* SMC1�жϼĴ��� */
+#define SMC1_FD (*(volatile unsigned *)0x1000D008) /* SMC1������Ԫʱ��Ĵ��� */
+#define SMC1_CT (*(volatile unsigned *)0x1000D00C) /* SMC1�ַ�����ʱ��Ĵ��� */
+#define SMC1_BT (*(volatile unsigned *)0x1000D010) /* SMC1�鴫��ʱ��Ĵ��� */
+
+
+/******************************************************************************************
+ * USBD�
+ * ��ַ: 0x1000E000
+ ******************************************************************************************/
+
+#define USBD_PROTOCOLINTR (*(volatile unsigned *)0x1000E000) /* USBЭ���жϼĴ��� */
+#define USBD_INTRMASK (*(volatile unsigned *)0x1000E004) /* USB�ж����μĴ��� */
+#define USBD_INTRCTRL (*(volatile unsigned *)0x1000E008) /* USB�ж����Ϳ��ƼĴ��� */
+#define USBD_EPINFO (*(volatile unsigned *)0x1000E00C) /* USB��˵�״̬�Ĵ��� */
+#define USBD_BCONFIGURATIONVALUE (*(volatile unsigned *)0x1000E010) /* SET_CCONFIGURATION��¼ */
+#define USBD_BMATTRIBUTES (*(volatile unsigned *)0x1000E014) /* ��ǰ�������ԼĴ��� */
+#define USBD_DEVSPEED (*(volatile unsigned *)0x1000E018) /* ��ǰ�豸�����ٶȼĴ��� */
+#define USBD_FRAMENUMBER (*(volatile unsigned *)0x1000E01C) /* ��¼��ǰSOF���ڵ�֡�� */
+#define USBD_EPTRANSACTIONS0 (*(volatile unsigned *)0x1000E020) /* ��¼�´�Ҫ��Ĵ������ */
+#define USBD_EPTRANSACTIONS1 (*(volatile unsigned *)0x1000E024) /* ��¼�´�Ҫ��Ĵ������ */
+#define USBD_APPIFUPDATE (*(volatile unsigned *)0x1000E028) /* �ӿںſ��ٸ��¼Ĵ��� */
+#define USBD_CFGINTERFACE0 (*(volatile unsigned *)0x1000E02c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE1 (*(volatile unsigned *)0x1000E030) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE2 (*(volatile unsigned *)0x1000E034) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE3 (*(volatile unsigned *)0x1000E038) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE4 (*(volatile unsigned *)0x1000E03c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE5 (*(volatile unsigned *)0x1000E040) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE6 (*(volatile unsigned *)0x1000E044) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE7 (*(volatile unsigned *)0x1000E048) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE8 (*(volatile unsigned *)0x1000E04c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE9 (*(volatile unsigned *)0x1000E050) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE10 (*(volatile unsigned *)0x1000E054) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE11 (*(volatile unsigned *)0x1000E058) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE12 (*(volatile unsigned *)0x1000E05c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE13 (*(volatile unsigned *)0x1000E060) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE14 (*(volatile unsigned *)0x1000E064) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE15 (*(volatile unsigned *)0x1000E068) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE16 (*(volatile unsigned *)0x1000E06c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE17 (*(volatile unsigned *)0x1000E070) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE18 (*(volatile unsigned *)0x1000E074) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE19 (*(volatile unsigned *)0x1000E078) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE20 (*(volatile unsigned *)0x1000E07c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE21 (*(volatile unsigned *)0x1000E080) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE22 (*(volatile unsigned *)0x1000E084) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE23 (*(volatile unsigned *)0x1000E088) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE24 (*(volatile unsigned *)0x1000E08c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE25 (*(volatile unsigned *)0x1000E090) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE26 (*(volatile unsigned *)0x1000E094) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE27 (*(volatile unsigned *)0x1000E098) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE28 (*(volatile unsigned *)0x1000E09c) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE29 (*(volatile unsigned *)0x1000E0a0) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE30 (*(volatile unsigned *)0x1000E0a4) /* ��¼�ӿڵ�ֵ */
+#define USBD_CFGINTERFACE31 (*(volatile unsigned *)0x1000E0a8) /* ��¼�ӿڵ�ֵ */
+#define USBD_PKTPASSEDCTRL (*(volatile unsigned *)0x1000E0ac) /* ��¼�ɹ����յİ��� */
+#define USBD_PKTDROPPEDCTRL (*(volatile unsigned *)0x1000E0b0) /* ��¼��ʧ�İ��� */
+#define USBD_CRCERRCTRL (*(volatile unsigned *)0x1000E0b4) /* ��¼CRC����İ��� */
+#define USBD_BITSTUFFERRCTRL (*(volatile unsigned *)0x1000E0b8) /* ��¼λ������İ��� */
+#define USBD_PIDERRCTRL (*(volatile unsigned *)0x1000E0bc) /* ��¼PID����İ��� */
+#define USBD_FRAMINGERRCTL (*(volatile unsigned *)0x1000E0c0) /* ��¼��SYNC��EOP�İ��� */
+#define USBD_TXPKTCTRL (*(volatile unsigned *)0x1000E0c4) /* ��¼���Ͱ������� */
+#define USBD_STATCTRLOV (*(volatile unsigned *)0x1000E0c8) /* ��¼ͳ�ƼĴ��������� */
+#define USBD_TXLENGTH (*(volatile unsigned *)0x1000E0cc) /* ��¼ÿ��IN������������� */
+#define USBD_RXLENGTH (*(volatile unsigned *)0x1000E0d0) /* ��¼OUT������������� */
+#define USBD_RESUME (*(volatile unsigned *)0x1000E0d4) /* USB���ѼĴ��� */
+#define USBD_READFLAG (*(volatile unsigned *)0x1000E0d8) /* ���첽״̬�Ĵ�����־ */
+#define USBD_RECEIVETYPE (*(volatile unsigned *)0x1000E0dc) /* ����״̬�Ĵ��� */
+#define USBD_APPLOCK (*(volatile unsigned *)0x1000E0e0) /* ���źżĴ��� */
+#define USBD_EP0OUTADDR (*(volatile unsigned *)0x1000E100) /* �˵�0�˵�źͷ��� */
+#define USBD_EP0OUTBMATTR (*(volatile unsigned *)0x1000E104) /* �˵�0���ͼĴ��� */
+#define USBD_EP0OUTMAXPKTSIZE (*(volatile unsigned *)0x1000E108) /* �˵�0�����ߴ�Ĵ��� */
+#define USBD_EP0OUTIFNUM (*(volatile unsigned *)0x1000E10c) /* �˵�0�ӿںżĴ��� */
+#define USBD_EP0OUTSTAT (*(volatile unsigned *)0x1000E110) /* �˵�0״̬�Ĵ��� */
+#define USBD_EP0OUTBMREQTYPE (*(volatile unsigned *)0x1000E114) /* �˵�0 SETUP���������� */
+#define USBD_EP0OUTBREQUEST (*(volatile unsigned *)0x1000E118) /* �˵�0 SETUP������������ */
+#define USBD_EP0OUTWVALUE (*(volatile unsigned *)0x1000E11c) /* �˵�0 SETUP��������ֵ */
+#define USBD_EP0OUTWINDEX (*(volatile unsigned *)0x1000E120) /* �˵�0 SETUP������������ */
+#define USBD_EP0OUTWLENGTH (*(volatile unsigned *)0x1000E120) /* �˵�0 SETUP�������� */
+#define USBD_EP0OUTSYNCHFRAME (*(volatile unsigned *)0x1000E128) /* �˵�0ͬ����֡�� */
+#define USBD_EP1OUTADDR (*(volatile unsigned *)0x1000E12c) /* �˵�1����˵�źͷ��� */
+#define USBD_EP1OUTBMATTR (*(volatile unsigned *)0x1000E130) /* �˵�1������ͼĴ��� */
+#define USBD_EP1OUTMAXPKTSIZE (*(volatile unsigned *)0x1000E134) /* �˵�1��������ߴ�Ĵ��� */
+#define USBD_EP1OUTIFNUM (*(volatile unsigned *)0x1000E138) /* �˵�1����ӿںżĴ��� */
+#define USBD_EP1OUTSTAT (*(volatile unsigned *)0x1000E13c) /* �˵�1���״̬�Ĵ��� */
+#define USBD_EP1OUTBMREQTYPE (*(volatile unsigned *)0x1000E140) /* �˵�1���SETUP������������ */
+#define USBD_EP1OUTBREQUEST (*(volatile unsigned *)0x1000E144) /* �˵�1���SETUP������������ */
+#define USBD_EP1OUTWVALUE (*(volatile unsigned *)0x1000E148) /* �˵�1���SETUP��������ֵ */
+#define USBD_EP1OUTWINDX (*(volatile unsigned *)0x1000E14c) /* �˵�1���SETUP������������ */
+#define USBD_EP1OUTWLENGH (*(volatile unsigned *)0x1000E150) /* �˵�1���SETUP���������� */
+#define USBD_EP1OUTSYNCHFRAME (*(volatile unsigned *)0x1000E154) /* �˵�1���ͬ����֡�� */
+#define USBD_EP1INADDR (*(volatile unsigned *)0x1000E158) /* �˵�1����˵�źͷ��� */
+#define USBD_EP1INBMATTR (*(volatile unsigned *)0x1000E15c) /* �˵�1�������ͼĴ��� */
+#define USBD_EP1INMAXPKTSIZE (*(volatile unsigned *)0x1000E160) /* �˵�1���������ߴ�Ĵ��� */
+#define USBD_EP1INIFNUM (*(volatile unsigned *)0x1000E164) /* �˵�1����ӿںżĴ��� */
+#define USBD_EP1INSTAT (*(volatile unsigned *)0x1000E168) /* �˵�1����״̬�Ĵ��� */
+#define USBD_EP1INBMREQTYPE (*(volatile unsigned *)0x1000E16c) /* �˵�1����SETUP������������ */
+#define USBD_EP1INBREQUEST (*(volatile unsigned *)0x1000E170) /* �˵�1����SETUP������������ */
+#define USBD_EP1INWVALUE (*(volatile unsigned *)0x1000E174) /* �˵�1����SETUP��������ֵ */
+#define USBD_EP1INWINDEX (*(volatile unsigned *)0x1000E178) /* �˵�1����SETUP������������ */
+#define USBD_EP1INWLENGTH (*(volatile unsigned *)0x1000E17c) /* �˵�1����SETUP���������� */
+#define USBD_EP1INSYNCHFRAME (*(volatile unsigned *)0x1000E180) /* �˵�1����ͬ����֡�� */
+#define USBD_EP2OUTADDR (*(volatile unsigned *)0x1000E184) /* �˵�2����˵�źͷ��� */
+#define USBD_EP2OUTBMATTR (*(volatile unsigned *)0x1000E188) /* �˵�2������ͼĴ��� */
+#define USBD_EP2OUTMAXPKTSIZE (*(volatile unsigned *)0x1000E18c) /* �˵�2��������ߴ�Ĵ��� */
+#define USBD_EP2OUTIFNUM (*(volatile unsigned *)0x1000E190) /* �˵�2����ӿںżĴ��� */
+#define USBD_EP2OUTSTAT (*(volatile unsigned *)0x1000E194) /* �˵�2���״̬�Ĵ��� */
+#define USBD_EP2OUTBMREQTYPE (*(volatile unsigned *)0x1000E198) /* �˵�2���SETUP������������ */
+#define USBD_EP2OUTBREQUEST (*(volatile unsigned *)0x1000E19c) /* �˵�2���SETUP������������ */
+#define USBD_EP2OUTWVALUE (*(volatile unsigned *)0x1000E1a0) /* �˵�2���SETUP��������ֵ */
+#define USBD_EP2OUTWINDEX (*(volatile unsigned *)0x1000E1a4) /* �˵�2���SETUP������������ */
+#define USBD_EP2OUTWLENGTH (*(volatile unsigned *)0x1000E1a8) /* �˵�2���SETUP���������� */
+#define USBD_EP2OUTSYNCHFRAME (*(volatile unsigned *)0x1000E1ac) /* �˵�2���ͬ����֡�� */
+#define USBD_EP2INADDR (*(volatile unsigned *)0x1000E1b0) /* �˵�2����˵�źͷ��� */
+#define USBD_EP2INBMATTR (*(volatile unsigned *)0x1000E1b4) /* �˵�2�������ͼĴ��� */
+#define USBD_EP2INMAXPKTSIZE (*(volatile unsigned *)0x1000E1b8) /* �˵�2���������ߴ�Ĵ��� */
+#define USBD_EP2INIFNUM (*(volatile unsigned *)0x1000E1bc) /* �˵�2����ӿںżĴ��� */
+#define USBD_EP2INSTAT (*(volatile unsigned *)0x1000E1c0) /* �˵�2����״̬�Ĵ��� */
+#define USBD_EP2INBMREQTYPE (*(volatile unsigned *)0x1000E1c4) /* �˵�2����SETUP������������ */
+#define USBD_EP2INBREQUEST (*(volatile unsigned *)0x1000E1c8) /* �˵�2����SETUP������������ */
+#define USBD_EP2INWVALUE (*(volatile unsigned *)0x1000E1cc) /* �˵�2����SETUP��������ֵ */
+#define USBD_EP2INWINDEX (*(volatile unsigned *)0x1000E1d0) /* �˵�2����SETUP������������ */
+#define USBD_EP2INWLENGTH (*(volatile unsigned *)0x1000E1d4) /* �˵�2����SETUP���������� */
+#define USBD_EP2INSYNCHFRAME (*(volatile unsigned *)0x1000E1d8) /* �˵�2����ͬ����֡�� */
+#define USBD_RXFIFO (*(volatile unsigned *)0x1000E200) /* ����FIFO */
+#define USBD_TXFIFO (*(volatile unsigned *)0x1000E300) /* ����FIFO */
+
+
+/******************************************************************************************
+ * EMI�
+ * ��ַ: 0x11000000
+ ******************************************************************************************/
+
+#define EMI_CSACONF (*(volatile unsigned *)0x11000000) /* CSA�������üĴ��� */
+#define EMI_CSBCONF (*(volatile unsigned *)0x11000004) /* CSB�������üĴ��� */
+#define EMI_CSCCONF (*(volatile unsigned *)0x11000008) /* CSC�������üĴ��� */
+#define EMI_CSDCONF (*(volatile unsigned *)0x1100000c) /* CSD�������üĴ��� */
+#define EMI_CSECONF (*(volatile unsigned *)0x11000010) /* CSE�������üĴ��� */
+#define EMI_CSFCONF (*(volatile unsigned *)0x11000014) /* CSF�������üĴ��� */
+#define EMI_SDCONF1 (*(volatile unsigned *)0x11000018) /* SDRAMʱ�����üĴ���1 */
+#define EMI_SDCONF2 (*(volatile unsigned *)0x1100001c) /* SDRAMʱ�����üĴ���2, SDRAM��ʼ���õ���������Ϣ */
+#define EMI_REMAPCONF (*(volatile unsigned *)0x11000020) /* Ƭѡ�ռ估��ַӳ��REMAP���üĴ��� */
+#define EMI_NAND_ADDR1 (*(volatile unsigned *)0x11000100) /* NAND FLASH�ĵ�ַ�Ĵ���1 */
+#define EMI_NAND_COM (*(volatile unsigned *)0x11000104) /* NAND FLASH�Ŀ����ּĴ��� */
+#define EMI_NAND_STA (*(volatile unsigned *)0x1100010c) /* NAND FLASH��״̬�Ĵ��� */
+#define EMI_ERR_ADDR1 (*(volatile unsigned *)0x11000110) /* �����������ĵ�ַ�Ĵ���1 */
+#define EMI_ERR_ADDR2 (*(volatile unsigned *)0x11000114) /* �����������ĵ�ַ�Ĵ���2 */
+#define EMI_NAND_CONF1 (*(volatile unsigned *)0x11000118) /* NAND FLASH������������1 */
+#define EMI_NAND_INTR (*(volatile unsigned *)0x1100011c) /* NAND FLASH�жϼĴ��� */
+#define EMI_NAND_ECC (*(volatile unsigned *)0x11000120) /* ECCУ����ɼĴ��� */
+#define EMI_NAND_IDLE (*(volatile unsigned *)0x11000124) /* NAND FLASH���мĴ��� */
+#define EMI_NAND_CONF2 (*(volatile unsigned *)0x11000128) /* NAND FLASH������������2 */
+#define EMI_NAND_ADDR2 (*(volatile unsigned *)0x1100012c) /* NAND FLASH�ĵ�ַ�Ĵ���2 */
+#define EMI_NAND_ID (*(volatile unsigned *)0x11000130) /* NAND FLASH��ID�Ĵ���*/
+#define EMI_NAND_DATA (*(volatile unsigned *)0x11000200) /* NAND FLASH�����ݼĴ��� */
+
+
+/******************************************************************************************
+ * DMAC�
+ * ��ַ: 0x11001000
+ ******************************************************************************************/
+
+#define DMAC_INTSTATUS (*(volatile unsigned *)0x11001020) /* DAMC�ж�״̬�Ĵ����� */
+#define DMAC_INTTCSTATUS (*(volatile unsigned *)0x11001050) /* DMAC��������ж�״̬�Ĵ��� */
+#define DMAC_INTTCCLEAR (*(volatile unsigned *)0x11001060) /* DMAC��������ж�״̬����Ĵ��� */
+#define DMAC_INTERRORSTATUS (*(volatile unsigned *)0x11001080) /* DMAC��������ж�״̬�Ĵ��� */
+#define DMAC_INTERRCLR (*(volatile unsigned *)0x11001090) /* DMAC��������ж�״̬����Ĵ��� */
+#define DMAC_ENBLDCHNS (*(volatile unsigned *)0x110010b0) /* DMACͨ��ʹ��״̬�Ĵ��� */
+#define DMAC_C0SRCADDR (*(volatile unsigned *)0x11001000) /* DMAC��0Դ��ַ�Ĵ��� */
+#define DMAC_C0DESTADD (*(volatile unsigned *)0x11001004) /* DMAC��0Ŀ�ĵ�ַ�Ĵ��� */
+#define DMAC_C0CONTROL (*(volatile unsigned *)0x1100100c) /* DMAC��0���ƼĴ��� */
+#define DMAC_C0CONFIGURATION (*(volatile unsigned *)0x11001010) /* DMAC��0���üĴ��� */
+#define DMAC_C0DESCRIPTOR (*(volatile unsigned *)0x11001014) /* DMAC��0������ַ�Ĵ��� */
+#define DMAC_C1SRCADDR (*(volatile unsigned *)0x11001100) /* DMAC��1Դ��ַ�Ĵ��� */
+#define DMAC_C1DESTADDR (*(volatile unsigned *)0x11001104) /* DMAC��1Ŀ�ĵ�ַ�Ĵ��� */
+#define DMAC_C1CONTROL (*(volatile unsigned *)0x1100110c) /* DMAC��1���ƼĴ��� */
+#define DMAC_C1CONFIGURATION (*(volatile unsigned *)0x11001110) /* DMAC��1���üĴ��� */
+#define DMAC_C1DESCRIPTOR (*(volatile unsigned *)0x11001114) /* DMAC��1������ַ�Ĵ��� */
+#define DMAC_C2SRCADDR (*(volatile unsigned *)0x11001200) /* DMAC��2Դ��ַ�Ĵ��� */
+#define DMAC_C2DESTADDR (*(volatile unsigned *)0x11001204) /* DMAC��2Ŀ�ĵ�ַ�Ĵ��� */
+#define DMAC_C2CONTROL (*(volatile unsigned *)0x1100120c) /* DMAC��2���ƼĴ��� */
+#define DMAC_C2CONFIGURATION (*(volatile unsigned *)0x11001210) /* DMAC��2���üĴ��� */
+#define DMAC_C2DESCRIPTOR (*(volatile unsigned *)0x11001214) /* DMAC��2������ַ�Ĵ��� */
+#define DMAC_C3SRCADDR (*(volatile unsigned *)0x11001300) /* DMAC��3Դ��ַ�Ĵ��� */
+#define DMAC_C3DESTADDR (*(volatile unsigned *)0x11001304) /* DMAC��3Ŀ�ĵ�ַ�Ĵ��� */
+#define DMAC_C3CONTROL (*(volatile unsigned *)0x1100130c) /* DMAC��3���ƼĴ��� */
+#define DMAC_C3CONFIGURATION (*(volatile unsigned *)0x11001310) /* DMAC��3���üĴ��� */
+#define DMAC_C3DESCRIPTOR (*(volatile unsigned *)0x11001314) /* DMAC��3������ַ�Ĵ��� */
+#define DMAC_C4SRCADDR (*(volatile unsigned *)0x11001400) /* DMAC��4Դ��ַ�Ĵ��� */
+#define DMAC_C4DESTADDR (*(volatile unsigned *)0x11001404) /* DMAC��4Ŀ�ĵ�ַ�Ĵ��� */
+#define DMAC_C4CONTROL (*(volatile unsigned *)0x1100140c) /* DMAC��4���ƼĴ��� */
+#define DMAC_C4CONFIGURATION (*(volatile unsigned *)0x11001410) /* DMAC��4���üĴ��� */
+#define DMAC_C4DESCRIPTOR (*(volatile unsigned *)0x11001414) /* DMAC��4������ַ�Ĵ��� */
+#define DMAC_C5SRCADDR (*(volatile unsigned *)0x11001500) /* DMAC��5Դ��ַ�Ĵ��� */
+#define DMAC_C5DESTADDR (*(volatile unsigned *)0x11001504) /* DMAC��5Ŀ�ĵ�ַ�Ĵ��� */
+#define DMAC_C5CONTROL (*(volatile unsigned *)0x1100150c) /* DMAC��5���ƼĴ��� */
+#define DMAC_C5CONFIGURATION (*(volatile unsigned *)0x11001510) /* DMAC��5���üĴ��� */
+#define DMAC_C5DESCRIPTOR (*(volatile unsigned *)0x11001514) /* DMAC��5������ַ�Ĵ��� */
+
+
+/******************************************************************************************
+ * LCDC�
+ * ��ַ: 0x11002000
+ ******************************************************************************************/
+
+#define LCDC_SSA (*(volatile unsigned *)0x11002000) /* ��Ļ��ʼ��ַ�Ĵ��� */
+#define LCDC_SIZE (*(volatile unsigned *)0x11002004) /* ��Ļ�ߴ�Ĵ��� */
+#define LCDC_PCR (*(volatile unsigned *)0x11002008) /* ������üĴ��� */
+#define LCDC_HCR (*(volatile unsigned *)0x1100200c) /* ˮƽ���üĴ��� */
+#define LCDC_VCR (*(volatile unsigned *)0x11002010) /* ��ֱ���üĴ��� */
+#define LCDC_PWMR (*(volatile unsigned *)0x11002014) /* PWM�Աȶȿ��ƼĴ��� */
+#define LCDC_LECR (*(volatile unsigned *)0x11002018) /* ʹ�ܿ��ƼĴ��� */
+#define LCDC_DMACR (*(volatile unsigned *)0x1100201c) /* DMA���ƼĴ��� */
+#define LCDC_LCDISREN (*(volatile unsigned *)0x11002020) /* �ж�ʹ�ܼĴ��� */
+#define LCDC_LCDISR (*(volatile unsigned *)0x11002024) /* �ж�״̬�Ĵ��� */
+#define LCDC_LGPMR (*(volatile unsigned *)0x11002040) /* �Ҷȵ�ɫӳ��Ĵ����� */
+ /*(0x40-0x7c 16��32bit�Ĵ���) */
+
+
+/******************************************************************************************
+ * MAC�
+ * ��ַ: 0x11003000
+ ******************************************************************************************/
+
+#define MAC_CTRL (*(volatile unsigned *)0x11003000) /* MAC���ƼĴ��� */
+#define MAC_INTSRC (*(volatile unsigned *)0x11003004) /* MAC�ж�Դ�Ĵ��� */
+#define MAC_INTMASK (*(volatile unsigned *)0x11003008) /* MAC�ж����μĴ��� */
+#define MAC_IPGT (*(volatile unsigned *)0x1100300c) /* ����֡����Ĵ��� */
+#define MAC_IPGR1 (*(volatile unsigned *)0x11003010) /* �ȴ����ڼĴ��� */
+#define MAC_IPGR2 (*(volatile unsigned *)0x11003014) /* �ȴ����ڼĴ��� */
+#define MAC_PACKETLEN (*(volatile unsigned *)0x11003018) /* ֡���ȼĴ��� */
+#define MAC_COLLCONF (*(volatile unsigned *)0x1100301c) /* ��ײ�ط��Ĵ��� */
+#define MAC_TXBD_NUM (*(volatile unsigned *)0x11003020) /* �����������Ĵ��� */
+#define MAC_FLOWCTRL (*(volatile unsigned *)0x11003024) /* ���ؼĴ��� */
+#define MAC_MII_CTRL (*(volatile unsigned *)0x11003028) /* PHY���ƼĴ��� */
+#define MAC_MII_CMD (*(volatile unsigned *)0x1100302c) /* PHY����Ĵ��� */
+#define MAC_MII_ADDRESS (*(volatile unsigned *)0x11003030) /* PHY��ַ�Ĵ��� */
+#define MAC_MII_TXDATA (*(volatile unsigned *)0x11003034) /* PHYд���ݼĴ��� */
+#define MAC_MII_RXDATA (*(volatile unsigned *)0x11003038) /* PHY�����ݼĴ��� */
+#define MAC_MII_STATUS (*(volatile unsigned *)0x1100303c) /* PHY״̬�Ĵ��� */
+#define MAC_ADDR0 (*(volatile unsigned *)0x11003040) /* MAC��ַ�Ĵ��� */
+#define MAC_ADDR1 (*(volatile unsigned *)0x11003044) /* MAC��ַ�Ĵ��� */
+#define MAC_HASH0 (*(volatile unsigned *)0x11003048) /* MAC HASH�Ĵ��� */
+#define MAC_HASH1 (*(volatile unsigned *)0x1100304c) /* MAC HASH�Ĵ��� */
+#define MAC_TXPAUSE (*(volatile unsigned *)0x11003050) /* MAC����֡�Ĵ��� */
+#define MAC_BD /* 0x4*/
+
+
+#endif
+
+/*******************END OF FILE*************************/
diff --git a/bsp/sep4020/startup.c b/bsp/sep4020/startup.c new file mode 100644 index 0000000000..e642fcdaf7 --- /dev/null +++ b/bsp/sep4020/startup.c @@ -0,0 +1,132 @@ +/* + * File : startup.c + * 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-31 Bernard first implementation + */ + +#include <rthw.h> +#include <rtthread.h> + +#include "board.h" + +/** + * @addtogroup STM32 + */ + +/*@{*/ + +extern int rt_application_init(void);
+
+#ifdef RT_USING_FINSH
+extern void finsh_system_init(void);
+extern void finsh_set_device(const char* device);
+#endif + +#ifdef __CC_ARM +extern int Image$$RW_RAM1$$ZI$$Limit; +#elif __ICCARM__ +#pragma section="HEAP" +#else +extern int __bss_end; +#endif + +#ifdef DEBUG +/******************************************************************************* +* Function Name : assert_failed +* Description : Reports the name of the source file and the source line number +* where the assert error has occurred. +* Input : - file: pointer to the source file name +* - line: assert error line source number +* Output : None +* Return : None +*******************************************************************************/ +void assert_failed(u8* file, u32 line) +{ + rt_kprintf("\n\r Wrong parameter value detected on\r\n"); + rt_kprintf(" file %s\r\n", file); + rt_kprintf(" line %d\r\n", line); + + while (1) ; +} +#endif + +/** + * This function will startup RT-Thread RTOS. + */ +void rtthread_startup(void) +{
+ /* init hardware interrupt */ + rt_hw_interrupt_init(); + /* init board */ + rt_hw_board_init(); + + /* show version */ + rt_show_version(); + + /* init tick */ + rt_system_tick_init(); + + /* init kernel object */ + rt_system_object_init(); + + /* init timer system */ + rt_system_timer_init(); + +#ifdef RT_USING_HEAP + #ifdef __CC_ARM + rt_system_heap_init((void*)&Image$$RW_RAM1$$ZI$$Limit, (void*)0x32000000); + #elif __ICCARM__ + rt_system_heap_init(__segment_end("HEAP"), (void*)STM32_SRAM_END); + #else + /* init memory system */ + rt_system_heap_init((void*)&__bss_end, (void*)STM32_SRAM_END); + #endif +#endif + + /* init scheduler system */ + rt_system_scheduler_init(); + + /* init all device */ + rt_device_init_all(); + + /* init application */ + rt_application_init();
+
+#ifdef RT_USING_FINSH
+ /* init finsh */
+ finsh_system_init();
+ finsh_set_device("uart0");
+#endif + + /* init idle thread */ + rt_thread_idle_init(); + + /* start scheduler */ + rt_system_scheduler_start(); + + /* never reach here */ + return ; +} + +int main(void) +{ + rt_uint32_t UNUSED level; + + /* disable interrupt first */ + level = rt_hw_interrupt_disable(); + + /* startup RT-Thread RTOS */ + rtthread_startup(); + + return 0; +} + +/*@}*/ diff --git a/libcpu/arm/sep4020/clk.c b/libcpu/arm/sep4020/clk.c new file mode 100644 index 0000000000..7b298ea825 --- /dev/null +++ b/libcpu/arm/sep4020/clk.c @@ -0,0 +1,112 @@ +/*
+ * File : clock.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
+ * 2010-03-20 zchong first version
+ */
+
+#include <rtthread.h>
+#include "sep4020.h"
+
+#define CLK_IN 4000000 /* Fin = 4.00MHz */
+#define SYSCLK 72000000 /* system clock we want */
+
+#define CLK_ESRAM 0
+#define CLK_LCDC 1
+#define CLK_PWM 2
+#define CLK_DMAC 3
+#define CLK_EMI 4
+#define CLK_MMCSD 5
+#define CLK_SSI 7
+#define CLK_UART0 8
+#define CLK_UART1 9
+#define CLK_UART2 10
+#define CLK_UART3 11
+#define CLK_USB 12
+#define CLK_MAC 13
+#define CLK_SMC 14
+#define CLK_I2C 15
+#define CLK_GPT 16
+
+static void rt_hw_set_system_clock(void)
+{
+ rt_uint8_t pv;
+
+ /* pv value*/
+ pv = SYSCLK/2/CLK_IN;
+ /* go to normal mode*/
+ PMC_PMDR = 0x01;
+ /* set the clock */
+ PMC_PMCR = 0x4000 | pv;
+ /* trige configurate*/
+ PMC_PMCR = 0xc000 | pv;
+}
+
+static void rt_hw_set_usb_clock(void)
+{
+ /* set the clock */
+ PMC_PUCR = 0x000c;
+ /* trige configurate*/
+ PMC_PMCR = 0x800c;
+
+}
+
+/**
+ * @brief System Clock Configuration
+ */
+void rt_hw_clock_init(void)
+{
+ /* set system clock */
+ rt_hw_set_system_clock();
+ /* set usb clock */
+ rt_hw_set_usb_clock();
+}
+
+/**
+ * @brief Get system clock
+ */
+rt_uint32_t rt_hw_get_clock(void)
+{
+ rt_uint32_t val;
+ rt_uint8_t pv, pd, npd;
+
+ /* get PMCR value */
+ val = PMC_PMCR;
+ /* get NPD */
+ npd = (val >> 14) & 0x01;
+ /* get PD */
+ pd = (val >> 10) & 0x0f;
+ /* get PV */
+ pv = val & 0x7f;
+ /* caculate the system clock */
+ if(npd)
+ val = 2 * CLK_IN * pv;
+ else
+ val = CLK_IN * pv / (pd + 1);
+
+ return(val);
+}
+
+/**
+ * @brief Enable module clock
+ */
+ void rt_hw_enable_module_clock(rt_uint8_t module)
+ {
+
+ }
+
+/**
+ * @brief Disable module clock
+ */
+ void rt_hw_disable_module_clock(rt_uint8_t module)
+ {
+
+ }
+
diff --git a/libcpu/arm/sep4020/context_rvds.S b/libcpu/arm/sep4020/context_rvds.S new file mode 100644 index 0000000000..82c5adc574 --- /dev/null +++ b/libcpu/arm/sep4020/context_rvds.S @@ -0,0 +1,107 @@ +;/* +; * File : context_rvds.S +; * 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://www.rt-thread.org/license/LICENSE +; * +; * Change Logs: +; * Date Author Notes +; * 2009-01-20 Bernard first version +; */ + +NOINT EQU 0xc0 ; disable interrupt in psr
+ + AREA |.text|, CODE, READONLY, ALIGN=2
+ ARM
+ REQUIRE8
+ PRESERVE8
+ +;/* +; * rt_base_t rt_hw_interrupt_disable(); +; */ +rt_hw_interrupt_disable PROC + EXPORT rt_hw_interrupt_disable + MRS r0, cpsr + ORR r1, r0, #NOINT + MSR cpsr_c, r1
+ BX lr + ENDP
+ +;/* +; * void rt_hw_interrupt_enable(rt_base_t level); +; */ +rt_hw_interrupt_enable PROC + EXPORT rt_hw_interrupt_enable + MSR cpsr_c, r0
+ BX lr + ENDP + +;/* +; * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to); +; * r0 --> from +; * r1 --> to +; */ +rt_hw_context_switch PROC + EXPORT rt_hw_context_switch + STMFD sp!, {lr} ; push pc (lr should be pushed in place of PC) + STMFD sp!, {r0-r12, lr} ; push lr & register file + + MRS r4, cpsr + STMFD sp!, {r4} ; push cpsr + MRS r4, spsr + STMFD sp!, {r4} ; push spsr + + STR sp, [r0] ; store sp in preempted tasks TCB + LDR sp, [r1] ; get new task stack pointer + + LDMFD sp!, {r4} ; pop new task spsr + MSR spsr_cxsf, r4 + LDMFD sp!, {r4} ; pop new task cpsr + MSR cpsr_cxsf, r4 + + LDMFD sp!, {r0-r12, lr, pc} ; pop new task r0-r12, lr & pc + ENDP
+ +;/* +; * void rt_hw_context_switch_to(rt_uint32 to); +; * r0 --> to +; */ +rt_hw_context_switch_to PROC + EXPORT rt_hw_context_switch_to + LDR sp, [r0] ; get new task stack pointer + + LDMFD sp!, {r4} ; pop new task spsr + MSR spsr_cxsf, r4 + LDMFD sp!, {r4} ; pop new task cpsr + MSR cpsr_cxsf, r4 + + LDMFD sp!, {r0-r12, lr, pc} ; pop new task r0-r12, lr & pc + ENDP
+ +;/* +; * void rt_hw_context_switch_interrupt(rt_uint32 from, rt_uint32 to); +; */ + IMPORT rt_thread_switch_interrput_flag + IMPORT rt_interrupt_from_thread + IMPORT rt_interrupt_to_thread
+ +rt_hw_context_switch_interrupt PROC + EXPORT rt_hw_context_switch_interrupt + LDR r2, =rt_thread_switch_interrput_flag + LDR r3, [r2] + CMP r3, #1 + BEQ _reswitch + MOV r3, #1 ; set rt_thread_switch_interrput_flag to 1 + STR r3, [r2] + LDR r2, =rt_interrupt_from_thread ; set rt_interrupt_from_thread + STR r0, [r2] +_reswitch + LDR r2, =rt_interrupt_to_thread ; set rt_interrupt_to_thread + STR r1, [r2]
+ BX lr + ENDP
+
+ END
\ No newline at end of file diff --git a/libcpu/arm/sep4020/cpu.c b/libcpu/arm/sep4020/cpu.c new file mode 100644 index 0000000000..1905da812e --- /dev/null +++ b/libcpu/arm/sep4020/cpu.c @@ -0,0 +1,42 @@ +/* + * File : cpu.c + * 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://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2006-08-23 Bernard first version + */ + +#include <rtthread.h> + + +/** + * @addtogroup AT91SAM7X + */ +/*@{*/ + +/** + * this function will reset CPU + * + */ +void rt_hw_cpu_reset() +{ +} + +/** + * this function will shutdown CPU + * + */ +void rt_hw_cpu_shutdown() +{ + rt_kprintf("shutdown...\n"); + + while (1); +} + +/*@}*/ diff --git a/libcpu/arm/sep4020/interrupt.c b/libcpu/arm/sep4020/interrupt.c new file mode 100644 index 0000000000..810e0185b7 --- /dev/null +++ b/libcpu/arm/sep4020/interrupt.c @@ -0,0 +1,107 @@ +/* + * File : trap.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
+ * 2010-03-17 zchong SEP4020 + */ + +#include <rtthread.h> +#include "sep4020.h" + +#define MAX_HANDLERS 32 + +extern rt_uint32_t rt_interrupt_nest;
+ +/* exception and interrupt handler table */
+rt_isr_handler_t isr_table[MAX_HANDLERS]; +rt_uint32_t rt_interrupt_from_thread, rt_interrupt_to_thread; +rt_uint32_t rt_thread_switch_interrput_flag; + +/** + * @addtogroup SEP4020 + */ +/*@{*/ + +void rt_hw_interrupt_handler(int vector) +{ + rt_kprintf("Unhandled interrupt %d occured!!!\n", vector); +} + +/** + * This function will initialize hardware interrupt + */ +void rt_hw_interrupt_init() +{ + register rt_uint32_t idx;
+
+ /* disable all interrupts */
+ INTC_IER = 0x0;
+
+ /* mask all interrupts */
+ INTC_IMR = 0xFFFFFFFF; + + /* init exceptions table */
+ for(idx=0; idx < MAX_HANDLERS; idx++)
+ {
+ isr_table[idx] = (rt_isr_handler_t)rt_hw_interrupt_handler;
+ } + + /* init interrupt nest, and context in thread sp */ + rt_interrupt_nest = 0; + rt_interrupt_from_thread = 0; + rt_interrupt_to_thread = 0; + rt_thread_switch_interrput_flag = 0; +} + +/** + * This function will mask a interrupt. + * @param vector the interrupt number + */ +void rt_hw_interrupt_mask(int vector) +{
+ INTC_IMR |= 1 << vector; +} + +/** + * This function will un-mask a interrupt. + * @param vector the interrupt number + */ +void rt_hw_interrupt_umask(int vector) +{
+ /* un-mask interrupt */ + if ((vector == INT_NOTUSED0) || (vector == INT_NOTUSED16))
+ {
+ rt_kprintf("Interrupt vec %d is not used!\n", vector);
+ // while(1);
+ }
+ else if (vector == INTGLOBAL)
+ INTC_IMR = 0x0;
+ else
+ INTC_IMR &= ~(1 << vector);
+ +} + +/** + * This function will install a interrupt service routine to a interrupt. + * @param vector the interrupt number + * @param new_handler the interrupt service routine to be installed + * @param old_handler the old interrupt service routine + */ +void rt_hw_interrupt_install(int vector, rt_isr_handler_t new_handler, rt_isr_handler_t *old_handler) +{ + if(vector >= 0 && vector < MAX_HANDLERS) + { + if (*old_handler != RT_NULL) *old_handler = isr_table[vector];
+ if (new_handler != RT_NULL) isr_table[vector] = new_handler; + } +} + +/*@}*/ diff --git a/libcpu/arm/sep4020/serial.c b/libcpu/arm/sep4020/serial.c new file mode 100644 index 0000000000..7f50348335 --- /dev/null +++ b/libcpu/arm/sep4020/serial.c @@ -0,0 +1,281 @@ +/*
+ * File : serial.c
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2009, 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://www.rt-thread.org/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2009-02-05 Bernard first version
+ * 2009-10-25 Bernard fix rt_serial_read bug when there is no data
+ * in the buffer.
+ * 2010-03-29 Bernard cleanup code.
+ * 2010-06-14 zchong for sep4020
+ */
+
+#include "serial.h"
+
+/**
+ * @addtogroup SEP4020
+ */
+/*@{*/
+
+/* RT-Thread Device Interface */
+static rt_err_t rt_serial_init (rt_device_t dev)
+{
+ struct serial_device* uart = (struct serial_device*) dev->private;
+
+ if (!(dev->flag & RT_DEVICE_FLAG_ACTIVATED))
+ {
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ rt_memset(uart->int_rx->rx_buffer, 0,
+ sizeof(uart->int_rx->rx_buffer));
+ uart->int_rx->read_index = uart->int_rx->save_index = 0;
+ }
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_TX)
+ {
+ rt_memset(uart->int_tx->tx_buffer, 0,
+ sizeof(uart->int_tx->tx_buffer));
+ uart->int_tx->write_index = uart->int_tx->save_index = 0;
+ }
+
+ dev->flag |= RT_DEVICE_FLAG_ACTIVATED;
+ }
+
+ return RT_EOK;
+}
+
+static rt_err_t rt_serial_open(rt_device_t dev, rt_uint16_t oflag)
+{
+ return RT_EOK;
+}
+
+static rt_err_t rt_serial_close(rt_device_t dev)
+{
+ 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;
+ rt_err_t err_code;
+ struct serial_device* uart;
+
+ ptr = buffer;
+ err_code = RT_EOK;
+ uart = (struct serial_device*)dev->private;
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ /* interrupt mode Rx */
+ while (size)
+ {
+ rt_base_t level;
+
+ /* disable interrupt */
+ level = rt_hw_interrupt_disable();
+
+ if (uart->int_rx->read_index != uart->int_rx->save_index)
+ {
+ /* read a character */
+ *ptr++ = uart->int_rx->rx_buffer[uart->int_rx->read_index];
+ size--;
+
+ /* move to next position */
+ uart->int_rx->read_index ++;
+ if (uart->int_rx->read_index >= UART_RX_BUFFER_SIZE)
+ uart->int_rx->read_index = 0;
+ }
+ else
+ {
+ /* set error code */
+ err_code = -RT_EEMPTY;
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+ break;
+ }
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+ }
+ }
+ else
+ {
+ /* polling mode */
+ while ((rt_uint32_t)ptr - (rt_uint32_t)buffer < size)
+ {
+ while (uart->uart_device->lsr & USTAT_RCV_READY)
+ {
+ *ptr = uart->uart_device->dlbl_rxfifo_txfifo & 0xff;
+ ptr ++;
+ }
+ }
+ }
+
+ /* set error code */
+ rt_set_errno(err_code);
+ return (rt_uint32_t)ptr - (rt_uint32_t)buffer;
+}
+
+
+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;
+ rt_err_t err_code;
+ struct serial_device* uart;
+
+ err_code = RT_EOK;
+ ptr = (rt_uint8_t*)buffer;
+ uart = (struct serial_device*)dev->private;
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_TX)
+ {
+ /* interrupt mode Tx */
+ while (uart->int_tx->save_index != uart->int_tx->write_index)
+ {
+ /* save on tx buffer */
+ uart->int_tx->tx_buffer[uart->int_tx->save_index] = *ptr++;
+
+ -- size;
+
+ /* move to next position */
+ uart->int_tx->save_index ++;
+
+ /* wrap save index */
+ if (uart->int_tx->save_index >= UART_TX_BUFFER_SIZE)
+ uart->int_tx->save_index = 0;
+ }
+
+ /* set error code */
+ if (size > 0)
+ err_code = -RT_EFULL;
+ }
+ else
+ {
+ /* polling mode */
+ while (size)
+ {
+ /*
+ * to be polite with serial console add a line feed
+ * to the carriage return character
+ */
+ if (*ptr == '\n' && (dev->flag & RT_DEVICE_FLAG_STREAM))
+ {
+ while (!(uart->uart_device->lsr & USTAT_TXB_EMPTY));
+ uart->uart_device->dlbl_rxfifo_txfifo = '\r';
+ }
+
+ while (!(uart->uart_device->lsr & USTAT_TXB_EMPTY));
+ uart->uart_device->dlbl_rxfifo_txfifo = (*ptr & 0x1FF);
+
+ ++ptr; --size;
+ }
+ }
+
+ /* set error code */
+ rt_set_errno(err_code);
+
+ return (rt_uint32_t)ptr - (rt_uint32_t)buffer;
+}
+
+static rt_err_t rt_serial_control (rt_device_t dev, rt_uint8_t cmd, void *args)
+{
+// struct serial_device* uart;
+
+ RT_ASSERT(dev != RT_NULL);
+
+// uart = (struct serial_device*)dev->private;
+ switch (cmd)
+ {
+ case RT_DEVICE_CTRL_SUSPEND:
+ /* suspend device */
+ dev->flag |= RT_DEVICE_FLAG_SUSPENDED;
+ break;
+
+ case RT_DEVICE_CTRL_RESUME:
+ /* resume device */
+ dev->flag &= ~RT_DEVICE_FLAG_SUSPENDED;
+ break;
+ }
+
+ return RT_EOK;
+}
+
+/*
+ * serial register for SEP4020
+ */
+rt_err_t rt_hw_serial_register(rt_device_t device, const char* name, rt_uint32_t flag, struct serial_device *serial)
+{
+ RT_ASSERT(device != RT_NULL);
+
+
+ device->type = RT_Device_Class_Char;
+ device->rx_indicate = RT_NULL;
+ device->tx_complete = RT_NULL;
+ 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;
+ device->private = serial;
+
+ /* register a character device */
+ return rt_device_register(device, name, RT_DEVICE_FLAG_RDWR | flag);
+}
+
+/* ISR for serial interrupt */
+void rt_hw_serial_isr(rt_device_t device)
+{
+ rt_base_t level;
+ struct serial_device* uart = (struct serial_device*) device->private;
+
+ /* interrupt mode receive */
+ RT_ASSERT(device->flag & RT_DEVICE_FLAG_INT_RX);
+
+ /* save on rx buffer */
+ while (uart->uart_device->lsr & USTAT_RCV_READY)
+ {
+ /* disable interrupt */
+ level = rt_hw_interrupt_disable();
+
+ uart->int_rx->rx_buffer[uart->int_rx->save_index] = uart->uart_device->dlbl_rxfifo_txfifo & 0xff;
+ uart->int_rx->save_index ++;
+ if (uart->int_rx->save_index >= UART_RX_BUFFER_SIZE)
+ uart->int_rx->save_index = 0;
+
+ /* if the next position is read index, discard this 'read char' */
+ if (uart->int_rx->save_index == uart->int_rx->read_index)
+ {
+ uart->int_rx->read_index ++;
+ if (uart->int_rx->read_index >= UART_RX_BUFFER_SIZE)
+ uart->int_rx->read_index = 0;
+ }
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+ }
+
+ /* invoke callback */
+ if (device->rx_indicate != RT_NULL)
+ {
+ rt_size_t rx_length;
+
+ /* get rx length */
+ rx_length = uart->int_rx->read_index > uart->int_rx->save_index ?
+ UART_RX_BUFFER_SIZE - uart->int_rx->read_index + uart->int_rx->save_index :
+ uart->int_rx->save_index - uart->int_rx->read_index;
+
+ device->rx_indicate(device, rx_length);
+ }
+}
+
+
+/*@}*/
diff --git a/libcpu/arm/sep4020/serial.h b/libcpu/arm/sep4020/serial.h new file mode 100644 index 0000000000..391cbe16e9 --- /dev/null +++ b/libcpu/arm/sep4020/serial.h @@ -0,0 +1,56 @@ +#ifndef __RT_SERIAL_H__
+#define __RT_SERIAL_H__
+
+#include <rthw.h>
+#include <rtthread.h>
+
+
+#define USTAT_RCV_READY 0x01 /* receive data ready */
+#define USTAT_TXB_EMPTY 0x20 /* tx buffer empty */
+#define BPS 115200 /* serial baudrate */
+
+#define UART_RX_BUFFER_SIZE 64
+#define UART_TX_BUFFER_SIZE 64
+
+struct serial_int_rx
+{
+ rt_uint8_t rx_buffer[UART_RX_BUFFER_SIZE];
+ rt_uint32_t read_index, save_index;
+};
+
+struct serial_int_tx
+{
+ rt_uint8_t tx_buffer[UART_TX_BUFFER_SIZE];
+ rt_uint32_t write_index, save_index;
+};
+
+/* serial port registers */
+typedef struct uartport
+{
+ rt_uint32_t dlbl_rxfifo_txfifo;
+ rt_uint32_t dlbh_ier;
+ rt_uint32_t iir_fcr;
+ rt_uint32_t lcr;
+ rt_uint32_t mcr;
+ rt_uint32_t lsr;
+ rt_uint32_t msr;
+}uartport;
+
+struct serial_device
+{
+ /* uart hardware registers */
+ uartport* uart_device;
+
+ /* rx structure */
+ struct serial_int_rx* int_rx;
+
+ /* tx structure */
+ struct serial_int_tx* int_tx;
+};
+
+rt_err_t rt_hw_serial_register(rt_device_t device, const char* name, rt_uint32_t flag, struct serial_device *serial);
+
+void rt_hw_serial_isr(rt_device_t device);
+
+#endif
+
diff --git a/libcpu/arm/sep4020/stack.c b/libcpu/arm/sep4020/stack.c new file mode 100644 index 0000000000..6060b63722 --- /dev/null +++ b/libcpu/arm/sep4020/stack.c @@ -0,0 +1,61 @@ +/* + * File : stack.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 the first version + */ +#include <rtthread.h> + +#define SVCMODE 0x13 + +/** + * @addtogroup AT91SAM7 + */ +/*@{*/ + +/** + * This function will initialize thread stack + * + * @param tentry the entry of thread + * @param parameter the parameter of entry + * @param stack_addr the beginning stack address + * @param texit the function will be called when thread exit + * + * @return stack address + */ +rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter, + rt_uint8_t *stack_addr, void *texit) +{ + unsigned long *stk; + + stk = (unsigned long *)stack_addr; + *(stk) = (unsigned long)tentry; /* entry point */ + *(--stk) = (unsigned long)texit; /* lr */ + *(--stk) = 0; /* r12 */ + *(--stk) = 0; /* r11 */ + *(--stk) = 0; /* r10 */ + *(--stk) = 0; /* r9 */ + *(--stk) = 0; /* r8 */ + *(--stk) = 0; /* r7 */ + *(--stk) = 0; /* r6 */ + *(--stk) = 0; /* r5 */ + *(--stk) = 0; /* r4 */ + *(--stk) = 0; /* r3 */ + *(--stk) = 0; /* r2 */ + *(--stk) = 0; /* r1 */ + *(--stk) = (unsigned long)parameter; /* r0 : argument */ + *(--stk) = SVCMODE; /* cpsr */ + *(--stk) = SVCMODE; /* spsr */ + + /* return task's current stack address */ + return (rt_uint8_t *)stk; +} + +/*@}*/ diff --git a/libcpu/arm/sep4020/start_rvds.S b/libcpu/arm/sep4020/start_rvds.S new file mode 100644 index 0000000000..6de4ee54a8 --- /dev/null +++ b/libcpu/arm/sep4020/start_rvds.S @@ -0,0 +1,374 @@ +;==============================================================================================
+; star_rvds.s for Keil MDK 4.10
+;
+; SEP4020 start up code
+;
+; Change Logs: +; Date Author Notes
+; 2010-03-17 zchong
+;=============================================================================================
+
+;
+
+PMU_PLTR EQU 0x10001000 ; PLL���ȶ�����ʱ��
+PMU_PMCR EQU 0x10001004 ; ϵͳ��ʱ��PLL�Ŀ��ƼĴ���
+PMU_PUCR EQU 0x10001008 ; USBʱ��PLL�Ŀ��ƼĴ���
+PMU_PCSR EQU 0x1000100C ; �ڲ�ģ��ʱ��Դ�����Ŀ��ƼĴ���
+PMU_PDSLOW EQU 0x10001010 ; SLOW״̬��ʱ�ӵķ�Ƶ����
+PMU_PMDR EQU 0x10001014 ; оƬ����ģʽ�Ĵ���
+PMU_RCTR EQU 0x10001018 ; Reset���ƼĴ���
+PMU_CLRWAKUP EQU 0x1000101C ; WakeUp����Ĵ���
+
+RTC_CTR EQU 0x1000200C ; RTC���ƼĴ���
+
+INTC_IER EQU 0x10000000 ; IRQ�ж������Ĵ���
+INTC_IMR EQU 0x10000008 ; IRQ�ж����μĴ���
+INTC_IFSR EQU 0x10000030 ; IRQ�ж�����״̬�Ĵ���
+INTC_FIER EQU 0x100000C0 ; FIQ�ж������Ĵ���
+INTC_FIMR EQU 0x100000C4 ; FIQ�ж����μĴ���
+
+EMI_CSACONF EQU 0x11000000 ; CSA�������üĴ���
+EMI_CSECONF EQU 0x11000010 ; CSE�������üĴ���
+EMI_CSFCONF EQU 0x11000014 ; CSF�������üĴ���
+EMI_SDCONF1 EQU 0x11000018 ; SDRAMʱ�����üĴ���1
+EMI_SDCONF2 EQU 0x1100001C ; SDRAMʱ�����üĴ���2, SDRAM��ʼ���õ���������Ϣ
+EMI_REMAPCONF EQU 0x11000020 ; Ƭѡ�ռ估��ַӳ��REMAP���üĴ���
+
+Mode_USR EQU 0x10
+Mode_FIQ EQU 0x11
+Mode_IRQ EQU 0x12
+Mode_SVC EQU 0x13
+Mode_ABT EQU 0x17
+Mode_UND EQU 0x1B
+Mode_SYS EQU 0x1F
+
+I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled
+F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled
+NOINT EQU 0xc0
+MASK_MODE EQU 0x0000003F
+MODE_SVC32 EQU 0x00000013
+
+; Internal Memory Base Addresses
+FLASH_BASE EQU 0x20000000
+RAM_BASE EQU 0x04000000
+
+; Stack
+UND_Stack_Size EQU 0x00000000
+SVC_Stack_Size EQU 0x00000400
+ABT_Stack_Size EQU 0x00000000
+FIQ_Stack_Size EQU 0x00000000
+IRQ_Stack_Size EQU 0x00000100
+USR_Stack_Size EQU 0x00000000
+
+ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \
+ FIQ_Stack_Size + IRQ_Stack_Size)
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+
+Stack_Mem SPACE USR_Stack_Size
+__initial_sp SPACE ISR_Stack_Size
+Stack_Top
+
+; Heap
+Heap_Size EQU 0x00000000
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+
+ PRESERVE8
+
+; Area Definition and Entry Point
+; Startup Code must be linked first at Address at which it expects to run.
+
+ AREA RESET, CODE, READONLY
+ ARM
+
+; Exception Vectors
+; Mapped to Address 0.
+; Absolute addressing mode must be used.
+; Dummy Handlers are implemented as infinite loops which can be modified.
+
+Vectors LDR PC,Reset_Addr
+ LDR PC,Undef_Addr
+ LDR PC,SWI_Addr
+ LDR PC,PAbt_Addr
+ LDR PC,DAbt_Addr
+ NOP ; Reserved Vector
+ LDR PC,IRQ_Addr
+ LDR PC,FIQ_Addr
+
+Reset_Addr DCD Reset_Handler
+Undef_Addr DCD Undef_Handler
+SWI_Addr DCD SWI_Handler
+PAbt_Addr DCD PAbt_Handler
+DAbt_Addr DCD DAbt_Handler
+ DCD 0 ; Reserved Address
+IRQ_Addr DCD IRQ_Handler
+FIQ_Addr DCD FIQ_Handler
+
+Undef_Handler B Undef_Handler
+SWI_Handler B SWI_Handler
+PAbt_Handler B PAbt_Handler
+DAbt_Handler B DAbt_Handler
+FIQ_Handler B FIQ_Handler
+
+
+; Reset Handler
+
+ EXPORT Reset_Handler
+Reset_Handler
+
+;****************************************************************
+;* �رտ��Ź�
+;****************************************************************
+ LDR R0,=RTC_CTR
+ LDR R1,=0x0
+ STR R1,[R0]
+
+;****************************************************************
+;* ���ж�
+;****************************************************************
+ MRS R0, CPSR
+ BIC R0, R0, #MASK_MODE
+ ORR R0, R0, #MODE_SVC32
+ ORR R0, R0, #I_Bit
+ ORR R0, R0, #F_Bit
+ MSR CPSR_c, r0
+
+ LDR R0,=INTC_IER
+ LDR R1,=0x0
+ STR R1,[R0]
+ LDR R0,=INTC_IMR
+ LDR R1,=0xFFFFFFFF
+ STR R1,[R0]
+
+ LDR R0,=INTC_FIER
+ LDR R1,=0x0
+ STR R1,[R0]
+ LDR R0,=INTC_FIMR
+ LDR R1,=0x0F
+ STR R1,[R0]
+
+;****************************************************************
+;* ��ʼ��PMUģ��, ����ϵͳʱ��
+;****************************************************************
+ LDR R4, =PMU_PCSR ; ������ģ��ʱ��
+ LDR R5, =0x0001ffff
+ STR R5, [ R4 ]
+
+ LDR R4, =PMU_PLTR ; ����PLL�ȶ�����ʱ��Ϊ����ֵ50us*100M.
+ LDR R5, =0x00fa00fa
+ STR R5, [ R4 ]
+
+ LDR R4, =PMU_PMDR ; ��SLOWģʽ����NORMALģʽ
+ LDR R5, =0x00000001
+ STR R5, [ R4 ]
+
+ LDR R4, =PMU_PMCR ; ����ϵͳʱ��Ϊ72MHz 2*Fin*9=2*4*9=72MHz
+ LDR R5, =0x00004009 ; MFCN 0->1 trigger PLL to reconfigure event when mode isn''t SLOW
+ STR R5, [ R4 ]
+ LDR R4, =PMU_PMCR ;
+ LDR R5, =0x0000c009
+ STR R5, [ R4 ]
+
+;****************************************************************
+;* ��ʼ��EMI
+;****************************************************************
+; LDR R4, =EMI_CSACONF ; CSAƬѡʱ���������
+; LDR R5, =0x08a6a6a1
+; STR R5, [ R4 ]
+
+; LDR R4, =EMI_CSECONF ; CSEƬѡʱ���������,�������
+; LDR R5, =0x8cfffff1
+; STR R5, [ R4 ]
+
+; LDR R4, =EMI_SDCONF1 ; SDRAM��������1
+; LDR R5, =0x1E104177
+; STR R5, [ R4 ]
+
+; LDR R4, =EMI_SDCONF2 ; SDRAM��������2
+; LDR R5, =0x80001860
+; STR R5, [ R4 ]
+
+
+; Copy Exception Vectors to Internal RAM
+
+ IF :DEF:RAM_INTVEC
+ ADR R8, Vectors ; Source
+ LDR R9, =RAM_BASE ; Destination
+ LDMIA R8!, {R0-R7} ; Load Vectors
+ STMIA R9!, {R0-R7} ; Store Vectors
+ LDMIA R8!, {R0-R7} ; Load Handler Addresses
+ STMIA R9!, {R0-R7} ; Store Handler Addresses
+ ENDIF
+
+
+; Remap on-chip RAM to address 0
+
+ IF :DEF:REMAP
+ LDR R0, =EMI_REMAPCONF
+ MOV R1, #0x80000000
+ STR R1, [R0, #0] ; Remap
+ ENDIF
+
+
+; Setup Stack for each mode
+
+ LDR R0, =Stack_Top
+
+; Enter Undefined Instruction Mode and set its Stack Pointer
+ MSR CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit
+ MOV SP, R0
+ SUB R0, R0, #UND_Stack_Size
+
+; Enter Abort Mode and set its Stack Pointer
+ MSR CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit
+ MOV SP, R0
+ SUB R0, R0, #ABT_Stack_Size
+
+; Enter FIQ Mode and set its Stack Pointer
+ MSR CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit
+ MOV SP, R0
+ SUB R0, R0, #FIQ_Stack_Size
+
+; Enter IRQ Mode and set its Stack Pointer
+ MSR CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit
+ MOV SP, R0
+ SUB R0, R0, #IRQ_Stack_Size
+
+; Enter Supervisor Mode and set its Stack Pointer
+ MSR CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
+ MOV SP, R0
+ SUB R0, R0, #SVC_Stack_Size
+
+; Enter User Mode and set its Stack Pointer
+ ; MSR CPSR_c, #Mode_USR
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+
+ ELSE
+
+ ; No usr mode stack here.
+ ;MOV SP, R0
+ ;SUB SL, SP, #USR_Stack_Size
+
+ ENDIF
+
+
+; Enter the C code
+
+ IMPORT __main
+ LDR R0, =__main
+ BX R0
+
+ IMPORT rt_interrupt_enter
+ IMPORT rt_interrupt_leave
+ IMPORT rt_thread_switch_interrput_flag
+ IMPORT rt_interrupt_from_thread
+ IMPORT rt_interrupt_to_thread
+ IMPORT rt_hw_trap_irq
+ IMPORT rt_hw_trap_abort
+ IMPORT rt_interrupt_nest
+
+Abort_Handler PROC
+ EXPORT Abort_Handler
+ STMFD SP!, {R0-R12,LR}
+ LDR R0, =rt_interrupt_nest
+ LDR R1, [R0]
+ CMP R1, #0
+DeadLoop BHI DeadLoop ; Abort happened in irq mode, halt system.
+ BL rt_interrupt_enter
+ BL rt_hw_trap_abort
+ BL rt_interrupt_leave
+ B SWITCH
+ ENDP
+
+IRQ_Handler PROC
+ EXPORT IRQ_Handler
+ STMFD SP!, {R0-R12,LR}
+ BL rt_interrupt_enter
+ BL rt_hw_trap_irq
+ BL rt_interrupt_leave
+
+ ; if rt_thread_switch_interrput_flag set, jump to
+ ; rt_hw_context_switch_interrupt_do and don't return
+SWITCH
+ LDR R0, =rt_thread_switch_interrput_flag
+ LDR R1, [R0]
+ CMP R1, #1
+ BEQ rt_hw_context_switch_interrupt_do
+
+ LDMFD SP!, {R0-R12,LR}
+ SUBS PC, LR, #4
+ ENDP
+
+; /*
+; * void rt_hw_context_switch_interrupt_do(rt_base_t flag)
+; */
+rt_hw_context_switch_interrupt_do PROC
+ EXPORT rt_hw_context_switch_interrupt_do
+ MOV r1, #0 ; clear flag
+ STR r1, [r0]
+
+ LDMFD sp!, {r0-r12,lr}; reload saved registers
+ STMFD sp!, {r0-r3} ; save r0-r3
+ MOV r1, sp
+ ADD sp, sp, #16 ; restore sp
+ SUB r2, lr, #4 ; save old task's pc to r2
+
+ MRS r3, spsr ; get cpsr of interrupt thread
+
+ ; switch to SVC mode and no interrupt
+ MSR cpsr_c, #I_Bit:OR:F_Bit:OR:Mode_SVC
+
+ STMFD sp!, {r2} ; push old task's pc
+ STMFD sp!, {r4-r12,lr}; push old task's lr,r12-r4
+ MOV r4, r1 ; Special optimised code below
+ MOV r5, r3
+ LDMFD r4!, {r0-r3}
+ STMFD sp!, {r0-r3} ; push old task's r3-r0
+ STMFD sp!, {r5} ; push old task's cpsr
+ MRS r4, spsr
+ STMFD sp!, {r4} ; push old task's spsr
+
+ LDR r4, =rt_interrupt_from_thread
+ LDR r5, [r4]
+ STR sp, [r5] ; store sp in preempted tasks's TCB
+
+ LDR r6, =rt_interrupt_to_thread
+ LDR r6, [r6]
+ LDR sp, [r6] ; get new task's stack pointer
+
+ LDMFD sp!, {r4} ; pop new task's spsr
+ MSR spsr_cxsf, r4
+ LDMFD sp!, {r4} ; pop new task's psr
+ MSR cpsr_cxsf, r4
+
+ LDMFD sp!, {r0-r12,lr,pc} ; pop new task's r0-r12,lr & pc
+ ENDP
+
+ IF :DEF:__MICROLIB
+
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+; User Initial Stack & Heap
+ AREA |.text|, CODE, READONLY
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, = (Stack_Mem + IRQ_Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+ ENDIF
+
+ END
diff --git a/libcpu/arm/sep4020/trap.c b/libcpu/arm/sep4020/trap.c new file mode 100644 index 0000000000..cad14e88fc --- /dev/null +++ b/libcpu/arm/sep4020/trap.c @@ -0,0 +1,66 @@ +/* + * File : trap.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-25 Bernard first version
+ * 2010-03-18 zchong for sep4020 + */ + +#include <rtthread.h> +#include <rthw.h> + +#include "sep4020.h" + +/** + * @addtogroup SEP4020 + */ +/*@{*/ + +extern rt_isr_handler_t isr_table[];
+
+void rt_hw_trap_irq()
+{
+ rt_uint32_t intstat,intnum;
+ rt_uint8_t i = 0;
+ rt_isr_handler_t isr_func;
+
+ /* get interrupt source */
+ intstat = INTC_IFSR;
+
+ intnum = intstat;
+ if (intstat == INTGLOBAL) return;
+
+ while(intnum != 0x00000001)
+ {
+ intnum = intnum>>1;
+ i++;
+ }
+ /* get interrupt service routine */
+ isr_func = isr_table[i];
+
+ /* turn to interrupt service routine */
+ isr_func(intstat);
+
+} + +void rt_hw_trap_fiq() +{ + rt_kprintf("fast interrupt request\n"); +}
+ +extern struct rt_thread* rt_current_thread; +void rt_hw_trap_abort() +{
+ rt_kprintf("Abort occured!!! Thread [%s] suspended.\n",rt_current_thread->name);
+ rt_thread_suspend(rt_current_thread);
+ rt_schedule(); + +} +/*@}*/ |
