I `ve one question about the performance from freeRTOS.
At the moment I`m running a little bit in trouble because the processor is not able to get all received ethernet pkts in time (without freeRTOS everything is working fine). The whole time is only one task running, because for simplicity I don`t use any kind of delays etc.
If only 5MB/s (round about 400 pkts/sec) will be received using the dma from the processor everything is working fine; but if I increase the data-rate to 20MB/s (round about 2200 pkts/s) - I get a lot of (buffer-not-available) errors, which means that the application is not able to give the buffers back to the dma in time…
Unfortunately, the whole application (task) is very short. I only take a look if new pkts are available and give the buffers back to the dma - that`s all. There`s no delay or anything else…
Only the vPortPreemptiveTick function etc. is running every 1milliseconds - maybe this function is too slowly… and all buffers will be used… this is the only explanation for me at the moment…
while( ( Emac_RxBufDesc.address & EMAC_RXBUF_SW_OWNED ) )
/* Ignoring this buffer. Mark it as free again. */
Emac_RxBufDesc.address &= ~( EMAC_RXBUF_SW_OWNED);
Maybe someone can give me some hints to get higher data-rates working.
Emac_RxBufDesc.address &= ~( EMAC_RXBUF_SW_OWNED );