D1哪吒Debian系统内核驱动模块编译和使用(以CP210x USB to Serial 为例)
-
最近在使用哪吒D1开发板时遇到了一些USB转串口驱动上的小问题。
方案基于PerfXLab的Debian系统进行开发,最近在测试2D LIDAR时发现内核中没有带USB转串口驱动,无法加载/dev/ttyUSB0设备,故需自行编译对应内核模块,具体步骤如下:
1. Kernel源代码准备
PerfXLab的内核源代码已经在GitHub上开源(开源地址:https://github.com/rvboards/linux_kernel_for_d1 ),将代码clone到本地后,依README.md要求准备.config文件和board.dts文件
2. 编译内核所需工具链准备
编译内核需要使用到D1的SDK工具,该工具可与全志客户服务中心下载,在步骤1仓库的README文件中亦有上传到百度云的工具链压缩包文件。解压工具链包后可以得到以下二进制文件以及对应库文件。
使用--version参数运行对应gcc程序,可以看到gcc的版本是8.1.0。
3. 配置内核
在内核目录下运行如下命令:
make ARCH=riscv CROSS_COMPILE={工具链的bin目录}/riscv64-unknown-linux-gnu- menuconfig
进入内核配置界面。在主界面按下/键搜索cp210x。
得到以下搜索结果:
将对应选项勾选为<M>,表示编译为内核模块。
之后使用命令
make ARCH=riscv CROSS_COMPILE={工具链的bin目录}/riscv64-unknown-linux-gnu- -j$(nproc)
完成内核编译工作。
内核编译完成后,在内核目录的drivers/usb/serial文件夹下将出现
usbserial.ko
和cp210x.ko
文件,将其复制到开发板上。4. 内核模块加载
SSH进入哪吒开发板,首先使用lsmod查看当前加载的内核模块。
使用insmod命令按顺序加载usbserial.ko和cp210x.ko模块,之后使用lsmod查看加载的内核模块列表。
可以使用dmesg命令查看内核日志,日志中将显示cp210x模块已经成功加载。
5. 设备使用
插入cp210x设备,在内核日志中可以看到设备加载完成并被分配到ttyUSB0。
使用lsusb命令检查设备状态。
同样地,我们的ROS2应用程序可以正常运行并读取激光传感器输入。ROS2到D1开发板的移植部分将在后续博文中详细介绍。
-
@bayche 在 D1哪吒Debian系统内核驱动模块编译和使用(以CP210x USB to Serial 为例) 中说:
云的工具链压缩包文件。解压工
您好,大佬,我想请问驱动有了,指导对应的pwn和rst引脚,如何在设备树中给设备节点使能上电呢?
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号