Appendix B Rabbit 4000 ESD Design Guidelines and Bug Workarounds
335
B.2 Bugs
The following bugs have been identified in the Rabbit 4000 design, and are present in all
devices currently available.
1.
Primary/secondary watchdog timer interaction
— if the secondary watchdog timer
is enabled when a primary watchdog timeout occurs (resetting the processor), the sec-
ondary watchdog timer is still enabled when the device comes out of reset, which is not
the documented behavior (the secondary watchdog should be disabled on reset).
The BIOS provided by Rabbit Semiconductor in Dynamic C avoids this bug by disabling
the secondary watchdog on startup or reset by writing 0x5F to WDTCR. The secondary
watchdog timer is then enabled if needed with the
#define USE_SECONDARY_WD
macro.
2.
Stack protection/DMA interaction
— when stack protection is enabled and a DMA
transfer is occurring, the stack protection interrupt will occur if the lower 16 bits of a
DMA transfer’s
physical
write address match the 16 bits of the stack protection’s
logical
address limits.
3.
DMA/HDLC/Ethernet interaction
— a specific bug can manifest itself when the
following conditions are present.
• The HDLC or Ethernet peripherals are being fed bytes for transmit via DMA.
• The current DMA buffer has been marked with “special treatment for last byte.”
• The buffer has not been marked as “final buffer.”
• The DMA fills the transmit FIFO with the next-to-last byte of the buffer and then either switches to
another channel or releases the bus.
• The DMA then returns to the channel before the transmitter has had a chance to transmit a single
byte, freeing space in the transmit FIFO.
When all these conditions occur, the DMA will overwrite the next-to-last byte in the
transmit FIFO, and that particular byte will never be transmitted.
There are several ways to avoid this bug.
• Always mark the buffer that contains the end-of-frame byte as the final buffer, and restart the DMA
once that buffer has been transmitted.
• Make sure that the DMA will not return to this channel before the transmitter has sent one byte
from the transmit FIFO.
• Place the end-of-frame byte in a separate DMA buffer.
The Ethernet driver provided by Rabbit Semiconductor in Dynamic C is written so that
this bug never occurs.
Содержание Rabbit 4000
Страница 1: ...Rabbit 4000 Microprocessor User s Manual 019 0152 070720 H...
Страница 18: ...8 Rabbit 4000 Microprocessor User s Manual...
Страница 40: ...30 Rabbit 4000 Microprocessor User s Manual...
Страница 74: ...64 Rabbit 4000 Microprocessor User s Manual...
Страница 82: ...72 Rabbit 4000 Microprocessor User s Manual...
Страница 86: ...76 Rabbit 4000 Microprocessor User s Manual...
Страница 96: ...86 Rabbit 4000 Microprocessor User s Manual...
Страница 182: ...172 Rabbit 4000 Microprocessor User s Manual...
Страница 240: ...230 Rabbit 4000 Microprocessor User s Manual...
Страница 248: ...238 Rabbit 4000 Microprocessor User s Manual...
Страница 256: ...246 Rabbit 4000 Microprocessor User s Manual...
Страница 310: ...300 Rabbit 4000 Microprocessor User s Manual...
Страница 330: ...320 Rabbit 4000 Microprocessor User s Manual...
Страница 348: ...338 Rabbit 4000 Microprocessor User s Manual...