概述
内核版本:官方提供的 linux 5.10.43
实现功能:通过 gadget 配置,将开发板模拟成U盘,通过板子上的Type-C接口与PC传输数据
前言:在网上找了好多教程都大同小异,大都没有提到要修改设备树,然而这个板子,官方的设备树默认没有绑定,还是在QQ群大神的指导下完成了配置,感谢!
进入正题
- 关闭源码更新功能
orangepi-bulid 编译系统编译 linux 内核源码时首先会将 linux 内核源码和 github服务器的 linux 内核源码进行同步, 所以如果想修改 linux 内核的源码, 首先需要关闭源码的更新功能(需要完整编译过一次 linux 内核源码后才能关闭这个功能, 否则会提示找不到 linux 内核的源码)
在 orangepi-build/userpatches/config-default.conf 中,修改
IGNORE_UPDATES="yes"
-
修改设备树
路径:orangepi-build/kernel/orange-pi-5.10-rk3399/arch/arm64/boot/dts/rockchip/rk3399-orangepi-4-lts.dts
注意,不要改到 &usbdrd_dwc3_1,3_1 对应的是开发板上的 usb3.0 host 接口 -
编译镜像文件
进入 menuconfig
-
配置 gadget
参考以下配置
USB Type-C Support 里面我勾了这几个,不过还没试过不够行不行
-
启动,以下所有操作均在开发板上执行
编译好之后用 Orangepi-build/output/images/Orangepi4-lts_3.0.8_ubuntu_focal_server_linux5.10.43下的
Orangepi4-lts_3.0.8_ubuntu_focal_server_linux5.10.43.img
启动 -
验证设备树
先看下修改的设备树有没有生效,执行
cat /sys/firmware/devicetree/base/usb@fe800000/usb@fe800000/dr_mode
可以看到 usb@fe800000 的 dr_mode 已经是 peripheral 了,注意如果是 usb@fe900000 的 dr_mode 变成 peripheral,那就是设备树中修改到了 &usbdrd_dwc3_1,一定要改到 &usbdrd_dwc3_0
-
查看模块
在开发板的 /lib/modules/5.10.43/kernel/drivers/usb/gadget 目录下可以看到这几个模块
一切准备就绪。 -
切换到 otg 模式
先看看 /sys/devices/platform/ff770000.syscon/ff770000.syscon:usb2-phy@e450/otg_mode
cat /sys/devices/platform/ff770000.syscon/ff770000.syscon:usb2-phy@e450/otg_mode
如果不是 otg 或者 peripheral 的话,修改为 otg 或者 peripheral
echo peripheral > /sys/devices/platform/ff770000.syscon/ff770000.syscon:usb2-phy@e450/otg_mode
- 建立镜像模拟U盘
dd if=/dev/zero of=udisk.img bs=1M count=1024
mkfs.vfat udisk.img
losetup /dev/loop0 udisk.img
mkdir udisk_mount_point
mount /dev/loop0 udisk_mount_point
建立一个1GB的镜像文件,用于模拟U盘
将镜像只作为vfat的文件系统,PC可以访问
将镜像与 loop0 连接
建立U盘镜像文件的挂载点,相当于 udisk_mount_point 这个文件夹就是 U 盘的存储路径
挂载 udisk_mount_point
- 加载 gadget 模块
modprobe gadgetfs.ko
modprobe libcomposite.ko
modprobe usb_f_mass_storage.ko
modprobe g_mass_storage.ko file=/dev/loop0 stall=0 removable=1
一顿操作之后,通过开发板的 Typec 接口连接到 PC,在 PC 上会看到新的可移动设备,试着在里边新建一个文件,可以在 udisk_mount_point 目录下看到这个文件。
可以将以上挂载命令以及加载模块命令写到一个脚本里面,开机的时候自动执行,会方便很多,明天再整吧,洗洗睡了。
最后
以上就是欣慰睫毛膏为你收集整理的orangepi-4-LTS g_mass_storage 模拟 U盘的全部内容,希望文章能够帮你解决orangepi-4-LTS g_mass_storage 模拟 U盘所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复