# linux-ms3020-driver **Repository Path**: hywing/linux-ms3020-driver ## Basic Information - **Project Name**: linux-ms3020-driver - **Description**: Linux driver for ms3020 USB device - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/hywing/linux-ms3020-driver - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-31 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: tty, Linux, usb, 串口 ## README # MS3020 USB串口驱动 - ARM版本 MACROSILICON MS3020 USB转串口适配器驱动,支持ARM64架构交叉编译。 ## 项目概述 本项目提供了MS3020 USB转串口适配器的Linux内核驱动,专门针对ARM64架构进行优化。驱动实现了完整的USB串口功能,包括自动加载、设备识别和权限管理。 ## 设备信息 - **厂商**: MACROSILICON - **设备ID**: 345f:3020 - **产品名称**: USB Serial - **设备文件**: /dev/ttyUSB* - **支持架构**: ARM64 ## 快速开始 ### ARM64交叉编译 #### 1. 环境准备 ```bash # 设置交叉编译环境 unset LD_LIBRARY_PATH source ~/myd-lmx91-toolchain/environment-setup-armv8a-poky-linux # 检查环境变量 echo "CC: $CC" echo "CROSS_COMPILE: $CROSS_COMPILE" echo "ARCH: $ARCH" ``` #### 2. 编译驱动 ```bash # 清理之前的编译文件 make clean # 交叉编译 make # 安装ARM版本驱动 make install ``` #### 3. 部署到目标设备 ```bash # 传输驱动到ARM设备 scp ms3020-arm.ko root@192.168.55.142:/root/ # SSH连接目标设备 ssh root@192.168.55.142 # 在目标设备上加载驱动 insmod ms3020-arm.ko ``` ## 实验现象 ### 1. 驱动加载成功 **ARM64系统加载日志**: ``` [ 4471.955609] usbcore: registered new interface driver ms3020 [ 4471.955772] usbserial: USB Serial support registered for ms3020 [ 4471.955888] ms3020 1-1.1:1.0: ms3020 converter detected [ 4471.958554] usb 1-1.1: ms3020 converter now attached to ttyUSB2 ``` ### 2. 设备文件创建 ```bash # 查看设备文件 ls -la /dev/ttyUSB* # 输出: # crw-rw-rw- 1 root dialout 188, 2 Sep 12 16:00 /dev/ttyUSB2 ``` ### 3. 串口通信测试 **ARM设备上的RS485通信测试**: ```bash # 设置串口参数 stty -F /dev/ttyUSB2 9600 cs8 -parenb -cstopb raw -echo # 读取数据 cat /dev/ttyUSB2 # 输出: # Hello RS485!\r\n # Hello RS485!\r\n # Hello RS485!\r\n # ... ``` ### 4. 模块信息验证 ```bash # 查看模块信息 modinfo ms3020-arm.ko # 输出: # filename: /root/ms3020-arm.ko # license: GPL # description: MS3020 USB to serial adaptor driver # alias: usb:v345Fp3020d*dc*dsc*dp*icFFisc*ip*in* # depends: # name: ms3020 # vermagic: 6.6.36-rt35-g9dee15544528-dirty SMP preempt_rt mod_unload modversions aarch64 ``` ### 5. 文件架构信息 | 特性 | ARM64版本 | |------|-----------| | 架构 | ARM aarch64 | | 文件大小 | 87K | | 内核版本 | 6.6.36-rt35 | | 编译方式 | 交叉编译 | ## 使用方法 ### 1. 基本使用 ```bash # 查看可用设备 ls -la /dev/ttyUSB* # 使用串口工具 sudo minicom -D /dev/ttyUSB0 # 或 sudo screen /dev/ttyUSB0 115200 ``` ### 2. 权限设置 ```bash # 将用户添加到dialout组 sudo usermod -a -G dialout $USER # 重新登录后生效 ``` ### 3. 自动加载配置 驱动支持USB设备插入时自动加载,无需手动操作。 ## 技术特性 ### 1. 驱动功能 - ✅ USB设备自动识别 - ✅ 串口参数配置 (波特率、数据位、停止位、校验位) - ✅ 流控制支持 (RTS/CTS, XON/XOFF) - ✅ 中断处理 - ✅ 错误检测和报告 - ✅ 热插拔支持 ### 2. 支持的串口参数 - **波特率**: 1200 - 12000000 bps - **数据位**: 5, 6, 7, 8 - **停止位**: 1, 1.5, 2 - **校验位**: None, Even, Odd, Mark, Space - **流控制**: RTS/CTS, XON/XOFF, None ### 3. 系统兼容性 - **内核版本**: 6.6.36+ (RT版本支持) - **架构**: ARM64 - **发行版**: Yocto, Ubuntu ARM64, Debian ARM64等 ## 故障排除 ### 1. 模块加载失败 ```bash # 检查依赖模块 modprobe usbserial modprobe ms3020 # 查看错误信息 dmesg | grep ms3020 ``` ### 2. 设备未识别 ```bash # 检查USB设备 lsusb | grep -i "345f\|macrosilicon" # 检查设备文件 ls -la /dev/ttyUSB* ``` ### 3. 权限问题 ```bash # 检查设备权限 ls -la /dev/ttyUSB* # 检查用户组 groups $USER # 重新加载udev规则 sudo udevadm control --reload-rules sudo udevadm trigger ``` ### 4. 交叉编译问题 ```bash # 检查交叉编译环境 which aarch64-poky-linux-gcc aarch64-poky-linux-gcc --version # 检查内核路径 ls -la /home/hywing/workspace/myir-imx-linux/Makefile ``` ## 项目结构 ``` arm/ ├── ms3020.c # 驱动源码 ├── Makefile # 交叉编译Makefile ├── ms3020-arm.ko # ARM版本驱动文件 ├── ms3020.ko # 原始编译文件 ├── ms3020.o # 目标文件 ├── ms3020.mod.o # 模块目标文件 ├── ms3020.mod.c # 模块源码文件 ├── modules.order # 模块顺序文件 ├── Module.symvers # 符号版本文件 └── README.md # 本文档 ``` ## 开发信息 ### 1. 编译环境 - **交叉编译工具链**: aarch64-poky-linux-gcc - **内核源码路径**: /home/hywing/workspace/myir-imx-linux - **目标内核版本**: 6.6.36-rt35 ### 2. 测试环境 - **交叉编译主机**: Ubuntu 22.04 LTS x86_64 - **ARM64目标**: MYIR MYD-LMX91开发板 - **内核版本**: 6.6.36-rt35 ### 3. 验证结果 - ✅ ARM64版本交叉编译成功 - ✅ 驱动在目标设备上加载正常 - ✅ 串口通信功能正常 - ✅ 自动加载功能正常 ## 许可证 本项目采用GPL-2.0许可证。 ## 贡献 欢迎提交Issue和Pull Request来改进本项目。 ## 联系方式 如有问题,请通过以下方式联系: - 项目地址: https://gitee.com/hywing/linux-ms3020-driver.git - 邮箱: [您的邮箱] --- **注意**: 本驱动为第三方驱动,加载时会taint内核。这是正常现象,不会影响系统功能。