ARM64架构(AGX orin)Ubuntu22.04下串口PL2303驱动安装教程

一、问题描述

NVIDIA AGX orin工控机,Ubuntu22.04系统下,串口设备无法打开,缺少PL2303驱动。

二、 解决办法

  • 查看USB串口号
  • python -m serial.tools.list_ports
    

出现返回值“no ports found”说明只是缺少驱动,直接进行步骤2即可。

 本机出现了上述返回值,说明Python 环境中没有安装 serial模块。此时需要执行命令:

sudo apt install python3-serial

安装完成后再次 查看串口号,返回“no ports found”。

  • 查看Linux内核版本

  • 下载驱动包(详见文件夹中的压缩包)

  • 安装驱动包
  1. 根据内核版本选择驱动包,由于本机内核版本为5.15,而文件夹中最高版本为5.4.89,故选择最高版本安装。
  2. 进入“5.4.89_ok”文件夹,修改pl2303.c文件:
//修改433行

static int pl2303_port_remove(struct usb_serial_port *port)

//改成

static void pl2303_port_remove(struct usb_serial_port *port)

//修改439行

return 0;

//改成

return ;

//修改914行 

static int pl2303_get_serial(struct tty_struct *tty,  

//改成

static void pl2303_get_serial(struct tty_struct *tty,

//修改923行

return 0;

//改成

return ;

3.在“5.4.89_ok”文件夹下打开终端,执行:

make all

sudo rmmod pl2303.ko

sudo insmod pl2303.ko

出现如下错误:

表示你的模块依赖于某些未导出符号的内核功能。以下是一些解决方案和调试步骤:

3.1查看详细错误信息

使用以下命令查看内核日志,获取更详细的错误信息:

sudo dmesg | tail

根据dmesg 输出,pl2303 模块在加载时遇到了多个 "Unknown symbol" 错误。这些错误表明 pl2303 模块依赖于 usb-serial 驱动中的一些函数,但这些函数未被导出或相关模块未加载。

3.2解决步骤

  1. 确保 usb-serial 模块已加载

pl2303 驱动依赖于 usb-serial 模块。你需要确保该模块已加载。可以通过以下命令检查:

lsmod | grep usbserial

如果没有输出,说明 usb-serial 模块未加载。使用以下命令加载它:

sudo modprobe usbserial

  1. 重新加载 pl2303 模块

加载 usb-serial 模块后,尝试重新加载 pl2303 模块:

sudo rmmod pl2303

sudo insmod pl2303.ko

无返回值,即完成加载。

  1. 复制文件

sudo cp pl2303.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial

  • 查看效果

此时应该是能识别到串口了。

输入:sudo dmesg | tail

发现多了一个:pl2303

(确保串口设备连接稳固后)输入: python -m serial.tools.list_ports

也能看见多了一个USB串口号:/dev/ttyUSB0

### 如何在 Ubuntu 22.04 上指定安装 JetPack 5.1.2 尽管官方文档指出 Ubuntu 22.04 支持的最低 JetPack 版本为 6.1[^1],但可以通过特定方式绕过此限制并手动安装较旧版本(如 JetPack 5.1.2)。以下是实现这一目标的具体方法: #### 方法概述 由于 SDK Manager 默认会检测操作系统版本并与之匹配推荐最新可用的 JetPack 版本,因此需要通过修改配置文件或使用命令行参数的方式强制指定所需版本。 --- #### 步骤说明 ##### 1. 下载适用于 JetPack 5.1.2 的 SDK Manager 访问 NVIDIA 官方下载页面获取对应版本的 SDK Manager 工具。确保选择的是支持 L4T R35.x 的版本[^4]。 ```bash wget https://developer.nvidia.com/embedded/l4t/r35_release_v1.1/jetpack_sdk_5.1.1_linux.run chmod +x jetpack_sdk_5.1.1_linux.run ./jetpack_sdk_5.1.1_linux.run ``` > **注意**: 尽管此处显示为 `5.1.1`,但它通常兼容于 `5.1.2` 所需的功能集。 --- ##### 2. 配置环境变量以覆盖默认行为 创建一个新的 `.config.json` 文件用于自定义设置,并将其路径传递给 SDK Manager。这一步允许用户显式声明所需的 JetPack 和 L4T 版本号。 ```json { "targetBoard": { "product": "AGX Orin", "flashMode": "recovery" }, "software": [ {"name": "JetPack", "version": "5.1.2"} ] } ``` 运行以下命令加载配置文件: ```bash sdkmanager --override-config /path/to/config.json ``` --- ##### 3. 修改主机操作系统的依赖项 如果遇到因 GCC 或其他工具链不兼容而导致的问题,则可能需要降级部分软件包至较低版本。例如,在某些情况下,GCC 11 可能引发冲突;此时可考虑切换回 GCC 9 或更早版本[^2]。 更新 APT 缓存后执行如下指令完成替换: ```bash sudo apt-get update && sudo apt-get install gcc-9 g++-9 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 \ --slave /usr/bin/g++ g++ /usr/bin/g++-9 ``` 验证当前使用的编译器版本是否已调整成功: ```bash gcc --version g++ --version ``` --- ##### 4. 解决潜在问题 针对 ROS 不再完全适配的情况,建议采用 Docker 容器化方案部署相应的工作负载[^3]。具体而言,可以从官方镜像仓库拉取预构建好的 ROS Noetic 映像作为基础层,随后叠加额外定制化的改动。 示例脚本如下所示: ```dockerfile FROM ros:noetic-ros-base-focal RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y python3-catkin-tools && \ rm -rf /var/lib/apt/lists/* WORKDIR /workspace CMD ["catkin", "build"] ``` 构建完成后即可启动交互式的终端窗口继续调试工作流程: ```bash docker build -t my_ros_env . docker run -it --privileged --network host --device=/dev/nvhost-as-gpu:/dev/nvhost-as-gpu my_ros_env bash ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值