Ethernet Module Development

From OpenCircuits
Jump to navigation Jump to search

This wiki describes the development of Ethernet Module.

Architecture[edit]

  • See here for block diagram


Development Roadmap[edit]

Phase 1[edit]

  • Select chips and draw schematic and pcb
  • Obtain samples for chip

Phase 2[edit]

  • Device driver
  • Create a Linux socket API wrapper in freertos_posix

Phase 3[edit]

  • Reference to Linux socket/lwip, create libraries for
    • DHCP client
    • HTTP server
      • Decide how to get files (html, css, cgi, etc) from nvm (with/without file system)
      • Decide an efficient means to create and download web page to nvm
    • DNS resolver
    • SMTP mail client
    • SNMP agent
    • TELNET application

Phase 4[edit]


Software TCP/IP Stack Solution[edit]

Circuit and PCB[edit]

Special Item Description Quantity
DM9000AEP Ethernet Controller from Davicom 1
HR911102A RJ45 Connector with Integrated Magnetics for 10/100 Base-TX 1
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


Software Implementation[edit]

Driver[edit]

  • Download dm9000a.c
  • Download dm9000a.h
  • Base on FreeRTOS and 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[edit]

  • Light-weight TCP/IP stack designed for 8-bit/16-bit embedded systems

lwIP[edit]

  • Light-weight TCP/IP stack designed for 8-bit/16-bit embedded systems
  • Consume more resource than uIP


Hardware TCP/IP Stack Solution[edit]

Circuit and PCB[edit]