RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】824412014(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第十期_热插拔_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


第119章使用mdev挂载U盘和T卡实验

在上一个章节中使用udev实现了U盘和TF卡的自动挂载,本章节将使用mdev来实现U盘和TF卡的自动挂载。

119.1 配置buildroot文件系统支持mdev

在上一章我们配置buildroot文件系统支持了udev,而要想buildroot系统支持mdev也需要进行相似的配置。首先来到buildroot的源码目录下,如下图所示:

图 119-1

然后使用以下命令加载rk3568的默认配置文件并进入到图形化配置界面,如下图所示:

make rockchip_rk3568_defconfig

make menuconfig

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第1张图片

图 119-2

由于本章节使用的是mdev所以需要在在System configuration菜单中,选择/dev management (Dynamic using devtmpfs + mdev)  ---> ,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第2张图片

图 119-3

除了buildroot需要配置之外,还需要配置busybox的相关选项,默认已经配置好了,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第3张图片

图 119-4

编译完成的镜像已经放在了“iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动程序\83_mdev_u盘_TF卡”目录下如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第4张图片

图 119-5

烧写该镜像之后,可以在串口终端输入以下命令来查看mdev是否已经启用了,如下图所示:

ps -aux | grep -nR mdev

 

图 119-6

检查到/sbin/mdev进程就表示当前系统使用的是mdev,至此配置buildroot文件系统支持mdev就完成了。

119.2使用mdev挂载U盘

本小节编写完成的文件对应的网盘路径为:iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程04_Linux驱动程序\83_mdev_u盘_TF卡\U盘

跟udev相同,mdev也需要添加相应的规则,不同的是mdev使用/etc/mdev.conf 文件来配置 mdev 工具的规则和行为,要想使用mdev自动挂载U盘需要向/etc/mdev.conf 文件中添加以下两条规则,

sd[a-z][0-9] 0:0 666 @/etc/mdev/usb_insert.sh
sd[a-z] 0:0 666 $/etc/mdev/usb_remove.sh

这两个规则用于处理 U 盘的热插拔事件,并执行相应的操作。在 /etc/mdev.conf 文件中,每一行都是一个规则,具有以下格式:

<设备节点正则表达式> <设备的所有者:设备的所属组> <设备的权限> <设备插入或移除时需要执行的命令>

下面是对上述两个规则的详细介绍:

(1)sd[a-z][0-9] 是一个正则表达式模式,用于匹配以 "sd" 开头,后跟一个小写字母和一个数字的设备节点,例如 /dev/sda1、/dev/sdb2 等。

(2)0:0 666 表示设置设备节点的所有者和权限。0:0 表示所有者和所属组的用户 ID 和组 ID 均为 0,即root用户。666 表示权限为可读可写。

  1. @/etc/mdev/usb_insert.sh表示当符合规则的设备插入时,mdev会执行 /etc/mdev/usb_insert.sh 脚本。@ 符号表示执行的是一个shell命令。
  2. $/etc/mdev/usb_remove.sh 表示当符合规则的设备移除时,mdev会执行 /etc/mdev/usb_remove.sh 脚本。$ 符号表示执行的是一个内部命令。

规则添加完成之后就要去对应的目录下添加usb_insert.sh 和usb_remove.sh 脚本文件了,首先创建 /etc/mdev目录并进入到该目录创建usb_insert.sh 和usb_remove.sh两个文件如下图所示:

图 119-7

然后在/etc/mdev/usb_insert.sh 文件中写入以下内容:

#!/bin/sh

if [ -d /sys/block/*/$MDEV ]; then
    mount /dev/$MDEV /mnt
    sync
fi

在 /etc/mdev/usb_remove.sh 文件中写入以下内容:

#!/bin/sh
sync
/bin/umount -l /mnt

添加完成如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第5张图片

图 119-8

添加完成之后还需要使用chmod命令赋予两个脚本的可执行权限,如下图所示:

图 119-9

至此关于mdev自动挂载U盘的相关配置文件完成了,首先输入以下df命令查看当前的挂载情况,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第6张图片

图 119-10

可以看到当前并没有关于U盘相关的挂载信息,然后插入U盘,相关打印如下所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第7张图片

图 119-11

然后重新使用df命令查看当前的挂载情况,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第8张图片

图 119-12

可以看到U盘sda1就成功挂载到了/mnt目录,然后拔掉U盘,重新使用df命令查看当前挂载情况,可以发现/dev/sda1设备已经消失了,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第9张图片

图 119-13

至此,使用mdev自动挂载U盘实验就完成了。

119.3使用mdev挂载TF卡

本小节编写完成的文件对应的网盘路径为:iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程04_Linux驱动程序\83_mdev_u盘_TF卡\TF卡

在上一个小节中我们实现了U盘的自动挂载,而为了帮助同学们举一反三,本小节要使用mdev实现TF卡的自动挂载,跟U盘自动挂载相同,TF卡自动挂载也需要向/etc/mdev.conf 文件中添加以下两条类似的规则,

mmcblk[0-9]p[0-9] 0:0 666 @/etc/mdev/tf_insert.sh
mmcblk[0-9] 0:0 666 $/etc/mdev/tf_remove.sh

这两个规则用于处理 U 盘的热插拔事件,并执行相应的操作。在 /etc/mdev.conf 文件中,每一行都是一个规则,具有以下格式:

<设备节点正则表达式> <设备的所有者:设备的所属组> <设备的权限> <设备插入或移除时需要执行的命令>

下面是对上述两个规则的详细介绍:

(1)mmcblk[0-9]p[0-9] 是一个正则表达式模式,用于匹配以 "mmcblk" 开头的TF卡块设备,例如 /dev/mmcblk1p1等。

(2)0:0 666 表示设置设备节点的所有者和权限。0:0 表示所有者和所属组的用户 ID 和组 ID 均为 0,即root用户。666 表示权限为可读可写。

  1. @/etc/mdev/tf_insert.sh表示当符合规则的设备插入时,mdev会执行 /etc/mdev/tf_insert.sh 脚本。@ 符号表示执行的是一个shell命令。
  2. $/etc/mdev/tf_remove.sh 表示当符合规则的设备移除时,mdev会执行 /etc/mdev/tf_remove.sh 脚本。$ 符号表示执行的是一个内部命令。

规则添加完成之后就要去对应的目录下添加tf_insert.sh 和tf_remove.sh 脚本文件了,首先进入到 /etc/mdev目录创建tf_insert.sh 和tf_remove.sh两个文件如下图所示:

图 119-13

然后在/etc/mdev/tf_insert.sh 文件中写入以下内容:

#!/bin/sh

if [ -d /sys/block/*/$MDEV ]; then
    mount /dev/$MDEV /mnt
    sync
fi

在 /etc/mdev/tf_remove.sh 文件中写入以下内容:

#!/bin/sh
sync
/bin/umount -l /mnt

添加完成如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第10张图片

图 119-14

添加完成之后还需要使用chmod命令赋予两个脚本的可执行权限,如下图所示:

图 119-15

至此关于mdev自动挂载TF卡的相关配置文件完成了,首先输入以下df命令查看当前的挂载情况,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第11张图片

图 119-16

可以看到当前并没有关于TF卡相关的挂载信息,然后插入TF卡,相关打印如下所示:

图 119-17

然后重新使用df命令查看当前的挂载情况,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第12张图片

图 119-18

可以看到TF卡mmcblk1p1就成功挂载到了/mnt目录,然后拔掉TF卡,重新使用df命令查看当前挂载情况,可以发现/dev/mmcblk1p1设备已经消失了,如下图所示:

RK3568驱动指南|第十篇 热插拔-第119章使用mdev挂载U盘和T卡实验_第13张图片

图 119-19

虽然TF卡设备已经消失了,但是又出现了一个/dev/mmcblk0p8的设备挂载到了/mnt目录,这里是正常的,mmcblk0p8是emmc里的一个分区,也符合上面我们添加的热插拔规则。

至此,使用mdev自动挂载TF卡实验就完成了。

你可能感兴趣的:(RK3568驱动开发指南,#,RK3568驱动指南,第十期,驱动开发,linux)