最近在搞一个工业项目核心是用 RK3568 这块 ARM 板子去接一台 Moxa NPort-5200 系列串口服务器。Moxa 这东西挺常见的工业现场搞串口转网口没太多好说的成熟产品。理论上官方有驱动装完就跑应该很顺。板子是 RK3568跑的是 Debian 系统内核版本 4.19.232架构 aarch64。Moxa 的串口服务器型号是 NPort-5200 系列驱动名字叫 Real TTYMoxa 官方的叫法是「虚拟 COM 口驱动」意思是通过网络把远端串口映射成本地的 tty 设备用起来跟直接插串口线没什么区别。编译内核模块有个要求用来编译的内核头文件版本必须和实际在跑的内核完全一致。RK3568 的 Debian 系统有时候软件源不是最新的或者维护状态比较奇特apt install linux-headers-$(uname -r)一敲有可能找不到或者装上了版本对不上。先把 Debian 源更新一下。在/etc/apt/sources.list末尾追加这一行deb http://archive.debian.org/debian buster main然后sudo apt update。装完之后有个动作很多人容易跳过就是重新安装确认一下sudoaptinstall--reinstalllinux-headers-$(uname-r)验证一下文件存不存在sudols/usr/src/linux-headers-4.19.232/.configMoxa 官网的资源页NPort-5200 系列产品页面有好几个版本的 Real TTY 驱动下载有针对 Linux 内核 5.x 的有针对 4.x 的还有更老的版本。这里的选择逻辑很简单看内核版本4.19 属于 4.x就得选「Real TTY Linux Kernel 4.x Driver」。驱动解压之后准备编译用的是./mxcc这个交互式脚本。脚本开始跑的时候会问几个问题在 ARM 板子上本地编译填法是这样的ARCH填arm64CROSS_COMPILE填aarch64-linux-gnu-内核源码目录填/usr/src/linux-headers-4.19.232后面问 secure mode、polling mode 的一路 N理论上这样填完应该能编过但我遇到了一个编译警告把整个编译搞挂的情况。具体报错是跟undef相关的 warning触发了-Werror把 warning 当 error 处理。解决办法是在 Makefile 最顶部加一行ccflags-y : -Wno-undef屏蔽掉这个 warning编译就能顺利过去了。编译完成之后output/目录下会出现这些文件output/ ├── npreal2.ko ← 内核驱动模块最核心的东西 ├── mxaddsvr ← 添加串口映射的工具 ├── mxrmsvr ← 删除映射 ├── ldnpreal ← 驱动启动脚本 └── npreal2d ← 守护进程然后是安装流程。把内核模块复制到标准路径更新模块依赖关系加载驱动sudomkdir-p/lib/modules/$(uname-r)/kernel/drivers/charsudocpnpreal2.ko /lib/modules/$(uname-r)/kernel/drivers/char/sudodepmod-asudomodprobe npreal2验证驱动有没有成功加载lsmod|grepnpreal2能看到 npreal2 就说明驱动加载好了。然后把工具和守护进程部署到指定位置sudomkdir-p/usr/lib/npreal2/driversudocpnpreal2d npreal2d_redund mxloadsvr mxaddsvr mxdelsvr mxsetsec mxcfmat mxmknod mxrmnod npreal2d.cf /usr/lib/npreal2/driver/sudochmodx /usr/lib/npreal2/driver/*启动守护进程cd/usr/lib/npreal2/driversudo./npreal2d到这里驱动就装好了。接下来是实际使用。Moxa NPort-5200 的 IP 是 192.168.12.25添加串口映射是这样的cd/usr/lib/npreal2/driver ./mxaddsvr192.168.12.252第二个参数是端口数量NPort-5200 是双口所以填 2。查看当前的映射配置catnpreal2d.cf删除映射./mxdelsvr192.168.12.25重载配置修改后生效./mxloadsvr说到这里Moxa 官方提供了两种安装方式。方式一是直接运行./mxinst这个脚本会自动做编译和安装。方式二就是上面讲的手动跑./mxcc然后自己复制文件手动部署。推荐用方式一,直接运行./mxinst脚本.参考资料Moxa NPort-5200 系列产品资源页驱动下载CasperVector/npreal2 - GitHubMoxa-Linux/moxa-nport-real-tty-utils - GitHubTech Note: Moxa Real TTY Driver Porting Guide for Arm-based PlatformsMoxa 官方技术文档可在官网支持页面搜索获取以上既然看到这里了如果觉得不错随手点个赞、在看、转发三连吧⭐
手把手教 - 在 ARM 板子上本地编译 Moxa 串口服务器驱动
最近在搞一个工业项目核心是用 RK3568 这块 ARM 板子去接一台 Moxa NPort-5200 系列串口服务器。Moxa 这东西挺常见的工业现场搞串口转网口没太多好说的成熟产品。理论上官方有驱动装完就跑应该很顺。板子是 RK3568跑的是 Debian 系统内核版本 4.19.232架构 aarch64。Moxa 的串口服务器型号是 NPort-5200 系列驱动名字叫 Real TTYMoxa 官方的叫法是「虚拟 COM 口驱动」意思是通过网络把远端串口映射成本地的 tty 设备用起来跟直接插串口线没什么区别。编译内核模块有个要求用来编译的内核头文件版本必须和实际在跑的内核完全一致。RK3568 的 Debian 系统有时候软件源不是最新的或者维护状态比较奇特apt install linux-headers-$(uname -r)一敲有可能找不到或者装上了版本对不上。先把 Debian 源更新一下。在/etc/apt/sources.list末尾追加这一行deb http://archive.debian.org/debian buster main然后sudo apt update。装完之后有个动作很多人容易跳过就是重新安装确认一下sudoaptinstall--reinstalllinux-headers-$(uname-r)验证一下文件存不存在sudols/usr/src/linux-headers-4.19.232/.configMoxa 官网的资源页NPort-5200 系列产品页面有好几个版本的 Real TTY 驱动下载有针对 Linux 内核 5.x 的有针对 4.x 的还有更老的版本。这里的选择逻辑很简单看内核版本4.19 属于 4.x就得选「Real TTY Linux Kernel 4.x Driver」。驱动解压之后准备编译用的是./mxcc这个交互式脚本。脚本开始跑的时候会问几个问题在 ARM 板子上本地编译填法是这样的ARCH填arm64CROSS_COMPILE填aarch64-linux-gnu-内核源码目录填/usr/src/linux-headers-4.19.232后面问 secure mode、polling mode 的一路 N理论上这样填完应该能编过但我遇到了一个编译警告把整个编译搞挂的情况。具体报错是跟undef相关的 warning触发了-Werror把 warning 当 error 处理。解决办法是在 Makefile 最顶部加一行ccflags-y : -Wno-undef屏蔽掉这个 warning编译就能顺利过去了。编译完成之后output/目录下会出现这些文件output/ ├── npreal2.ko ← 内核驱动模块最核心的东西 ├── mxaddsvr ← 添加串口映射的工具 ├── mxrmsvr ← 删除映射 ├── ldnpreal ← 驱动启动脚本 └── npreal2d ← 守护进程然后是安装流程。把内核模块复制到标准路径更新模块依赖关系加载驱动sudomkdir-p/lib/modules/$(uname-r)/kernel/drivers/charsudocpnpreal2.ko /lib/modules/$(uname-r)/kernel/drivers/char/sudodepmod-asudomodprobe npreal2验证驱动有没有成功加载lsmod|grepnpreal2能看到 npreal2 就说明驱动加载好了。然后把工具和守护进程部署到指定位置sudomkdir-p/usr/lib/npreal2/driversudocpnpreal2d npreal2d_redund mxloadsvr mxaddsvr mxdelsvr mxsetsec mxcfmat mxmknod mxrmnod npreal2d.cf /usr/lib/npreal2/driver/sudochmodx /usr/lib/npreal2/driver/*启动守护进程cd/usr/lib/npreal2/driversudo./npreal2d到这里驱动就装好了。接下来是实际使用。Moxa NPort-5200 的 IP 是 192.168.12.25添加串口映射是这样的cd/usr/lib/npreal2/driver ./mxaddsvr192.168.12.252第二个参数是端口数量NPort-5200 是双口所以填 2。查看当前的映射配置catnpreal2d.cf删除映射./mxdelsvr192.168.12.25重载配置修改后生效./mxloadsvr说到这里Moxa 官方提供了两种安装方式。方式一是直接运行./mxinst这个脚本会自动做编译和安装。方式二就是上面讲的手动跑./mxcc然后自己复制文件手动部署。推荐用方式一,直接运行./mxinst脚本.参考资料Moxa NPort-5200 系列产品资源页驱动下载CasperVector/npreal2 - GitHubMoxa-Linux/moxa-nport-real-tty-utils - GitHubTech Note: Moxa Real TTY Driver Porting Guide for Arm-based PlatformsMoxa 官方技术文档可在官网支持页面搜索获取以上既然看到这里了如果觉得不错随手点个赞、在看、转发三连吧⭐