On 11.10.2010 17:24, Wolfgang Grandegger wrote: > On 10/11/2010 05:01 PM, "Müller, René" wrote:
>> Now we have two cases, one with missing frames and one without: >> Case 1: >> - candump -l -s2 can0 -> logging in an file which is stored in RAM >> - we get all messages in the logfile >> >> Case 2: >> - candump -l -s2 can0 -> logging in an file which is stored on an >> CompactFlash-card >> - the CF-card is connected via the IDE-interface without DMA (we don't get >> DMA working with the CF-card, unfortunately it only works with harddrives) >> - we are loosing messages: >> - every 35s we are missing messages in blocks, never we are missing 1 >> message, always 5-6 at once >> >> Anyone had similar problems? Any hints? > > Sounds like a receive buffer overrun when the application is not able to > read messages fast enough. You could use setsockopt(... ,SOL_SOCKET, > SO_RCVBUF, ....) to increase the buffer size. It's also possible to > detect dropped CAN frames as described here: > > http://www.mail-archive.com/[email protected]/msg00861.html ACK. With the '-d' Option you are able to detect dropped CAN frames in the socket's receive buffer. Regarding the ' -r <size> ' option to increase the receive buffer you need to keep in mind that this can only fix temporary problems. Whenever the candump tool writes the logfile to the filesystem, the filesystem may block the userspace application until the write is done. When the input stream is *always* faster than the filesystem (especially on a non-DMA CF-Card) the any receive buffer will overflow by the time ... Regards, Oliver _______________________________________________ Socketcan-users mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-users
