update pic32ethernet

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1684 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
wuyangyong 2011-09-01 05:38:34 +00:00
parent c41b9c2950
commit cf52e57490
9 changed files with 768 additions and 29 deletions

View File

@ -63,7 +63,7 @@ static void rt_hw_timer_handler(void)
} }
/** /**
* This function will initial FM3 Easy Kit board. * This function will initial board.
*/ */
void rt_hw_board_init() void rt_hw_board_init()
{ {
@ -73,7 +73,11 @@ void rt_hw_board_init()
// The PBDIV value is already set via the pragma FPBDIV option above. // The PBDIV value is already set via the pragma FPBDIV option above.
SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE); SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
rt_hw_console_init(); /* use DBPRINTF */
/* rt_hw_console_init(); */
rt_hw_usart_init();
rt_console_set_device("uart1");
rt_hw_show_info(); rt_hw_show_info();
@ -94,9 +98,6 @@ void rt_hw_board_init()
/* Setup the software interrupt. */ /* Setup the software interrupt. */
mConfigIntCoreSW0( CSW_INT_ON | CSW_INT_PRIOR_1 | CSW_INT_SUB_PRIOR_0 ); mConfigIntCoreSW0( CSW_INT_ON | CSW_INT_PRIOR_1 | CSW_INT_SUB_PRIOR_0 );
// configure PORTD.RD0 = output,Toggle in CoreSW0Handler.
mPORTDSetPinsDigitalOut(BIT_0);
} }
void __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler(void) void __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler(void)
@ -106,9 +107,6 @@ void __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler(void)
// .. things to do // .. things to do
rt_hw_timer_handler(); rt_hw_timer_handler();
// // .. in this case, toggle the LED
// mPORTDToggleBits(BIT_1);
} }
//void __ISR(_CORE_TIMER_VECTOR, ipl2) CoreTimerHandler(void) //void __ISR(_CORE_TIMER_VECTOR, ipl2) CoreTimerHandler(void)
@ -121,9 +119,6 @@ void __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler(void)
// //
// // update the period // // update the period
// UpdateCoreTimer(CORE_TICK_RATE); // UpdateCoreTimer(CORE_TICK_RATE);
//
// // .. Toggle the LED
// mPORTDToggleBits(BIT_1);
//} //}

View File

@ -0,0 +1,66 @@
/*************************************************************************
* Processor-specific object file. Contains SFR definitions.
*************************************************************************/
INPUT("processor.o")
/*************************************************************************
* For interrupt vector handling
*************************************************************************/
PROVIDE(_vector_spacing = 0x00000001);
_ebase_address = 0x9FC01000;
/*************************************************************************
* Memory Address Equates
*************************************************************************/
_RESET_ADDR = 0xBFC00000;
_BEV_EXCPT_ADDR = 0xBFC00380;
_DBG_EXCPT_ADDR = 0xBFC00480;
_DBG_CODE_ADDR = 0xBFC02000;
_GEN_EXCPT_ADDR = _ebase_address + 0x180;
/*************************************************************************
* Memory Regions
*
* Memory regions without attributes cannot be used for orphaned sections.
* Only sections specifically assigned to these regions can be allocated
* into these regions.
*************************************************************************/
MEMORY
{
kseg0_program_mem (rx) : ORIGIN = 0x9D000000, LENGTH = 0x80000
kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970
exception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490
debug_exec_mem : ORIGIN = 0xBFC02000, LENGTH = 0xFF0
config3 : ORIGIN = 0xBFC02FF0, LENGTH = 0x4
config2 : ORIGIN = 0xBFC02FF4, LENGTH = 0x4
config1 : ORIGIN = 0xBFC02FF8, LENGTH = 0x4
config0 : ORIGIN = 0xBFC02FFC, LENGTH = 0x4
kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000
sfrs : ORIGIN = 0xBF800000, LENGTH = 0x100000
configsfrs : ORIGIN = 0xBFC02FF0, LENGTH = 0x10
}
SECTIONS
{
.config_BFC02FF0 : {
KEEP(*(.config_BFC02FF0))
} > config3
.config_BFC02FF4 : {
KEEP(*(.config_BFC02FF4))
} > config2
.config_BFC02FF8 : {
KEEP(*(.config_BFC02FF8))
} > config1
.config_BFC02FFC : {
KEEP(*(.config_BFC02FFC))
} > config0
.text :
{
__fsymtab_start = .;
KEEP(*(FSymTab))
__fsymtab_end = .;
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
} > kseg0_program_mem
}

View File

@ -28,10 +28,343 @@
<Unit filename="console.c"> <Unit filename="console.c">
<Option compilerVar="CC" /> <Option compilerVar="CC" />
</Unit> </Unit>
<Unit filename="pic32_eth.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="pic32_eth.h" />
<Unit filename="rtconfig.h" /> <Unit filename="rtconfig.h" />
<Unit filename="startup.c"> <Unit filename="startup.c">
<Option compilerVar="CC" /> <Option compilerVar="CC" />
</Unit> </Unit>
<Unit filename="uart.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="uart.h" />
<Unit filename="..\..\components\finsh\cmd.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh.h" />
<Unit filename="..\..\components\finsh\finsh_compiler.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_error.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_error.h" />
<Unit filename="..\..\components\finsh\finsh_heap.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_heap.h" />
<Unit filename="..\..\components\finsh\finsh_init.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_node.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_node.h" />
<Unit filename="..\..\components\finsh\finsh_ops.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_ops.h" />
<Unit filename="..\..\components\finsh\finsh_parser.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_parser.h" />
<Unit filename="..\..\components\finsh\finsh_token.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_token.h" />
<Unit filename="..\..\components\finsh\finsh_var.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_var.h" />
<Unit filename="..\..\components\finsh\finsh_vm.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\finsh_vm.h" />
<Unit filename="..\..\components\finsh\shell.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\finsh\shell.h" />
<Unit filename="..\..\components\finsh\symbol.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\chargen.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\ftpd.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\netio.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\ping.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\sntp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\tcpecho.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\tftp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\apps\udpecho.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\api_lib.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\api_msg.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\err.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\netbuf.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\netdb.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\netifapi.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\sockets.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\api\tcpip.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\bpstruct.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\cc.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\cpu.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\epstruct.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\init.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\lib.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\perf.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\sys_arch.h" />
<Unit filename="..\..\components\net\lwip\src\arch\include\arch\sys_arch_init.h" />
<Unit filename="..\..\components\net\lwip\src\arch\sys_arch.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\arch\sys_arch_init.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\dhcp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\dns.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\init.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\autoip.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\icmp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\igmp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\inet.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\inet_chksum.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\ip.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\ip_addr.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv4\ip_frag.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv6\icmp6.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv6\inet6.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv6\ip6.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\ipv6\ip6_addr.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\mem.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\memp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\netif.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\pbuf.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\raw.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\snmp\asn1_dec.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\snmp\asn1_enc.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\snmp\mib2.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\snmp\mib_structs.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\snmp\msg_in.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\snmp\msg_out.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\stats.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\sys.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\tcp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\tcp_in.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\tcp_out.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\core\udp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\autoip.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\icmp.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\igmp.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\inet.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\inet_chksum.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\ip.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\ip_addr.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv4\lwip\ip_frag.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv6\lwip\icmp.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv6\lwip\inet.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv6\lwip\ip.h" />
<Unit filename="..\..\components\net\lwip\src\include\ipv6\lwip\ip_addr.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\api.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\api_msg.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\arch.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\debug.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\def.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\dhcp.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\dns.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\err.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\init.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\mem.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\memp.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\memp_std.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\netbuf.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\netdb.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\netif.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\netifapi.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\opt.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\pbuf.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\raw.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\sio.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\snmp.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\snmp_asn1.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\snmp_msg.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\snmp_structs.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\sockets.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\stats.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\sys.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\tcp.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\tcpip.h" />
<Unit filename="..\..\components\net\lwip\src\include\lwip\udp.h" />
<Unit filename="..\..\components\net\lwip\src\include\netif\etharp.h" />
<Unit filename="..\..\components\net\lwip\src\include\netif\ethernetif.h" />
<Unit filename="..\..\components\net\lwip\src\include\netif\loopif.h" />
<Unit filename="..\..\components\net\lwip\src\include\netif\ppp_oe.h" />
<Unit filename="..\..\components\net\lwip\src\include\netif\slipif.h" />
<Unit filename="..\..\components\net\lwip\src\lwipopts.h" />
<Unit filename="..\..\components\net\lwip\src\netif\etharp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ethernetif.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\loopif.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\auth.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\auth.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\chap.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\chap.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\chpms.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\chpms.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\fsm.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\fsm.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\ipcp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\ipcp.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\lcp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\lcp.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\magic.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\magic.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\md5.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\md5.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\pap.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\pap.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\ppp.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\ppp.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\ppp_oe.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\pppdebug.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\randm.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\randm.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\vj.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\ppp\vj.h" />
<Unit filename="..\..\components\net\lwip\src\netif\ppp\vjbsdhdr.h" />
<Unit filename="..\..\components\net\lwip\src\netif\skeleton.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\components\net\lwip\src\netif\skeleton.h" />
<Unit filename="..\..\components\net\lwip\src\netif\slipif.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\..\include\rtdef.h" /> <Unit filename="..\..\include\rtdef.h" />
<Unit filename="..\..\include\rthw.h" /> <Unit filename="..\..\include\rthw.h" />
<Unit filename="..\..\include\rtm.h" /> <Unit filename="..\..\include\rtm.h" />

View File

@ -8,7 +8,7 @@ dir_src=
dir_bin=./obj dir_bin=./obj
dir_tmp=./obj dir_tmp=./obj
dir_sin= dir_sin=
dir_inc=.;../../include dir_inc=.;../../include;../../components/finsh
dir_lib=C:\Program Files\Microchip\MPLAB C32 Suite\lib;C:\Program Files\Microchip\MPLAB C32 Suite\pic32mx\lib dir_lib=C:\Program Files\Microchip\MPLAB C32 Suite\lib;C:\Program Files\Microchip\MPLAB C32 Suite\pic32mx\lib
dir_lkr= dir_lkr=
[CAT_FILTERS] [CAT_FILTERS]
@ -18,7 +18,7 @@ filter_obj=*.o
filter_lib=*.a filter_lib=*.a
filter_lkr=*.ld filter_lkr=*.ld
[CAT_SUBFOLDERS] [CAT_SUBFOLDERS]
subfolder_src=kernel;pic32 subfolder_src=finsh;kernel;pic32
subfolder_inc= subfolder_inc=
subfolder_obj= subfolder_obj=
subfolder_lib= subfolder_lib=
@ -46,7 +46,21 @@ file_018=pic32
file_019=pic32 file_019=pic32
file_020=. file_020=.
file_021=pic32 file_021=pic32
file_022=. file_022=finsh
file_023=finsh
file_024=finsh
file_025=finsh
file_026=finsh
file_027=finsh
file_028=finsh
file_029=finsh
file_030=finsh
file_031=finsh
file_032=finsh
file_033=finsh
file_034=finsh
file_035=.
file_036=.
[GENERATED_FILES] [GENERATED_FILES]
file_000=no file_000=no
file_001=no file_001=no
@ -71,6 +85,20 @@ file_019=no
file_020=no file_020=no
file_021=no file_021=no
file_022=no file_022=no
file_023=no
file_024=no
file_025=no
file_026=no
file_027=no
file_028=no
file_029=no
file_030=no
file_031=no
file_032=no
file_033=no
file_034=no
file_035=no
file_036=no
[OTHER_FILES] [OTHER_FILES]
file_000=no file_000=no
file_001=no file_001=no
@ -95,6 +123,20 @@ file_019=no
file_020=no file_020=no
file_021=no file_021=no
file_022=no file_022=no
file_023=no
file_024=no
file_025=no
file_026=no
file_027=no
file_028=no
file_029=no
file_030=no
file_031=no
file_032=no
file_033=no
file_034=no
file_035=no
file_036=no
[FILE_INFO] [FILE_INFO]
file_000=board.c file_000=board.c
file_001=application.c file_001=application.c
@ -118,13 +160,28 @@ file_018=..\..\libcpu\mips\pic32\context_gcc.S
file_019=..\..\libcpu\mips\pic32\stack.c file_019=..\..\libcpu\mips\pic32\stack.c
file_020=console.c file_020=console.c
file_021=..\..\libcpu\mips\pic32\interrupt.c file_021=..\..\libcpu\mips\pic32\interrupt.c
file_022=rtconfig.h file_022=..\..\components\finsh\finsh_node.c
file_023=..\..\components\finsh\finsh_ops.c
file_024=..\..\components\finsh\finsh_parser.c
file_025=..\..\components\finsh\finsh_token.c
file_026=..\..\components\finsh\finsh_var.c
file_027=..\..\components\finsh\finsh_vm.c
file_028=..\..\components\finsh\shell.c
file_029=..\..\components\finsh\symbol.c
file_030=..\..\components\finsh\cmd.c
file_031=..\..\components\finsh\finsh_compiler.c
file_032=..\..\components\finsh\finsh_error.c
file_033=..\..\components\finsh\finsh_heap.c
file_034=..\..\components\finsh\finsh_init.c
file_035=uart.c
file_036=rtconfig.h
[SUITE_INFO] [SUITE_INFO]
suite_guid={14495C23-81F8-43F3-8A44-859C583D7760} suite_guid={14495C23-81F8-43F3-8A44-859C583D7760}
suite_state= suite_state=
[TOOL_SETTINGS] [TOOL_SETTINGS]
TS{CB0AF4B8-4022-429D-8F99-8A56782B2C6D}=--gdwarf-2 TS{CB0AF4B8-4022-429D-8F99-8A56782B2C6D}=--gdwarf-2
TS{9C698E0A-CBC9-4EFF-AE7D-B569F93E7322}=-g -DPIC32_STARTER_KIT TS{9C698E0A-CBC9-4EFF-AE7D-B569F93E7322}=-g -DPIC32_STARTER_KIT -G0
TS{9C698E0A-CBC9-4EFF-AE7D-B569F93E7322}_alt=yes
TS{77F59DA1-3C53-4677-AC5F-A03EB0125170}=-Map="$(BINDIR_)$(TARGETBASE).map" -o"$(BINDIR_)$(TARGETBASE).$(TARGETSUFFIX)" TS{77F59DA1-3C53-4677-AC5F-A03EB0125170}=-Map="$(BINDIR_)$(TARGETBASE).map" -o"$(BINDIR_)$(TARGETBASE).$(TARGETSUFFIX)"
TS{0396C0A1-9052-4E4F-8B84-EF0162B1B4E9}= TS{0396C0A1-9052-4E4F-8B84-EF0162B1B4E9}=
[INSTRUMENTED_TRACE] [INSTRUMENTED_TRACE]

Binary file not shown.

View File

@ -70,17 +70,13 @@
/* the buffer size of console*/ /* the buffer size of console*/
#define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLEBUF_SIZE 128
#define RT_USING_NEWLIB //#define RT_USING_NEWLIB
/* SECTION: finsh, a C-Express shell */ /* SECTION: finsh, a C-Express shell */
//#define RT_USING_FINSH #define RT_USING_FINSH
/* Using symbol table */ /* Using symbol table */
#define FINSH_USING_SYMTAB #define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION #define FINSH_USING_DESCRIPTION
#define __fsymtab_start _alt_partition_FSymTab_start
#define __fsymtab_end _alt_partition_FSymTab_end
#define __vsymtab_start _alt_partition_VSymTab_start
#define __vsymtab_end _alt_partition_VSymTab_end
/* SECTION: device filesystem */ /* SECTION: device filesystem */
//#define RT_USING_DFS //#define RT_USING_DFS

View File

@ -19,6 +19,11 @@
extern int _ramfunc_end; extern int _ramfunc_end;
#define PIC32_SRAM_END (0xA0000000+0x8000) //795F512L 512KB #define PIC32_SRAM_END (0xA0000000+0x8000) //795F512L 512KB
#ifdef RT_USING_FINSH
extern void finsh_system_init(void);
extern void finsh_set_device(const char* device);
#endif
/** /**
* This function will startup RT-Thread RTOS. * This function will startup RT-Thread RTOS.
*/ */
@ -71,13 +76,13 @@ void rtthread_startup(void)
/* init application */ /* init application */
rt_application_init(); rt_application_init();
//#ifdef RT_USING_FINSH #ifdef RT_USING_FINSH
// /* init finsh */ /* init finsh */
// finsh_system_init(); finsh_system_init();
//#ifdef RT_USING_DEVICE #ifdef RT_USING_DEVICE
// finsh_set_device("uart2"); finsh_set_device("uart1");
//#endif #endif
//#endif #endif
/* init timer thread */ /* init timer thread */
rt_system_timer_thread_init(); rt_system_timer_thread_init();

277
bsp/pic32ethernet/uart.c Normal file
View File

@ -0,0 +1,277 @@
#include <GenericTypeDefs.h>
#include <plib.h>
#include <rtthread.h>
#include "uart.h"
#define GetSystemClock() (80000000ul)
#define GetPeripheralClock() (GetSystemClock()/(1 << OSCCONbits.PBDIV))
#define GetInstructionClock() (GetSystemClock())
struct rt_uart_pic32
{
struct rt_device parent;
int uart; /* UART Module ID. */
/* buffer for reception */
rt_uint8_t read_index, save_index;
rt_uint8_t rx_buffer[RT_UART_RX_BUFFER_SIZE];
};
#ifdef RT_USING_UART1
static struct rt_uart_pic32 uart1_device;
#endif
#ifdef RT_USING_UART2
static struct rt_uart_pic32 uart2_device;
#endif
static rt_err_t rt_uart_init (rt_device_t dev)
{
struct rt_uart_pic32 *uart_device = (struct rt_uart_pic32*)dev;
UARTConfigure(uart_device->uart, UART_ENABLE_PINS_TX_RX_ONLY);
UARTSetFifoMode(uart_device->uart, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY);
UARTSetLineControl(uart_device->uart, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
UARTSetDataRate(uart_device->uart, GetPeripheralClock(), 115200);
UARTEnable(uart_device->uart, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
// Configure UART RX Interrupt
INTEnable(INT_SOURCE_UART_RX(uart_device->uart), INT_ENABLED);
INTSetVectorPriority(INT_VECTOR_UART(uart_device->uart), INT_PRIORITY_LEVEL_2);
INTSetVectorSubPriority(INT_VECTOR_UART(uart_device->uart), INT_SUB_PRIORITY_LEVEL_0);
return RT_EOK;
}
static rt_err_t rt_uart_open(rt_device_t dev, rt_uint16_t oflag)
{
return RT_EOK;
}
static rt_err_t rt_uart_close(rt_device_t dev)
{
return RT_EOK;
}
static rt_size_t rt_uart_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
{
rt_uint8_t* ptr;
struct rt_uart_pic32 *uart_device = (struct rt_uart_pic32*)dev;
RT_ASSERT(uart_device != RT_NULL);
/* point to buffer */
ptr = (rt_uint8_t*) buffer;
if (dev->flag & RT_DEVICE_FLAG_INT_RX)
{
while (size)
{
/* interrupt receive */
rt_base_t level;
/* disable interrupt */
level = rt_hw_interrupt_disable();
if (uart_device->read_index != uart_device->save_index)
{
*ptr = uart_device->rx_buffer[uart_device->read_index];
uart_device->read_index ++;
if (uart_device->read_index >= RT_UART_RX_BUFFER_SIZE)
uart_device->read_index = 0;
}
else
{
/* no data in rx buffer */
/* enable interrupt */
rt_hw_interrupt_enable(level);
break;
}
/* enable interrupt */
rt_hw_interrupt_enable(level);
ptr ++;
size --;
}
return (rt_uint32_t)ptr - (rt_uint32_t)buffer;
}
return 0;
}
static rt_size_t rt_uart_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size)
{
struct rt_uart_pic32 *uart_device = (struct rt_uart_pic32*)dev;
char *ptr;
ptr = (char*)buffer;
if (dev->flag & RT_DEVICE_FLAG_STREAM)
{
/* stream mode */
while (size)
{
if (*ptr == '\n')
{
while(!UARTTransmitterIsReady(uart_device->uart));
UARTSendDataByte(uart_device->uart,'\r' );
while(!UARTTransmissionHasCompleted(uart_device->uart));
}
while(!UARTTransmitterIsReady(uart_device->uart));
UARTSendDataByte(uart_device->uart, *ptr);
while(!UARTTransmissionHasCompleted(uart_device->uart));
ptr ++;
size --;
}
}
else
{
while ( size != 0 )
{
while(!UARTTransmitterIsReady(uart_device->uart));
UARTSendDataByte(uart_device->uart, *ptr);
while(!UARTTransmissionHasCompleted(uart_device->uart));
ptr++;
size--;
}
}
return (rt_size_t) ptr - (rt_size_t) buffer;
}
#ifdef RT_USING_UART1
// UART 1 interrupt handler
// it is set at priority level 2
void __ISR(_UART1_VECTOR, ipl2) IntUART1Handler(void)
{
struct rt_uart_pic32 *uart_device = &uart1_device;
// Is this an RX interrupt?
if(INTGetFlag(INT_SOURCE_UART_RX(uart_device->uart)))
{
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(uart_device->uart));
/* Receive Data Available */
uart_device->rx_buffer[uart_device->save_index] = UARTGetDataByte(uart_device->uart);//UARTGetDataByte(UART1);
uart_device->save_index ++;
if (uart_device->save_index >= RT_UART_RX_BUFFER_SIZE)
uart_device->save_index = 0;
/* invoke callback */
if(uart_device->parent.rx_indicate != RT_NULL)
{
rt_size_t length;
if (uart_device->read_index > uart_device->save_index)
length = RT_UART_RX_BUFFER_SIZE - uart_device->read_index + uart_device->save_index;
else
length = uart_device->save_index - uart_device->read_index;
uart_device->parent.rx_indicate(&uart_device->parent, length);
}
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(uart_device->uart));
} // Is this an RX interrupt?
// We don't care about TX interrupt
if ( INTGetFlag(INT_SOURCE_UART_TX(uart_device->uart)) )
{
INTClearFlag(INT_SOURCE_UART_TX(uart_device->uart));
}
}
#endif
#ifdef RT_USING_UART2
// UART 2 interrupt handler
// it is set at priority level 2
void __ISR(_UART2_VECTOR, ipl2) IntUART2Handler(void)
{
struct rt_uart_pic32 *uart_device = &uart2_device;
// Is this an RX interrupt?
if(INTGetFlag(INT_SOURCE_UART_RX(uart_device->uart)))
{
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(uart_device->uart));
/* Receive Data Available */
uart_device->rx_buffer[uart_device->save_index] = UARTGetDataByte(uart_device->uart);//UARTGetDataByte(UART1);
uart_device->save_index ++;
if (uart_device->save_index >= RT_UART_RX_BUFFER_SIZE)
uart_device->save_index = 0;
/* invoke callback */
if(uart_device->parent.rx_indicate != RT_NULL)
{
rt_size_t length;
if (uart_device->read_index > uart_device->save_index)
length = RT_UART_RX_BUFFER_SIZE - uart_device->read_index + uart_device->save_index;
else
length = uart_device->save_index - uart_device->read_index;
uart_device->parent.rx_indicate(&uart_device->parent, length);
}
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(uart_device->uart));
} // Is this an RX interrupt?
// We don't care about TX interrupt
if ( INTGetFlag(INT_SOURCE_UART_TX(uart_device->uart)) )
{
INTClearFlag(INT_SOURCE_UART_TX(uart_device->uart));
}
}
#endif
void rt_hw_usart_init(void)
{
struct rt_uart_pic32 *uart_device;
#ifdef RT_USING_UART1
/* device initialization */
uart_device = &uart1_device;
rt_memset(uart_device,0,sizeof(struct rt_uart_pic32));
uart_device->uart = UART1;
uart_device->parent.type = RT_Device_Class_Char;
/* device interface */
uart_device->parent.init = rt_uart_init;
uart_device->parent.open = rt_uart_open;
uart_device->parent.close = rt_uart_close;
uart_device->parent.read = rt_uart_read;
uart_device->parent.write = rt_uart_write;
uart_device->parent.control = RT_NULL;
uart_device->parent.user_data = RT_NULL;
rt_device_register(&uart_device->parent,
"uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STREAM | RT_DEVICE_FLAG_INT_RX);
#endif
#ifdef RT_USING_UART2
/* device initialization */
uart_device = &uart2_device;
rt_memset(uart_device,0,sizeof(struct rt_uart_pic32));
uart_device->uart = UART2;
uart_device->parent.type = RT_Device_Class_Char;
/* device interface */
uart_device->parent.init = rt_uart_init;
uart_device->parent.open = rt_uart_open;
uart_device->parent.close = rt_uart_close;
uart_device->parent.read = rt_uart_read;
uart_device->parent.write = rt_uart_write;
uart_device->parent.control = RT_NULL;
uart_device->parent.user_data = RT_NULL;
rt_device_register(&uart_device->parent,
"uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STREAM | RT_DEVICE_FLAG_INT_RX);
#endif
}

10
bsp/pic32ethernet/uart.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef UART_H_INCLUDED
#define UART_H_INCLUDED
#define RT_UART_RX_BUFFER_SIZE 64
#define RT_USING_UART1
#define RT_USING_UART2
#endif // UART_H_INCLUDED