PCIE串口卡驱动安装与自启服务

PCI Express 多串口卡可以通过 PCIe 接口扩展出 RS232、RS485、RS422 等多种串口形式,常用于工业设备通信、嵌入式系统调试等场景。本文以汇特科技串口板块linux安装为例。

源码驱动编译安装

1、将压缩包拷贝到桌面,使用解压工具,解压压缩包,如下所示:

2、将驱动源码目录拷贝到自定义的英文目录下,方便编译,以上名为“pci-pcie-linux-v1.11”,进入目录找到fbser目录

1
mv fbser /home/user/fbser

3、切换到root 用户,在驱动源码目录中进行编译与安装。

1
2
3
4
5
6
7
8
sudo su

# 在fbser/drive 目录执行 (把驱动安装进内核)
make install

# 在此fbser/fbser_conf 目录执行 (编译串口工具,用来配置串口)
make

4、编译后会出现名为 muestty 可执行程序

结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/home/user/fbser# cd driver/
/home/user/fbser/driver# ls
fb17v35x.c Makefile readme
/home/user/fbser/driver# make install
Intalling the Fbus serial driver...
Please wait...
Done
/home/user/fbser/driver# cd ../fbser_conf/
/home/user/fbser/fbser_conf# make
conftool.c: In function ‘fb_set_interface’:
conftool.c:170:13: warning: implicit declaration of function ‘ioctl’ [-Wimplicit-function-declaration]
170 | if ((ret = ioctl(fd,FB_SET_SERIAL_MODE,mode)) < 0) {
| ^~~~~
/home/user/fbser/fbser_conf# ls
conftool.c conftool.o Makefile muestty

5、为了在系统中全局使用 muestty 命令,将其拷贝到系统可执行路径:

1
2
sudo cp muestty /usr/local/bin/

自启动服务编写

因为muestty配置每次开机后都要手动启动,为了避免手动操作,可以通过 systemd 服务 实现开机自动执行。

准备文件

确保以下三个文件放在同一目录下:

  • install_service.sh(安装脚本)

  • SetTTyFP.service(systemd 服务文件)

  • SetTTyFP.sh(串口模式设置脚本)

服务安装步骤

在上述目录中执行:

1
sudo install_service.sh

安装成功后会提示允许程序运行。执行成功后,系统会自动启用该服务,并在每次开机时运行 SetTTyFP.sh。

脚本内容说明:
install_service.s 安装并启用 systemd 服务
`
脚本内容如下:

1
2
3
4
5
#!/bin/sh
sudo cp ./setttyFP.service /etc/systemd/system/
sudo systemctl enable setttyFP.service


SetTTyFP.service systemd 服务定义文件:

脚本内容如下:

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Set ttyFP0
ConditionPathExists=/etc/profile.d/SetTTyFP.sh

[Service]
Type=forking
ExecStart=/etc/profile.d/SetTTyFP.sh

[Install]
WantedBy=multi-user.target

SetTTyFP.sh 串口模式配置
脚本根据实际需求修改串口模式。具体可以参考muestty命令使用文档。
脚本内容如下:

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
# 设置 RS232 模式
muestty -i RS232 /dev/ttyFP0

# 如需使用其他模式,可按需启用以下行:
#muestty -i RS4852W /dev/ttyFP0
#muestty -i RS4854W /dev/ttyFP0
#muestty -i RS422W /dev/ttyFP0


验证服务是否生效

重启系统后,执行以下命令查看服务状态

1
2
systemctl status SetTTyFP.service

若状态为 active (running),说明自启服务配置成功。