尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【jetson】串口通信测试和异常问题排查

【jetson】串口通信测试和异常问题排查
📅 发布时间:2026/7/14 6:31:53

本文完成 Jetson 串口收发功能测试,完整记录长报文接收异常故障的排查过程

一、环境说明

  1. 硬件:Jetson Orin Nano 40Pin排针
  2. 系统:JetPack 6.2.2 / L4T R36.5
  3. 串口:/dev/ttyTHS1(硬件UARTA)
  4. 引脚对应
  • Pin8:UART1 TX 发送引脚
  • Pin10:UART1 RX 接收引脚

二、引脚复用配置(启用UART1)

出厂40Pin引脚默认为GPIO,必须切换功能才能使用串口

  1. 打开引脚配置工具
sudo/opt/nvidia/jetson-io/jetson-io.py
  1. 进入40pin配置,将Pin8、Pin10设置为uarta;
  2. 保存配置,重启设备生效;
  3. 校验引脚状态,确认复用配置正常
sudocat/sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups|grep-A5"uart1"

标准正常输出:

122 (uart1_rx_pr3): pull=2 tristate=1 enable-input=1 open-drain=0 io-reset=0 123 (uart1_tx_pr2): pull=0 tristate=0 enable-input=0 open-drain=0 io-reset=0

注释:RX为输入带上拉,TX为推挽输出,IO无硬件复位,串口硬件通路就绪。

三、硬件接线

1. 自回环测试(自发自收,排除外部设备干扰)

杜邦线直接短接 Pin8 ↔ Pin10,完成串口闭环测试。

2. 外接电脑串口模块测试

Pin8(TX) → 模块RX;Pin10(RX) → 模块TX;共GND。


四、Python串口测试环境部署

依赖安装(推荐系统apt包,稳定无冲突)

sudoaptupdatesudoaptinstallpython3-serial

校验库是否正常导入:

python3-c"import serial; print(serial.__version__)"

实时收发测试脚本 uart_test.py

importserialimporttimedefmain():ser=Nonelast_send_time=0send_interval=1counter=1try:ser=serial.Serial(port="/dev/ttyTHS1",baudrate=115200,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS,timeout=0)print("✅ 串口打开成功 /dev/ttyTHS1 @115200")print("每1秒自动发送递增数字,实时打印接收数据")whileTrue:current_time=time.time()# 定时发送数据ifcurrent_time-last_send_time>=send_interval:send_data=f"{counter}\n"ser.write(send_data.encode("utf-8"))print("发送:",send_data.strip())counter+=1last_send_time=current_time# 非阻塞读取接收缓存ifser.in_waiting>0:raw_data=ser.read(ser.in_waiting)try:recv_str=raw_data.decode("utf-8").strip()print("实时收到:",recv_str)except:print("原始十六进制数据:",raw_data.hex())time.sleep(0.001)# 降低空循环CPU占用exceptKeyboardInterrupt:print("\n检测到中断,程序退出")finally:ifser:ser.close()print("✅ 串口资源已关闭")if__name__=="__main__":main()

正常接收发送

五、故障现象复现与根因分析

现象1:单包≤7字节,收发完全正常

测试数据:b'123456\n'共7字节

发送长度: 7 字节 发送HEX: 31 32 33 34 35 36 0a 接收长度: 7 字节 接收HEX: 31 32 33 34 35 36 0a ✅ 收发正常

注:硬件FIFO未达到8字节触发阈值,走PIO超时中断,驱动无异常。

现象2:单包≥8字节,接收数据全0损坏

测试数据:b'1234567\n'共8字节

发送长度: 8 字节 发送HEX: 31 32 33 34 35 36 37 0a 接收长度: 8 字节 接收HEX: 00 00 00 00 00 00 00 00 ❌ 数据异常

更长64字节字符串表现一致:前半段全部为0x00,仅末尾不足8字节片段数据正常。

故障根源

L4T R36.5 内置Tegra UART驱动可能存在DMA缺陷:
串口接收FIFO累计满8字节后自动切换DMA批量搬运模式,内核未将DMA缓存数据正常下发至用户态,上层读取到未初始化空内存(全0)。
英伟达官方论坛有关该问题讨论:
https://forums.developer.nvidia.com/t/dma-on-dev-ttyths1-corrupts-receiving-data/369191

两种处理方案

方案1:底层根治

按论坛方式修改设备树,删除UART1serial@3100000节点DMA相关配置,强制串口运行PIO中断模式,彻底消除8字节限制,长短报文均可正常收发。(暂未进行实测验证)

方案2:不修改设备树,拆包处理,软件临时兼容方案

对长数据做分包发送,每包最大7字节,包与包之间增加1ms延时,保证硬件FIFO不会积累到8字节,规避DMA异常触发。
缺点:仅适用于可自主控制发送逻辑的场景;外部设备主动下发长报文时,仍会出现数据损坏。

七、总结

  1. 硬件接线、引脚复用配置无误时,短报文串口通信正常;
  2. 单包数据长度≥8字节会触发内核DMA驱动Bug,数据收发全零损坏;
  3. 稳定长期使用推荐修改设备树关闭DMA;不改动系统底层则只能采用7字节分包发送临时兼容。

相关新闻

  • AI图像生成技术实战:从扩散模型原理到职业形象生成应用
  • 雅典官方更换表蒙价格查询|网点地址与电话权威信息公告(2026年7月最新) - 亨得利官方服务中心
  • Unity敌人自动寻路

最新新闻

  • 基于PIC18LF47K42与PAM8904的智能报警系统设计
  • 大模型推理优化与可解释性技术实战指南
  • 如何在5分钟内上手unizip?从安装到测试的完整入门教程
  • Python AI智能体开发入门:从零构建对话系统
  • Korpora高级用法:批量处理与多数据集融合技巧
  • 如何在Electron中集成Xel:打造原生体验的桌面应用

日新闻

  • AWS SSM安全运维实践:零公网暴露的合规远程开发方案
  • Tableau 2024.1 图表选择指南:5种业务场景与最佳图表类型匹配
  • dsPIC33FJ与CMT-8540S-SMT在嵌入式音频处理中的高效应用

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号