Android8.1 ifw方案,Android8.1系统修改串口节点

应客户需求,需要将Android系统里面的串口4(/dev/ttyS4)节点名称修改为/dev/ttyS9。

由于设备节点都是在驱动里面注册生成的于是查看串口驱动。根据log信息找到了系统串口驱动\kernel\drivers\tty\serial\8250\8250_dw.c中的注册函数dw8250_probe。该函数中找到serial8250_register_8250_port,这个是注册设备节点的函数。然后查看serial8250_register_8250_port函数定义(kernel\drivers\tty\serial\8250\8250_core.c),找到了后续注册节点的函数uart_add_one_port,继续查看该函数(位于kernel\drivers\tty\serial\serial_core.c)定义,该函数又是调用tty_port_register_device_attr进行注册的,继续跟踪该函数(kernel\drivers\tty\tty_port.c),该函数又是调用了tty_register_device_attr(位于kernel\drivers\tty\tty_io.c)进行注册。添加log分析得知串口节点的名字获取是由tty_line_name产生的。于是查看tty_line_name的实现:

static ssize_t tty_line_name(struct tty_driver *driver, int index, char *p)

{

if (driver->flags & TTY_DRIVER_UNNUMBERED_NODE)

return sprintf(p, "%s", driver->name);

else

return sprintf(p, "%s%d", driver->name,

index + driver->name_base);

}

}

通过打印得知串口节点设备名称是由驱动名称 driver->name和串口序号index 组成的,于是添加判断 driver->name是否为"ttyS",index是否为4,如果是就替换。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值