首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux给串口起固定名字

在Linux系统中,串口(Serial Port)通常被命名为 /dev/ttyS*/dev/ttyUSB*,其中 * 是一个数字,表示具体的串口设备。为了给串口起一个固定的名字,可以使用udev规则来实现。以下是详细步骤和相关概念:

基础概念

  1. udev:Linux系统中的设备管理器,负责动态管理设备文件。
  2. 串口设备:通常用于串行通信,如RS-232、RS-485等。

优势

  • 稳定性:固定设备名称可以避免因设备插入顺序变化导致的名称变动。
  • 易用性:便于脚本和程序直接引用固定的设备路径。

类型

  • ttyS:用于传统的串口设备,如PCI插槽中的串口卡。
  • ttyUSB:用于USB转串口设备。

应用场景

  • 嵌入式系统:在嵌入式设备中,串口常用于调试和通信。
  • 工业自动化:用于设备间的串行通信。
  • 物联网设备:连接传感器和控制器。

实现步骤

  1. 创建udev规则文件: 在 /etc/udev/rules.d/ 目录下创建一个新的规则文件,例如 99-serial.rules
  2. 创建udev规则文件: 在 /etc/udev/rules.d/ 目录下创建一个新的规则文件,例如 99-serial.rules
  3. 其中,idVendoridProduct 是设备的Vendor ID和Product ID,可以通过 lsusb 命令查看。
  4. 重新加载udev规则: 运行以下命令使规则生效:
  5. 重新加载udev规则: 运行以下命令使规则生效:
  6. 验证结果: 检查 /dev/ 目录下是否生成了符号链接:
  7. 验证结果: 检查 /dev/ 目录下是否生成了符号链接:

示例代码

假设我们有一个USB转串口设备,Vendor ID为 1a86,Product ID为 7523,我们希望将其固定命名为 /dev/my_serial_port

  1. 创建规则文件
  2. 创建规则文件
  3. 内容如下:
  4. 内容如下:
  5. 重新加载规则
  6. 重新加载规则
  7. 验证
  8. 验证

常见问题及解决方法

  1. 规则未生效
    • 确保规则文件权限正确(通常是644)。
    • 确保规则文件名以数字开头,以便按顺序加载。
  • 设备ID错误
    • 使用 lsusb 命令确认设备的Vendor ID和Product ID。
  • 权限问题
    • 确保udev规则文件的属主和属组为root。
    • 可以在规则文件中添加 MODE="0666" 来设置权限。

通过以上步骤,你可以为Linux系统中的串口设备设置一个固定的名称,从而提高系统的稳定性和易用性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何给程序中的变量起个好名字?

对程序中的变量而言,名字同样非常重要。 ? 作为开发人员,你要花费大量的敲代码时间来创建变量和考虑给变量起个名字。名字无处不在。你可以命名文件、类、方法和变量。...在本文中,我将向你展示一些简单的规则,你可以遵循这些规则来创建名字。 在代码中起名本身就是一门艺术! 1、名字要显示真正意图 这说起来容易做起来难。...2、使用某一领域背景中有意义的名字 程序员写的所有代码都是和某一领域背景相关的,为了让写出的代码可以让个更多的人理解,最好使用该领域背景下的名字。...变量命名:使用在上下文有意义的名字 代码里的名字都有自己的上下文,上下文对于理解一个代码是很重要的,因为它能提供额外的信息。...作为一名程序员你应该: 1、起的名字有意义,可以表达一个概念 2、要考虑名字的长度,名称中只有必要信息 3、符合“编码规范”,有助于理解 4、一个概念不要多个名字混用 5、使用在背景领域和上下文中都有意义的名字

83030

XAML 给资源起个好名字 用 StaticResource 起一个别名

然而在很多团队里面,都有很多开发者,同时开发者的命名能力也有一定的差距 如果没有给资源一个好的命名,自然,每次用起来的时候,都会遇到一个问题,那就是某个资源找不到的问题。...这个感觉是不错的,给主页面使用的 Padding 值。...但是颜色的定义,是会在迭代被变更的 从技术侧的一个解决方法是采用 StaticResource 来进行资源的引用,相当于给资源一个别名的方式。...解决了开发侧的重复资源定义,又想资源重复定义方便改动的时候相互不影响,又想着不重复定义方便要改可以一起改的问题 如以上的代码,相当于将资源的定义分为三层。

31810
  • 如何给程序中的变量起个好名字?7个建议让你取对变量名~

    但是,实际的编程不仅是要精通技术和工具,关键是要对某个特定领域的问题给出解决方案,而且通常要和其他程序员一起合作完成。...清晰的代码: Customer[] customers; Table customers; 适合的名字长度 在现代的编程语言中,很长的变量名字是被允许的,你可以基本不受限制的去命名,但是这样会导致命名的混乱...清晰的代码: public class ProductWithCategory { Entity product; Entity category; } 使用上下文环境下有意义的名字 代码里的名字都有自己的上下文...清晰的代码: class Address { string city; string homeNumber; string postcode; } 总结 作为一名程序员你应该 1、起的名字是有意义的,可以表达一个概念...2、要考虑名字的长度,名称中只有必要的信息 3、符合“编码规范”,帮助理解 4、一个概念不要多种名字混用 5、使用在背景领域和上下文中都有意义的名字

    2.7K40

    基于瑞芯微RV1109 Linux串口驱动调试心得(给正点原子DS100示波器点赞!)

    ,所以只能硬着头皮追代码、上示波器、上逻辑分析仪调试等等,走了很多弯路,最后终于把问题给找出来了,在此记录一下调试过程。...3、板厂端开启串口功能 3.1、基于中断收发的串口配置 默认情况下,配置的串口是基于中断方式的。...,配置完毕后如果串口没有开DMA的时候,在使用这个串口驱动的时候可能会看到如下信息: 但并不影响正常使用,报这个错的原因是因为没有配置dma的端口。...4.1、查看开机是否有串口驱动加载信息 调试指令如下: dmesg | grep "serial" 可以看到: 4.2、查看串口pinctrl的占用情况 调试指令如下: cat /sys/kernel...的stty工具来进行设置,接下来我们将串口波特率为115200: 接下来用串口调试助手进行收发测试: 测试双向发送和接收成功!

    3.8K10

    APM飞控若干整理

    位置在此 APM的介绍 https://ardupilot.org/ardupilot/index.html 自带的文档位置 APM其实不是一个简单的飞控那么简单,而是一套自动驾驶仪的解决方案 固定翼...我忘了名字了 https://firmware.ardupilot.org/ 这些固件的位置 老哥还给了一个数字电台 这样信息传递的方式有很多,都是串口方式 ESP8266的遥测 串口连接 https...它定义了其余代码对特定板特性的接口,然后有一个 AP_HAL_XXX 子目录用于每种板类型,例如 AP_HAL_AVR 用于基于 AVR 的板,AP_HAL_PX4 用于 Pixhawk 板和AP_HAL_Linux...适用于基于 Linux 的主板。...这里是面向开发者的链接 https://www.mathworks.com/matlabcentral/fileexchange/345-tcp-udp-ip-toolbox-2-0-6 可以使用Matlab一起开发

    2K20

    瑞芯微RK3568正式开放RISC-V核心啦,也支持非对称AMP双系统!

    其中,瑞芯微RK3568J国产平台的非对称AMP(Asymmetric Multi-Processing)架构,通过ARM与RISC-V的协同工作,展现出了强大的性能优势,下面一起来看看!...“非对称AMP”对工业有何意义“系统实时性”更强非对称AMP架构拥有更强的系统实时性,可使用固定的核心进行实时任务处理。在工业自动化控制领域中,非对称AMP架构可以兼顾复杂功能与实时性需求。...案例功能RK3568J的Cortex-A55(CPU0、CPU1、CPU2、CPU3)核心作为主核运行Linux系统,RISC-V作为从核运行Baremetal程序;实现RS485 UART7串口的回显功能...案例测试首先,我们使用Type-C线将评估板USB TO UART2串口连接至PC机,使用RS232转RS485模块、USB转RS232公头串口线将评估板RS485 UART7串口连接至PC机,如下图所示...在RS485 UART7串口终端输入8个字符后按回车,串口终端将回显接收到的字符。

    8320

    FlySky+A8S(SBUS接收机)+ESP8266控制大疆Tello无人机.准备

    得益于大疆对TT的开放,我们可以使用固定的协议来完成对TT的控制。...https://github.com/Cleric-K/FlySkyRxFirmwareRssiMod 但是有一个项目可以让接收机有回传信号强度的能力,源码也给了。我研究一下自己写个固件。...其实不是,用到哪个软串口,就在用之前加一个语句 XXX.listen()(XXXX是你自定义的软串口名字),也就是用到谁监听谁,不然不被监听的会失效。...(从AVR角度讲,是没有定义模拟串口) 这是控制的框图 说下控制流程: 遥控器和接收机建立联系 接收机通过串口和主控连接 主控解算IBUS信号里面的通道信息 将通道信息通过主控串口给ESP8266 ESP8266...如果主板只有一个 UART 端口,你仍然可以使用该端口与您的 PC 进行串行调试通信,只要打算仅使用伺服输出模式(波特率将固定为 115200 波特,应该只连接 UART TX针到 USB 串行转换器)

    3K20

    国外DIY牛人教你做Wifi机器人(最全教程)

    幸好我还能将烧掉的晶体管拆掉,同时也拆掉了一起被烧掉的RX2芯片,从而挽救了操控电路。...2.6 电源导轨(Power Rails) 9.6V导轨(rail)是由7812 12V导轨供电,不过,我们首先需要将4个二极管与7812 12V导轨串联在一起。...2.10 硬件安装 PIC控制板被安全固定在车的一侧。在车架上我打了很多孔,用来穿电线,所有的电线长度都弄得比实际需要的要长,目的是为了使电线连接的各零部件在最终固定之前可以自由地调整位置。...当所有的零部件被最终固定好之后,用捆线器收紧电线的多余部分即可。本项目一共用到了大约30根电线,还不包括以太网电缆。...我用了些热胶(hot-glue)和捆线器将电池固定好。另外,路由器相对遥控车的底座有点太宽,所以我做了点改动——将两片有机玻璃加在遥控车底座,使之变宽。

    2.4K50

    单片机开发与Linux开发有何不同?

    ARM-Linux应用开发和单片机的开发主要有以下几点不同: (1)应用开发环境的硬件设备不同 单片机:开发板,仿真器(调试器),USB线; ARM-Linux:开发板,网线,串口线,SD卡; 对于ARM-Linux...(2)程序下载方式不同 单片机:仿真器(调试器)下载,或者是串口下载; ARM-Linux:串口下载、tftp网络下载、或者直接读写SD、MMC卡等存储设备,实现程序下载; 这个与开发环境的硬件设备是有直接关系的...,由于没有硬件仿真器,故ARM-Linux开发时通常不采用仿真器下载;这样看似不方便,其实给ARM-Linux的应用开发提供了更多的下载方式。...a)启动BIOS: BIOS是设备厂家(芯片或者是电路板厂家)设置的相应启动信息,在设备上电后,其将读取相应硬件设备信息,进行硬件设备的初始化工作,然后跳转到bootloader所在位置(该位置是一个固定的位置...(1)硬件环境 开发板:ARM运行的硬件环境,或者是相应项目的ARM电路板; 计算机:作为开发主机使用,安装Linux(如Ubuntu)),或者采用虚拟机安装Ubuntu; 串口线:用于开发过程中采用终端进行串口调试或下载程序

    2.1K31

    ARM-Linux开发与MCU开发异同

    ARM-Linux应用开发和单片机的开发主要有以下几点不同: (1)应用开发环境的硬件设备不同 单片机:开发板,仿真器(调试器),USB线; ARM-Linux:开发板,网线,串口线,SD卡; 对于...ARM-Linux开发,通常是没有硬件的调试器的,尤其是在应用开发的过程中,很少使用硬件的调试器,程序的调试主要是通过串口进行调试的;但是需要说明的是,对于ARM芯片也是有硬件仿真器的,但通常用于裸机开发...(2)程序下载方式不同 单片机:仿真器(调试器)下载,或者是串口下载; ARM-Linux:串口下载、tftp网络下载、或者直接读写SD、MMC卡等存储设备,实现程序下载; 这个与开发环境的硬件设备是有直接关系的...,由于没有硬件仿真器,故ARM-Linux开发时通常不采用仿真器下载;这样看似不方便,其实给ARM-Linux的应用开发提供了更多的下载方式。...(1)硬件环境 开发板:ARM运行的硬件环境,或者是相应项目的ARM电路板; 计算机:作为开发主机使用,安装Linux(如Ubuntu)),或者采用虚拟机安装Ubuntu; 串口线:用于开发过程中采用终端进行串口调试或下载程序

    1.4K30

    Dji TT扩展件与TT使用USB端串口通讯.上

    里面我们也看到一些不一样的东西 比如固定的波特率,8N1和后面的引脚 值得一说的是,这个begin()的函数是ESP32特有的函数 我们接着打开大疆提供的Arduino,我们记下这个开发板子的型号 来搜索...其实这个文件有点像一个设置的文件 这里是定义了开发板的名字和上传时候要用的工具 最后两个有点有趣是硬件串口的功能,在这里被打开了 mcu的类型+core类型+pin类型+具体的名字 flash只有...此时就算把Lib看完了,最有价值的就是对串口号的宏定义 我们接搜索一下这个串口定义,发现只定义过一次 上面也说了,这个串口的函数不是普通的串口函数是esp32的 我们接下来去具体的定义位置来寻找答案...有完整的函数签名 以及可以看到,串口其实是继承自Stream 这个硬件串口给了一个int的参数 使用HardwareSerial库需要先声明一个对象。...在硬串口库里面会看到这三个具体的串口名字 先校验是不是0,1,2里面的三个串口 串口0 串口1 串口2 这个函数是上面情况之后都没有匹配到之后的一个默认初始化函数 我们看见陌生的函数就去搜索 这是函数的定义

    1.2K21

    minicom 使用方法

    minicom,tkterm都是linux下应用比较广泛的串口软件,这里简单介绍minicom使用。...具体步骤如下: 1.linux下的所有操作面向用户的都是文件操作,在对串口操作之前,我们应该先确认自己对该文件有没有读写权限。...ls -l /dev/ttyUSB* linux下的usb串口命名为ttyUSB,运行上面命令,可以看到有几个设备挂载。...你可以重载环境变量TERM, 这在环境变量MINICOM 中使用很方便; 你可以创建一个专门的 termcap 入口以备minicom 在控制台上使用,它将屏幕初始化为raw模式, 这样,连同‘-l’标志一起,...启动时执行给定名字的脚本。到目前为止,还不支持将用户名和口令传送给启动脚本。如果你还使用了‘-d’选项,以在启动时开始拨号,此脚本将在拨号之前运行,拨号项目入口由‘-d’指明。

    8.9K10

    树莓派3B+使用GPIO实现串口通信

    不同型号的模块用的串口通信芯片可能不一样,这个时候在配置.rules来固定串口时,需要对不同的串口模块分别配置单独的规则,详情请移步之前教程《串口绑定别名》。...下面给大家详细的解决方案: ---- 配置步骤 首先大家可以使用命令看一下树莓派3b+支持的GPIO串口 ls -la /dev/   大家可以发现如下图所示,应该是没有红色框内的串口ttyS0,只有蓝色框内的串口...其中/dev/ttyAMA0串口时给蓝牙模块使用的。另外一个ttyS0应该是对接的miniUART,不过不知道为啥这个不显示,而且不能直接用,需要进行配置。...sudo chmod 666 /dev/ttyS0给串口权限,为了方便,下面介绍如何把串口/dev/ttyS0自动获取权限 先运行 sudo systemctl mask serial-getty@ttyS0.../90-local.rules 然后在里面加上: KERNEL=="ttyS0*", OWNER="root", GROUP="tty", MODE="0666" 这里简单解释下,其中KERNEL是串口的名字

    2.2K11

    基于GPS北斗卫星的NTP网络时间同步服务器设计方案

    麒麟系统NTP网络时间服务器方案图片设计思路:在通用的麒麟服务器内部固定一块北斗卫星接收模块并引出卫星天线接口,卫星模块接收北斗卫星数据并解码输出时间数据(NMEA0183串口数据),并将时间数据输入到系统主板的串口上...;麒麟系统串口接收时间数据解码时间信息并同步麒麟系统时间,确保麒麟系统的时间与准确。...客户端计算机时间偏差: offset = ((T3-T1)-(T4-T2) )/2客户机修正时间为T+offset (Device A为客户端,Device B为NTP服务器)Device A发送一个NTP报文给Device...使用其中, Linux使用tinker step 0配置缓慢调整,Aix使用slewalways yes配置缓慢调整,缓慢调整可规避闰秒时间调整对系统产生的影响。...备注:麒麟系统需包含串口的相关驱动程序!

    1.2K60

    WPF入门到放弃(三)| 制作串口调试助手

    也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结,一是因为我相信技术总是需要不断的总结与练习才能有所进步,二是希望帮助初学者对WPF有个初步的了解,大家一起探讨学习进步...一起学起来!...ComboBox 表示带有下拉列表的选择控件 Grid.Column="1" Name="Portname" Margin="10" Name给控件起个名字,方便在代码处使用,Margin 约束控件与容器控件的边距...下面对1行0列再设置一个三行,分别放置搜索串口,打开串口,发送数据三个按钮。 Button表示 Windows 按钮控件 下面是三个按钮设置比较简单,属性设置前面都有用到。...点击运行按钮,一个串口调试助手的界面就完成了。 好了这期就结束了,后面主要介绍如何实现按钮的功能,以及下拉列表,串口接收数据,发送数据。 就这么简单!下周见!

    1.5K30
    领券