summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorPeng Fan <[email protected]>2013-07-17 13:37:31 +0800
committerPeng Fan <[email protected]>2013-07-17 13:37:31 +0800
commit73beced22a2677fdc8e790b6d923f0fc804d385b (patch)
tree68dc590537dccd2b06160849de9ddd5945b2c30f /bsp
parentf0f0e3dd9e88478c1bde461ff16dabe8240fb670 (diff)
SEP6200 Support
Diffstat (limited to 'bsp')
-rw-r--r--bsp/sep6200/SConscript12
-rw-r--r--bsp/sep6200/SConstruct33
-rw-r--r--bsp/sep6200/application/SConscript9
-rw-r--r--bsp/sep6200/application/application.c93
-rw-r--r--bsp/sep6200/application/startup.c121
-rw-r--r--bsp/sep6200/board.h25
-rw-r--r--bsp/sep6200/drivers/SConscript19
-rw-r--r--bsp/sep6200/drivers/board.c173
-rw-r--r--bsp/sep6200/rtconfig.h210
-rw-r--r--bsp/sep6200/rtconfig.py57
-rw-r--r--bsp/sep6200/sep6200.ld86
11 files changed, 838 insertions, 0 deletions
diff --git a/bsp/sep6200/SConscript b/bsp/sep6200/SConscript
new file mode 100644
index 0000000000..0992612410
--- /dev/null
+++ b/bsp/sep6200/SConscript
@@ -0,0 +1,12 @@
+from building import *
+
+cwd = GetCurrentDir()
+objs = []
+list = os.listdir(cwd)
+
+for d in list:
+ path = os.path.join(cwd, d)
+ if os.path.isfile(os.path.join(path, 'SConscript')):
+ objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+Return('objs')
diff --git a/bsp/sep6200/SConstruct b/bsp/sep6200/SConstruct
new file mode 100644
index 0000000000..7c6bc8e032
--- /dev/null
+++ b/bsp/sep6200/SConstruct
@@ -0,0 +1,33 @@
+import os
+import sys
+import rtconfig
+
+if os.getenv('RTT_ROOT'):
+ RTT_ROOT = os.getenv('RTT_ROOT')
+else:
+ RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')
+
+sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
+from building import *
+
+TARGET = 'rtthread-sep6200.' + rtconfig.TARGET_EXT
+
+env = Environment(tools = ['mingw'],
+ AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
+ CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
+ AR = rtconfig.AR, ARFLAGS = '-rc',
+ LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
+env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
+
+env.Replace(LINKCOM = ['$LINK $SOURCES $LINKFLAGS -o $TARGET'])
+Export('RTT_ROOT')
+Export('rtconfig')
+
+# prepare building environment
+objs = PrepareBuilding(env, RTT_ROOT)
+
+# build program
+env.Program(TARGET, objs)
+
+# end building
+EndBuilding(TARGET)
diff --git a/bsp/sep6200/application/SConscript b/bsp/sep6200/application/SConscript
new file mode 100644
index 0000000000..f0c03fb280
--- /dev/null
+++ b/bsp/sep6200/application/SConscript
@@ -0,0 +1,9 @@
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c')
+CPPPATH = [cwd, str(Dir('#'))]
+
+group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
+
+Return('group')
diff --git a/bsp/sep6200/application/application.c b/bsp/sep6200/application/application.c
new file mode 100644
index 0000000000..2fbb1b803e
--- /dev/null
+++ b/bsp/sep6200/application/application.c
@@ -0,0 +1,93 @@
+/*
+ * File : application.c
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2006 - 2012, 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
+ * 2007-11-20 Yi.Qiu add rtgui application
+ * 2008-6-28 Bernard no rtgui init
+ * 2013-7-14 Peng Fan modified from mini4020
+ */
+
+/**
+ * @addtogroup sep6200
+ */
+
+/*@{*/
+
+#include "board.h"
+#include <rtthread.h>
+
+#ifdef RT_USING_DFS
+#include <dfs_init.h>
+#include <dfs_elm.h>
+#include <dfs_fs.h>
+#include <dfs_posix.h>
+#endif
+
+#ifdef RT_USING_RTGUI
+#include <rtgui/rtgui.h>
+extern void radio_rtgui_init(void);
+#endif
+
+#define RT_INIT_THREAD_STACK_SIZE (2*1024)
+
+void rt_init_thread_entry(void *parameter)
+{
+ while(1){
+ rt_thread_sleep(200);
+ rt_hw_console_output("init thread\n");
+ }
+}
+
+void rt_test1_thread_entry(void *parameter)
+{
+ while(1){
+ rt_thread_sleep(800);
+ rt_hw_console_output("test1 thread\n");
+ }
+}
+
+void rt_test2_thread_entry(void *parameter)
+{
+ while(1){
+ rt_thread_sleep(300);
+ rt_hw_console_output("test2 thread\n");
+ }
+}
+
+int rt_application_init(void)
+{
+ rt_thread_t init_thread;
+ rt_thread_t test1_thread;
+ rt_thread_t test2_thread;
+
+ init_thread = rt_thread_create("init",
+ rt_init_thread_entry, RT_NULL,
+ RT_INIT_THREAD_STACK_SIZE, 8, 20);
+
+ test1_thread = rt_thread_create("test1",
+ rt_test1_thread_entry, RT_NULL,
+ 512, 200, 20);
+ test2_thread = rt_thread_create("test2",
+ rt_test2_thread_entry, RT_NULL,
+ 512, 200, 20);
+
+ if (init_thread != RT_NULL)
+ rt_thread_startup(init_thread);
+
+ if (test1_thread != RT_NULL)
+ rt_thread_startup(test1_thread);
+
+ if (test2_thread != RT_NULL)
+ rt_thread_startup(test2_thread);
+
+ return 0;
+}
+
+/*@}*/
diff --git a/bsp/sep6200/application/startup.c b/bsp/sep6200/application/startup.c
new file mode 100644
index 0000000000..6302c62512
--- /dev/null
+++ b/bsp/sep6200/application/startup.c
@@ -0,0 +1,121 @@
+/*
+ * File : application.c
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2009 - 2012, 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
+ * 2013-7-14 Peng Fan Modified from mini4020
+ */
+
+#include <rthw.h>
+#include <rtthread.h>
+
+#include <board.h>
+#include <serial.h>
+#ifdef RT_USING_FINSH
+#include <finsh.h>
+#endif
+
+#ifdef RT_USING_LWIP
+#include <lwip/sys.h>
+#include <netif/ethernetif.h>
+#endif
+
+#include <sep6200.h>
+
+rt_uint8_t _irq_stack_start[1024];
+rt_uint8_t _fiq_stack_start[1024];
+rt_uint8_t _undefined_stack_start[512];
+rt_uint8_t _abort_stack_start[512];
+rt_uint8_t _priv_stack_start[4096]; SECTION(".nobss");
+extern unsigned char __bss_start;
+extern unsigned char __bss_end;
+
+
+extern void rt_hw_board_init(void);
+extern void rt_application_init(void);
+extern void finsh_system_init(void);
+extern void sd_init(void);
+
+void rtthread_startup()
+{
+ /* 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();
+
+ /* init heap memory system */
+ rt_system_heap_init(&__bss_end, (void*)0x45000000);
+
+ /* init scheduler system */
+ rt_system_scheduler_init();
+
+#ifdef RT_USING_DEVICE
+
+#ifdef RT_USING_DFS
+ rt_hw_sdcard_init();
+#endif
+
+#ifdef RT_USING_LWIP
+ eth_system_device_init();
+ rt_hw_dm9000_init();
+#endif
+
+ /*init all registed devices */
+ rt_device_init_all();
+#endif
+
+ /* init application */
+ rt_application_init();
+
+#ifdef RT_USING_FINSH
+ /* init finsh */
+ finsh_system_init();
+#ifdef RT_USING_DEVICE
+ finsh_set_device("uart0");
+#endif
+#endif
+
+ rt_system_timer_thread_init();
+
+ /* init idle thread */
+ rt_thread_idle_init();
+
+ /* start scheduler */
+ rt_system_scheduler_start();
+
+ /* never reach here */
+ return ;
+
+}
+
+int main()
+{
+ rt_uint32_t UNUSED level;
+
+ /* disable interrupt first */
+ level = rt_hw_interrupt_disable();
+
+ /* startup RT-Thread RTOS */
+ rtthread_startup();
+
+ return 0;
+}
diff --git a/bsp/sep6200/board.h b/bsp/sep6200/board.h
new file mode 100644
index 0000000000..deaf15d16f
--- /dev/null
+++ b/bsp/sep6200/board.h
@@ -0,0 +1,25 @@
+/*
+ * File : board.h
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2009 - 2012, 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
+ * 2006-10-08 Bernard add board.h to this bsp
+ * 2010-10-5 Wangmeng sep4020 implemention
+ * 2013-7-14 Peng Fan Modified from sep4020
+ */
+
+#ifndef __BOARD_H__
+#define __BOARD_H__
+
+#include <sep6200.h>
+
+void rt_hw_board_init(void);
+void rt_hw_sdcard_init(void);
+
+#endif
diff --git a/bsp/sep6200/drivers/SConscript b/bsp/sep6200/drivers/SConscript
new file mode 100644
index 0000000000..b9eed3f700
--- /dev/null
+++ b/bsp/sep6200/drivers/SConscript
@@ -0,0 +1,19 @@
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c')
+
+# remove no need file.
+if GetDepend('RT_USING_LWIP') == False:
+ SrcRemove(src, 'dm9161.c')
+if GetDepend('RT_USING_DFS') == False:
+ SrcRemove(src, 'sdcard.c')
+if GetDepend('RT_USING_RTGUI') == False:
+ SrcRemove(src, 'lcd.c')
+ SrcRemove(src, 'lcdc.c')
+
+CPPPATH = [cwd]
+
+group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
+
+Return('group')
diff --git a/bsp/sep6200/drivers/board.c b/bsp/sep6200/drivers/board.c
new file mode 100644
index 0000000000..e71449809c
--- /dev/null
+++ b/bsp/sep6200/drivers/board.c
@@ -0,0 +1,173 @@
+/*
+ * File : board.c
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2006 - 2012 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
+ * 2013-7-14 Peng Fan sep6200 implementation
+ */
+
+#include <rthw.h>
+#include <rtthread.h>
+
+#include <serial.h>
+
+#include <sep6200.h>
+
+void rt_hw_serial_putc(const char c);
+
+#define UART0 ((struct uartport *)SEP6200_UART0_BASE)
+
+struct rt_device uart0_device;
+struct serial_int_rx uart0_int_rx;
+struct serial_device uart0 =
+{
+ UART0,
+ &uart0_int_rx,
+ RT_NULL
+};
+
+/*
+ * This function will handle rtos timer
+ */
+void rt_timer_handler(int vector, void *param)
+{
+ rt_uint32_t clear_int;
+
+ /* clear timer interrupt */
+ if (read_reg(SEP6200_TIMER_T2IMSR) & 0x1)
+ clear_int = read_reg(SEP6200_TIMER_T2ISCR);
+
+ rt_tick_increase();
+}
+
+/*
+ * This function will handle serial interrupt
+ */
+#if 1
+void rt_serial_handler(int vector, void *param)
+{
+ rt_uint32_t num;
+ switch (vector) {
+ case INTSRC_UART0:
+
+ /*No interrupt*/
+ if ((*(RP)SEP6200_UART0_IIR & 0x1))
+ return;
+
+ /*Get the serial interrupt num*/
+ num = (*(RP)SEP6200_UART0_IIR >> 1) & 0x7;
+
+ /*Receive or timeout*/
+ if ((num == 6) || (num == 2))
+ rt_hw_serial_isr(&uart0_device);
+ break;
+ /*1,2,3 not implemented now, do in future*/
+ case INTSRC_UART1:
+ break;
+ case INTSRC_UART2:
+ break;
+ case INTSRC_UART3:
+ break;
+ }
+}
+#endif
+
+/*
+ * This function will init timer2 for system ticks
+ */
+
+#define BUS4_FREQ 320000000UL
+#define TIMER_CLK BUS4_FREQ
+#define HZ 100
+void rt_hw_timer_init(void)
+{
+ *(RP)SEP6200_TIMER_T2LCR = (TIMER_CLK + HZ / 2) / HZ;
+ *(RP)SEP6200_TIMER_T2CR = 0x6;
+
+ rt_hw_interrupt_install(INTSRC_TIMER1, rt_timer_handler, RT_NULL, "timer");
+ rt_hw_interrupt_umask(INTSRC_TIMER1);
+
+ /* start the timer */
+ *(RP)SEP6200_TIMER_T2CR |= 0x1;
+}
+
+/*
+ * This function will init uart
+ */
+#define UART_CLK 60000000UL
+void rt_hw_uart_init(void)
+{
+ const rt_uint32_t uartclk = UART_CLK;
+
+ *(RP)(SEP6200_UART0_LCR) = 0x83;
+ *(RP)(SEP6200_UART0_DLBH) = (uartclk/16/115200) >> 8;
+ *(RP)(SEP6200_UART0_DLBL) = (uartclk/16/115200) & 0xff;
+ *(RP)(SEP6200_UART0_LCR) = 0x83 & (~(0x1 << 7));
+
+ *(RP)(SEP6200_UART0_FCR) = 0x0;
+ *(RP)(SEP6200_UART0_MCR) = 0x0;
+
+ *(RP)(SEP6200_UART0_IER) = 0x0;
+ /* Enable rx interrupt*/
+ *(RP)(SEP6200_UART0_IER) |= 0x1;
+ /* Disable tx interrupt*/
+ *(RP)(SEP6200_UART0_IER) &= ~(0x1 << 1);
+
+ rt_hw_interrupt_install(INTSRC_UART0, rt_serial_handler, RT_NULL, "uart0");
+ rt_hw_interrupt_umask(INTSRC_UART0);
+
+ rt_hw_serial_register(&uart0_device, "uart0",
+ RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
+ &uart0);
+}
+
+void rt_hw_board_init(void)
+{
+ int i = 0;
+ rt_hw_uart_init();
+ rt_hw_timer_init();
+}
+
+/*
+ * Write one char to serial, must not trigger interrupt
+ */
+void rt_hw_serial_putc(const char c)
+{
+ if (c == '\n')
+ rt_hw_serial_putc('\r');
+
+ while (!((*(RP)SEP6200_UART0_LSR) & 0x40));
+
+ *(RP)(SEP6200_UART0_TXFIFO) = c;
+}
+
+void printhex(unsigned int data)
+{
+ int i = 0,a = 0;
+ for (i = 0; i < 8; i++) {
+ a = (data>>(32-(i+1)*4))&0xf;
+ if (((a<=9)&&(a>=0)))
+ rt_hw_serial_putc(a + 0x30);
+ else if ((a <= 0xf) && (a >= 0xa))
+ rt_hw_serial_putc(a-0xa+0x61);
+ }
+ rt_hw_serial_putc('\n');
+}
+
+/**
+* This function is used by rt_kprintf to display a string on console.
+*
+* @param str the displayed string^M
+*/
+void rt_hw_console_output(const char *str)
+{
+ while (*str) {
+ rt_hw_serial_putc(*str++);
+ }
+}
diff --git a/bsp/sep6200/rtconfig.h b/bsp/sep6200/rtconfig.h
new file mode 100644
index 0000000000..b3f260531b
--- /dev/null
+++ b/bsp/sep6200/rtconfig.h
@@ -0,0 +1,210 @@
+/* RT-Thread config file */
+#ifndef __RTTHREAD_CFG_H__
+#define __RTTHREAD_CFG_H__
+
+#define RT_DEBUG
+//#define RT_DEBUG_IRQ 1
+//#define RT_DEBUG_TIMER 1
+
+//#define RT_DEBUG_MEM 1
+//#define RT_DEBUG_MEMHEAP 1
+//#define RT_DEBUG_MODULE 1
+//#define RT_DEBUG_SCHEDULER 1
+//#define RT_DEBUG_SLAB 1
+//#define RT_DEBUG_THREAD 1
+//#define RT_DEBUG_IPC 1
+
+/* RT_NAME_MAX*/
+#define RT_NAME_MAX 8
+
+/* RT_ALIGN_SIZE*/
+#define RT_ALIGN_SIZE 4
+
+/* PRIORITY_MAX */
+#define RT_THREAD_PRIORITY_MAX 256
+
+/* Tick per Second */
+#define RT_TICK_PER_SECOND 100
+
+/* SECTION: RT_DEBUG */
+/* Thread Debug */
+#define RT_DEBUG
+/* #define RT_THREAD_DEBUG */
+
+#define RT_USING_OVERFLOW_CHECK
+
+/* Using Hook */
+#define RT_USING_HOOK
+
+/* Using Software Timer */
+//#define RT_USING_TIMER_SOFT
+#define RT_TIMER_THREAD_PRIO 8
+#define RT_TIMER_THREAD_STACK_SIZE 512
+#define RT_TIMER_TICK_PER_SECOND 10
+
+/* SECTION: IPC */
+/* Using Semaphore */
+#define RT_USING_SEMAPHORE
+
+/* Using Mutex */
+#define RT_USING_MUTEX
+
+/* Using Event */
+#define RT_USING_EVENT
+
+/* 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 */
+
+/* Using SLAB Allocator */
+#define RT_USING_SLAB
+
+#define RT_USING_CONSOLE
+/* SECTION: Device System */
+/* Using Device System */
+#define RT_USING_DEVICE
+
+/* SECTION: Console options */
+/* the buffer size of console */
+#define RT_CONSOLEBUF_SIZE 128
+
+/* SECTION: finsh, a C-Express shell */
+/* Using FinSH as Shell*/
+#define RT_USING_FINSH
+#define FINSH_USING_SYMTAB
+#define FINSH USING DESCRIPTION
+
+/* SECTION: a runtime libc library */
+/* a runtime libc library */
+/* #define RT_USING_NEWLIB */
+
+/* SECTION: a mini libc */
+
+/* SECTION: C++ support */
+/* Using C++ support */
+/* #define RT_USING_CPLUSPLUS */
+
+/* SECTION: Device filesystem support */
+/* using DFS support */
+//#define RT_USING_DFS //fanpeng
+//#define RT_USING_DFS_ELMFAT //fanpeng
+/* #define RT_USING_DFS_YAFFS2 */
+
+/* #define DFS_USING_WORKDIR */
+
+/* the max number of mounted filesystem */
+#define DFS_FILESYSTEMS_MAX 2
+/* the max number of opened files */
+#define DFS_FD_MAX 16
+/* the max number of cached sector */
+#define DFS_CACHE_MAX_NUM 4
+
+/* SECTION: lwip, a lighwight TCP/IP protocol stack */
+/* Using lighweight TCP/IP protocol stack */
+//#define RT_USING_LWIP
+//#define RT_LWIP_DNS
+
+/* Trace LwIP protocol */
+/* #define RT_LWIP_DEBUG */
+
+/* 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 1024*10
+
+/* TCP receive window. */
+#define RT_LWIP_TCP_WND 1024
+
+/* 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
+
+/* the number of blocks for pbuf */
+#define RT_LWIP_PBUF_NUM 16
+
+/* thread priority of tcpip thread */
+#define RT_LWIP_TCPTHREAD_PRIORITY 128
+
+/* mail box size of tcpip thread to wait for */
+#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8
+
+/* thread stack size of tcpip thread */
+#define RT_LWIP_TCPTHREAD_STACKSIZE 4096
+
+/* thread priority of ethnetif thread */
+#define RT_LWIP_ETHTHREAD_PRIORITY 144
+
+/* mail box size of ethnetif thread to wait for */
+#define RT_LWIP_ETHTHREAD_MBOX_SIZE 32
+
+/* thread stack size of ethnetif thread */
+#define RT_LWIP_ETHTHREAD_STACKSIZE 1024
+
+/* SECTION: RTGUI support */
+/* using RTGUI support */
+/* #define RT_USING_RTGUI */
+
+/* name length of RTGUI object */
+#define RTGUI_NAME_MAX 16
+/* support 16 weight font */
+#define RTGUI_USING_FONT16
+/* support 16 weight font */
+#define RTGUI_USING_FONT12
+/* support Chinese font */
+#define RTGUI_USING_FONTHZ
+/* use DFS as file interface */
+#define RTGUI_USING_DFS_FILERW
+/* use font file as Chinese font */
+/* #define RTGUI_USING_HZ_FILE */
+/* use Chinese bitmap font */
+#define RTGUI_USING_HZ_BMP
+/* use small size in RTGUI */
+/* #define RTGUI_USING_SMALL_SIZE */
+/* use mouse cursor */
+/* #define RTGUI_USING_MOUSE_CURSOR */
+#endif
diff --git a/bsp/sep6200/rtconfig.py b/bsp/sep6200/rtconfig.py
new file mode 100644
index 0000000000..f2e4a3afdc
--- /dev/null
+++ b/bsp/sep6200/rtconfig.py
@@ -0,0 +1,57 @@
+import os
+
+# toolchains options
+ARCH = 'unicore32'
+CPU = 'sep6200'
+TextBase = '0x00000000'
+
+CROSS_TOOL = 'gcc'
+
+if os.getenv('RTT_CC'):
+ CROSS_TOOL = os.getenv('RTT_CC')
+
+if CROSS_TOOL == 'gcc':
+ PLATFORM = 'gcc'
+ EXEC_PATH = '/usr/unicore/gnu-toolchain-unicore/uc4-1.0-beta-hard-RHELAS5/bin/'
+elif CROSS_TOOL == 'keil':
+ PLATFORM = 'armcc'
+ EXEC_PATH = 'C:/Keil'
+elif CROSS_TOOL == 'iar':
+ print '================ERROR============================'
+ print 'Not support yet!'
+ print '================================================='
+ exit(0)
+
+if os.getenv('RTT_EXEC_PATH'):
+ EXEC_PATH = os.getenv('RTT_EXEC_PATH')
+
+#BUILD = 'debug'
+BUILD = 'release'
+
+if PLATFORM == 'gcc':
+ # toolchains
+ PREFIX = 'unicore32-linux-'
+ CC = PREFIX + 'gcc'
+ AS = PREFIX + 'gcc'
+ AR = PREFIX + 'ar'
+ LINK = PREFIX + 'ld'
+ TARGET_EXT = 'elf'
+ SIZE = PREFIX + 'size'
+ OBJDUMP = PREFIX + 'objdump'
+ OBJCPY = PREFIX + 'objcopy'
+
+ DEVICE = ' '
+ CFLAGS = DEVICE
+ AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' + ' -DTEXT_BASE=' + TextBase
+ LFLAGS = DEVICE + ' -Bstatic --gc-sections -Map=rtthread_sep6200.map -cref -u _start -Ttext 0x40000000 -T sep6200.ld -L/usr/unicore/gnu-toolchain-unicore/uc4-1.0-beta-hard-RHELAS5/lib/gcc/unicore32-linux/4.4.2 -lgcc' + ' -Ttext ' + TextBase
+
+ CPATH = ''
+ LPATH = ''
+
+ if BUILD == 'debug':
+ CFLAGS += ' -O0 -gdwarf-2'
+ AFLAGS += ' -gdwarf-2'
+ else:
+ CFLAGS += ' -O2'
+
+ POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
diff --git a/bsp/sep6200/sep6200.ld b/bsp/sep6200/sep6200.ld
new file mode 100644
index 0000000000..a1f1f75fca
--- /dev/null
+++ b/bsp/sep6200/sep6200.ld
@@ -0,0 +1,86 @@
+OUTPUT_FORMAT("elf32-littleunicore32", "elf32-bigunicore32", "elf32-littleunicore32")
+OUTPUT_ARCH(unicore32)
+ENTRY(_start)
+SEARCH_DIR("/usr/unicore/gnu-toolchain-unicore/uc4-1.0-beta-hard-RHELAS5/unicore32-linux/lib");
+SECTIONS
+{
+ . = 0x00000000;
+
+ . = ALIGN(4);
+ .text :
+ {
+ *(.init)
+ *(.text)
+ *(.gnu.linkonce.t*)
+
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
+ . = ALIGN(4);
+
+ /* section information for modules */
+ . = ALIGN(4);
+ __rtmsymtab_start = .;
+ KEEP(*(RTMSymTab))
+ __rtmsymtab_end = .;
+ }
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.eh_frame) }
+
+ . = ALIGN(4);
+ .ctors :
+ {
+ PROVIDE(__ctors_start__ = .);
+ KEEP(*(SORT(.ctors.*)))
+ KEEP(*(.ctors))
+ PROVIDE(__ctors_end__ = .);
+ }
+
+ .dtors :
+ {
+ PROVIDE(__dtors_start__ = .);
+ KEEP(*(SORT(.dtors.*)))
+ KEEP(*(.dtors))
+ PROVIDE(__dtors_end__ = .);
+ }
+
+ . = ALIGN(4);
+ .data :
+ {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d*)
+ }
+
+ . = ALIGN(4);
+ .nobss : { *(.nobss) }
+
+ /*. = 0x00300000*/
+ . = ALIGN(4);
+ __bss_start = .;
+ .bss : { *(.bss) }
+ __bss_end = .;
+
+ /* stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_info 0 : { *(.debug_info) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ .debug_aranges 0 : { *(.debug_aranges) }
+
+ _end = .;
+}