Gradient 1 7 февраля, 2011 Опубликовано 7 февраля, 2011 · Жалоба Проблема заключается в следующем. Приказали портировать ядро со старой версии на последнюю. До этого с ARM архитектурой не работал вообще, только DSP. Процессор S5PC110 от Самсунга. Сконфигурировал новое ядро со старым конфиг-файлом. Прописал в Makefile.boot адреса: zreladdr-y params_phys-y Проверил номер машины, и бутаргументы, всё совпадает. Ядро скомпилировалось без ошибок и варнингов. Запускаю. Пишет: HKDKC110 # bootm 0x30008000 Boot with zImage Starting kernel ... Uncompressing Linux... done, booting the kernel. Всё ... дальше зависон мертвый. На плате разьём под JTAG вообще не предусмотрен, регистры посмотреть невозможно. Виснет где то в asm функции startup32(); после декомпрессора (kernel/head.S). Подскажите, как отдебажить, что ядру не хватает для старта. Асма arm овского не знаю, поэтому и спрашиваю как заюзать senduart. Если можно, маленький примерчик поделитесь. Спасибо. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 7 февраля, 2011 Опубликовано 7 февраля, 2011 · Жалоба Погуглите про параметр ядра earlyprintk. В ядре это находится тут Kernel hacking ---> [*] Kernel debugging [*] Kernel low-level debugging functions [ ] Early printk [ ] Kernel low-level debugging via EmbeddedICE DCC channel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 7 февраля, 2011 Опубликовано 7 февраля, 2011 · Жалоба Это я уже всё нагуглил по попробовал потестить. Натыкал senduart по телу функции startup32(). Скомпилировалось без ошибок, но вывода вообще никакого нет в uart. Вероятно надо как то ещё указать в какой порт и задать параметры вывода. Не нашел куда втыкать конфигурационные параметры в файле arch/arm/kernel/debug.S Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 11 7 февраля, 2011 Опубликовано 7 февраля, 2011 · Жалоба Это я уже всё нагуглил по попробовал потестить. Натыкал senduart по телу функции startup32(). Скомпилировалось без ошибок, но вывода вообще никакого нет в uart. Вероятно надо как то ещё указать в какой порт и задать параметры вывода. Не нашел куда втыкать конфигурационные параметры в файле arch/arm/kernel/debug.S Не знаю чего вы делаете, у меня достаточно включить [*] Kernel low-level debugging functions даже без earlyprintk Start SD card AT91Bootstrap... Image size: 0x215d48, load_addr: 0x70008000, ep: 0x70008000 relocating linux kernel to proper address, dst: 0x70008000, src: 0x72000040, len: 0x215d48, machid: 0x726 Uncompressing Linux... done, booting the kernel. Error: unrecognized/unsupported machine ID (r1 = 0x00000726). Available machine support: ID (hex) NAME 000008a4 SK-MAT91SAM9G45 Please check your kernel config and/or bootloader. Очевидно что отадочные сообщения есть уже на самой ранней стадии. На всякий случай параметры загрузки ядра CONFIG_CMDLINE="mem=64M console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait" CONFIG_CMDLINE_FORCE=y Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 7 февраля, 2011 Опубликовано 7 февраля, 2011 · Жалоба Как вы получили образ ядра, какими командами? Может быть что у вас не zImage, а какой-то другой Image. Если загрузчик умеет работать только с zImage, и у вас uImage, то могут возникнуть определенные проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 7 февраля, 2011 Опубликовано 7 февраля, 2011 · Жалоба [*] Kernel low-level debugging functions Опция было выбрана изначально, но вывода сообщений нет. Но не включен CONFIG_CMDLINE_FORCE=y Завтра на работе проверю. Как получили образ ядра make zImage Аналогичная команда создает работоспособное ядро для старой версии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Включил CONFIG_CMDLINE_FORCE=y К сожалению, ядро так и не стартует. Низкоуровнего вывода тоже нет. Зависает как и прежде. Старое работает без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
S_agent 0 15 февраля, 2011 Опубликовано 15 февраля, 2011 · Жалоба Start SD card AT91Bootstrap... Image size: 0x215d48, load_addr: 0x70008000, ep: 0x70008000 relocating linux kernel to proper address, dst: 0x70008000, src: 0x72000040, len: 0x215d48, machid: 0x726 Uncompressing Linux... done, booting the kernel. Error: unrecognized/unsupported machine ID (r1 = 0x00000726). Available machine support: ID (hex) NAME 000008a4 SK-MAT91SAM9G45 Please check your kernel config and/or bootloader. сие значит что у Вас в ядре не поддерживается тип борда(машины), который передает загрузчик, в данном случае ядро собрано с поддердкой только 0x8a4, SK-MAT91SAM9G45 а загрузчик передает 0x726, AT91SAM9M10G45 Evaluation Kit что бы все это исправить нужно в конфиге ядра выбрать поддержку SK-MAT91SAM9G45 или в загрузчике передавать id=0x8a4 make menuconfig ARCH=arm System Type -> Atmel AT91 System-on-Chip з.ы недокурил тред, но стирать небуду, может кому и пригодится :) то sevstels , посмотрите есть ли в старом ядре что стартует /proc/config.gz если да, то тяните его и разворачивайте, - это конфиг, с которым собиралось ядро, его можно сравнить с тем что у вас не работает. еще посмотрите тот ли уарт проца у вас забит как ttyS0, возможно сообщения валят на другой порт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 16 февраля, 2011 Опубликовано 16 февраля, 2011 · Жалоба Вообще, всё оказалось гораздо интереснее чем казалось сначала. Удалось запустить загрузку kernel. Но для этого нужно было долго ходить по граблям. Сформулирую правила успешного старта: 1. u-boot должен быть собран той-же версией компилятора что и kernel. 2. Используйте уже проверенный кем-то toolchain. Я пытался запустить ядро с оригинальным убутом, прошитым в плате. Так и не удалось понять, (нечем посмотреть) где загрузка зависала, видимо неправильно передавались указатели на атрибуты или что то было с адресацией или упаковкой ядра. Поэтому я попытался собрать u-boot последней версией компилятора. Пришлось помучится, но в итоге он так и не собрался. Почитать можно > тут. Проблема решилась только откатившись на предидущую версию тулчейна. Соответсвенно, ядро собирал аналогичной версией компилятора. И оно сразу стартануло. Как оригинальное ядро от производителя борды, так и самсунговское ядро, так и с kernel.org HKDKC110 # bootm 0x30008000 Boot with zImage Starting kernel ... Uncompressing Linux... done, booting the kernel. <6>Initializing cgroup subsys cpu <5>Linux version 2.6.35.7 (nord@pineone) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) ) #16 PREEMPT Thu Feb 17 01:13:38 KST 2011 CPU: ARMv7 Processor [412fc082] revision 2 (ARMv7), cr=10c53c7f CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: SMDKC110 итд ... далее уже можно работать не в слепую Спасибо всем за сопереживание. - Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться