Совместимость SK-9G45-OEM V1.E с SK-MAT91SAM9G45, ядро 3.7.10, загрузка с SD
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Приветствую.
Лето кончилось, возвращаемся к arm-ам...
Я правильно понимаю, что несмотря на аналогичный микроконтроллер, эта плата отличается от SK-MAT91SAM9G45 уже на стадии работы с SD ? Собранное с патчем
http://starterkit-org.googlecode.com/files/linux-3.7.10-SK-MAT91SAM9G45.patch ядро на SK-9G45-OEM не загружается. Ну ладно, это призказка.
Ядро новое, тем не менее, необходимо. Изучение linux-2.6.36-rc6 с
ftp.starterkit.ru показало различие в структурах mci0_data и mci1_data. Различия были учтены, но не тут-то было. Загрузка с SD встаёт на
Код atmel_mci atmel_mci.0: version: 0x410
atmel_mci atmel_mci.0: using dma0chan0 for DMA transfers
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff80000 irq 27, 1 slots
atmel_mci atmel_mci.1: version: 0x410
atmel_mci atmel_mci.1: using dma0chan1 for DMA transfers
atmel_mci atmel_mci.1: Atmel MCI controller at 0xfffd0000 irq 45, 1 slots
Waiting for root device /dev/mmcblk0p2...
У кого-нибудь есть идеи, куда дальше копать ? Может, кто-то делал уже ? Сходу видно, что отличаются прерывания. В случае 2.6.36 используются 11 и 29:
Код atmel_mci atmel_mci.0: Using dma0chan0 for DMA transfers
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff80000 irq 11, 1 slots
atmel_mci atmel_mci.1: Using dma0chan1 for DMA transfers
atmel_mci atmel_mci.1: Atmel MCI controller at 0xfffd0000 irq 29, 1 slots
Код
/*
* MCI (SD/MMC)
*/
static struct mci_platform_data __initdata mci0_data = {
.slot[0] = {
.bus_width = 4,
.detect_pin = AT91_PIN_PC31,
.wp_pin = -1,
},
};
static struct mci_platform_data __initdata mci1_data = {
.slot[0] = {
.bus_width = 4,
.detect_pin = AT91_PIN_PD12,
// .wp_pin = AT91_PIN_PD29,
},
};
"at91_add_device_mci(1, &mci1_data);" раскомментировать не забыл.
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Jury093
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
у меня под 3.6.0 крутится 9m10 (брат-близнец 9g45)
в файле борды
Код /*
* MCI (SD/MMC)
*/
static struct mci_platform_data __initdata mci0_data = {
.slot[0] = {
.bus_width = 4,
.detect_pin = AT91_PIN_PA31,
.wp_pin = -EINVAL,
},
};
в логе
Код root@arm9m10:~# uname -a
Linux arm9m10 3.6.0 #99 PREEMPT Sun Mar 17 22:41:58 MSK 2013 armv5tejl GNU/Linux
root@arm9m10:~# dmesg |grep mci
atmel_mci atmel_mci.0: version: 0x410
atmel_mci atmel_mci.0: using dma0chan1 for DMA transfers
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff80000 irq 27, 1 slots
root@arm9m10:~# dmesg |grep mmc
Kernel command line: console=ttyS0,115200 rw rootwait root=/dev/mmcblk0p2
Waiting for root device /dev/mmcblk0p2...
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SD card at address b368
mmcblk0: mmc0:b368 SDC 1.85 GiB
mmcblk0: p1 p2 p3
EXT3-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended
EXT3-fs (mmcblk0p2): using internal journal
EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
Adding 128516k swap on /dev/mmcblk0p3. Priority:-1 extents:1 across:128516k SS
root@arm9m10:~# cat /proc/interrupts
CPU0
17: 6717 AIC at91_tick, at91_rtc, ttyS0
27: 3330940 AIC atmel_mci.0
34: 398001216 AIC tc_clkevt
35: 0 AIC atmel_pwm
36: 0 AIC atmel_tsadcc
37: 63949 AIC at_hdmac
38: 0 AIC ohci_hcd:usb1
39: 0 AIC atmel_lcdfb
40: 394161 AIC AC97C
41: 665917 AIC eth0
79: 0 GPIO mmc-detect
99: 4 GPIO user_but
Err: 0
попробуйте вместо -1 прописать -EINVAL..
вроде на 3.6.0 переход был несложный..
На любой вопрос есть любой ответ.
asy
Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
-EINVAL попробовал, не помогает. А PIN от версии ядра не должен же меняться ?
linux-3.2.18-oem.patch наложился без ошибок на 3.2.51, собралось и тоже работает. Модуль option для gsm-модемов в 3.2.51 выглядит достаточно свежим, так что необходимость разбираться с 3.7 и более свежими ядрами пока отодвигается. Но рано или поздно заниматься придётся...
Jury093
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
ну не знаю, что там у вас за патч и что он делает..
взял ванильное (с kernel.org) 3.7.0, развернул, сложил свой файл борды, в конфиге поправил строку загрузки, в логе:
Код root@arm9g45:~# uname -a
Linux arm9g45 3.7.0 #1 Sun Oct 20 15:16:30 MSK 2013 armv5tejl GNU/Linux
root@arm9g45:~# dmesg |grep mci
atmel_mci atmel_mci.0: version: 0x410
atmel_mci atmel_mci.0: using dma0chan1 for DMA transfers
atmel_mci atmel_mci.0: Atmel MCI controller at 0xfff80000 irq 27, 1 slots
root@arm9g45:~# dmesg |grep mmc
Kernel command line: console=ttyS0,115200 rw rootwait root=/dev/mmcblk0p2
Waiting for root device /dev/mmcblk0p2...
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SDHC card at address 0001
mmcblk0: mmc0:0001 00000 7.46 GiB
mmcblk0: p1 p2 p3
EXT2-fs (mmcblk0p2): warning: mounting ext3 filesystem as ext2
EXT2-fs (mmcblk0p2): warning: mounting fs with errors, running e2fsck is recommended
Цитата А PIN от версии ядра не должен же меняться ?
PIN - это с какой функцией? если детект карточки, то в китах он заведен на PA31 и вероятно используется драйвером. у вас кстати:
Код .detect_pin = AT91_PIN_PC31
а куда он по факту подключен?
в файле борды ничего более по поводу mmc нет, в функции начального инита вот такое (т.к. карточка одна):
Код at91_add_device_mci(0, &mci0_data);
// at91_add_device_mci(1, &mci1_data);
На любой вопрос есть любой ответ.
lexx666
Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
В OEM на 3.6.4 ядре у меня
Цитата .detect_pin = AT91_PIN_PC31,
могу выложиьб конфиг и файлы боарды, если надо...