Skip to content

还是之前telnet开启后导致崩溃的问题 #44

@WMWYT

Description

@WMWYT

问题找到了,是由于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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions