Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    D1哪吒Debian系统内核驱动模块编译和使用(以CP210x USB to Serial 为例)

    MR Series
    2
    2
    1399
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • bayche
      bayche LV 6 last edited by q1215200171

      最近在使用哪吒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文件中亦有上传到百度云的工具链压缩包文件。解压工具链包后可以得到以下二进制文件以及对应库文件。

      053e725183dbce1f7aba0e9a7fc27f1a.png

      使用--version参数运行对应gcc程序,可以看到gcc的版本是8.1.0。

      847544d3dd3ded8f79fb5bb1d0915271.png

      3. 配置内核

      在内核目录下运行如下命令:

      make ARCH=riscv CROSS_COMPILE={工具链的bin目录}/riscv64-unknown-linux-gnu- menuconfig
      

      进入内核配置界面。在主界面按下/键搜索cp210x。

      0b892ee699b413c9d82f0bf19d1f1b4d.png

      得到以下搜索结果:

      5021a4f46161a8a967371b0233f82c64.png

      将对应选项勾选为<M>,表示编译为内核模块。

      d64c388d78f2ec17cea2c2a075f9b890.png

      之后使用命令

      make ARCH=riscv CROSS_COMPILE={工具链的bin目录}/riscv64-unknown-linux-gnu- -j$(nproc)
      

      完成内核编译工作。

      内核编译完成后,在内核目录的drivers/usb/serial文件夹下将出现usbserial.ko和cp210x.ko文件,将其复制到开发板上。

      195f9137942541fb5ecf9f414569ee17.png

      4. 内核模块加载

      SSH进入哪吒开发板,首先使用lsmod查看当前加载的内核模块。

      39d7fb42bc46bc25d17afdfa5cbe1e4b.png

      使用insmod命令按顺序加载usbserial.ko和cp210x.ko模块,之后使用lsmod查看加载的内核模块列表。

      2bf2c2c73b54378da41e534e06ed57bb.png

      可以使用dmesg命令查看内核日志,日志中将显示cp210x模块已经成功加载。

      f473445761bac2a8f50c4ec6b2363fe2.png

      5. 设备使用

      插入cp210x设备,在内核日志中可以看到设备加载完成并被分配到ttyUSB0。

      24c12b3802446761fdc3e252dab74fb1.png

      使用lsusb命令检查设备状态。

      926a140c4b7c59b484c28ba83db40ac1.png

      同样地,我们的ROS2应用程序可以正常运行并读取激光传感器输入。ROS2到D1开发板的移植部分将在后续博文中详细介绍。

      d53f3e3d9a601fab0a919a2bd1504a8f.png

      原文链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.429d2846YxH5Fg&id=4080021079526019072

      W 1 Reply Last reply Reply Quote Share 0
      • W
        wanglang LV 5 @bayche last edited by

        @bayche 在 D1哪吒Debian系统内核驱动模块编译和使用(以CP210x USB to Serial 为例) 中说:

        云的工具链压缩包文件。解压工

        您好,大佬,我想请问驱动有了,指导对应的pwn和rst引脚,如何在设备树中给设备节点使能上电呢?

        1 Reply Last reply Reply Quote Share 0
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策