ЗАО «ЗЭО»
Техническая поддержка пользователей => Тион, Тион-Про, Тион-Про v2, Сириус => Тема начата: Ivan от 29 Марта, 2012, 17:21:58
-
Всем доброго времени суток.
Для Тиона взял ядро linux-2.6.20.21 + патч linux-2.6.20.21_tion_svn1713_201111251752.tar.gz
При загрузке системы (гружу emdebian с внешней флешки) в логах появляется:
mmc_spi spi1.1: ASSUMING 3.2-3.4 V slot power
mmc_spi spi1.1: SD/MMC host mmc0, no DMA, no WP, no poweroff
mmc_spi spi1.1: setup unsupported mode bits 4
mmc_spi spi1.1: can't change chip-select polarity
mmc0: error -22 whilst initialising SDIO card
Не подскажите, в какую сторону копать? И что означает 22 ошибка?
P.S.: С ядром и КФС "из коробки" все работало нормально, но там поддержка sd-карт была собрана модулем => при замене КФС отключилась. Поэтому и решил пересобрать...
-
Конфигурация tion_defconfig?
-
Да, tion_defconfig, только все, что собиралось модулями, зашил жестко в ядро.
+ включил eabi (естественно, собираю соответствующим компилятором)
Кстати, а в этом не может быть дело?
upd: собрал без eabi компилятором http://arm.cirrus.com/files/tools/arm-linux-gcc-4.1.1-920t.tar.bz2. То же самое...
-
Еще дополнение.
Насчет нормальной работы с ядром и КФС из коробки я погорячился.
Попробовал с другим тионом (в котором еще ничего не менялось). При старте выводятся те же сообщения об ошибке, но карта подцепляется. Однако, если попытаться вставить карту после загрузки системы, то она не видится. Никаких сообщений при этом в терминал не выводится.
В гугле вроде нашел, что 22 ошибка означает:
22 is EINVAL: "Request cannot be performed because of restrictions in hardware and/or the driver"
Но это не сильно проясняет ситуацию...
-
> если попытаться вставить карту после загрузки системы, то она не видится
Не обрабатывается сигнал (GPIO), что карта вставлена, поэтому она обнаруживается только при загрузке или
insmod'е.
-
Да, это я уже понял.
И все-таки, что то конкретное по ошибке?
Какое ядро и с каким патчем идет в стандартной поставке?
Я уже ничего не понимаю. Вроде бы, ничего не добавлял/убирал, а карточка у вас работает, а у меня - нет...
Я поковырял исходники - ошибка вылезает в mmc_attach_sdio. Но у вас даже после этой ошибки карта подцепляется!!!
-
Еще дополнение.
Когда собрал своим компилятором eabi-ядро, в котором SD/MMC были отмечены модулями и запустил это ядро с вашей КФС (на которой эти модули уже установлены), все заработало.
Получается, что есть принципиальное отличие между подгружаемыми и жестко зашитыми драйверами. Но в чем?
Я бы не стал "запариваться" и собрал поддержку SD модулем, но тогда я просто не смогу подцепить карточку с КФС... Замкнутый круг...
-
И еще дополнение - последнее на сегодня.
Когда собрал ядро с включенным дебагом на SD/MMC, получил следующее:
mmc_spi spi1.1: ASSUMING 3.2-3.4 V slot power
mmc_spi spi1.1: SD/MMC host mmc0, no DMA, no WP, no poweroff
mmc_spi spi1.1: setup unsupported mode bits 4
mmc_spi spi1.1: can't change chip-select polarity
mmc0: sector size: 32768
mmc0: new SD card on SPI
mmcblk0: mmc0:0000 SD 1978368KiB
mmcblk0:<7>mmc0: starting CMD18 arg 00000000 flags 000000b5
p1
......
mmcblk0: error -22 sending stop command
end_request: I/O error, dev mmcblk0, sector 3956728
Buffer I/O error on device mmcblk0, logical block 494591
mmcblk0: error -22 sending stop command
end_request: I/O error, dev mmcblk0, sector 3956728
Buffer I/O error on device mmcblk0, logical block 494591
mmcblk0: error -22 sending stop command
end_request: I/O error, dev mmcblk0, sector 3956728
Buffer I/O error on device mmcblk0, logical block 494591
mmcblk0: error -22 sending stop command
end_request: I/O error, dev mmcblk0, sector 3956728
Buffer I/O error on device mmcblk0, logical block 494591
mmcblk0: error -22 sending stop command
end_request: I/O error, dev mmcblk0, sector 3956728
Buffer I/O error on device mmcblk0, logical block 494591
mmcblk0: error -22 sending stop command
end_request: I/O error, dev mmcblk0, sector 3956728
Buffer I/O error on device mmcblk0, logical block 494591
и так далее...
То есть, вроде карточка определилась, а потом начались проблемы...
Да, еще странная штука - очень-очень древняя SD на 16Мб определяется без каких-либо проблем....
-
> и так далее...
Приводите лог полностью.
У меня с прилагаемой конфигурацией всё нормально:
mmc_spi spi1.1: setup unsupported mode bits 4
mmc_spi spi1.1: can't change chip-select polarity
mmc0: sector size: 32768
mmc0: new SD card on SPI
mmcblk0: mmc0:0000 00000 994816KiB
mmcblk0: p1
-
Пришлите мне ваше собранное ядро.
-
Пересылаю конфиг и полный лог загрузки.
Ядро во вложения не лезет, поэтому вот ссылка: http://ifolder.ru/29678607
Или скажите, куда Вам его переслать.
-
Взял Ваш конфиг, добавил туда поддержку EABI, собрал. Результат тот же...
Не понимаю, в чем может быть проблема. Лог загрузки, на всякий случай, прикладываю...
-
1. При загрузке вашего ядра _не_ работает.
2. Я собрал ядро с вашей конфигурацией my_config, используя компилятор
http://www.zao-zeo.ru/media/files/tools/gcc/buildroot/gcc-4.3.4_armv4_arm920t_eabi.tar.gz
карта работает.
-
Так.... Начинается что-то странное. У меня не завелось и с Вашим компилятором.
Описываю по шагам, что я сделал.
1. Скачал архив по ссылке и распаковываю его в /usr
2. В директории с исходными кодами пропатченного ядра делаю:
$ export ARCH=arm
$ export CROSS_COMPILE=/usr/local/arm/4.3.4-armv4t-arm920t-eabi/usr/bin/arm-linux-
$ export PATH=$PATH:/home/ivan/Proj/u-boot1.3.3/u-boot-1.3.3/tools/
3. копирую свой конфиг в .config
$ cp my_config .config
4. собираю
$ make clean
$ make
5. собираю uImage (для этого и изменял переменную PATH)
$ make uImage
Получившееся ядро заливаю на плату:
$ tftpboot 00000000 tion/uImage
TFTP from server 192.168.1.120; our IP address is 192.168.1.123
Filename 'tion/uImage'
Load address: 0x0
Loading: |
done
Bytes transferred = 1776488 (1b1b68 hex)
$ erase 60080000 +1b1b68
.............. done
Erased 14 sectors
$ cp.b 00000000 60080000 1b1b68
Copy to Flash... done
Загружаюсь - все как обычно...
Лог загрузки - как обычно во вложении.
-
Значит дело не в компиляторе, вы в ядре ничего не меняли (в исходных кодах)?
-
Нет, ядро не трогал. Только накладывал Ваши патчи + изменял конфиг.
Версия про нерабочую плату тоже неправдоподобна, потому что с ядром и КФС "из коробки" все работает...
Более того, если я своим компилятором собираю ядро с EABI, SD собираю как модуль, а потом гружусь с Вашей КФС, на которой этот модуль уже присутствует, то все тоже работает...
-
Наконец залил ядро, которое Вы мне вчера переслали. Результат тот же. Лог, по традиции, прилагаю.
Более того, у нас отыскался один Сириус - на нем результат такой же (до этого все проверяли на своей "материнской плате").
Не помню, писал или нет, но старая SD-шка на 16 Мб определяется успешно с любым ядром. Это не поможет выявить ошибку?
-
> Это не поможет выявить ошибку?
С какой SD у вас не работает?
-
Кроме того, вас устраивает скорость работы SD (через SPI)?
-
По поводу скорости работы ничего не могу сказать, толком не проверял.
Вы хотите сказать, что скорость работы SD-карты будет слишком мала для того, чтобы располагать на ней КФС?
SD-карта неизвестной фирмы QUMO, на 2 Гб. Вряд ли карта не рабочая, т.к. в вашей конфигурации из-коробки все работает.
Как я уже писал выше, все работает даже тогда, когда я собираю свое ядро своим компилятором, просто включив SD модулем, и запускаю это ядро с Вашей КФС (которая во внутреннем флеше зашита с завода). А если вкомпиливать в ядро и запускать с моем КФС (которая на USB-флешке), то SD отваливается...
-
> скорость работы SD-карты будет слишком мала для того, чтобы располагать на ней КФС
Менее 0.5 МБайта/с
-
У вас есть какая-нибудь задержка (в U-Boot) при включении платы?
Попробуйте остановить загрузку в U-Boot, подождать несколько секунд и
выполнить команду boot
Ядро собранное с вашей конфигурацией также нормально видит и такую карту:
mmc0: new SDHC card on SPI
mmcblk0: mmc0:0000 SA04G 3858432KiB
mmcblk0: p1
-
Менее 0.5 МБайта/с
А для сравнения, какая скорость на USB?
У вас есть какая-нибудь задержка (в U-Boot) при включении платы?
Попробуйте остановить загрузку в U-Boot, подождать несколько секунд и
выполнить команду boot
Пробовал, не помогает...
-
> А для сравнения, какая скорость на USB?
~1 МБайт/с
Но при копировании файла с USB-Flash процессор занят на 5%, а с SD -- на 100%.
-
Ситуация понятна, спасибо.
Тогда придется все-таки делать КСФ на USB-флешке...
Но все-же, почему карточка может не подцепляться?
И еще вопрос, несколько на другую тему. Если зашить в Тион WinCE, там с SD-картой будет то же самое, я правильно понимаю? В смысле, процессор грузить она будет так же сильно?
-
> В смысле, процессор грузить она будет так же сильно?
Зависит от реализации, я не знаю.
> почему карточка может не подцепляться?
Почему она работает, когда драйвер в виде модуля, и не работает, когда он в ядре -- не могу понять.
-
Зависит от реализации, я не знаю.
Понял, об этом спрошу в ветке про WinCe.
Почему она работает, когда драйвер в виде модуля, и не работает, когда он в ядре -- не могу понять.
Да, меня этот вопрос тоже сильнее всего интересует...