Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

模拟磁盘设备

otg模拟磁盘设备做为外设时, 需要使用USB Mass Gadget Storage的驱动.

kernel  usb mass-storage 模块说明文档: https://www.kernel.org/doc/html/latest/usb/mass-storage.html

...

通过镜像文件作为磁盘设备

nandflash上的文件系统是ubifs格式, 一般PC上不能够直接识别UBI文件系统格式. 因此需要使用镜像文件, 可以在nandflash上使用/dev/loop来创建一个虚拟的快设备, 然后将镜像文件挂载上去:

Info

开发板默认镜像没有mkdosfs,需要在yocto安装dosfstools包

yocto安装软件参考: 在yocto中怎样为系统安装/删除软件 / yocto how to add/remove packages


Code Block
languagebash
themeMidnight
mkdir /usb
cd /usb
mkdir files
dd if=/dev/zero  of=/usb/disk.img  bs=1M  count=100			# 生成100M的镜像文件
mkdosfs  disk.img											# 镜像文件格式化为fat32格式
mount -t vfat -o sync /usb/disk.img /usb/files				# 使用/dev/loop设备节点来挂载disk.img到/usb/files目录下			
Info

开发板默认镜像没有mkdosfs,需要在yocto安装dosfstools包

yocto安装软件参考: 在yocto中怎样为系统安装/删除软件 / yocto how to add/remove packages

开发板加载g_mass_storage模块, 使用file参数可设置存储设备节点

...

此时使用otg线连接开发板和PC时, PC可识别出一个磁盘设备

更新disk.img:

  • 当开发板需要更新文件时

      ...

        • /usb/files/

      ...

        • 目录下写入文件
        • PC需要重新连接开发板后, PC端识别出来的磁盘文件才会更新.
      • PC端更新文件时
        • 在PC上往挂载的优盘写入文件

      ...

        • 开发板需要重新挂载disk.img

      ...

        • 可在/usb/

      ...

        • 目录下创建一个sync脚本来执行更新操作,执行后/usb/files与img文件同步。

        • Code Block
          languagebash
          themeMidnight
          title/usb/sync
          #!/bin/sh
          
          umount /usb/files
          mount -t vfat -o sync  /usb/disk.img /usb/files

      ...


      将SD卡作为磁盘设备

      sdcard文件系统为fat32格式时, PC可以识别出来,  当使用otg线连接时开发板时, g_mass_storage模块的设备节点设置为sdcard设备时, PC就能识别出来开发板上的sdcard分区PC就能识别出来.

      Code Block
      languagebash
      themeMidnight
      modprobe g_mass_storage file=/dev/mmcblk0p1

      ...

      驱动加载后,  开发板otg的模拟串口设备节点为/dev/ttyGS0

      PC端需要加载usb串口驱动(linux驱动为usbserial),

      开发板OTG连接电脑PC(linux)后, PC端的设备节点为/dev/ttyACM0

      模拟网络设备

      otg模拟网络设备需要加载g_ether驱动:

      ...

      Code Block
      languagebash
      themeMidnight
      root@phyboard-mira-imx6-3:~# systemctl restart systemd-networkd

      主机linux需要加载cdc_ether驱动, otg连接PC后, 就能模拟网络连接就能连接到开发板的网络.