Jump to content
Форум по продукции MOXA

Использование карты памяти с UC-7112


Recommended Posts

Мы хотим использовать 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* с железом... Контроллер создан для промышленного применения, а ощущение как от общения с неким полулюбительским устройством, созданным командой борцов за свободу информации :angry:

Link to comment
  • 2 weeks later...

Добрый день,

 

Попробуем всё решить.

Какая у Вас версия контроллера? (судя по всему, UC-7112-LX Plus?)

И какая версия firmware установлена?

Link to comment

Доброго

 

Контроллер 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
  • 1 month later...

MuadDib ядро не опознало тип файловой системы, - сделай на ней ext2 и попробуй снова,

поддержка ext2 наглухо зашита в ядро, если мне память не изменяет, отключить ее никак нельзя - так что любое ядро линух эту систему опознает без дополнительных пасов руками.

 

Ну и в наличии журналируемой фс на флеше, - это открытый вопрос, холиваров нете полно на эту тему, я для себя решил

на флешках ext2, и после загрузки контроллера в скрипте запуска софта

mount -o remount,ro /mnt/flash

а потом запускаем софт контроллера

Для любой флешки хоть sd, хоть cf, хоть NAND on IDE - да и такие были, прям в разъем ide втыкались...

И за 13 лет практики, ни одного сбоя файловой системы на флешке из-за перезагрузки контроллера, журналы смогут так... :)

 

Удачи.

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...