Editing Ethernet Module
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 6: | Line 6: | ||
Since a full-scale TCP/IP stack consumes a large amount of memory and processing power, a number of small footprint TCP/IP stacks have been devised for embedded systems, such as uIP and lwIP. Nevertheless, these TCP/IP stacks are usually not compatible to socket programming, and being implemented by software, still consumes a considerable amount of system resources. Therefore, hardware chips that implemented the TCP/IP stack (e.g. [http://www.wiznet.co.kr/en/pro02.php?&page=1&num=26 WIZNET W5300]) emerged in recent years so as to offload the computation power from the host microcontroller unit (MCU). | Since a full-scale TCP/IP stack consumes a large amount of memory and processing power, a number of small footprint TCP/IP stacks have been devised for embedded systems, such as uIP and lwIP. Nevertheless, these TCP/IP stacks are usually not compatible to socket programming, and being implemented by software, still consumes a considerable amount of system resources. Therefore, hardware chips that implemented the TCP/IP stack (e.g. [http://www.wiznet.co.kr/en/pro02.php?&page=1&num=26 WIZNET W5300]) emerged in recent years so as to offload the computation power from the host microcontroller unit (MCU). | ||
− | This project aims to devise a driver and Linux socket wrapper inside freertos_posix for a hardware implemented TCP/IP stack. It is to be used in conjunction with a 8/16 bits embedded system such as (but not restricted to) the [ | + | This project aims to devise a driver and Linux socket wrapper inside freertos_posix for a hardware implemented TCP/IP stack. It is to be used in conjunction with a 8/16 bits embedded system such as (but not restricted to) the [http://opencircuits.com/DsPIC30F_5011_Development_Board dsPic33F development board]. Based on the Linux socket API, common application protocols (DHCP/HTTP/DNS/SMTP/SNMP/TELNET) are devised to enable remote control and monitoring. |
===Benefits=== | ===Benefits=== | ||
Line 23: | Line 23: | ||
− | == | + | ==Architecture== |
− | *[ | + | *See [http://www.opencircuits.com/Multi-purpose_Embedded_System#TCP.2FIP_Stack here] for block diagram |
− | == | + | ==[[Development Roadmap]]== |
− | *[[Ethernet | + | *Contains directions for development |
+ | |||
+ | |||
+ | ==Connection Schemes== | ||
+ | [[Image:Connection_schemes.png ]] | ||
+ | [[Image:connection_schemes_withdhcp.png]] | ||
+ | |||
+ | |||
+ | ==Software TCP/IP Stack Solution== | ||
+ | ===Circuit and PCB=== | ||
+ | *In [http://chungyan5.no-ip.org/vc/?root=ethernet gEDA format] and its gEDA [http://www.opencircuits.com/PCB_Footprints#gEDA_Symbols_and_footprints sym and footprints] | ||
+ | {|border="1" cellspacing="0" cellpadding="5" | ||
+ | ! Special Item !! Description !! Quantity | ||
+ | |-valign="top" | ||
+ | | [http://www.davicom.com.tw/userfile/24247/DM9000A-DS-F01-101906.pdf DM9000AEP] || Ethernet Controller from [http://www.davicom.com.tw/ Davicom] || 1 | ||
+ | |- | ||
+ | | [http://www.hanrun.com/hr/upfile/2_1_113.pdf HR911102A] || RJ45 Connector with Integrated Magnetics for 10/100 Base-TX || 1 | ||
+ | |- | ||
+ | | [http://ww1.microchip.com/downloads/en/DeviceDoc/21749F.pdf 93LC46B-I/SN] || 1K Serial EEPROM || 1 (Optional) | ||
+ | |- | ||
+ | | 25MHz Crystal || Crystal || 1 | ||
+ | |- | ||
+ | | 22pF || For Crystal Use || 2 | ||
+ | |- | ||
+ | | 220uF || For RXVDD25/TXVDD25 || 1 | ||
+ | |- | ||
+ | | 49.9ohm || For RX+/RX-/TX+/TX- || 4 | ||
+ | |- | ||
+ | | 6.8kohm || For BGRES/BGGND || 1 | ||
+ | |- | ||
+ | | 510ohm || For LEDs|| 2 | ||
+ | |- | ||
+ | |} | ||
+ | *[http://www.davicom.com.tw/eng/products/dm9000a.htm DM9000A Description] | ||
+ | *[http://www.davicom.com.tw/big5/download/Data%20Sheet/DM9000A-DS-F01-101906.pdf DM9000A Datasheet] | ||
+ | *[http://www.davicom.com.tw/big5/download/AC/dm9000a/DM9000A%20circuit_EMI_052306.pdf Application Circuit] | ||
+ | *[http://www.davicom.com.tw/big5/download/LayoutGuide/DM9000A_9010-LG-V11_031706.pdf Layout Guidelines] | ||
+ | *[http://www.davicom.com.tw/big5/download/ApplicationNote/DM9000A%20Application%20Notes%20Ver%201_20_101906.pdf Application Note] | ||
+ | *[http://www.davicom.com.tw/eng/download/Driver/driver_9000.htm DM9000A Official Drivers] | ||
+ | |||
+ | |||
+ | ===Software Implementation=== | ||
+ | ====Driver==== | ||
+ | *Download [http://chungyan5.no-ip.org/vc/trunk/demo_posix/dspic/drivers/?root=freertos_posix dm9000a.c] | ||
+ | *Download [http://chungyan5.no-ip.org/vc/trunk/demo_posix/dspic/drivers/include/?root=freertos_posix dm9000a.h] | ||
+ | *Base on [http://www.freertos.org/ FreeRTOS] and [http://opencircuits.com/DsPIC30F_5011_Development_Board dsPIC33 platform] | ||
+ | *Using POSIX-like API: | ||
+ | **'''int dmfe_open(int flags)''': initialize the Ethernet controller for 10MHz Half-Duplex | ||
+ | **'''int dmfe_close()''': turn off the PHY layer | ||
+ | **'''int dmfe_read(void)''': copy a packet to the default buffer | ||
+ | **'''int dmfe_write(unsigned char device, unsigned char *buf, int count)''': copy count bytes of the data from buf and transmit | ||
+ | **'''void dmfe_interrupt(void)''': process the transmit interrupt from DM9000A | ||
+ | |||
+ | ====[[uIP]]==== | ||
+ | *Light-weight TCP/IP stack designed for 8-bit/16-bit embedded systems | ||
+ | |||
+ | ====[[lwIP]]==== | ||
+ | *Light-weight TCP/IP stack designed for 8-bit/16-bit embedded systems | ||
+ | *Consume more resource than uIP | ||
+ | |||
+ | |||
+ | ==Hardware TCP/IP Stack Solution== | ||
+ | |||
+ | ===Circuit and PCB=== | ||
+ | *[http://www.wiznet.co.kr/en/pro02.php?&page=1&num=26 WIZNET W5300] | ||
+ | |||
[[category:projects]] | [[category:projects]] |