1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 嵌入式Linux操作系统移植IMX6开发板之实现USB 自动挂载

嵌入式Linux操作系统移植IMX6开发板之实现USB 自动挂载

时间:2022-10-26 17:56:34

相关推荐

嵌入式Linux操作系统移植IMX6开发板之实现USB 自动挂载

学习交流加

个人qq:

1126137994个人微信:

liu1126137994学习交流资源分享qq群:

962535112

本篇文章讲述如何实现USB自动挂载,U盘即插即用,不用手动挂载的方法,以及给出U盘自动挂载的原理。

目前做的IMX6开发板,移植Linux系统,源码(linux内核为3.0.35)由厂家提供(后面会提供内核,uboot,文件系统源码)。主要功能是实现机器人控制器与示教器一体的功能。

一.首先给出我在 IMX6开发板实现的USB自动挂载的方法(不局限于具体开发板):

-USB的自动挂载:

1、在/etc/udev/rules.d目录里面创建11-usb-mount.rules,

11-usb-mount.rules里面的内容如下:

ACTION!="add",GOTO="farsight"KERNEL=="sd[a-z][0-9]",RUN+="/sbin/moun-tusb.sh %k"LABEL="farsight"

2、 在/sbin/目录里创建mount-usb.sh脚本文件

mount-usb.sh的内容如下:

#!/bin/sh/bin/mount -t vfat /dev/$1 /udisksync

重启下即可在linux上实现自动挂载,u盘自动挂载到/udisk目录里

-USB的自动卸载:

1、在/etc/udev/rules.d目录里面创建11-usb-umount.rules,内容如下:

ACTION!="remove",GOTO="farsight"SUBSYSTEM!="block",GOTO="farsight"KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh"LABEL="farsight"

2、在/sbin/目录里创建umount-usb.sh脚本文件

umount-usb.sh的内容如下:#!/bin/sh/bin/umount /udisksync

通过上面的方法,亲测有效,可以实现U盘的自动挂载。

二 分析一下U盘自动挂载的简单原理

拿jz2440开发板中的led驱动程序做例子:

Busybox中的mdev.conf

在mdev.txt中有说明文档:

mdev.conf的格式:

<device regex> <uid>:<gid> <octal permissions><device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]

device regex:正则表达式,表示哪一个设备

uid: owner

gid: 组ID

octal permissions:以八进制表示的属性

@:创建设备节点之后执行命令

$:删除设备节点之前执行命令

*: 创建设备节点之后 和 删除设备节点之前 执行命令

command:要执行的命令

表2.常用的限定符

代码/语法 说明

重复零次或更多次 重复一次或更多次

? 重复零次或一次

{n} 重复n次

{n,} 重复n次或更多次

{n,m} 重复n到m次

写mdev.conf

方法1.

leds 0:0 777led1 0:0 777led2 0:0 777led3 0:0 777

方法2.

leds?[123]? 0:0 777

方法3.

leds?[123]? 0:0 777 @ echo create /dev/$MDEV > /dev/console

方法4.

leds?[123]? 0:0 777 * if [ $ACTION = "add" ]; then echo create /dev/$MDEV > /dev/console; else echo remove /dev/$MDEV > /dev/console; fi

方法5.

leds?[123]? 0:0 777 * /bin/add_remove_led.sh (这是要写入mdev.conf的配置)

把命令写入一个脚本(最后需要添加执行权限,chmod + x add_remove_led.sh):

add_remove_led.sh

#!/bin/shif [ $ACTION = "add" ]; then echo create /dev/$MDEV > /dev/console; else echo remove /dev/$MDEV > /dev/console; fi

6 .

U盘自动加载(放到/etc/mdev.conf里面的)

sda[1-9]+ 0:0 777 * if [ $ACTION = "add" ]; then mount /dev/$MDEV /mnt; else umount /mnt; fi

sda[1-9]+ 0:0 777 * /bin/add_remove_udisk.shadd_remove_udisk.sh (最后需要添加执行权限,chmod + x add_remove_udisk.sh)#!/bin/shif [ $ACTION = "add" ]; then mount /dev/$MDEV /udisk; else umount /udisk; fi

想获得各种学习资源以及交流学习的加我(有我博客中写的代码的原稿):

qq:1126137994

微信:liu1126137994

可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。