Hi,

I am having trouble with reading data from the serial port. I initially followed the RT Serial example from captain. I changed the read task to a periodic 20ms task, from which I read from the serial port (rtser0). This is all that the rt_task is doing. The serial port config is:

static const struct rtser_config read_config = {
.config_mask = 0xFFFF,
.baud_rate = 57600,
.parity = RTSER_NO_PARITY,
.data_bits = RTSER_8_BITS,
.stop_bits = RTSER_1_STOPB,
.handshake = RTSER_NO_HAND,
.fifo_depth = RTSER_DEF_FIFO_DEPTH,
.rx_timeout = RTSER_DEF_TIMEOUT,
.tx_timeout = RTSER_DEF_TIMEOUT,
.event_timeout = RTSER_DEF_TIMEOUT,
.timestamp_history = RTSER_RX_TIMESTAMP_HISTORY,
.event_mask = RTSER_EVENT_RXPEND,
};

I am reading data into a buffer, char buf[300]. I am able to read data but the task is repeating at a rate of about 50ms. Execution also only returns from the rt_dev_read() call when 300 chars have been read, but the external hardware is only sending a couple of chars (+-35) at a rate of 171Hz. Is the rt task maybe blocking? How can I get it to only read the available chars in the serial buffer and then return to my program?

I am on a Geode 500MHz single board computer with kernel 2.6.23 and xeno 2.4.3.

Thanks in advance.

Kind regards,
-- 
Dehann Fourie