реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Научите пользоваться Low level Debug, senduart
sevstels
сообщение Feb 7 2011, 06:07
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Проблема заключается в следующем.
Приказали портировать ядро со старой версии на последнюю.
До этого с 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.
Если можно, маленький примерчик поделитесь. Спасибо. sm.gif







--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Feb 7 2011, 10:41
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Погуглите про параметр ядра earlyprintk. В ядре это находится тут
Kernel hacking ---> [*] Kernel debugging
[*] Kernel low-level debugging functions
[ ] Early printk
[ ] Kernel low-level debugging via EmbeddedICE DCC channel
Go to the top of the page
 
+Quote Post
sevstels
сообщение Feb 7 2011, 11:19
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Это я уже всё нагуглил по попробовал потестить.
Натыкал senduart по телу функции startup32().
Скомпилировалось без ошибок, но вывода вообще никакого нет в uart.


Вероятно надо как то ещё указать в какой порт и задать параметры вывода.
Не нашел куда втыкать конфигурационные параметры в файле arch/arm/kernel/debug.S


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Feb 7 2011, 12:03
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(sevstels @ Feb 7 2011, 14:19) *
Это я уже всё нагуглил по попробовал потестить.
Натыкал 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

Go to the top of the page
 
+Quote Post
kurtis
сообщение Feb 7 2011, 12:31
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Как вы получили образ ядра, какими командами? Может быть что у вас не zImage, а какой-то другой Image. Если загрузчик умеет работать только с zImage, и у вас uImage, то могут возникнуть определенные проблемы.
Go to the top of the page
 
+Quote Post
sevstels
сообщение Feb 7 2011, 13:22
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



[*] Kernel low-level debugging functions
Опция было выбрана изначально, но вывода сообщений нет.
Но не включен CONFIG_CMDLINE_FORCE=y
Завтра на работе проверю.

Цитата
Как получили образ ядра

make zImage
Аналогичная команда создает работоспособное ядро для старой версии.


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
sevstels
сообщение Feb 8 2011, 03:17
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Включил CONFIG_CMDLINE_FORCE=y
К сожалению, ядро так и не стартует.
Низкоуровнего вывода тоже нет. Зависает как и прежде.
Старое работает без проблем.


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
S_agent
сообщение Feb 15 2011, 10:22
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-10-05
Из: Ukraine, Kiev
Пользователь №: 9 300



Код
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


з.ы недокурил тред, но стирать небуду, может кому и пригодится sm.gif

то sevstels , посмотрите есть ли в старом ядре что стартует /proc/config.gz
если да, то тяните его и разворачивайте, - это конфиг, с которым собиралось ядро, его можно сравнить с тем что у вас не работает.
еще посмотрите тот ли уарт проца у вас забит как ttyS0, возможно сообщения валят на другой порт.
Go to the top of the page
 
+Quote Post
sevstels
сообщение Feb 16 2011, 08:44
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Вообще, всё оказалось гораздо интереснее чем казалось сначала.
Удалось запустить загрузку 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

итд ... далее уже можно работать не в слепую
Спасибо всем за сопереживание.

-


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 20:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016