ChipCenter Questlink
SEARCH CHIPCENTER
Search Type:
Search for:




Knowledge Centers
Product Reviews
Data Sheets
Guides & Experts
News
International
Ask Us
Circuit Cellar Online
App Notes
NetSeminars
Careers
Resources
FAQ
EE Times Network
Electronics Group Sites

FINE TUNING AN EMBEDDED IDEA


Circuit Cellar Online
THE MAGAZINE FOR COMPUTER APPLICATIONS
Circuit Cellar Online offers articles illustrating creative solutions
and unique applications through complete projects, practical
tutorials, and useful design techniques.

FINE–TUNING AN EMBEDDED IDEA

 

Applications Part 2: Ethernet-Equipped RabbitCore Modules
by Fred Eady

Start ý The Networking Core ý Code Names and Comedy ý Where and Why ý Completing InitializationDown to Business ý Now What? ý Sources and PDF

 

DOWN TO BUSINESS

The first order of business is to make sure youýre pointed at port D, which is mimicking the ý9346 data. After thatýs done using the predefined EEPORT variable, the first thing a real ý9346 wants to see is a start bit transmitted by the RTL8019AS in Auto-Load mode. Because the RTL8019AS wants to read the ý9346, a 2-bit Read opcode (10) is clocked out of the RTL8019AS EEPROM pins. The next thing the ý9346 expects is 6 bits of address information. The RCM2100 microprocessor doesnýt care about the address, so the code just counts the address clock pulses and goes on to the next task.

And that task is sending data to the RTL8019AS that would normally come from a real ý9346 configuration EEPROM. The ý9346 responds to a Read command by clocking out the 16 bits of data at the requested address preceded by a zero bit. Because youýre really not storing any vital data in your virtual ý9346, the routine sends the 16-bit sequence 0x3030 one time. The iteration count is controlled by the value of register C. The ý9346 emulation routine then just sits and waits long enough for the ý9346 read to complete and sets the EEDO line level to zero.

Knowing what was and wasnýt transferred from the ý9346, looking ahead in the code tells you that you will need an Ethernet or MAC address to continue with the initialization process. These hardware addresses, or organizationally unique identifiers (OUIs), are administered by the IEEE. The MAC address is a 6-byte identifier with the first three bytes containing an IEEE-assigned manufacturer code. The last three bytes are the unique station ID assigned by the manufacturer. An array called EthAddress1 is loaded with the RCM2100ýs preassigned MAC address. Although technically the I/O base address of the RTL8019AS is 0x300 from its perspective, the I/O base from the RCM2100ýs microprocessorýs perspective is the value of PD_WR1, which you know is 0xC000. So, a call to the rt_init function with the MAC address and microprocessorýs I/O base value will help finish the process.

Listing 6 begins the final phase of the RTL8019AS hardware initialization by loading the index register IX with the base I/O address, youýll need to finish loading data into the RTL8019AS internal configuration registers. After a jump to page one, the RTL8019AS is stopped and the 6-byte MAC address is written to physical address registers PAR#0ý5.

Just in case this isnýt the first time this function has been called and there is activity on the Ethernet, the RTL8019AS is halted. The 1.6-ms wait is long enough to allow any transmit or receive activity to complete before continuing. The RTL8019ASýs data configuration register is loaded with 0x58, which essentially puts the NIC in a normal state. The DMA byte count registers are cleared and the DMA start address is positioned at the beginning of the on-chip SRAM at 0x4000. Normally, this chunck of memory would be carved out of an external SRAM. In either place, itýs officially called the buffer ring. The buffer ring is a contiguous set of fixed-length 256-byte buffers. The RTL8019AS is put into Monitor mode and placed in loop-back to avoid putting anything that falls into the 8-byte FIFO into the buffer ring memory.

The receive buffer ring is delimited by the values in PD_PAGESTART and PD_PAGESTOP. The DMA function sees this buffer area as a logical ring. So, when the DMA address reaches the Page Stop (PSTOP) address, the DMA address is reset to the Page Start (PSTART) address. The static PSTART and PSTOP registers are used in conjunction with two volatile registers, Current Page (CURR) and Boundary Pointer.

Because each buffer area in the receive buffer ring is on a 256-byte boundary, values placed in the Page Start and Boundary (BNRY) registers must be multiplied by 256. So, the receive buffer area begins at 0x4600 as 0x46 is loaded into the Page Start register of the RTL8019AS.

The Boundary Pointer register is used to point to a packet in the receive buffer ring that has not been picked up by the RCM2100 microprocessor. Because you are in a Reset mode, the Boundary Pointer is set to match the Page Start location of 0x4600. In normal operation, each time a packet is removed from the ring for processing, the Boundary Pointer is incremented. The end of the receive ring buffer is defined in Listing 1 as 0x60 in the PD_PAGESTOP definition. This Page Stop register value sets the optimal receive buffer ring size for 8-bit operations. Even though the Realtek has 16 Kb of memory, only 8 Kb is accessible when using the 8-bit interface. If you could access the full 16-Kb range, the top of the receive ring would be 0x8000 instead of 0x6000.

After clearing the interrupt flags, the Transmit Page Start register (PD_TXPAGE) points back to the beginning of the RTL8019AS SRAM. Your receive buffer starts a bit more than one full Ethernet packet (0x600 bytes) from the beginning of SRAM and the beginning of the transmit buffer. Before you turn the RTL8019AS loose, it would be a good idea to point to the beginning of the receive ring buffer so the first incoming packet wonýt flow into the transmit buffer at the beginning of SRAM. After this is done, the code exits Monitor mode and Loop-back mode, sets up to listen to the ether, and clears any interrupt flags that may have popped up. If the RCM2100 is attached to an active Ethernet network, the activity and link LEDs illuminate and the Ethernet hardware is on the air.

PREVIOUSNEXT


Circuit Cellar provides up-to-date information for engineers. Visit www.circuitcellar.com for more information and additional articles.
For subscription information, call (860) 875-2199, subscribe@circuitcellar.com or subscribe online. ýCircuit Cellar, the Magazine for Computer Applications. Posted with permission.
 
Click here to get your listing up.

Copyright © 2003 ChipCenter-QuestLink
About ChipCenter-Questlink  Contact Us  Privacy Statement   Advertising Information  FAQ