提交 9791a36d 编写于 作者: wuyangyong's avatar wuyangyong

update bsp lm3s_9b9x

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1528 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 647fc182
......@@ -13,7 +13,7 @@ if GetDepend('RT_USING_LWIP'):
src_drv += ['luminaryif.c']
src = File(src_bsp + src_drv)
CPPPATH = [RTT_ROOT + '/bsp/lm3s']
CPPPATH = [RTT_ROOT + '/bsp/lm3s_9b9x']
group = DefineGroup('Startup', src, depend = [''], CPPPATH = CPPPATH)
Return('group')
......@@ -37,7 +37,7 @@ static void rt_hw_console_init(void);
extern void rt_hw_interrupt_thread_switch(void);
/**
* This is the timer interrupt service routine.
*
*
*/
void rt_hw_timer_handler(void)
{
......@@ -45,7 +45,7 @@ void rt_hw_timer_handler(void)
rt_interrupt_enter();
rt_tick_increase();
/* leave interrupt */
rt_interrupt_leave();
rt_hw_interrupt_thread_switch();
......@@ -53,7 +53,7 @@ void rt_hw_timer_handler(void)
/**
* This is the ethernet interrupt service routine.
*
*
*/
void rt_hw_eth_handler(void)
{
......@@ -61,7 +61,7 @@ void rt_hw_eth_handler(void)
/* luminary ethernet interface */
extern void luminaryif_isr(void);
luminaryif_isr();
#endif
#endif
}
/**
......@@ -69,11 +69,8 @@ void rt_hw_eth_handler(void)
*/
void rt_hw_board_init()
{
/* set ldo */
SysCtlLDOSet(SYSCTL_LDO_2_50V);
/* set clock */
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
LM3S_XTAL_TYPE);
// set sysclock to 80M
SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
/* init systick */
SysTickDisable();
......@@ -82,8 +79,8 @@ void rt_hw_board_init()
SysTickEnable();
/* enable ssio */
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
//SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
/* init console */
rt_hw_console_init();
......
......@@ -6,16 +6,12 @@ Target (RT-Thread-lm3s), 0x0004 // Tools: 'ARM-ADS'
Group (Startup)
Group (Kernel)
Group (LM3S)
Group (Filesystem)
Group (finsh)
Group (LwIP)
Group (library)
File 1,1,<.\application.c><application.c>
File 1,1,<.\startup.c><startup.c>
File 1,1,<.\board.c><board.c>
File 1,1,<.\sdcard.c><sdcard.c>
File 1,1,<.\luminaryif.c><luminaryif.c>
File 2,1,<..\..\src\clock.c><clock.c>
File 2,1,<..\..\src\device.c><device.c>
File 2,1,<..\..\src\idle.c><idle.c>
......@@ -42,90 +38,52 @@ File 3,2,<..\..\libcpu\arm\lm3s\start_rvds.S><start_rvds.S>
File 3,1,<..\..\libcpu\arm\common\backtrace.c><backtrace.c>
File 3,1,<..\..\libcpu\arm\common\div0.c><div0.c>
File 3,1,<..\..\libcpu\arm\common\showmem.c><showmem.c>
File 4,1,<..\..\components\dfs\src\dfs.c><dfs.c>
File 4,1,<..\..\components\dfs\src\dfs_fs.c><dfs_fs.c>
File 4,1,<..\..\components\dfs\src\dfs_file.c><dfs_file.c>
File 4,1,<..\..\components\dfs\src\dfs_posix.c><dfs_posix.c>
File 4,1,<..\..\components\dfs\filesystems\elmfat\dfs_elm.c><dfs_elm.c>
File 4,1,<..\..\components\dfs\filesystems\elmfat\ff.c><ff.c>
File 5,1,<..\..\components\finsh\cmd.c><cmd.c>
File 5,1,<..\..\components\finsh\finsh_compiler.c><finsh_compiler.c>
File 5,1,<..\..\components\finsh\finsh_error.c><finsh_error.c>
File 5,1,<..\..\components\finsh\finsh_heap.c><finsh_heap.c>
File 5,1,<..\..\components\finsh\finsh_init.c><finsh_init.c>
File 5,1,<..\..\components\finsh\finsh_node.c><finsh_node.c>
File 5,1,<..\..\components\finsh\finsh_ops.c><finsh_ops.c>
File 5,1,<..\..\components\finsh\finsh_parser.c><finsh_parser.c>
File 5,1,<..\..\components\finsh\finsh_token.c><finsh_token.c>
File 5,1,<..\..\components\finsh\finsh_var.c><finsh_var.c>
File 5,1,<..\..\components\finsh\finsh_vm.c><finsh_vm.c>
File 5,1,<..\..\components\finsh\shell.c><shell.c>
File 5,1,<..\..\components\finsh\symbol.c><symbol.c>
File 6,1,<..\..\components\net\lwip\src\api\api_lib.c><api_lib.c>
File 6,1,<..\..\components\net\lwip\src\api\api_msg.c><api_msg.c>
File 6,1,<..\..\components\net\lwip\src\api\err.c><err.c>
File 6,1,<..\..\components\net\lwip\src\api\netbuf.c><netbuf.c>
File 6,1,<..\..\components\net\lwip\src\api\netdb.c><netdb.c>
File 6,1,<..\..\components\net\lwip\src\api\netifapi.c><netifapi.c>
File 6,1,<..\..\components\net\lwip\src\api\sockets.c><sockets.c>
File 6,1,<..\..\components\net\lwip\src\api\tcpip.c><tcpip.c>
File 6,1,<..\..\components\net\lwip\src\arch\sys_arch.c><sys_arch.c>
File 6,1,<..\..\components\net\lwip\src\arch\sys_arch_init.c><sys_arch_init.c>
File 6,1,<..\..\components\net\lwip\src\core\dhcp.c><dhcp.c>
File 6,1,<..\..\components\net\lwip\src\core\dns.c><dns.c>
File 6,1,<..\..\components\net\lwip\src\core\init.c><init.c>
File 6,1,<..\..\components\net\lwip\src\core\memp.c><memp.c>
File 6,1,<..\..\components\net\lwip\src\core\netif.c><netif.c>
File 6,1,<..\..\components\net\lwip\src\core\pbuf.c><pbuf.c>
File 6,1,<..\..\components\net\lwip\src\core\raw.c><raw.c>
File 6,1,<..\..\components\net\lwip\src\core\stats.c><stats.c>
File 6,1,<..\..\components\net\lwip\src\core\sys.c><sys.c>
File 6,1,<..\..\components\net\lwip\src\core\tcp.c><tcp.c>
File 6,1,<..\..\components\net\lwip\src\core\tcp_in.c><tcp_in.c>
File 6,1,<..\..\components\net\lwip\src\core\tcp_out.c><tcp_out.c>
File 6,1,<..\..\components\net\lwip\src\core\udp.c><udp.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\autoip.c><autoip.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\icmp.c><icmp.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\igmp.c><igmp.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\inet.c><inet.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\inet_chksum.c><inet_chksum.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\ip.c><ip.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\ip_addr.c><ip_addr.c>
File 6,1,<..\..\components\net\lwip\src\core\ipv4\ip_frag.c><ip_frag.c>
File 6,1,<..\..\components\net\lwip\src\core\snmp\asn1_dec.c><asn1_dec.c>
File 6,1,<..\..\components\net\lwip\src\core\snmp\asn1_enc.c><asn1_enc.c>
File 6,1,<..\..\components\net\lwip\src\core\snmp\mib2.c><mib2.c>
File 6,1,<..\..\components\net\lwip\src\core\snmp\mib_structs.c><mib_structs.c>
File 6,1,<..\..\components\net\lwip\src\core\snmp\msg_in.c><msg_in.c>
File 6,1,<..\..\components\net\lwip\src\core\snmp\msg_out.c><msg_out.c>
File 6,1,<..\..\components\net\lwip\src\netif\etharp.c><etharp.c>
File 6,1,<..\..\components\net\lwip\src\netif\ethernetif.c><ethernetif.c>
File 6,1,<..\..\components\net\lwip\src\netif\loopif.c><loopif.c>
File 6,1,<..\..\components\net\lwip\src\netif\slipif.c><slipif.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\auth.c><auth.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\chap.c><chap.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\chpms.c><chpms.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\fsm.c><fsm.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\ipcp.c><ipcp.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\lcp.c><lcp.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\magic.c><magic.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\md5.c><md5.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\pap.c><pap.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\ppp.c><ppp.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\ppp_oe.c><ppp_oe.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\randm.c><randm.c>
File 6,1,<..\..\components\net\lwip\src\netif\ppp\vj.c><vj.c>
File 7,4,<.\Libraries\driverlib\rvmdk\driverlib.lib><driverlib.lib>
File 4,1,<..\..\components\finsh\cmd.c><cmd.c>
File 4,1,<..\..\components\finsh\finsh_compiler.c><finsh_compiler.c>
File 4,1,<..\..\components\finsh\finsh_error.c><finsh_error.c>
File 4,1,<..\..\components\finsh\finsh_heap.c><finsh_heap.c>
File 4,1,<..\..\components\finsh\finsh_init.c><finsh_init.c>
File 4,1,<..\..\components\finsh\finsh_node.c><finsh_node.c>
File 4,1,<..\..\components\finsh\finsh_ops.c><finsh_ops.c>
File 4,1,<..\..\components\finsh\finsh_parser.c><finsh_parser.c>
File 4,1,<..\..\components\finsh\finsh_token.c><finsh_token.c>
File 4,1,<..\..\components\finsh\finsh_var.c><finsh_var.c>
File 4,1,<..\..\components\finsh\finsh_vm.c><finsh_vm.c>
File 4,1,<..\..\components\finsh\shell.c><shell.c>
File 4,1,<..\..\components\finsh\symbol.c><symbol.c>
File 5,1,<..\lm3s\Libraries\driverlib\adc.c><adc.c>
File 5,1,<..\lm3s\Libraries\driverlib\can.c><can.c>
File 5,1,<..\lm3s\Libraries\driverlib\comp.c><comp.c>
File 5,1,<..\lm3s\Libraries\driverlib\cpu.c><driverlib_cpu.c>
File 5,1,<..\lm3s\Libraries\driverlib\epi.c><epi.c>
File 5,1,<..\lm3s\Libraries\driverlib\ethernet.c><ethernet.c>
File 5,1,<..\lm3s\Libraries\driverlib\flash.c><flash.c>
File 5,1,<..\lm3s\Libraries\driverlib\gpio.c><gpio.c>
File 5,1,<..\lm3s\Libraries\driverlib\hibernate.c><hibernate.c>
File 5,1,<..\lm3s\Libraries\driverlib\i2c.c><i2c.c>
File 5,1,<..\lm3s\Libraries\driverlib\i2s.c><i2s.c>
File 5,1,<..\lm3s\Libraries\driverlib\interrupt.c><driverlib_interrupt.c>
File 5,1,<..\lm3s\Libraries\driverlib\mpu.c><mpu.c>
File 5,1,<..\lm3s\Libraries\driverlib\pwm.c><pwm.c>
File 5,1,<..\lm3s\Libraries\driverlib\qei.c><qei.c>
File 5,1,<..\lm3s\Libraries\driverlib\ssi.c><ssi.c>
File 5,1,<..\lm3s\Libraries\driverlib\sysctl.c><sysctl.c>
File 5,1,<..\lm3s\Libraries\driverlib\systick.c><systick.c>
File 5,1,<..\lm3s\Libraries\driverlib\timer.c><driverlib_timer.c>
File 5,1,<..\lm3s\Libraries\driverlib\uart.c><uart.c>
File 5,1,<..\lm3s\Libraries\driverlib\udma.c><udma.c>
File 5,1,<..\lm3s\Libraries\driverlib\usb.c><usb.c>
File 5,1,<..\lm3s\Libraries\driverlib\watchdog.c><watchdog.c>
Options 1,0,0 // Target 'RT-Thread-lm3s'
Device (LM3S8962)
Device (LM3S9B96)
Vendor (Luminary Micro)
Cpu (IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3"))
Cpu (IRAM(0x20000000-0x20017FFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3"))
FlashUt ()
StupF ("STARTUP\Luminary\Startup.s" ("Luminary Startup Code"))
FlashDR (UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000))
DevID (4722)
FlashDR (UL2CM3(-UV2077N9E -O14 -S1 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP7 -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000))
DevID (4850)
Rgf (LM3Sxxxx.H)
Mem ()
C ()
......@@ -140,17 +98,17 @@ Options 1,0,0 // Target 'RT-Thread-lm3s'
EnvBin ()
EnvInc ()
EnvLib ()
EnvReg (Luminary\)
OrgReg (Luminary\)
EnvReg (Luminary\)
OrgReg (Luminary\)
TgStat=16
OutDir (.\)
OutDir (.\objs\)
OutName (rtthread-lm3s)
GenApp=1
GenLib=0
GenHex=0
Debug=1
Browse=1
LstDir (.\)
LstDir (.\objs\)
HexSel=1
MG32K=0
TGMORE=0
......@@ -167,16 +125,16 @@ Options 1,0,0 // Target 'RT-Thread-lm3s'
RVDEV ()
ADSTFLGA { 0,12,0,0,163,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0 }
OCMADSOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
OCMADSIRAM { 0,0,0,0,32,0,0,1,0 }
OCMADSIRAM { 0,0,0,0,32,0,128,1,0 }
OCMADSIROM { 1,0,0,0,0,0,0,4,0 }
OCMADSXRAM { 0,0,0,0,0,0,0,0,0 }
OCR_RVCT { 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,1,0,0,0,0,0,0,0,0,0,0 }
OCR_RVCT { 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,128,1,0,0,0,0,0,0,0,0,0,0 }
RV_STAVEC ()
ADSCCFLG { 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
ADSCMISC ()
ADSCDEFN ()
ADSCUDEF ()
ADSCINCD (Libraries\inc;..\..\include;..\..\libcpu\arm\lm3s;..\..\components\net\lwip\src\include;Libraries\driverlib;.;..\..\components\net\lwip\src\include\ipv4;..\..\components\dfs;Libraries;..\..\components\net\lwip\src\arch\include;..\..\components\dfs\include;..\..\components\net\lwip\src;..\..\libcpu\arm\common;..\..\components\net\lwip\src\netif\ppp;..\..\components\finsh;..\..\components\net\lwip\src\include\netif)
ADSCINCD (..\lm3s\Libraries\driverlib;..\..\libcpu\arm\lm3s;..\lm3s\Libraries\inc;.;..\..\include;..\..\libcpu\arm\common;..\lm3s\Libraries;..\..\components\finsh)
ADSASFLG { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
ADSAMISC ()
ADSADEFN ()
......@@ -197,10 +155,10 @@ Options 1,0,0 // Target 'RT-Thread-lm3s'
ADSLDSC ()
ADSLDIB ()
ADSLDIC ()
ADSLDMC ( --keep __fsym_* --keep __vsym_*)
ADSLDMC ( --keep __fsym_* --keep __vsym_* )
ADSLDIF ()
ADSLDDW ()
OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S8962)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S8962)
OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S9B96)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S9B96)
OPTDBG 48118,4,()()()()()()()()()() (BIN\lmidk-agdi.dll)()()()
FLASH1 { 1,0,0,0,1,0,0,0,3,16,0,0,0,0,0,0,0,0,0,0 }
FLASH2 (BIN\lmidk-agdi.dll)
......
......@@ -74,7 +74,7 @@
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION
#define RT_USING_DFS
//#define RT_USING_DFS
/* SECTION: DFS options */
#define RT_USING_DFS_ELMFAT
#define RT_DFS_ELM_WORD_ACCESS
......@@ -88,7 +88,7 @@
/* SECTION: lwip, a lighwight TCP/IP protocol stack */
/* Using lighweight TCP/IP protocol stack*/
#define RT_USING_LWIP
//#define RT_USING_LWIP
/* Trace LwIP protocol*/
/* #define RT_LWIP_DEBUG */
......
# toolchains options
ARCH='arm'
CPU='lm3s'
CROSS_TOOL = 'gcc'
CROSS_TOOL = 'keil'
if CROSS_TOOL == 'gcc':
PLATFORM = 'gcc'
......
......@@ -7,14 +7,14 @@ Target (RT-Thread-lm3s), 0x0004 // Tools: 'ARM-ADS'
Options 1,0,0 // Target 'RT-Thread-lm3s'
Device (LM3S8962)
Device (LM3S9B96)
Vendor (Luminary Micro)
Cpu (IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3"))
Cpu (IRAM(0x20000000-0x20017FFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3"))
FlashUt ()
StupF ("STARTUP\Luminary\Startup.s" ("Luminary Startup Code"))
FlashDR (UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000))
DevID (4285)
Rgf (LM3Sxxx.H)
FlashDR (UL2CM3(-UV2077N9E -O14 -S1 -C0 -N00("ARM CoreSight JTAG-DP") -D00(3BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP7 -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000))
DevID (4850)
Rgf (LM3Sxxxx.H)
Mem ()
C ()
A ()
......@@ -55,10 +55,10 @@ Options 1,0,0 // Target 'RT-Thread-lm3s'
RVDEV ()
ADSTFLGA { 0,12,0,0,160,0,0,66,0,0,0,0,0,0,0,0,0,0,0,0 }
OCMADSOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
OCMADSIRAM { 0,0,0,0,32,0,0,1,0 }
OCMADSIRAM { 0,0,0,0,32,0,128,1,0 }
OCMADSIROM { 1,0,0,0,0,0,0,4,0 }
OCMADSXRAM { 0,0,0,0,0,0,0,0,0 }
OCR_RVCT { 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,1,0,0,0,0,0,0,0,0,0,0 }
OCR_RVCT { 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,128,1,0,0,0,0,0,0,0,0,0,0 }
RV_STAVEC ()
ADSCCFLG { 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
ADSCMISC ()
......@@ -88,11 +88,11 @@ Options 1,0,0 // Target 'RT-Thread-lm3s'
ADSLDMC ()
ADSLDIF ()
ADSLDDW ()
OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S8962)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S8962)
OPTDL (SARMCM3.DLL)()(DLM.DLL)(-pLM3S9B96)(SARMCM3.DLL)()(TLM.DLL)(-pLM3S9B96)
OPTDBG 48118,4,()()()()()()()()()() (BIN\lmidk-agdi.dll)()()()
FLASH1 { 1,0,0,0,1,0,0,0,3,16,0,0,0,0,0,0,0,0,0,0 }
FLASH2 (BIN\lmidk-agdi.dll)
FLASH3 ()
FLASH3 ("" ())
FLASH4 ()
EndOpt
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册