JeDay 0 25 октября, 2010 Опубликовано 25 октября, 2010 · Жалоба Добрый день всем. Осваиваю Linux на сабжевой плате. Имеется: u-boot-2010.09. arm-2010q1-188-arm-none-eabi linux-2.6.36 Конфиг ядра взят с сайта http://dmilvdv.narod.ru/AT91SAM9260/index.html u-boot Конфиг командной строки и аргументов ядра по умолчанию. Исправлена частота 200МГц #define AT91C_MAIN_CLOCK 200000000 Понизил частоту SPI (согласовать с Bootstrap): #define AT91C_SPI_CLK 2000000 Установить адрес микросхемы физического интерфейса Ethernet в cpu/arm926ejs/at91sam9/ether.c: macb_eth_initialize(0, (void *)AT91SAM9260_BASE_EMAC, 0x01); Ядро Никакие патчи не применял за исключением исправлений описанный на сайте (ссылка выше). Собирал с ключем "arm-none-eabi-" После сборки заливаю образ ядра по TFTP, вижу лог: U-Boot> tftp macb0: link up, 10Mbps half-duplex (lpa: 0x0020) Using macb0 device TFTP from server 192.168.0.34; our IP address is 192.168.0.107 Filename 'uImage.bin'. Load address: 0x22000000 Loading: ################################################################# ############################################### done Bytes transferred = 1635311 (18f3ef hex) U-Boot> bootm ## Booting kernel from Legacy Image at 22000000 ... Image Name: Linux Kernel Image 2.6.36 Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 1635247 Bytes = 1.6 MiB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Starting kernel ... Дальше ничего не происходит или происходит но этого не видно. Подскажите в чем может быть проблема? В какую сторону копать? Читал на форуме что "Starting kernel ..." пишет уже распаковщик ядра, значит управление ему передалось... Может надо было собирать компилером с префиксом "arm-none-linux-eabi-" ? Аналогичная проблема уже подымалась, но ответа по данному вопросу нет: http://electronix.ru/forum/index.php?showt...ng+kernel\ Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 25 октября, 2010 Опубликовано 25 октября, 2010 · Жалоба А вы не пробовали у производителя спросить ? http://www.starterkit.ru/html/index.php?name=contact Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JeDay 0 25 октября, 2010 Опубликовано 25 октября, 2010 · Жалоба Решил пока здесь спросить т.к. здесь людей опытных побольше... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 25 октября, 2010 Опубликовано 25 октября, 2010 · Жалоба Попробуйте собрать bootstrap "рекомендуемым" компилятором, это ,кажется, версия 2007 года. Когда возился с платой от ATMEL'а собирал только им, а остальной софт более новой версией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 25 октября, 2010 Опубликовано 25 октября, 2010 (изменено) · Жалоба Uncompressing Kernel Image ... OK Starting kernel ... Возможно у вас путаница с MACHINE ID - в убуте прописан один а ядро собрано с другим, по крайней мере при таком раскладе картина точно такая же бывает. А так - советую не копировать конфиги вслепую а менять их вдумчиво :) Изменено 25 октября, 2010 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JeDay 0 25 октября, 2010 Опубликовано 25 октября, 2010 · Жалоба mdmitry bootstrap здесь нипричем, я свой первичный загрузчик написал и хорошо протестировал. sasamy спасибо за наводку, посмотрю. MACHINE ID это некое число или текстовая строка? А на счет конфига я хотел сказать что базировался на готовом. Например в нем есть поддежка фреймбуфера и звука, я это все отключил. Мне сейчас главное чтобы ядро хоть как-то задышало.. Пробовал запускать собраное ядро с сайта www.at91.com скомпиленное под фирмовую борду с кварцем 18.432, так оно показывает признаки жизни: после строки "Starting kernel ..." некоторое время еще что-то ероглифами в лог пишет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 25 октября, 2010 Опубликовано 25 октября, 2010 (изменено) · Жалоба sasamy спасибо за наводку, посмотрю. MACHINE ID это некое число или текстовая строка? Этот идентификатор передается ядру загрузчиком в регистре r1, смотрите linux-2.6.36/arch/arm/tools/mach-types u-boot-2010.09/arch/arm/include/asm/mach-types.h они должны совпадать с конфигом ядра - иначе ядро не стартует. Кстати для вашего стартеркита какой-то добрый человек продвинул иеднтификатор :) skat91_s3e MACH_SKAT91_S3E SKAT91_S3E 2790 #define MACH_TYPE_SKAT91_S3E 2790 но это не суть важно - можно и от EK атмеловской оставить - главное чтобы и загрузчик и ядро были сконфигурированы одинаково. Пробовал запускать собраное ядро с сайта www.at91.com скомпиленное под фирмовую борду с кварцем 18.432, так оно показывает признаки жизни: после строки "Starting kernel ..." некоторое время еще что-то ероглифами в лог пишет. Это нормально :) но странно что это ядро стартует. А вы не пробовали конфиг взять от ядра которое с платой шло ? Потом при кажущейся схожести 9260/xe512 есть и небольшие различия - например адреса sram не совпадают. В общем там ошибок можно наделать при конфигурировании достаточно, мой совет - берите конфиг от ядра с диска платы, копируйте, запускайте menuconfig и правьте что вам нужно. Изменено 25 октября, 2010 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 25 октября, 2010 Опубликовано 25 октября, 2010 · Жалоба Дальше ничего не происходит или происходит но этого не видно. Подскажите в чем может быть проблема? В какую сторону копать? попробуйте для начала остановить Uboot и ввести две команды: tftpboot 20400000 имя-вашего-ядра bootm 20400000 еще как вариант - заблокированы в конфиге ядра серийные порты или переопределен порт вывода отладочной инфы или порты не прописаны в файл платы. вариантов дофига - как следствие визуально определяется как зависание системы.. если у вас есть плата кита, то к ней должен прилагаться диск с полным комплектом всего софта и исходников, имеет смысл посмотреть там конфиги и настройки, а уж потом точить 2.6.36.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 26 октября, 2010 Опубликовано 26 октября, 2010 · Жалоба попробуйте подставить то ядро что идет в комплекте с платой. может быть вы неправильно его упаковали (или наоборот, не упаковали), т.е. вы ему хотите подсунуть uImage, а он хочет zImage или совсем не упакованное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JeDay 0 26 октября, 2010 Опубликовано 26 октября, 2010 · Жалоба Для надежности MACHINE_ID в u-boot для платы AT91SAM9260EK в файле u-boot-2010.09\board\atmel\at91sam9260ek\at91sam9260ek.c прописал /* arch number of AT91SAM9260EK-Board */ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9260EK; в u-boot-2010.09\include\configs\at91sam9260ek.h тоже жестко на всякий случай прописал #define CONFIG_AT91SAM9260 1 Скомпилировал заново, бинарник старого и нового билда отличаются только хедером с временем компиляции. Значит MACHINE_ID у меня точно равен MACH_TYPE_AT91SAM9260EK (1099). В конфигах ядра прописано. Логи включены. За основу брал конфиг at91sam9260ek_defconfig.txt с сайта at91.com CONFIG_ARCH_AT91=y CONFIG_MACH_AT91SAM9260EK=y CONFIG_MACH_AT91SAM9260EK=y MACHINE_ID тоже равен 1099. (файл linux-2.6.36/arch/arm/tools/mach-types) Пробовал с моим u-boot грузить ядро 2.6.24 с дика который в комплекте шет, грузится нормально. Значит получается я неправильно бинарник собираю. Подметил что я собирал ядро компилером с префиксом "arm-none-eabi-" который делает бинарник исполняющийся на процессоре без ОС, а разработчик starterkit собирал с префиксом "arm-none-linux-gnueabi-". Скомпилил еще раз ядро с "arm-none-linux-gnueabi", файл vmlinux 4.1Мб. Теперь начал проявляться странный ефект, при выполнении команды: arm-none-linux-gnueabi-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin файл linux.bin получается размером 3Гб :( Никто не сталкивался с такой проблемой ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 26 октября, 2010 Опубликовано 26 октября, 2010 · Жалоба Подметил что я собирал ядро компилером с префиксом "arm-none-eabi-" который делает бинарник исполняющийся на процессоре без ОС, а разработчик starterkit собирал с префиксом "arm-none-linux-gnueabi-". Для ядра это неважно - он не использует рантайм библиотеки кросскомпилятора Теперь начал проявляться странный ефект, при выполнении команды: arm-none-linux-gnueabi-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin файл linux.bin получается размером 3Гб :( Никто не сталкивался с такой проблемой ? Сталкивались, сделайте имидж для загрузки в uboot вот так ./mkimage -A arm -O linux -C none -T kernel -a 20008000 -e 20008000 -n linux-2.6 -d arch/arm/boot/zImage zlinux Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JeDay 0 26 октября, 2010 Опубликовано 26 октября, 2010 · Жалоба Последовательность упаковки ядра: П.1 arm-none-linux-gnueabi-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin П.2 gzip -9 linux.bin П.3 mkimage -A arm -O linux -T kernel -C gzip -a 0x20008000 -e 0x20008000 -n "Linux Kernel Image" -d linux.bin.gz uImage.bin Эта последовательность отрабатывает правильно. Пробовал так упаковывать vmlinux который шел на диске уже скомпиленный. Исходный vmlinux - 3.7Мб. П.1 linux.bin - 2.8Мб. П.2 linux.bin.gz - 1.4Мб. П.3 uImage.bin - 1.4Мб. У меня исходный vmlinux (2.6.36) 4.1Мб, после 1-й комагды linux.bin равен 3Гб. To sasamy Проблема с бинарником возникает на П1 следовательно ключи для mkimage нипричем. Есть еще какие нибуть варианты? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 26 октября, 2010 Опубликовано 26 октября, 2010 (изменено) · Жалоба Последовательность упаковки ядра: П.1 arm-none-linux-gnueabi-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin П.2 gzip -9 linux.bin П.3 mkimage -A arm -O linux -T kernel -C gzip -a 0x20008000 -e 0x20008000 -n "Linux Kernel Image" -d linux.bin.gz uImage.bin .... To sasamy Проблема с бинарником возникает на П1 следовательно ключи для mkimage нипричем. Есть еще какие нибуть варианты? :) Какие еще варианты ? п1,2 просто не нужны - достаточно одной моей команды. Назовите файл на выходе (который у меня zlinux) как вам нужно - это готовый образ ядра для загрузки его через uboot. Изменено 26 октября, 2010 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JeDay 0 26 октября, 2010 Опубликовано 26 октября, 2010 · Жалоба п1,2 просто не нужны - достаточно одной моей команды. Эти пункты есть в документации README на u-boot. /mkimage -A arm -O linux -C none -T kernel -a 20008000 -e 20008000 -n linux-2.6 -d arch/arm/boot/zImage zlinux Назовите файл на выходе (который у меня zlinux) как вам нужно - это готовый образ ядра для загрузки его через uboot. А что значит этот путь? :) arch/arm/boot/zImage Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 26 октября, 2010 Опубликовано 26 октября, 2010 (изменено) · Жалоба Эти пункты есть в документации README на u-boot. Там в старых версиях в документации много есть того что в реальной жизни нет - сам был удивлен например при разборе полетов с записью в nand А что значит этот путь? :) arch/arm/boot/zImage Это относительный путь - команду нужно выполнить из корня исходников ядра после его сборки, п1,2 потому и не нужны что там лежит готовый образ для загрузки, mkimage всего лишь дописывает к нему свой заголовок чтобы uboot его правильно распознал, так как тут путь архитектурно зависимый - видимо поэтому в доке написали универсальный метод, vmlilnux лежит в корне исходников после сборки для любой архитектуры. Изменено 26 октября, 2010 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться