Добрый день! На ките AT91SAM9XE512 не получается автоматически отключать-подключать SD-карту (1 Гб). Ядро 2.6.27 со всеми патчами, при загрузке пишет:
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SD card at address b368
mmcblk0: mmc0:b368 SD01G 980992KiB
mmcblk0: p1
# uncomment this if your device has a SD/MMC/Transflash slot
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
После загрузки со вставленной картой в /dev - два устройства mmcblk0 и mmcblk0p1, в /media карта смонтирована в /media/mmcblk0 (а не в card, как прописано в fstab) и в /media/mmcblk0 - пусто, хотя на карте есть файлы (ФС- FAT32).
Делаю umount /media/mmcblk0 - нормально отмонтировалась, далее:
mount /dev/mmcblk0p1 - нормально примонтировалась, в /media/card видны все файлы, которые ранее записал на карту. Далее, если вытащить карту, то не происходит автоматического отмонтирования, /media/card присутствует, если потом вставить карту, далее - при записи идут ошибки.
Даже если предварительно нормально работающую карту отмонтировать, вытащить, затем вставить и попытаться примонтировать, то будут выданы такие ошибки:
Buffer I/O error on device mmcblk0p1, logical block 0
end_request: I/O error, dev mmcblk0, sector 64
Buffer I/O error on device mmcblk0p1, logical block 1
end_request: I/O error, dev mmcblk0, sector 65
Buffer I/O error on device mmcblk0p1, logical block 2
...
end_request: I/O error, dev mmcblk0, sector 90
end_request: I/O error, dev mmcblk0, sector 91
end_request: I/O error, dev mmcblk0, sector 92
end_request: I/O error, dev mmcblk0, sector 93
end_request: I/O error, dev mmcblk0, sector 94
mmcblk0: error -110 sending read/write command
end_request: I/O error, dev mmcblk0, sector 63
FAT: unable to read boot sector
mmcblk0: error -110 sending read/write command
end_request: I/O error, dev mmcblk0, sector 63
FAT: unable to read boot sector
mount: mounting /dev/mmcblk0p1 on /media/card failed: Input/output error
Если загрузиться без SD-карты, то потом при монтировании получаем:
root@at91sam9260ek:~# mount /dev/mmcblk0p1
mount: mounting /dev/mmcblk0p1 on /media/card failed: No such device or address
При этом в /dev присутствуют и mmcblk0 и mmcblk0p1
Да, используется UDEV, если надо какие скрипты - выложу, так как там черт ногу сломит, но первый взгляд что-то такое присутствует:
# Media automounting
SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
А вот как оно работает - темный лес... :(
Во первых нужно убрать noauto, тогда будет монтироваться автоматически после команды mount -a которая обычно есть в старотвых скриптах. Вынимать карту не отмонтировав нельзя, но для fat есть специальная опция монтирования - навскидку не вспомню, но это не sync которая занижает скорость ниже плинтуса, надо man посмотреть. Где то у вас в стартовых скриптах оибочно скорей всего прописано монтирование /dev/mmcblk0 - это для случая когда не созданы разделы, у вас есть он есть - mmcblk0p1
Нашел
flush - If set, the filesystem will try to flush to disk more early than normal. Not set by default.
Я где-то выкладывал скрипты как автоматически монтировать и отмнонтировать флеши при помощи mdev из busybox.
/dev/mmcblk0p1 /media/card auto defaults,sync,auto 0 0
Загрузился, смонтировалось как и раньше - в /media/mmcblk0 (/dev/mmcblk0 нигде в скриптах нет - искал поиском по всей ФС) отмонтировал, вытащил, вставил, монтирую, получаю:
mmcblk0: error -110 sending read/write command
mmcblk0: error -110 sending stop command
end_request: I/O error, dev mmcblk0, sector 65
EXT2-fs: unable to read superblock
mmcblk0: error -110 sending read/write command
mmcblk0: error -110 sending stop command
end_request: I/O error, dev mmcblk0, sector 63
Buffer I/O error on device mmcblk0p1, logical block 0
end_request: I/O error, dev mmcblk0, sector 64
Buffer I/O error on device mmcblk0p1, logical block 1
.......
end_request: I/O error, dev mmcblk0, sector 90
end_request: I/O error, dev mmcblk0, sector 91
end_request: I/O error, dev mmcblk0, sector 92
end_request: I/O error, dev mmcblk0, sector 93
end_request: I/O error, dev mmcblk0, sector 94
mount: mounting /dev/mmcblk0p1 on /media/card failed: Invalid argument
Далее, вытащил карту, перегрузился, в процессе загрузки получил сообщение:
root: mount: mounting /dev/mmcblk0p1 on /media/card failed: No such device or address
(ха, то есть все-таки пытается смонтироватся в /media/card, как указано в fstab'е).
Вставил карту, монтирую:
root@at91sam9260ek:~# mount /dev/mmcblk0p1
mount: mounting /dev/mmcblk0p1 on /media/card failed: No such device or address
В /dev устройства mmcblk0 и mmcblk0p1 присутствуют
Нашел
flush - If set, the filesystem will try to flush to disk more early than normal. Not set by default.
Я где-то выкладывал скрипты как автоматически монтировать и отмнонтировать флеши при помощи mdev из busybox.
Ради эксперимента сделал еще и так:
/dev/mmcblk0p1 /media/card auto defaults,flush 0 0
Ничего не изменилось....
Тут и без автомонтирования не понятно, почему при корректном размонтированиии/монтировании карточки в случае, если ее вытаскивать между этими событиями. она затем не монтируется:
end_request: I/O error, dev mmcblk0, sector 93
end_request: I/O error, dev mmcblk0, sector 94
mmcblk0: error -110 sending read/write command
end_request: I/O error, dev mmcblk0, sector 63
FAT: unable to read boot sector
mmcblk0: error -110 sending read/write command
end_request: I/O error, dev mmcblk0, sector 63
FAT: unable to read boot sector
mount: mounting /dev/mmcblk0p1 on /media/card failed: Input/output error
1 Убрать все упоминания про mmc из fstab, убрать карту, перезагрузиться
2 После загрузки вставить карту (без монтирования) и выхлоп dmesg в студию (сюда тоесть :)
3 выхлоп
#fdisk -l /dev/mmcblk0
4 выхлоп
#mount /dev/mmcblk0p1 /media
а то непонятно, что у вас там происходит, то фс у вас fat, то ext2...то карта сама! автомонтируется... И поищите в скриптах не /dev/mmcblk0 а просто mmc. В сисетме никогда ничего не происходит само :)
#find / -exec grep -l 'mmc' {} \;
1 Убрать все упоминания про mmc из fstab, убрать карту, перезагрузиться
2 После загрузки вставить карту (без монтирования) и выхлоп dmesg в студию (сюда тоесть :)
3 выхлоп
#fdisk -l /dev/mmcblk0
4 выхлоп
#mount /dev/mmcblk0p1 /media
а то непонятно, что у вас там происходит, то фс у вас fat, то ext2...то карта сама! автомонтируется... И поищите в скриптах не /dev/mmcblk0 а просто mmc. В сисетме никогда ничего не происходит само :)
Какая-то нестыковка:
fdisk: can't open '/dev/mmcblk0': No such device or address
(в /dev mmcblk0 и mmcblk0p1 присутствуют)
С одной стороны в dmesg ничего нет а в /dev устройства есть :) так не бывает если у вас udev используется или у вас стаически /dev создано без участия /udev ? К тому же fdisk ругается именно на устройтво и в dmesg должны быть ошибки типа тех что приводились раньше
Buffer I/O error on device mmcblk0p1, logical block 0
end_request: I/O error, dev mmcblk0, sector 64... и тд
Пробуйте другую карту и самое главное - какой БП используется ? были схожие проблемы и не только у меня, была причина именно в БП. Хотя еще раз повторюсь данные противоречивые у вас :)
Какая-то нестыковка:
fdisk: can't open '/dev/mmcblk0': No such device or address
(в /dev mmcblk0 и mmcblk0p1 присутствуют)
С одной стороны в dmesg ничего нет а в /dev устройства есть :) так не бывает если у вас udev используется или у вас стаически /dev создано без участия /udev ? К тому же fdisk ругается именно на устройтво и в dmesg должны быть ошибки типа тех что приводились раньше
Buffer I/O error on device mmcblk0p1, logical block 0
end_request: I/O error, dev mmcblk0, sector 64... и тд
Пробуйте другую карту и самое главное - какой БП используется ? были схожие проблемы и не только у меня, была причина именно в БП. Хотя еще раз повторюсь данные противоречивые у вас :)
Так я и сам вижу, что что-то непонятное творится, поэтому и прошу помощи зала :)
В dmesg упоминания о карте появляются, когда она вставлена. Такое ощущение, что именно это событие что-то инициализирует. Когда ее нет, то потом уже не поднять...
А раз уж мы убрали запись из fastab, разве она тогда должна пытаться автомонтироваться (определяться) при старте? наверное и нет...
БП такой SWITCHING POWER SUPPLY mjp
MODEL: PSM11R-50
INPUT: 100-240V ~0.3A 50-60Hz
OUTPUT: +5V ---- 2A MAX
БП приличный, если не сгоревший :) Меня еще смущает
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
Ядро самосборное ? Просто вот этот драйвер для этого камня совсем не нужен.
И еще, карта же работает как я понял
SD-карту (1 Гб). Ядро 2.6.27 со всеми патчами, при загрузке пишет:
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SD card at address b368
mmcblk0: mmc0:b368 SD01G 980992KiB
mmcblk0: p1
скорей всего система пытается смонтировать слишком рано,когда карта до конца не проинициализировалась, такое у меня тоже было, я вроде sleep на секунду или две всатвлял перед тем как монтировать, но я то точно знал где и что у меня в скриптах происходит :)