Ethernet Module Development
Jump to navigation
Jump to search
This wiki describes the development of Ethernet Module.
Contents
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]
- Explore wireless-bridge solutions
Software TCP/IP Stack Solution[edit]
Circuit and PCB[edit]
- In gEDA format and its gEDA sym and footprints
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 |
- DM9000A Description
- DM9000A Datasheet
- Application Circuit
- Layout Guidelines
- Application Note
- DM9000A Official Drivers
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