How to use ttyS3(RK3308)使用报错

在rsetup中开启了UART0 UART2-M0 UART3-M1,同样的应用代码,UART3-M1无法使用 不知道什么原因:
报错:get serial options error : Input/output error
get serial options error 为我自己定义的
代码如下
#define SERIAL_PORT “/dev/ttyS3”

#define BAUD_RATE B115200 // 波特率 115200,可以根据需要调整

int uart_init()

{

int serial_fd;

struct termios options;

char read_buffer[1024];  // 用于存储从串口读取的数据

int bytes_read;

// 打开串口

serial_fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY);

if (serial_fd == -1) {

    perror("open serial error\n");

    return -1;

}

// 获取串口的当前配置

if (tcgetattr(serial_fd, &options) < 0) {

    perror("get serial options error\n");

    close(serial_fd);

    return -1;

}

// 设置串口波特率

cfsetispeed(&options, BAUD_RATE);  // 输入波特率

cfsetospeed(&options, BAUD_RATE);  // 输出波特率

// 设置数据位、停止位和奇偶校验

options.c_cflag &= ~PARENB;        // 无奇偶校验

options.c_cflag &= ~CSTOPB;        // 1 个停止位

options.c_cflag &= ~CSIZE;         // 清除数据位设置

options.c_cflag |= CS8;            // 8 个数据位

options.c_cflag &= ~CRTSCTS;       // 禁用硬件流控制

options.c_cflag |= CREAD | CLOCAL; // 启用接收功能并且忽略调制解调器控制线路

// 设置新配置

if (tcsetattr(serial_fd, TCSANOW, &options) < 0) {

    perror("set serial error\n");

    close(serial_fd);

    return -1;

}

printf("wait serial......\n");

// 设置串口为非阻塞模式

fcntl(serial_fd, F_SETFL, FNDELAY);

// 循环读取数据

while (1) {

    bytes_read = read(serial_fd, read_buffer, sizeof(read_buffer) - 1);

    if (bytes_read > 0) {

        // read_buffer[bytes_read] = '\0';  // 添加字符串结束符

        printf("%s", read_buffer);

        memset(read_buffer,0x00,sizeof(read_buffer));

    }

}

// 关闭串口

close(serial_fd);

return 0;

}

先用命令行测一下这两个串口通信是否正常, 我猜测大概率问题会出在 uart2 上。