User Info
Добро пожаловать, Guest Пользователей: 3 Поисковых ботов: 3 Гостей: 1
Статическая компоновка модуля для MMC-карточки
Evgeny
Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Возникла проблема.
Плата - SK-AT91SAM9XE512-S3E. Ядро собирать научился, в том смысле, что оно грузится и пытается начать загружать корневую файловую систему. Логично, начал пытаться загрузить rootfs, собранную Buildroot-ом. Распаковал ее на SD-карточку, все как надо. Обнаружил что не включил в ядро драйвера MMC и включил их в ядро жестко(не модулями). Проставил это для всего из соответствующей секции, хоть там часть очевидно не требуется.
Собственно проблема - ядро тем не менее не хочет определять подключенную MMC-карточку. Зависает навсегда, если использовать rootwait. Пробовал "ванильные" ядра с единственным изменением - установкой частоты резонатора. С железом проблем быть не может - в случае ядра под Дебиан от Лаборатории - MMC-карточка определяется как надо и все работает.
Видимо я неправильно конфигурирую ядро. В чем может быть дело?
Evgeny
Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Или всеж драйвера для MMC поставляемые с ядром Linux, здесь не подходят?
Jury093
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
телепаты изнывают от жары и обвиваются вокруг кондиционера :)
если не затруднит - покажите что проставлено в конфигурации ядра для включения SD/MMC и строку загрузки для ядра и последние строки лога при загрузке в районе kernel panic
На любой вопрос есть любой ответ.
Pavel Ivanchenko
Admin
Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Ну а каково поведение этой самой карточки и этой же rootfs и ядра при ее размещении в initrd или initramfs (т.е. как в "штатном" положении)?
Evgeny
Пункты: 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
Пункты: 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
Пункты: 54271
Регистрация: 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
Пункты: 836
Регистрация: 12.07.2010
Из: Челябинск
Ядро работает с USB нормально - когда висит в rootwait выдает сообщения если появлять активность по части USB - пихать-выпихивать, также с ним пробовал ФС от Дебиан все ок. Но есть требование загрузки ФС с MMC. Также временно грузить можно только с нее из внешних носителей, USB-носитель в ближайшее время недоступен, т.к. я свой угробил, но мне кажется там проблема в драйвере и карточка также не будет доступна, если я загружусь с флешки.
Jury093
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
(моск плавится от жары) :)
не-не, мы говорим не о ЮСБ, как я понял - проблема с MMC/SD - а что все таки за карточка? SD или MMC или SDHC?
и что происходит, как Павел ранее спрашивал, при "штатной" загрузке - ядро и рутфс от Павла грузятся - в этот момент карточка видна и монтируется?
нормально ли карточка видится в "большом" линуксе на PC?
это не праздное любопытство - в зависимости от ответов можно что-то дальше посоветовать..
На любой вопрос есть любой ответ.
Jury093
Пункты: 54271
Регистрация: 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хе практически близнецы
На любой вопрос есть любой ответ.