初始问题
我使用 NXP 芯片 SC16IS740 作为嵌入式 Linux 系统(主线内核 v4.8)的外围设备。用例非常简单,应通过芯片的驱动程序读取连续传输的 uart 线(9600 8n1)。
到目前为止,我sc16is7xx
在内核构建中包含了驱动程序模块,并且我能够将设备视为/dev/ttySC0
.
但是,我现在无法读取串口,我怀疑我缺少正确的配置。我已经简单地尝试过了
cat /dev/ttySC0
和
minicom -D /dev/ttySC0 -b 9600 -8
由于设备目录(/sys/class/tty/ttySC0/)中只有只读文件,并且我没有找到任何有关如何使用驱动程序的文档,所以我已经没有想法了。
配置该驱动程序的正确方法是什么?
编辑:配置、日志和测量
配置
我将该模块包含在内核配方配置中,如下所示:
CONFIG_SERIAL_SC16IS7XX_CORE=m
CONFIG_SERIAL_SC16IS7XX=m
CONFIG_SERIAL_SC16IS7XX_I2C=y
要加载/卸载模块(这会导致加载/卸载设备/dev/ttySC0
),我使用:
modprobe [-r] sc16is7xx
日志
查找此类消息中的结果dmesg
:sc16is7
[ 5592.212905] [<c0379a14>] (uart_get_baud_rate) from [<bf07cf84>] (sc16is7xx_set_termios+0x1c4/0x374 [sc16is7xx])
[ 5592.213045] [<bf07cdc0>] (sc16is7xx_set_termios [sc16is7xx]) from [<c0379f04>] (uart_change_speed+0x5c/0x124)
每次我执行以下操作时,都会准确记录这两条消息:
/dev/ttySC0
使用minicom
或打开或关闭连接cat
- 更改波特率或其他串行端口设置
minicom
测量
使用示波器进行测量(包括基本逻辑分析),当我执行以下操作时,我可以看到 I2C 线上与芯片的通信:
/dev/ttySC0
打开或关闭与with 的连接minicom
- 更改波特率或其他串行端口设置
minicom
否则的话,线路上根本就没有任何交流。目前,我正在尝试分析发送的字节并使用数据表检查它们,即以某种方式调试驱动程序。