jetson xavier nx 开启usb bulk 模式

一、参考资料与信息:

jetson xavier nx使用jetpack sdk 5.0.2,20.04ubantu。

CONFIG_USB_CONFIGFS_F_FS=y(通过 ConfigFS 的 FunctionFS 支持)。在较新的内核版本中,CONFIG_USB_FUNCTIONFS 已被 CONFIG_USB_CONFIGFS_F_FS 替代。

请连接host设备后再启动程序

https://developer.dji.com/doc/payload-sdk-tutorial/cn/basic-introduction/whats-psdk.html

https://sdk-forum.dji.net/hc/zh-cn/articles/38622108040857-Linux%E5%B9%B3%E5%8F%B0%E9%85%8D%E7%BD%AEBULK


 

 

二、下载安装libusb 

sudo apt-get install libusb-1.0-0-dev    #下载

sudo dpkg -i  libusb-1.0-0-dev    #安装

三、配置nx板子原始usb脚本

1. 备份

cd /opt/nvidia/l4t-usb-device-mode/    #usb配置目录

sudo cp nv-l4t-usb-device-mode-start.sh nv-l4t-usb-device-mode-start.sh.bak    #备份

sudo vim  nv-l4t-usb-device-mode-start.sh

 2.修改配置nv-l4t-usb-device-mode-start.sh 

sudo /你的目录/to/libusb/psdk-usb-configure.sh 

#将其中关于usb bulk的代码复制到 nv-l4t-usb-device-mode-start.sh中,代码如下:

enable_bulk=1
if [ ${enable_bulk} -eq 1 ]; then
    mkdir -p /dev/usb-ffs
    
    cfg_str="${cfg_str}+BULK1" 
    mkdir -p /dev/usb-ffs/bulk1
    func=functions/ffs.bulk1
    mkdir -p "${func}"
    ln -sf "${func}" "${cfg}"
    mount -o mode=0777 -o uid=2000 -o gid=2000 -t functionfs bulk1 /dev/usb-ffs/bulk1
    /home/dji/Desktop/startup_bulk/startup_bulk /dev/usb-ffs/bulk1 &    #修改为自己的目录
    sleep 3


    cfg_str="${cfg_str}+BULK2" 
    mkdir -p /dev/usb-ffs/bulk2
    func=functions/ffs.bulk2
    mkdir -p "${func}"
    ln -sf "${func}" "${cfg}"
    mount -o mode=0777 -o uid=2000 -o gid=2000 -t functionfs bulk2 /dev/usb-ffs/bulk2
    /home/dji/Desktop/startup_bulk/startup_bulk /dev/usb-ffs/bulk2 &    #修改为自己的目录
    sleep 3
fi

3.修改 nv-l4t-usb-device-mode-config.sh配置

#添加
enable_bulk=1

四、 运行程序

/home/dji/Desktop/startup_bulk/startup_bulk /dev/usb-ffs/bulk1 &
/home/dji/Desktop/startup_bulk/startup_bulk /dev/usb-ffs/bulk2 &

#重启
#查看是否开启,若开启则会显示bulk1和bulk2的信息
ps -aux | grep startup_bulk

五、错误解决

1. 写错误

sudo /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh

/opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh: 第 136 行: echo: 写错误: 设备或资源忙

原因:functions/ffs.bulk1 或 functions/ffs.bulk2 目录已存在或被占用

解决:强制清理残留的 USB Gadget 配置,再重新运行

sudo rm -rf /sys/kernel/config/usb_gadget/l4t
sudo umount /dev/usb-ffs/bulk* 2>/dev/null
sudo rm -rf /dev/usb-ffs/bulk*

2.ls: 无法访问 '/dev/usb-ffs/bulk/': 没有那个文件或目录

原因:Bulk 模式未正确启用,配置文件中的 enable_bulk=1 未生效或脚本执行失败

解决:修改 nv-l4t-usb-device-mode-config.sh配置,如上文 三、3内容

3. ffs: -2 

xiao@xiao-desktop:~$ /home/xiao/Public/usbfile/startup_bulk /dev/usb-ffs/bulk1 &

[1] 6462 xiao@xiao-desktop:~$ unable to open ep0 Unable to prepare ffs: -2 

[1]+ 退出 254 /home/xiao/Public/usbfile/startup_bulk /dev/usb-ffs/bulk1

原因:Bulk 模式未正确启用,配置文件中的 enable_bulk=1 未生效或脚本执行失败

解决:修改 nv-l4t-usb-device-mode-config.sh配置,如上文 三、3内容

4.  ffs: -3

xiao@xiao-desktop:~$ sudo /home/xiao/Public/usbfile/startup_bulk /dev/usb-ffs/bulk1

[sudo] xiao 的密码: 

unable do write descriptors Unable to prepare ffs: -3

原因::Jetson 必须通过 OTG 口连接到主机(如 PC)以激活 Gadget 模式

解决:连接host设备

你可能感兴趣的:(嵌入式硬件,arm开发)