gpt4 book ai didi

linux - SD 卡 : how to force the kernel to read the WP pin again without removing the sdcard

转载 作者:太空狗 更新时间:2023-10-29 11:07:56 25 4
gpt4 key购买 nike

我有以下 udev 规则将 sd 卡的第一个分区挂载到/mnt/sdcard。

KERNEL=="mmcblk0p1", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ATTRS{serial}=="?*", ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="sdcard", RUN+="/usr/bin/mount_sdcard"

KERNEL=="mmcblk0", ACTION=="remove", RUN+="/usr/bin/unmount_sdcard"

我的 /usr/bin/mount_sdcard 可执行文件是:

#!/bin/sh

# log event
logger -t mount_sdcard -p user.warn "New SD Card detected"

# mount to /mnt/sdcard
mount_result=`mount $DEVNAME /mnt/sdcard 2>&1`

# On errors, send error to log
echo $mount_result | logger -t mount_sdcard -p user.error

if [ "x$mount_result" = "x" ]
then
# print filesystem type
stat -f /mnt/sdcard | grep Type | cut -d: -f4 | logger -t mount_sdcard -p user.warn

# print space left on device
df -h /dev/sdcard | logger -t mount_sdcard -p user.warn
fi

此代码工作正常,当插入 SD 卡时,分区以读写 (rw) 方式挂载。

但是如果 sd 卡在启动时已经存在,则分区被挂载为只读 (ro)。

在这种情况下,如果不手动移除并重新插入 sd 卡,我将无法挂载分区读写。

我尝试卸载然后再次安装。我尝试使用重新安装选项:mount -o remount,rw/dev/mmcblk0p1 这似乎有效,但在运行 mount 命令时分区仍标记为 ro:

/dev/mmcblk0p1 on /mnt/sdcard type ext4 (ro,relatime,data=ordered)

更新:

问题更精确:这是在自定义硬件上,其中 ARM 处理器上的 WP(写保护)引脚连接到处理器的输出。

在启动时,这个输出将 sdcard Controller 设置为只读模式,在初始化之后这个输出被反转以允许写入 sd 卡。问题是内核只会在启动时和插入卡时尝试读取此 WP pin。

==> 在启动内核 sd 卡 Controller 时将卡设置为 ro:

kernel: [    1.723728] mmc0: new high speed SD card at address 59b4
kernel: [ 1.738262] mmcblk0: mmc0:59b4 USD 1.87 GiB (ro)

并且在 WP pin 改变并且卡被移除/重新插入后,内核 sd 卡 Controller 将卡设置为 rw:

kernel: [  527.931457] mmc0: new high speed SD card at address 59b4
kernel: [ 527.943988] mmcblk0: mmc0:59b4 USD 1.87 GiB

我的问题变了:如何在不移除 sd 卡的情况下强制内核再次读取 WP pin?

最佳答案

通过使用以下命令重置此卡的 Controller ,我能够再次读取 WP pin:

首先获取 Controller :

$ readlink /sys/block/mmcblk0
../devices/soc0/soc/2100000.aips-bus/2194000.usdhc/mmc_host/mmc0/mmc0:59b4/block

然后解绑卡:

$ echo 2194000.usdhc > /sys/bus/platform/drivers/sdhci-esdhc-imx/unbind
$ echo 2194000.usdhc > /sys/bus/platform/drivers/sdhci-esdhc-imx/bind

关于linux - SD 卡 : how to force the kernel to read the WP pin again without removing the sdcard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com