RK3568添加WK2168驱动过程

RK3568 UBUNTU20.02 添加WK2168 SPI转8串口调试过程。

成果:

添加过程:

修改设备数:

编译驱动

加载驱动

root@ok3568:/wk/2168# insmod  wk2xxx_spi.ko
[  420.269537] wk2xxx_init: SPI driver for spi to Uart chip WK2XXX, etc.
[  420.269597] wk2xxx_init: V2.4 On 2022.07.24
[  420.269894] wk2xxx_probe!!--in--
[  420.270069] wk2xxx_spi_csgpio_parroot@ok3568:/wk/2168# se_dt!!--in--
[  420.270170] wk2xxx_cs_gpio: 103
[  420.270180] wk2xxx_spi_csgpio_parse_dt!!--exit--
[  420.270202] wk2xxx_spi_cs1gpio_parse_dt!!--in--
[  420.270227] wk2xxx_cs_gpio: 107
[  420.270231] wk2xxx_spi_cs1gpio_parse_dt!!--exit--
[  420.270244] wk2xxx_spi_irq_parse_dt!!--in--
[  420.270327] wk2xxx_irq_gpio: 108, irq: 113
[  420.270330] wk2xxx_spi_irq_parse_dt!!--exit--
[  420.270588] wk2xxx_probe(0x30)  GENA = 0x30
[  420.270668] wk2xxx_probe(0x35)  GENA = 0x35
[  420.270764] wk2xxx_probe(0x3f)  GENA = 0x3F
[  420.271308] wk2xxx_serial_init.
[  420.271339] wk2xxx_config_port!!
[  420.271352] wk2xxx_request_port!!---in--
[  420.271367] wk2xxx_type!!---in--
[  420.271386] wk2xxx_set_mctrl!!---in--
[  420.271881] uart_add_one_port:1. status= 0x0
[  420.271909] wk2xxx_config_port!!
[  420.271923] wk2xxx_request_port!!---in--
[  420.271937] wk2xxx_type!!---in--
[  420.271956] wk2xxx_set_mctrl!!---in--
[  420.272296] uart_add_one_port:2. status= 0x0
[  420.272328] wk2xxx_config_port!!
[  420.272339] wk2xxx_request_port!!---in--
[  420.272348] wk2xxx_type!!---in--
[  420.272360] wk2xxx_set_mctrl!!---in--
[  420.273561] uart_add_one_port:3. status= 0x0
[  420.273629] wk2xxx_config_port!!
[  420.273647] wk2xxx_request_port!!---in--
[  420.273667] wk2xxx_type!!---in--
[  420.273685] wk2xxx_set_mctrl!!---in--
[  420.274194] uart_add_one_port:4. status= 0x0
[  420.274229] wk2xxx_config_port!!
[  420.274239] wk2xxx_request_port!!---in--
[  420.274250] wk2xxx_type!!---in--
[  420.274276] wk2xxx_set_mctrl!!---in--
[  420.274663] uart_add_one_port:5. status= 0x0
[  420.274710] wk2xxx_config_port!!
[  420.274735] wk2xxx_request_port!!---in--
[  420.274745] wk2xxx_type!!---in--
[  420.274759] wk2xxx_set_mctrl!!---in--
[  420.275146] uart_add_one_port:6. status= 0x0
[  420.275200] wk2xxx_config_port!!
[  420.275218] wk2xxx_request_port!!---in--
[  420.275228] wk2xxx_type!!---in--
[  420.275251] wk2xxx_set_mctrl!!---in--
[  420.275780] uart_add_one_port:7. status= 0x0
[  420.275857] wk2xxx_config_port!!
[  420.275877] wk2xxx_request_port!!---in--
[  420.275893] wk2xxx_type!!---in--
[  420.275906] wk2xxx_set_mctrl!!---in--
[  420.276406] uart_add_one_port:8. status= 0x0
[  420.276614] devm_request_irq success. ret=0.

测试:

串口1 TX接串口2 RX

发送

接收:

相关调试信息:

root@ok3568:/wk/2168# echo "1234567890" > /dev/ttysWK0
[  827.407371] wk2xxx_startup!!-port:1;--in--
[  827.407424] wk2xxx_start(iobase) port1:1,port2:2,port3:3,port4:4
[  827.407436] wk2xxx_start(iobase) line1:0,line2:1,line3:2,line4:3
[  827.408603] wk2xxx_enable_ms!!---in--
[  827.408626] wk2xxx_startup!root@ok3568:/wk/2168# !-port:1;--exit--
[  827.408651] wk2xxx_termios!!-port:1;--in--
[  827.408666] wk2xxx_termios!!---c_cflag:0xcbd,c_iflag:0x500.
[  827.408681] wk2xxx_termios!!---freq:11059200,baudrate:9600
[  827.408695] wk2xxx_termios!!---baud1:0,baud0:47,pres:0
[  827.408711] conf_wk2xxx_subport!!-port:1;--in--
[  827.409270] conf_wk2xxx_subport!!---baud1:0x47;baud0:0x0;pres=0x0.---
[  827.409420] conf_wk2xxx_subport!!-port:1;--exit--
[  827.409437] wk2xxx_termios!!-port:1;--exit--
[  827.409456] wk2xxx_set_mctrl!!---in--
[  827.409622] wk2xxx_start_tx!!-port:1;--in--
[  827.409658] wk2xxx_start_tx!!-port:1;ret=1--exit--
[  827.409672] wk2xxx_start_tx_proc!!-port:1;--in--
[  827.409690] wk2xxx_start_tx!!-port:1;--in--
[  827.409706] wk2xxx_start_tx!!-port:1;ret=1--exit--
[  827.409721] wk2xxx_start_tx!!-port:1;--in--
[  827.409735] wk2xxx_start_tx!!-port:1;ret=0--exit--
[  827.409766] wk2xxx_irq!!---in--
[  827.409789] wk2xxx_irq!!ret:1---exit--
[  827.409820] wk2xxx_start_tx_proc!!-port:1;--in--
[  827.409902] wk2xxx_ist!!---in--
[  827.409985] wk2xxx_port_irq!!-port:1;--in--
[  827.410075] wk2xxx_tx_chars!!-port:1;--in--
[  827.410185] wk2xxx_irq!!---in--
[  827.410206] wk2xxx_irq!!ret:1---exit--
[  827.410302] wk2xxx_tx_chars!!-port:1;--exit--
[  827.410385] wk2xxx_ist!!---exit--
[  827.410407] wk2xxx_ist!!---in--
[  827.410552] wk2xxx_ist!!---exit--
[  827.421684] wk2xxx_irq!!---in--
[  827.421773] wk2xxx_irq!!ret:1---exit--
[  827.421908] wk2xxx_ist!!---in--
[  827.422150] wk2xxx_port_irq!!-port:1;--in--
[  827.422315] wk2xxx_tx_chars!!-port:1;--in--
[  827.422383] wk2xxx_tx_chars!!-port:1;--exit--
[  827.422740] wk2xxx_port_irq!!-port:1;--in--
[  827.422981] wk2xxx_tx_chars!!-port:1;--in--
[  827.423073] wk2xxx_stop_tx!!-port:1;--in--
[  827.423090] wk2xxx_tx_empty!!-port:1;--in--
[  827.423166] wk2xxx_tx_empty!!-port:1;tx_empty:0x1,fsr:0x0--exit--
[  827.423197] wk2xxx_set_mctrl!!---in--
[  827.423211] wk2xxx_stop_rx!!-port:1;--in--
[  827.423224] wk2xxx_stop_rx!!-port:1;ret:1--exit--
[  827.423230] wk2xxx_stop_tx!!-port:1;--exit--
[  827.423239] wk2xxx_shutdown!!-port:1;--in--
[  827.423254] wk2xxx_tx_chars!!-port:1;--exit--
[  827.423744] wk2xxx_ist!!---exit--
[  827.423778] wk2xxx_stop_rx_proc!!-port:1;--in--
[  827.424241] wk2xxx_shutdown!!-port:1;--exit--
[  827.426821] wk2xxx_irq!!---in--
[  827.426890] wk2xxx_irq!!ret:1---exit--
[  827.426971] wk2xxx_ist!!---in--
[  827.427173] wk2xxx_port_irq!!-port:2;--in--
[  827.427315] wk2xxx_rx_chars!!-port:2;--in--
[  827.427576] wk2xxx_rx_chars!!-port:2;--exit--
[  827.427649] wk2xxx_start_tx!!-port:2;--in--
[  827.427669] wk2xxx_start_tx!!-port:2;ret=1--exit--
[  827.427687] wk2xxx_start_tx!!-port:2;--in--
[  827.427704] wk2xxx_start_tx!!-port:2;ret=0--exit--
[  827.427713] wk2xxx_port_irq!!-port:2;--exit--
[  827.427724] wk2xxx_start_tx!!-port:2;--in--
[  827.427737] wk2xxx_start_tx!!-port:2;ret=0--exit--
[  827.427897] wk2xxx_ist!!---exit--
[  827.427912] wk2xxx_start_tx_proc!!-port:2;--in--
[  827.427980] wk2xxx_irq!!---in--
[  827.427991] wk2xxx_irq!!ret:1---exit--
[  827.428010] wk2xxx_ist!!---in--
[  827.428077] wk2xxx_port_irq!!-port:2;--in--
[  827.428143] wk2xxx_tx_chars!!-port:2;--in--
[  827.428272] wk2xxx_irq!!---in--
[  827.428283] wk2xxx_irq!!ret:1---exit--
[  827.428430] wk2xxx_tx_chars!!-port:2;--exit--
[  827.428535] wk2xxx_ist!!---exit--
[  827.428559] wk2xxx_ist!!---in--
[  827.428706] wk2xxx_ist!!---exit--
[  827.441851] wk2xxx_irq!!---in--
[  827.441907] wk2xxx_irq!!ret:1---exit--
[  827.441941] wk2xxx_ist!!---in--
[  827.442101] wk2xxx_port_irq!!-port:2;--in--
[  827.442285] wk2xxx_tx_chars!!-port:2;--in--
[  827.442388] wk2xxx_tx_chars!!-port:2;--exit--
[  827.442473] wk2xxx_port_irq!!-port:2;--in--
[  827.442574] wk2xxx_tx_chars!!-port:2;--in--
[  827.442654] wk2xxx_tx_chars!!-port:2;--exit--
[  827.442783] wk2xxx_port_irq!!-port:2;--in--
[  827.442920] wk2xxx_tx_chars!!-port:2;--in--
[  827.442978] wk2xxx_stop_tx!!-port:2;--in--
[  827.443091] wk2xxx_stop_tx!!-port:2;--exit--
[  827.443110] wk2xxx_tx_chars!!-port:2;--exit--
[  827.443224] wk2xxx_ist!!---exit--

### RK3568 平台 CH340 驱动安装教程 对于RK3568平台而言,CH340驱动程序的安装涉及几个关键步骤。瑞芯微官方SDK通常不会默认集成所有可能使用的外设驱动,因此需要手动添加支持。 #### 准备工作 确保开发环境已准备好,并且可以正常编译Linux内核。这包括但不限于获取最新的RK3568 Linux SDK以及必要的交叉编译工具链。 #### 获取驱动源码 访问官方网站或其他可信资源下载最新版本的CH340驱动源代码包[^2]。解压后进入`driver/usb/serial/ch341.c`所在路径查看具体实现细节。 #### 修改内核配置文件 编辑位于`kernel/arch/arm64/configs/rockchip_linux_defconfig`中的内核配置选项,在其中加入对CH340的支持: ```diff CONFIG_USB_SERIAL=y + CONFIG_USB_SERIAL_CH341=m ``` 上述更改使得USB串口转换芯片CH340能够作为可加载模块被识别和支持[^1]。 #### 编译并打包新固件 完成以上设置之后重新构建整个系统镜像或仅针对改动部分做增量更新。使用预装好的Makefile脚本简化此过程: ```bash make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rockchip_linux_defconfig make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- ``` #### 测试验证 将生成的新内核映像烧录至目标板卡启动测试。连接基于CH340接口的硬件设备(如Arduino Nano),通过命令行检查是否正确挂载了相应的TTY端口节点: ```bash dmesg | grep ch341 ls /dev/ttyUSB* ``` 如果一切顺利,则应该能看到类似下面的日志输出表明驱动已被成功激活并且关联到了物理端口上: ``` usb 1-1.2: ch341-uart converter now attached to ttyUSB0 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄大刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值