ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: mmc sd-карточко (без fs) под Linux видится только после перезагрузки  (Прочитано 6249 раз)

0 Пользователей и 1 Гость просматривают эту тему.

zverro

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 59

  Коллеги, добрый день.    Не подскажет ли кто, как сделать переинициализацию sd-карты, после её смены?

У меня на тионе-про-2 после загрузки системы при вставленной sd-card она работает нормально.  У меня там не fs, токмо данные.

Цитировать
# mount /dev/mmcblk0p1 /mnt/disk                                                                                                                                                               
# umount /dev/mmcblk0p1

Но если я её вытаскиваю и вставляю снова, её же или другую, то не получаецо

Цитировать
# mount /dev/mmcblk0p1 /mnt/disk                                                                                                                                                               
mmcblk0: error -5 transferring data                                                                                                                                                           
end_request: I/O error, dev mmcblk0, sector 2050                                                                                                                                               
EXT3-fs: unable to read superblock                                                                                                                                                             
mmcblk0: error -5 transferring data                                                                                                                                                           
end_request: I/O error, dev mmcblk0, sector 2050                                                                                                                                               
EXT2-fs: unable to read superblock                                                                                                                                                             
mmcblk0: error -5 transferring data                                                                                                                                                           
end_request: I/O error, dev mmcblk0, sector 2048                                                                                                                                               
FAT: unable to read boot sector                                                                                                                                                               
mmcblk0: error -5 transferring data                                                                                                                                                           
end_request: I/O error, dev mmcblk0, sector 2048                                                                                                                                               
FAT: unable to read boot sector                                                                                                                                                               
mmcblk0: error -5 transferring data                                                                                                                                                           
end_request: I/O error, dev mmcblk0, sector 2112                                                                                                                                               
isofs_fill_super: bread failed, dev=mmcblk0p1, iso_blknum=16, block=32                                                                                                                         
mmcblk0: error -5 transferring data                                                                                                                                                           
end_request: I/O error, dev mmcblk0, sector 2048                                                                                                                                               
romfs: unable to read superblock                                                                                                                                                               
mmcblk0: error -5 transferring data
.....

Наверное нада какую-то команду запускать, чтобы карто увиделась ?

Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405

На Тион-Про2 SD карта на интерфейсе SPI без какой-либо защиты, поэтому
вытаскивать и вставлять карточку во включённом состоянии опасно для карточки
и SPI.

Для ядра 2.6.20 нами не сделана обработка сигнала вставки карточки.

Если у вас драйвер mmc_spi как модуль (см. lsmod), то попробуйте
umount <dir>; rmmod mmc_spi; modprobe mmc_spi; mount <dir>
Записан

zverro

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 59


  Спасибо за информацию. Теперь для неопределённость снялась.

  Помпробывал перекомпилировать ядро с единственным модулем mmc_spi, остальное всё встроенное,  но видно я что-то не так делаю


Цитировать
# modprobe mmc_spi                                                                                                                                                                             
mmc_spi: unknown relocation: 40                                                                                                                                                               
modprobe: failed to load module mmc_spi: invalid module format                                                                                                                                 
# modprobe mmc_spi.ko                                                                                                                                                                         
mmc_spi: unknown relocation: 40                                                                                                                                                               
modprobe: failed to load module mmc_spi.ko: invalid module format                                                                                                                             
# insmode mmc_spi.ko                                                                                                                                                                           
-sh: insmode: not found                                                                                                                                                                       
# insmod mmc_spi                                                                                                                                                                               
insmod: can't insert 'mmc_spi': unknown symbol in module, or unknown parameter                                                                                                                 
# rmmod mmc_spi; modprobe mmc_spi                                                                                                                                                             
rmmod: can't unload 'mmc_spi': unknown symbol in module, or unknown parameter                                                                                                                 
mmc_spi: unknown relocation: 40                                                                                                                                                               
modprobe: failed to load module mmc_spi: invalid module format     
                                                                                                                           


Я скопировал модуль в каталог /lib/modules/2.6.20.21/kernel/drivers/mmc/host  (через SSH), как и на собранной в buildroot системе, но может надо было еще что-то скопировать...

Пока я имею, в качестве запасного варианта, - перегрузку после смены sd-card. Криво, но хоть так...

Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405

Для insmod нужен полный путь файла модуля.
Для modprob нужен файл зависимостей модулей, см.
   www.zao-zeo.ru/dokuwiki/doku.php/linux#модули_ядра

Т.е. вы на host'e устанавливаете модули в указанный каталог
INSTALL_MOD_PATH, архивируете этот каталог (т.к. scp будет копировать
символьные ссылки как файлы, а не как ссылки) и, скопировав архив на плату,
разархивируете в /

При этом не забудьте, что модуль должен иметь тот же OABI/EABI, что и ядро
на плате. Видимо из-за этого сообщение "invalid module format".

Проверить, если есть /proc/config.gz можно:
   zcat /proc/config.gz | grep ABI
Записан

zverro

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 59


    Я помпробывал сделать всё "по честному", повесил собранную fs на nfs, чтобы с путями модулей не ошибиться. Ядро и fs собираюцо buildrootом (не помню как я это настроил, давно было) но не помогло.


Цитировать
# mount /dev/mmcblk0  disk 
mount: mounting /dev/mmcblk0 on disk failed: No such device or address
# modprobe mmc_spi
mmc_spi: unknown relocation: 40
modprobe: failed to load module mmc_spi: invalid module format
# zcat /proc/config.gz | grep ABI
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y
#

Пока думаю что делать.  Я бы смирился если бы программый ребут нормально работал. но он зависает на стадии надписи "kernel loaded".
Причем, такое впечатление что ребут перестал работать когда я подключил mmc драйверы.
Если у кого-нибудь найдутся идеи "в чём я, уклюжий, лепый, недосмотрел", поделитеся.

Записан