-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
问题找到了,是由于telnet启动后,会将输出的字符设备改为“telnet”导致再次在串口终端中输入字符时,user_uart0_callback中uart_obj[UART0_INDEX].serial的值为空,但代码中没有判断导致继续执行代码导致崩溃。一下是我的修改方案,我只是加了一个判断条件
void user_uart0_callback(uart_callback_args_t *p_args)
{
rt_interrupt_enter();
struct rt_serial_device *serial = &uart_obj[UART0_INDEX].serial;
RT_ASSERT(serial != RT_NULL);
if (UART_EVENT_RX_CHAR == p_args->event && serial->serial_rx != RT_NULL)
{
struct rt_serial_rx_fifo *rx_fifo;
rx_fifo = (struct rt_serial_rx_fifo *) serial->serial_rx;
RT_ASSERT(rx_fifo != RT_NULL);
rt_ringbuffer_putchar(&(rx_fifo->rb), (rt_uint8_t)p_args->data);
rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
}
rt_interrupt_leave();
}
我这个只是按照我自己的想法改的,你们那边怎么改我不知道,但我想问问,在我提出问题之后你们有没有去复现我的问题,然后去修改,还是说只是凭感觉给了我一个没有加调度的答案,你们回答问题之前能不能看一下我提的问题,我要的是卡死的解决方案,灯不亮只是一个现象,在不崩溃的情况下,开启telnet服务灯照样闪。我说的问题你要是不明白你可以再问我,或者说你不想解决,说句你不知道关了issue也行,给我个调度的方向,然后让我白白浪费2个小时去看rt-thread的调度问题。
Metadata
Metadata
Assignees
Labels
No labels