MuadDib Posted November 3, 2011 Share Posted November 3, 2011 Мы хотим использовать SD-карту на указанном в сабже контроллере для накопления данных в случае обрыва связи с сервером. Карта установлена и определяется драйвером следующим образом: mmc0: new SD card at address 0002 mmcblk0: mmc0:0002 00000 976896KiB mmcblk0: unknown partition table Стандартный скрипт, предоставленный производителем (/bin/pnp mount), почему-то пытается смонтировать mmc1: #!/bin/sh if [ "$1" = "mount" ]; then mount /dev/mmc1 /mnt/sd else umount /mnt/sd fi Поэтому я сделал следующее: 1. Отформатировал карту в ext3 ( mke2fs -j /dev/mmcblk0 ); 2. Откорректировал /etc/rc - закомментил вызов скрипта pnp и добавил 2 строчки: #-->sd driver for /dev/mmc1 insmod /lib/modules/2.6.19-uc1MoXaRt/kernel/drivers/mmc/core/mmc_core.ko insmod /lib/modules/2.6.19-uc1MoXaRt/kernel/drivers/mmc/card/mmc_block.ko insmod /lib/modules/2.6.19-uc1MoXaRt/kernel/drivers/mmc/host/moxasd.ko # to mount SD storage if SD is plugined #pnp mount echo Mounting SD card mount /dev/mmcblk0 /mnt/sd Результат: флешка отформатировалась и монтируется (файловая система работоспособна), но с одной оговоркой: монтирование происходит только после команды reboot. После включения питания флешка не определяется. Вот что выдает в консоль контроллер в обоих случаях (привожу только конец вывода, после motd): Включение питания: Clock: old time 1970/01/01 - 00:00:05 GMT Clock: new time 2011/11/03 - 01:59:32 GMT MOXA MU860 UART Device Driver version 2.0 Tty devices major number = 30 Driver 'mmcblk' needs updating - please use bus_type methods Moxa CPU SD/MMC Device Driver V1.1 initialize Modules load OK. Mounting SD card Attempt to mount non-MTD device "/dev/mmcblk0" as JFFS2 mount: Mounting /dev/mmcblk0 on /mnt/sd failed: Invalid argument mmc0: new SD card at address 0002 mmcblk0: mmc0:0002 00000 976896KiB mmcblk0: unknown partition table Attempt to mount non-MTD device "/dev/mmc1" as JFFS2 Перезагрузка через reboot: Clock: old time 1970/01/01 - 00:00:05 GMT Clock: new time 2011/11/03 - 02:02:50 GMT MOXA MU860 UART Device Driver version 2.0 Tty devices major number = 30 Driver 'mmcblk' needs updating - please use bus_type methods Moxa CPU SD/MMC Device Driver V1.1 initialize Modules load OK. mmc0: new SD card at address 0002 mmcblk0: mmc0:0002 00000 976896KiB mmcblk0:Mounti unknown partition table ng SD card Attempt to mount non-MTD device "/dev/mmc1" as JFFS2 kjournald starting. Commit interval 5 seconds EXT3 FS on mmcblk0, internal journal EXT3-fs: recovery complete. EXT3-fs: mounted filesystem with ordered data mode. По-видимому, отличие в том, что при "холодном старте" строка mount отрабатывает до того, как драйвер увидел карточку и выдает ошибку, а после reboot драйвер "просыпается" раньше. На данный момент пришлось прибегнуть к "костылям" - добавить sleep перед вызовом mount в /etc/rc. Итак, вопросы: 1. Как избавиться от sleep, т.е. как надо _правильно_ монтировать карточку в данном контроллере? 2. Смущает строка "Driver 'mmcblk' needs updating - please use bus_type methods", выводимая загрузчиком ОС вне зависимости от наличия SD-карточки. Если надо обновлять драйвер, где его брать и как выполнить обновление? 3. Почему стандартный скрипт pnp обращается к mmc1, в то время как карта видится как mmcblk0? 4. Система при вызове mount пишет, что пытается монтировать устройство "as JFFS2". Может быть, использование ext3 в корне неверно, и мне следовало изначально форматнуть карточку в JFFS2? Если да, то как это сделать? 5. Откуда берется строка "Attempt to mount non-MTD device "/dev/mmc1" as JFFS2" в выводе при загрузки ОС? Если устройство чтения SD-карт - это /dev/mmcblk0, то что такое mmc1? Вообще, подход фирмы Moxa к документированию удивляет... В мануале есть отдельный раздел, описывающий преимущества JFFS2 (со ссылками на сайты девелоперов, ага), но нет ни слова о том как форматнуть флешку в эту файловую систему, ни даже о том, как соотносятся устройства mmc* с железом... Контроллер создан для промышленного применения, а ощущение как от общения с неким полулюбительским устройством, созданным командой борцов за свободу информации Link to comment
Komantsev Posted November 17, 2011 Share Posted November 17, 2011 Добрый день, Попробуем всё решить. Какая у Вас версия контроллера? (судя по всему, UC-7112-LX Plus?) И какая версия firmware установлена? Link to comment
MuadDib Posted November 21, 2011 Author Share Posted November 21, 2011 Доброго Контроллер UC-7112-LX (НЕ "плюс"). Ниже приведены версии, выдаваемые по разным компонентам системы: cat /etc/version Moxa/UC7112 Version 2.3 -- 五 7月 23 15:51:55 CST 2010 # kversion The UC-7112 kernel version is 2.3 # fsversion The firmware version is 2.3 # uname -a Linux moxa.com.tw 2.6.19-uc1MoXaRt #2 Fri Jul 23 15:51:26 CST 2010 armv4tl ARM Link to comment
boris_r_v Posted December 27, 2011 Share Posted December 27, 2011 MuadDib ядро не опознало тип файловой системы, - сделай на ней ext2 и попробуй снова, поддержка ext2 наглухо зашита в ядро, если мне память не изменяет, отключить ее никак нельзя - так что любое ядро линух эту систему опознает без дополнительных пасов руками. Ну и в наличии журналируемой фс на флеше, - это открытый вопрос, холиваров нете полно на эту тему, я для себя решил на флешках ext2, и после загрузки контроллера в скрипте запуска софта mount -o remount,ro /mnt/flash а потом запускаем софт контроллера Для любой флешки хоть sd, хоть cf, хоть NAND on IDE - да и такие были, прям в разъем ide втыкались... И за 13 лет практики, ни одного сбоя файловой системы на флешке из-за перезагрузки контроллера, журналы смогут так... Удачи. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now