Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Статическая компоновка модуля для MMC-карточки
Evgeny
Добавлено 12.07.2010 11:44
0
Сообщение: 1
Evgeny
5

Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Возникла проблема.
Плата - SK-AT91SAM9XE512-S3E. Ядро собирать научился, в том смысле, что оно грузится и пытается начать загружать корневую файловую систему. Логично, начал пытаться загрузить rootfs, собранную Buildroot-ом. Распаковал ее на SD-карточку, все как надо. Обнаружил что не включил в ядро драйвера MMC и включил их в ядро жестко(не модулями). Проставил это для всего из соответствующей секции, хоть там часть очевидно не требуется.
Собственно проблема - ядро тем не менее не хочет определять подключенную MMC-карточку. Зависает навсегда, если использовать rootwait. Пробовал "ванильные" ядра с единственным изменением - установкой частоты резонатора. С железом проблем быть не может - в случае ядра под Дебиан от Лаборатории - MMC-карточка определяется как надо и все работает.
Видимо я неправильно конфигурирую ядро. В чем может быть дело?
Спуститься к концу Подняться к началу
Персональная информация
Evgeny
Добавлено 12.07.2010 11:46 Сообщение: 2
Evgeny
5

Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Или всеж драйвера для MMC поставляемые с ядром Linux, здесь не подходят?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.07.2010 12:21 Сообщение: 3
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
телепаты изнывают от жары и обвиваются вокруг кондиционера :)
если не затруднит - покажите что проставлено в конфигурации ядра для включения SD/MMC и строку загрузки для ядра и последние строки лога при загрузке в районе kernel panic

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 12.07.2010 12:25 Сообщение: 4
Pavel Ivanchenko
Admin
4.39

Пункты: 91424
Регистрация: 24.03.2009
Пол: Мужчина
Ну а каково поведение этой самой карточки и этой же rootfs и ядра при ее размещении в initrd или initramfs (т.е. как в "штатном" положении)?
Спуститься к концу Подняться к началу
Персональная информация
Evgeny
Добавлено 12.07.2010 13:06 Сообщение: 5
Evgeny
5

Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Я сам изначально хотел сразу хранить rootfs в виде образа, но пока не разобрался как его генерить из того, что генернит buildroot, скольконе пробовал загружаемый образ ядру не нравился совсем. Поэтому пока решил отладить состав ФС, а потом уже с новыми силами с ее представлением разобраться.
Kernel panic у меня нет - я использую rootwait, а хранительница корневой ФС как раз еще не готова к старту...
Обнаружил опцию debug для ядра. Оказывается MMC таки подает признаки жизни, но это сопровождается чем -то вроде ошибок ввода вывода на уровне драйвера, насколько я понимаю. Но аппаратных глюков быть не должно см. первый пост.
P.S. Ну иглючит форум - два раза вбивал сообщение
Код
Starting kernel ...


Uncompressing Linux... done, booting the kernel.

Linux version 2.6.33 (startsevev@startsevev-desktop) (gcc version 4.3.4 (Buildroot 2010.05) ) #4 Mon Jul 12 14:25:16 YEKST 2010

CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177

CPU: VIVT data cache, VIVT instruction cache

Machine: Atmel AT91SAM9260-EK

Memory policy: ECC disabled, Data cache writeback

On node 0 totalpages: 16384

free_area_init_node: node 0, pgdat c027a404, node_mem_map c0293000

Normal zone: 128 pages used for memmap

Normal zone: 0 pages reserved

Normal zone: 16256 pages, LIFO batch:3

Clocks: CPU 200 MHz, master 100 MHz, main 12.000 MHz

Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256

Kernel command line: mem=64M root=/dev/mmcblk0p1 rootwait rw debug

PID hash table entries: 256 (order: -2, 1024 bytes)

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: 62272KB available (2288K code, 190K data, 116K init, 0K highmem)

Hierarchical RCU implementation.

RCU-based detection of stalled CPUs is enabled.

NR_IRQS:192

AT91: 96 gpio irqs in 3 banks

Console: colour dummy device 80x30

console [tty0] enabled

console [ttyS0] enabled

Calibrating delay loop... 99.53 BogoMIPS (lpj=497664)

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

NET: Registered protocol family 16

bio: create slab <bio-0> at 0

SCSI subsystem initialized

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

Switching to clocksource pit

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

UDP hash table entries: 256 (order: 0, 4096 bytes)

UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

NET: Registered protocol family 1

NetWinder Floating Point Emulator V0.97 (double precision)

msgmni has been set to 121

io scheduler noop registered (default)

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

ssc ssc.0: Atmel SSC device at 0xc4828000 (irq 14)

MACB_mii_bus: probed

eth0: Atmel MACB at 0xfffc4000 irq 21 (00:1f:f2:00:00:00)

eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:01, irq=-1)

usbmon: debugfs is not available

ohci_hcd: 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

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

rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0

IRQ 1/rtc0: IRQF_DISABLED is not guaranteed on shared IRQs

rtc-at91sam9 at91_rtt.0: rtc0: SET TIME!

i2c /dev entries driver

i2c-gpio i2c-gpio: using pins 55 (SDA) and 56 (SCL)

AT91SAM9 Watchdog: sorry, watchdog is disabled

at91_wdt: probe of at91_wdt failed with error -5

sdhci: Secure Digital Host Controller Interface driver

sdhci: Copyright(c) Pierre Ossman

mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0

MMC: Setting controller bus width to 1

Added MCI driver

mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0 timing 0

MMC: Setting controller bus width to 1

TCP cubic registered

NET: Registered protocol family 17

rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock

Waiting for root device /dev/mmcblk0p1...

mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0

clkdiv = 124. mcck = 400000

MMC: Setting controller bus width to 1

mmc0: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0 timing 0

clkdiv = 124. mcck = 400000

MMC: Setting controller bus width to 1

mmc0: starting CMD0 arg 00000000 flags 000000c0

Sending command 0 as 00000800, arg = 00000000, blocks = 0, length = 0 (MR = 00009B7C)

MCI irq: status = 0000C0E5, C07F0001, 00000001

Command ready

Completed command

Status = 00000001/0000c0e5 [00000000 00000000 00000000 00000000]

mmc0: req done (CMD0): 0: 00000000 00000000 00000000 00000000

mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0

clkdiv = 124. mcck = 400000

MMC: Setting controller bus width to 1

mmc0: starting CMD8 arg 000001aa flags 000002f5

Sending command 8 as 00001848, arg = 000001AA, blocks = 0, length = 0 (MR = 00009B7C)

MCI irq: status = 0010C0E4, C07F0001, 00100000

MMC: Response timeout

Completed command
Спуститься к концу Подняться к началу
Персональная информация
Evgeny
Добавлено 12.07.2010 13:22 Сообщение: 6
Evgeny
5

Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Забыл совсем
Код

....
#
# OTG and related infrastructure
#
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_USB_ULPI is not set
# CONFIG_NOP_USB_XCEIV is not set
CONFIG_MMC=y
CONFIG_MMC_DEBUG=y
CONFIG_MMC_UNSAFE_RESUME=y

#
# MMC/SD/SDIO Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_SDIO_UART=y
CONFIG_MMC_TEST=y

#
# MMC/SD/SDIO Host Controller Drivers
#
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_AT91=y
# CONFIG_MMC_ATMELMCI is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
....
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.07.2010 13:33 Сообщение: 7
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хм.. ядро 2.6.32.8 (Atmel9260)
в настройках ядра
Код
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD/SDIO Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_SDHCI is not set
CONFIG_MMC_AT91=y

в логе:

Код
mmc0: card lacks mandatory switch function, performance might suffer.
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SD card at address b368
mmcblk0: mmc0:b368 SDC 976 MiB
mmcblk0: p1

armets:~# ls -l /dev/mm*
brw-rw---- 1 root floppy 179, 0 Jul 12 05:26 /dev/mmcblk0
brw-rw---- 1 root floppy 179, 1 Jul 12 05:26 /dev/mmcblk0p1

armets:~# mount /dev/mmcblk0p1 /mnt/
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
armets:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 30M 0 30M 0% /lib/init/rw
udev 10M 724K 9.3M 8% /dev
tmpfs 30M 0 30M 0% /dev/shm
rootfs 1.9G 739M 1.1G 42% /
/dev/mmcblk0p1 962M 835M 78M 92% /mnt


драйвер штатный из ванильного ядра, вроде ничего не ковырял..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Evgeny
Добавлено 12.07.2010 13:34 Редактировалось 12.07.2010 13:35 Сообщение: 8
Evgeny
5

Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Ядро работает с USB нормально - когда висит в rootwait выдает сообщения если появлять активность по части USB - пихать-выпихивать, также с ним пробовал ФС от Дебиан все ок. Но есть требование загрузки ФС с MMC. Также временно грузить можно только с нее из внешних носителей, USB-носитель в ближайшее время недоступен, т.к. я свой угробил, но мне кажется там проблема в драйвере и карточка также не будет доступна, если я загружусь с флешки.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.07.2010 13:47 Сообщение: 9
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
(моск плавится от жары) :)
не-не, мы говорим не о ЮСБ, как я понял - проблема с MMC/SD - а что все таки за карточка? SD или MMC или SDHC?
и что происходит, как Павел ранее спрашивал, при "штатной" загрузке - ядро и рутфс от Павла грузятся - в этот момент карточка видна и монтируется?
нормально ли карточка видится в "большом" линуксе на PC?

это не праздное любопытство - в зависимости от ответов можно что-то дальше посоветовать..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 12.07.2010 14:36 Сообщение: 10
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
вдогонку.. нашел еще вот такое исправление в файле борды board-sam9260ek.c
Код
/*
* MCI (SD/MMC)
*/
static struct at91_mmc_data __initdata ek_mmc_data = {
// jury
// .slot_b = 1,
.slot_b = 0,
.wire4 = 1,
// .det_pin = ... not connected
// .wp_pin = ... not connected
// .vcc_pin = ... not connected
};

гляньте, что у вас написано..

зы 9260 и 512хе практически близнецы

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux