[RK3288][Android6.0] 调试笔记 --- 如何修改/dev/ttySx后面的数字号

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

有网友遇到/dev/ttyS0如何改成/dev/ttyS4的困惑,确实它的命名不是按顺序的,比如我使用了三个串口,名字不是连续的:
root@rk3288:/ # ls /dev/ttyS*
/dev/ttyS0
/dev/ttyS1
/dev/ttyS4

事实上这个值是在dtsi中获取的,代码流程:

static int serial_rk_probe(struct platform_device *pdev)
{
#ifdef CONFIG_OF
    of_rk_serial_parse_dt(pdev->dev.of_node, &rks);
    pdev->id = rks.id;
#endif
}
static int of_rk_serial_parse_dt(struct device_node *np, struct of_rk_serial *rks) 
{
    rks->id = of_alias_get_id(np, "serial");
}

这里of_alias_get_id()顾名思义去获取名字为”serial”的别名,看dts

aliases {
    serial0 = &uart_bt;
    serial1 = &uart_bb;
    serial2 = &uart_dbg;
    serial3 = &uart_gps;
    serial4 = &uart_exp;
}

也就是说uart_bt对应的是/dev/ttyS0,以此类推,我用了uart_bt,uart_bb以及uart_exp,因此看到的正是/dev/ttyS0, /dev/ttyS1和/dev/ttyS4
因此要改设备名后的数字,就修改这里的serial后的数字就可以了。

你可能感兴趣的:(子类__UART)