荔枝zero我通过usb去读取SD识别不了 不知道还有哪里没有配置
离线
这里因为我们是只接了4根线
我这里是想V3S芯片去读取SD 相当于是主 所以我将那个PF6 也就是ID脚用条线拉高了
离线
离线
我这里只接就是将脚拉低了 在终端会出现这样
多了一个device ID 出来了
离线
无情一刀 说:这里因为我们是只接了4根线
https://whycan.cn/files/members/1116/QQ20181106102304.png
我这里是想V3S芯片去读取SD 相当于是主 所以我将那个PF6 也就是ID脚用条线拉高了接10k电阻到地,强制拉低试一试。
我这边接了一个4.7K的电阻了 拉低了 在media 和mnt里面就是也看不到SD卡里面的文件
离线
晕哥 说:无情一刀 说:这里因为我们是只接了4根线
https://whycan.cn/files/members/1116/QQ20181106102304.png
我这里是想V3S芯片去读取SD 相当于是主 所以我将那个PF6 也就是ID脚用条线拉高了接10k电阻到地,强制拉低试一试。
我这边接了一个4.7K的电阻了 拉低了 在media 和mnt里面就是也看不到SD卡里面的文件
检测到USB设备了,但是 menuconfig 要勾上其他选项才会出现 /dev/sdX 设备, 还要 mount 设备才能读写U盘
我以前有写过, 得翻一番帖子
离线
晕哥 麻烦你找找哦哦谢谢了
离线
无情一刀 说:晕哥 麻烦你找找哦哦谢谢了
我这这边热插拔的SD的时候下面的提示
但是在dev里面还是没有看到任何sd*的盘
离线
晕哥 说:无情一刀 说:晕哥 麻烦你找找哦哦谢谢了
我这这边热插拔的SD的时候下面的提示
但是在dev里面还是没有看到任何sd*的盘
b)配置内核支持
#make menuconfig
选择Device Drivers -->
USB support -->
<*> USB Mass Storage support
离线
无情一刀 说:我这这边热插拔的SD的时候下面的提示
https://whycan.cn/files/members/1116/QQ20181106141215.png
但是在dev里面还是没有看到任何sd*的盘b)配置内核支持
#make menuconfig
选择Device Drivers -->
USB support -->
<*> USB Mass Storage support
USB Mass Storage support
他下面的子节点不要配置是吧 只是USB Mass Storage support这个配置了就可以了
离线
<*> EHCI HCD (USB 2.0) support
<*> OHCI HCD (USB 1.1) support这两个你应该勾了.
对这两个我勾选了 我发现我就挂载成功过一次 后面再去mount的时候总是报下面的错误
离线
离线
我现在想按着你的那个文档自动实现加载的
每次热插拔再media里面都找不到SD里面的文件
离线
然后那个mdev 应该是灭有启动成功
离线
无情一刀 说:然后那个mdev 应该是灭有启动成功
https://whycan.cn/files/members/1116/medv.pngmdev 不是后台启动驻留的进城,而是一个hotplug信号激活的进城。
那就是比如我在热插拔的时候 就会有一个hotplugx信号激活了
Linux System Utilities --->
mdev
Support /etc/mdev.conf
Support command execution at device addition/removal
这里的配置我没有配置 确实是找了很久不知道在哪里配置
离线
我不是用的busybox这个去创建的文件系统
离线
参考: https://git.busybox.net/busybox/plain/docs/mdev.txt
Here's a typical code snippet from the init script:
[0] mount -t proc proc /proc
[1] mount -t sysfs sysfs /sys
[2] echo /sbin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
还需要一个 /etc/mdev.conf 文件:
# block devices
([hs]d[a-z]) root:disk 660 >disk/%1/0
([hs]d[a-z])([0-9]+) root:disk 660 >disk/%1/%2
mmcblk([0-9]+) root:disk 660 >disk/mmc/%1/0
mmcblk([0-9]+)p([0-9]+) root:disk 660 >disk/mmc/%1/%2
# network devices
(tun|tap) root:network 660 >net/%1
上面的mdev.conf不一定能用,网上找一个能用的吧。
离线
参考: https://git.busybox.net/busybox/plain/docs/mdev.txt
Here's a typical code snippet from the init script:
[0] mount -t proc proc /proc
[1] mount -t sysfs sysfs /sys
[2] echo /sbin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s还需要一个 /etc/mdev.conf 文件:
# block devices
([hs]d[a-z]) root:disk 660 >disk/%1/0
([hs]d[a-z])([0-9]+) root:disk 660 >disk/%1/%2
mmcblk([0-9]+) root:disk 660 >disk/mmc/%1/0
mmcblk([0-9]+)p([0-9]+) root:disk 660 >disk/mmc/%1/%2
# network devices
(tun|tap) root:network 660 >net/%1上面的mdev.conf不一定能用,网上找一个能用的吧。
echo /sbin/mdev > /proc/sys/kernel/hotplug这个我已经加了 在rcS中 然后其中的#blockdevice这些也要加是吧
试了之后也是一样
离线
/sbin/automount.sh:
#! /bin/sh
# debugging message
#echo "MDEV=$1 : ACTION=$2 : SUBSYSTEM=$SUBSYSTEM : DEVPATH=$DEVPATH : DEVNAME=$DEVNAME" >> /dev/consoleif [ "$1" == "" ]; then
echo "parameter is none" > /tmp/error.txt
exit 1
fiMNT=$1
#if [ $(echo $1 | grep mmcblk) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=sdcard2
# else
# MNT=sdcard
# fi
#elif [ $(echo $1 | grep sd) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=nandcard2
# else
# MNT=nandcard
# fi
#fi# there is no ACTION, it is for initial population
if [ "$2" = "X" ]; then
mounted=`mount | grep $1 | wc -l`
if [ $mounted -ge 1 ]; then
# mounted, assume the ACTION is remove
#ACT=Xremove
# only set add for initial population
ACT=Xadd
else
# not mounted, assume the ACTION is add
ACT=Xadd
fi
else
ACT=$2
fiif [ "$ACT" = "Xremove" ]; then
# umount the device
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
if ! umount -l "/mnt/udisk"; then
exit 1
else
rm -f "/mnt/udisk"
echo "[Umount FS]: /dev/$1 -X-> /mnt/udisk" > /dev/console
fiif ! rmdir "/mnt/udisk"; then
exit 1
fi
else
# mount the device
mounted=`mount | grep $1 | wc -l`
#echo "par=$1,mounted=$mounted,MNT=$MNT" > /dev/console
if [ $mounted -ge 1 ]; then
#echo "device $1 is already mounted" > /dev/console
exit 0
fiif ! mkdir -p "/mnt/udisk"; then
exit 1
fiif [ $(echo $1 | grep mtd) ]; then
if mount -t jffs2 "/dev/$1" "/mnt/udisk"; then
echo "[Mount JFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
elif mount -t yaffs2 -o"inband-tags" "/dev/$1" "/mnt/$1"; then
echo "[Mount YAFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/$1" >> /tmp/mdev.log
elif mount -t ubifs "/dev/$1" "/mnt/udisk"; then
echo "[Mount UBIFS]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
fi
else
# try vfat only
if mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/udisk"; then
# ln -s /mnt/$1 /mnt/udisk
echo "[Mount VFAT]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
exit 1
fi
fi
fi
/etc/mdev.conf:
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
上面两个文件是新唐SDK里面的, 用起来还不错, 你试一试, /sbin/automount.sh 这个要加可执行属性。
离线
/sbin/automount.sh:
#! /bin/sh
# debugging message
#echo "MDEV=$1 : ACTION=$2 : SUBSYSTEM=$SUBSYSTEM : DEVPATH=$DEVPATH : DEVNAME=$DEVNAME" >> /dev/consoleif [ "$1" == "" ]; then
echo "parameter is none" > /tmp/error.txt
exit 1
fiMNT=$1
#if [ $(echo $1 | grep mmcblk) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=sdcard2
# else
# MNT=sdcard
# fi
#elif [ $(echo $1 | grep sd) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=nandcard2
# else
# MNT=nandcard
# fi
#fi# there is no ACTION, it is for initial population
if [ "$2" = "X" ]; then
mounted=`mount | grep $1 | wc -l`
if [ $mounted -ge 1 ]; then
# mounted, assume the ACTION is remove
#ACT=Xremove
# only set add for initial population
ACT=Xadd
else
# not mounted, assume the ACTION is add
ACT=Xadd
fi
else
ACT=$2
fiif [ "$ACT" = "Xremove" ]; then
# umount the device
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
if ! umount -l "/mnt/udisk"; then
exit 1
else
rm -f "/mnt/udisk"
echo "[Umount FS]: /dev/$1 -X-> /mnt/udisk" > /dev/console
fiif ! rmdir "/mnt/udisk"; then
exit 1
fi
else
# mount the device
mounted=`mount | grep $1 | wc -l`
#echo "par=$1,mounted=$mounted,MNT=$MNT" > /dev/console
if [ $mounted -ge 1 ]; then
#echo "device $1 is already mounted" > /dev/console
exit 0
fiif ! mkdir -p "/mnt/udisk"; then
exit 1
fiif [ $(echo $1 | grep mtd) ]; then
if mount -t jffs2 "/dev/$1" "/mnt/udisk"; then
echo "[Mount JFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
elif mount -t yaffs2 -o"inband-tags" "/dev/$1" "/mnt/$1"; then
echo "[Mount YAFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/$1" >> /tmp/mdev.log
elif mount -t ubifs "/dev/$1" "/mnt/udisk"; then
echo "[Mount UBIFS]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
fi
else
# try vfat only
if mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/udisk"; then
# ln -s /mnt/$1 /mnt/udisk
echo "[Mount VFAT]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
exit 1
fi
fi
fi/etc/mdev.conf:
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}上面两个文件是新唐SDK里面的, 用起来还不错, 你试一试, /sbin/automount.sh 这个要加可执行属性。
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
这个我直接放到/etc/mdev.comf 没有自己创建文件 里面有这个文件
但是我热插拔的时候还是没有挂载上去就好像这个automount脚本根本就没有执行样
最近编辑记录 无情一刀 (2018-11-06 19:44:23)
离线
晕哥 说:/sbin/automount.sh:
#! /bin/sh
# debugging message
#echo "MDEV=$1 : ACTION=$2 : SUBSYSTEM=$SUBSYSTEM : DEVPATH=$DEVPATH : DEVNAME=$DEVNAME" >> /dev/consoleif [ "$1" == "" ]; then
echo "parameter is none" > /tmp/error.txt
exit 1
fiMNT=$1
#if [ $(echo $1 | grep mmcblk) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=sdcard2
# else
# MNT=sdcard
# fi
#elif [ $(echo $1 | grep sd) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=nandcard2
# else
# MNT=nandcard
# fi
#fi# there is no ACTION, it is for initial population
if [ "$2" = "X" ]; then
mounted=`mount | grep $1 | wc -l`
if [ $mounted -ge 1 ]; then
# mounted, assume the ACTION is remove
#ACT=Xremove
# only set add for initial population
ACT=Xadd
else
# not mounted, assume the ACTION is add
ACT=Xadd
fi
else
ACT=$2
fiif [ "$ACT" = "Xremove" ]; then
# umount the device
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
if ! umount -l "/mnt/udisk"; then
exit 1
else
rm -f "/mnt/udisk"
echo "[Umount FS]: /dev/$1 -X-> /mnt/udisk" > /dev/console
fiif ! rmdir "/mnt/udisk"; then
exit 1
fi
else
# mount the device
mounted=`mount | grep $1 | wc -l`
#echo "par=$1,mounted=$mounted,MNT=$MNT" > /dev/console
if [ $mounted -ge 1 ]; then
#echo "device $1 is already mounted" > /dev/console
exit 0
fiif ! mkdir -p "/mnt/udisk"; then
exit 1
fiif [ $(echo $1 | grep mtd) ]; then
if mount -t jffs2 "/dev/$1" "/mnt/udisk"; then
echo "[Mount JFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
elif mount -t yaffs2 -o"inband-tags" "/dev/$1" "/mnt/$1"; then
echo "[Mount YAFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/$1" >> /tmp/mdev.log
elif mount -t ubifs "/dev/$1" "/mnt/udisk"; then
echo "[Mount UBIFS]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
fi
else
# try vfat only
if mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/udisk"; then
# ln -s /mnt/$1 /mnt/udisk
echo "[Mount VFAT]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
exit 1
fi
fi
fi/etc/mdev.conf:
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}上面两个文件是新唐SDK里面的, 用起来还不错, 你试一试, /sbin/automount.sh 这个要加可执行属性。
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
不支持热插拔 就必须要重启上电后 中途热插拔还是有点是问题
离线
上面脚本是我用在V3s产品的,如果不行检查一下别的问题
我刚才测试了下了 就要间隔一下 就是下一次不能挂载 在插拔下就可以了 挂载了 很有规律
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
这个我是只接放在/etc/mdev.conf这里文件中
离线
晕哥 说:上面脚本是我用在V3s产品的,如果不行检查一下别的问题
我刚才测试了下了 就要间隔一下 就是下一次不能挂载 在插拔下就可以了 挂载了 很有规律
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
这个我是只接放在/etc/mdev.conf这里文件中
到 autosound.sh 加一些调试语句跟踪一下。
离线
echo "[+++++--------$1]" > /dev/console 这里打印如果是进来顺序是sda sda1然后就可以挂载成功
如果是相反了就挂载不成功
下面就是挂载不成功的
离线
LZ搞定没有,我的貌似hotplug没
起作用。
离线
离线