最近做项目需要实现树莓派和Orin之间的ttl通讯,于是随便买了一条ttl转接线,像下面这样的:
直接插上Orin,
lsusb,检测不到,难道是线坏了?
接到PC正常了,于是怀疑是Jeston的驱动问题,上google了一下,遇到同样问题的确实不少,PL2302已经停产很久了,Jeston的内核没有预编译它的驱动
Enable CONFIG_USB_SERIAL_PL2303 on kernel - Jetson & Embedded Systems / Jetson Orin Nano - NVIDIA Developer Forums
于是开始了漫长的debug过程,也踩了不少坑,记录一下。
下载AGX Orin Kernel源码
主要参考 docs.nvidia.com/jetson/arch… 首先下载对应版本的源码并解压
tar xf public_sources.tbz2 -C ~/Linux_for_Tegra/..
cd Linux_for_Tegra/source
tar xf kernel_src.tbz2
tar xf kernel_oot_modules_src.tbz2
tar xf nvidia_kernel_display_driver_source.tbz2
驱动被存储在~/Linux_for_Tegra/source/kernel/kernel-jammy-src/drivers/usb/serial的pl2302.h和pl2302.c
准备编译
到kernel的目录下,读取电脑的内核设定
cd /kernel/kernel-jammy-src
zcat /proc/config.gz > .config
之后编辑生成的.config文件
找到CONFIG_USB_SERIAL_PL2303将其改为如下:
安装必要的库
sudo apt-get update
sudo apt-get install libssl-dev
编译
make modules_prepare
make M=drivers/usb/serial/ CONFIG_USB_SERIAL_PL2303=m
编译成功
到
drivers/usb/serial目录下
应用这个driver
sudo cp pl2303.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
sudo depmod -a
插上usb模块
lsmod | grep pl2303
dmesg
能检测到PL2303就说明已经安装成功了!
cutecom