未验证 提交 2c55f11b 编写于 作者: B Bernard Xiong 提交者: GitHub

Merge pull request #3171 from ErnestChen1/master

[DeviceDrivers] add warning about overflowing by serial receiver
...@@ -327,6 +327,18 @@ rt_inline int _serial_int_tx(struct rt_serial_device *serial, const rt_uint8_t * ...@@ -327,6 +327,18 @@ rt_inline int _serial_int_tx(struct rt_serial_device *serial, const rt_uint8_t *
return size - length; return size - length;
} }
static void _serial_check_buffer_size(void)
{
static rt_bool_t already_output = RT_FALSE;
if (already_output == RT_FALSE)
{
LOG_W("Warning: There is no enough buffer for saving data,"
" please increase the RT_SERIAL_RB_BUFSZ option.");
already_output = RT_TRUE;
}
}
#if defined(RT_USING_POSIX) || defined(RT_SERIAL_USING_DMA) #if defined(RT_USING_POSIX) || defined(RT_SERIAL_USING_DMA)
static rt_size_t _serial_fifo_calc_recved_len(struct rt_serial_device *serial) static rt_size_t _serial_fifo_calc_recved_len(struct rt_serial_device *serial)
{ {
...@@ -430,6 +442,7 @@ static void rt_dma_recv_update_put_index(struct rt_serial_device *serial, rt_siz ...@@ -430,6 +442,7 @@ static void rt_dma_recv_update_put_index(struct rt_serial_device *serial, rt_siz
if(rx_fifo->is_full == RT_TRUE) if(rx_fifo->is_full == RT_TRUE)
{ {
_serial_check_buffer_size();
rx_fifo->get_index = rx_fifo->put_index; rx_fifo->get_index = rx_fifo->put_index;
} }
} }
...@@ -1170,6 +1183,8 @@ void rt_hw_serial_isr(struct rt_serial_device *serial, int event) ...@@ -1170,6 +1183,8 @@ void rt_hw_serial_isr(struct rt_serial_device *serial, int event)
rx_fifo->get_index += 1; rx_fifo->get_index += 1;
rx_fifo->is_full = RT_TRUE; rx_fifo->is_full = RT_TRUE;
if (rx_fifo->get_index >= serial->config.bufsz) rx_fifo->get_index = 0; if (rx_fifo->get_index >= serial->config.bufsz) rx_fifo->get_index = 0;
_serial_check_buffer_size();
} }
/* enable interrupt */ /* enable interrupt */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册