蜗窝科技

如何知道android系统中GPS在 /dev/tty*下具体生成的节点名称?

蜗窝讨论区存档 · Linux kernel技术问答 · 楼主 ihexon · 2018-07-17 · 3 帖

本文是原「蜗窝讨论区」的历史存档(2018-07-17),来自版块「Linux kernel技术问答」,共 3 帖。讨论区已停止服务,此处仅供查阅。

ihexon · 2018-07-17 02:09

题目可能描述的不是很清晰,我通过Google大概了解了GPS通过UART接口并且在/dev/tty*下生成设备节点,我知道bluetooth的节点是/dev/ttyHS0(歪打正着), 但其他的tty[1-24]完全不知道是什么设备.....


[== Undefined ==]
%ls /dev/tty*
/dev/tty    /dev/tty12  /dev/tty17  /dev/tty21  /dev/tty26  /dev/tty30  /dev/tty35  /dev/tty4   /dev/tty44  /dev/tty49  /dev/tty53  /dev/tty58  /dev/tty62  /dev/ttyHS0
/dev/tty0   /dev/tty13  /dev/tty18  /dev/tty22  /dev/tty27  /dev/tty31  /dev/tty36  /dev/tty40  /dev/tty45  /dev/tty5   /dev/tty54  /dev/tty59  /dev/tty63  /dev/ttyprintk
/dev/tty1   /dev/tty14  /dev/tty19  /dev/tty23  /dev/tty28  /dev/tty32  /dev/tty37  /dev/tty41  /dev/tty46  /dev/tty50  /dev/tty55  /dev/tty6   /dev/tty7
/dev/tty10  /dev/tty15  /dev/tty2   /dev/tty24  /dev/tty29  /dev/tty33  /dev/tty38  /dev/tty42  /dev/tty47  /dev/tty51  /dev/tty56  /dev/tty60  /dev/tty8
/dev/tty11  /dev/tty16  /dev/tty20  /dev/tty25  /dev/tty3   /dev/tty34  /dev/tty39  /dev/tty43  /dev/tty48  /dev/tty52  /dev/tty57  /dev/tty61  /dev/tty9

这些tty设备的名字是在内核源码你固定并映射至X传感器,还是动态分配的, tty存在空闲的节点吗(如没有映射任何硬件设备的ttyXXX),还是按照需要自动创建....

我对内核源码的结构也不是清晰,大概知道在driver/tty/serial/* 下,


[== Undefined ==]
% ls shared/superuber-kernel-angler/drivers/tty/serial 
21285.c            arc_uart.c         crisv10.h      ioc4_serial.c  m32r_sio.h       mpsc.c                 msm_smd_tty.c  pmac_zilog.h    serial_core.c    suncore.c   ucc_uart.c
68328serial.c      atmel_serial.c     dz.c           ip22zilog.c    m32r_sio_reg.h   mrst_max3110.c         msm_smd_tty.o  pnx8xxx_uart.c  serial_core.o    sunhv.c     vr41xx_siu.c
8250               bcm63xx_uart.c     dz.h           ip22zilog.h    Makefile         mrst_max3110.h         mux.c          pxa.c           serial_ks8695.c  sunsab.c    vt8500_serial.c
altera_jtaguart.c  bfin_sport_uart.c  efm32-uart.c   jsm            max3100.c        msm_serial.c           mxs-auart.c    rp2.c           serial-tegra.c   sunsab.h    xilinx_uartps.c
altera_uart.c      bfin_sport_uart.h  icom.c         Kconfig        max310x.c        msm_serial.h           netx-serial.c  sa1100.c        serial_txx9.c    sunsu.c     zs.c
amba-pl010.c       bfin_uart.c        icom.h         kgdb_nmi.c     mcf.c            msm_serial_hs.c        nwpserial.c    samsung.c       sh-sci.c         sunzilog.c  zs.h
amba-pl011.c       built-in.o         ifx6x60.c      kgdboc.c       mfd.c            msm_serial_hs_hwreg.h  of_serial.c    samsung.h       sh-sci.h         sunzilog.h
apbuart.c          clps711x.c         ifx6x60.h      lantiq.c       modules.builtin  msm_serial_hs_lite.c   omap-serial.c  sb1250-duart.c  sirfsoc_uart.c   timbuart.c
apbuart.h          cpm_uart           imx.c          lpc32xx_hs.c   modules.order    msm_serial_hs_lite.o   pch_uart.c     sc26xx.c        sirfsoc_uart.h   timbuart.h
ar933x_uart.c      crisv10.c          ioc3_serial.c  m32r_sio.c     mpc52xx_uart.c   msm_serial_hs.o        pmac_zilog.c   sccnxp.c        sn_console.c     uartlite.c

如果需要阅读源码,那么具体在那些地方有tty*节点的定义(如Bluetooth的节点为ttyHS0)....

xFrank · 2018-07-17 17:21

试试 ls -l 看下用户名,如果是GPS生成的,owner也应该是gps

HelloBirthday · 2018-07-19 10:17

据我所知,GPS是通过conf配置文件选择串口的,framework会读取该配置。 或者是GPS hal库直接指定某个串口 蓝牙,GPS这些uart口,指定用哪一个串口大多是由conf一类的配置文件指定的,与驱动关系不大。 建议看下android system/etc/下的一些配置