Warning: touch() [function.touch]: Unable to create file /home/starterkit/starterkit.ru/html/error.log because Permission denied in /home/starterkit/starterkit.ru/html/errorhandler.php on line 51
Не работает автомонтирование SD (AT91SAM9XE512) - Embedded Linux - Форум - starterkit.ru
Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:3
Форум » starterkit.ru » Embedded Linux
Не работает автомонтирование SD (AT91SAM9XE512)
OHara
Добавлено 09.02.2010 12:11
0
Сообщение: 1
OHara
0

Пункты: 84
Регистрация: 25.12.2009
Добрый день! На ките 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

Fstab имеет вид:
rootfs / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
usbfs /proc/bus/usb usbfs defaults 0 0
tmpfs /var/volatile tmpfs defaults 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /media/ram tmpfs defaults 0 0

# 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"
А вот как оно работает - темный лес... :(
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.02.2010 12:42 Редактировалось 09.02.2010 12:47 Сообщение: 2
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
Цитата
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0


Во первых нужно убрать noauto, тогда будет монтироваться автоматически после команды mount -a которая обычно есть в старотвых скриптах. Вынимать карту не отмонтировав нельзя, но для fat есть специальная опция монтирования - навскидку не вспомню, но это не sync которая занижает скорость ниже плинтуса, надо man посмотреть. Где то у вас в стартовых скриптах оибочно скорей всего прописано монтирование /dev/mmcblk0 - это для случая когда не созданы разделы, у вас есть он есть - mmcblk0p1
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.02.2010 12:58 Сообщение: 3
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
Нашел
flush - If set, the filesystem will try to flush to disk more early than normal. Not set by default.
Я где-то выкладывал скрипты как автоматически монтировать и отмнонтировать флеши при помощи mdev из busybox.
Спуститься к концу Подняться к началу
Персональная информация
OHara
Добавлено 09.02.2010 15:51 Сообщение: 4
OHara
0

Пункты: 84
Регистрация: 25.12.2009
Цитата
Цитата
/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0


Во первых нужно убрать noauto, тогда будет монтироваться автоматически после команды mount -a которая обычно есть в старотвых скриптах. Вынимать карту не отмонтировав нельзя, но для fat есть специальная опция монтирования - навскидку не вспомню, но это не sync которая занижает скорость ниже плинтуса, надо man посмотреть. Где то у вас в стартовых скриптах оибочно скорей всего прописано монтирование /dev/mmcblk0 - это для случая когда не созданы разделы, у вас есть он есть - mmcblk0p1


Сделал так

/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 присутствуют
Спуститься к концу Подняться к началу
Персональная информация
OHara
Добавлено 09.02.2010 16:03 Сообщение: 5
OHara
0

Пункты: 84
Регистрация: 25.12.2009
Цитата
Нашел
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
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.02.2010 16:18 Редактировалось 09.02.2010 17:01 Сообщение: 6
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
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' {} \;
Спуститься к концу Подняться к началу
Персональная информация
OHara
Добавлено 09.02.2010 17:10 Сообщение: 7
OHara
0

Пункты: 84
Регистрация: 25.12.2009
Цитата
1 Убрать все упоминания про mmc из fstab, убрать карту, перезагрузиться
2 После загрузки вставить карту (без монтирования) и выхлоп dmesg в студию (сюда тоесть :)
3 выхлоп
#fdisk -l /dev/mmcblk0
4 выхлоп
#mount /dev/mmcblk0p1 /media

а то непонятно, что у вас там происходит, то фс у вас fat, то ext2...то карта сама! автомонтируется... И поищите в скриптах не /dev/mmcblk0 а просто mmc. В сисетме никогда ничего не происходит само :)


1.закомментировал /dev/mmcblk0p1......., вытащил карту, перегрузился

2.Вставил карточку, dmesg вот:
Linux version 2.6.27 (yura@yurawork) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #10 Wed Feb 3 17:31:54 MSK 2010
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 16384
free_area_init_node: node 0, pgdat c02e3568, node_mem_map c0301000
DMA zone: 16256 pages, LIFO batch:3
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: mem=64M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 61828KB available (2696K code, 223K data, 120K init)
Calibrating delay loop... 99.12 BogoMIPS (lpj=495616)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 288 bytes
NET: Registered protocol family 16
AT91: Power Management
AT91: Starting after user reset
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS2 version 2.2. (NAND) (SUMMARY) б╘ 2001-2006 Red Hat, Inc.
msgmni has been set to 120
io scheduler noop registered
io scheduler anticipatory registered (default)
Registeration is a success The major device number is 100.
If you want to talk to the device driver,
you'll have to create a device file.
We suggest you use:
mknod char_dev c 100 0
The device file name is important, because
the ioctl program assumes that's the
file you'll use.
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
brd: module loaded
loop: module loaded
ssc ssc.0: Atmel SSC device at 0xc4870000 (irq 14)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffc4000 irq 21 (3e:36:65:ba:6f:be)
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, irq=-1)
Driver 'sd' needs updating - please use bus_type methods
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
AT91 NAND: 8-bit, Software ECC
Scanning device for bad blocks
Creating 3 MTD partitions on "atmel_nand":
0x00000000-0x00400000 : "Bootstrap"
0x00400000-0x04000000 : "Partition 1"
0x04000000-0x10000000 : "Partition 2"
atmel_spi atmel_spi.1: Atmel SPI Controller at 0xfffcc000 (irq 13)
usbmon: debugfs is not available
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
udc: at91_udc version 3 May 2006
mice: PS/2 mouse device common for all mice
input: gpio-keys as /class/input/input0
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
Registered led device: ds5
Registered led device: ds1
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.17.
at73c213 spi1.0: at73c213: supported bitrate is 48500 (64 divider)
ALSA device list:
#0: AT91SAM9260-EK external DAC on irq 14
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
rtc-at91sam9 at91_rtt.0: setting system clock to 2010-02-09 16:56:41 UTC (1265734601)
jffs2_scan_inode_node(): CRC failed on node at 0x00be5fc4: Read 0xffffffff, calculated 0xe145edbc
VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 120K
udevd version 124 started
eth0: link up (100/Full)
JFFS2 notice: (763) check_node_data: wrong data CRC in data node at 0x03196d38: read 0x483d5d3b, calculated 0x131e9397.
root@at91sam9260ek:~#

3.
root@at91sam9260ek:~# fdisk -l /dev/mmcblk0
fdisk: can't open '/dev/mmcblk0': No such device or address
(в /dev mmcblk0 и mmcblk0p1 присутствуют)

4.
root@at91sam9260ek:~# mount /dev/mmcblk0p1 /media/card
mount: mounting /dev/mmcblk0p1 on /media/card failed: No such device or address

mmc нашлось в dev.tar, device_table и правилах для udev (/etc/udev/rules.d)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.02.2010 17:26 Сообщение: 8
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
Какая-то нестыковка:
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... и тд

Пробуйте другую карту и самое главное - какой БП используется ? были схожие проблемы и не только у меня, была причина именно в БП. Хотя еще раз повторюсь данные противоречивые у вас :)
Спуститься к концу Подняться к началу
Персональная информация
OHara
Добавлено 09.02.2010 17:37 Сообщение: 9
OHara
0

Пункты: 84
Регистрация: 25.12.2009
Цитата
Какая-то нестыковка:
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
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.02.2010 17:46 Редактировалось 09.02.2010 17:58 Сообщение: 10
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
БП приличный, если не сгоревший :) Меня еще смущает
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 на секунду или две всатвлял перед тем как монтировать, но я то точно знал где и что у меня в скриптах происходит :)
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux