lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-devel] Rx DMA and an application specific question


From: Friedrich Schick
Subject: [lwip-devel] Rx DMA and an application specific question
Date: Thu, 5 Aug 2010 15:22:52 +0200

Hello,

I am writing a driver for lwip 1.4RC1. The fec (freescale fec) is able to use dma in tx and rx direction. The tx side is easy to implement but now it comes to the rx side. How do I implement dma on the rx side? My target platform is using multiple threads but only one thread, which interacts with lwip and the fec. Thus makes is possible to use a very simple interface. I want the lwip thread to be blocking so this thread will wait for any fec interrupts and a timer.

// some pseudo code
while(true)
{
    wait_for_rx_tx_event(); // frame rx, successful tx, or timer
   
    check_timer(); // process lwip timers
    ethernetif_input(); // process lwip reception, see below
}

// tx
thread context : low_level_output -> Any free dma channel, if not wait for tx interrupt (or watchdog) else proceed with setting up dma channel

// rx
interrupt context : wake up the thread -> thread context : ethernetif_input -> low_level_input -> pbuf_alloced_custom to get a pbuf (dma has written frame into custom buffers) which are linked to this custom pbuf -> netif->input (process user events) -> pbuf_alloced_custom_free free a dma buffer and tells the fec

Do I miss something?

Best regards

Friedrich



reply via email to

[Prev in Thread] Current Thread [Next in Thread]