Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: linux виснет на Starting kernel...
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
rtcveel
Доброго времени суток!

Есть отладочная плата SK-AT91SAM9260. В комплекте с ним бинарники с кототрых всё грузится без проблем. Решил изучить вопрос подробнее и собрать всё, так сказать, своими руками. Собрал Bootstrap, U-boot, кросскомпилятор собранный Buildroot'ом, ядро linux 3.3.7 собралось раза с 3 его, после того как отключил драйвера тачпадов и АЦП промышленных, упорно выдающих ошибки сборки. Ещё вродебы поотключал ненужную периферию( насколько я понимаю "ненужную" может быть и чтото нужное вырубил). Ядро как и положено обернул для u-boot-a:

mkimage -A arm -O linux -T kernel -C gzip -a 0x20008000 -e 0x20008000 -n "Linux Kernel Image" -d zLinux.bin zlinux_3.3.bin

Полученное произведение искусства успешно залил в контроллер, после чего наблюдаю вот эту картину:

RomBOOT>Start AT91Bootstrap...
DataFlash init WELLDONE...

U-Boot 1.3.4 (Jul 5 2012 - 16:26:13)

DRAM: 32 MB
NAND: No NAND device found!!!
0 MiB
DataFlash:AT45DB321
Nb pages: 8192
Page Size: 528
Size= 4325376 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C00041FF (to C0008C0251FFFult enviIn: sNet: macb0
macb0: Stamacb0: Autonegotiation timed out (status=0x7849)
macb0: link down (status: 0x7849)
Hit any key to stop autoboot: 3  2  1  0
## Booting kernel from Legacy Image at 21000000 ...
Image Name: Linux Kernel Image
Image Type: ARM Linux Kernel Image (gzip compressed Entry OK
Uncompressing Kernel Image ... OK

Starting kernel ...

... и всё виснет.

Поэтому вопрос: где я накосячил? толи чтото в ядре не подключил, толи в кроскомпиляторе(хотя собралось без ошибок), куда копать? wacko.gif заранее благодарю за помощь sm.gif прошу не кидаться кирпичами, подобная тема на форуме всплывала, но решения автор не указал wacko.gif
rtcveel
Нашёл косяк в конфиге ядра не тот процессор указал. перекомпилил, залил - не помогло wacko.gif Сейчас GCC перекомпилировать попробую. собирал версию 4.5, может ли в этом косяк быть? Поставил на сборку 4.3, можт поможет...

Пока компилится GCC, залил прошивку, которая шла в комплекте с платой, лог выглядит следующим образом:

RomBOOT>Start AT91Bootstrap...
Copy application ...
Run ...

U-Boot 1.1.5 (Mar 21 2010 - 01:09:21)

DRAM: 32 MB
DataFlash:AT45DB321
Nb pages: 8192
Page Size: 528
Size= 4325376 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C0003FFF (RO)
Are037FFF (

In: al
Out:KS8721 PHY Detected

No link

MAC: error during RMII initialization
Hit any key to stop autoboot: 2  1  0
## Booting image at 20400000 ...
Image Name: Linux Kernel Image
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: : 20008OK
Uncompressing Kernel Image ... OK

Starting kernel ...

Linux version 2.6.28 (user@debian) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Sourcery G++ Lite 2007q1-10))

... и пошло дальше.

впринципе, кроме инициализации PHY в U-boot'e, и адреса загрузки образа в оперативку, ну и версий U-boot, GCC и ядра различий не вижу... wacko.gif
xor.kruger
Покажите параметры загрузки ядра
rtcveel
Это те что в U-boot прописаны?

#ifdef CFG_USE_DATAFLASH_CS0

/* bootstrap + u-boot + env + linux in dataflash on CS0 */
#define CFG_ENV_IS_IN_DATAFLASH 1
#define CFG_MONITOR_BASE (CFG_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
#define CFG_ENV_OFFSET 0x4200
#define CFG_ENV_ADDR (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)
#define CFG_ENV_SIZE 0x4200
#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x21000000 0x210000; bootm"
#define CONFIG_BOOTARGS "mem=32M console=ttyS0,115200 " \
"root=/dev/mtdblock0 " \
"mtdparts=at91_nand:-(root) " \
"rw rootfstype=jffs2"

Это они? (ото прошу прощения, я ещё не очень ориетнтируюсь)...
Обёрнутое ядро весит 1.9 Мб, вроде бы по размерам влазит.
xor.kruger
Они, но проще переменные убута смотреть прямо из него с помощью команды:
Код
printenv


В файле arch/arm/mach-at91/board-sam9260ek.c указали частоту кварцевого резонатора 12 МГц?

В строке
Код
at91_initialize(18432000);
нужно заменить 18432000 на 12000000.
rtcveel
да вродебы всё менял, в первый раз когда заливал, когда ещё не тот процессор указал, тогда - да, а вот в последний вроде всё поменял и частоту тоже, и поставил в конфиге сборке ядра плату sam9260ek ... ну даже теретически ядро должно было себя хоть както проявить призагрузке, ан нет wacko.gif
GCC 5.3 скомпилировался, сейчас попробую ядро пересобрать и ещё раз вдумчиво конфиг поправлю. Посмотрим что получится.

А может ли быть проблемма в самом ядре? ото смотрю по сообщениям никто выше версии 2.х.х не использует, не слишком ли я размахнулся на 3.3.?

попробовал как вы написали, команду printenv получил следующее:
на моей "сборке"
Код
bootargs=mem=32M console=ttyS0,115200 root=/dev/mtdblock0 mtdparts=at91_nand:-(root) rw rootfstype=jffs2
bootcmd=cp.b 0xC0042000 0x210000 0x21
ethact=


на заводской "сборке"
Код
U-Boot> printenv
bootcmd=run boot_df
bootdelay=2
baudrate=115200
tftp_update=tftpboot 20400000 zlinux; cp.b 20400000 c0038000 3e7fff; boot
tftp_booftpboot 00
ipad0.2
std>


ну да, впринципе тоже самое, спасибо за совет)
xor.kruger
Цитата
не слишком ли я размахнулся на 3.3.?

Нет, все ОК. Месяц назад запускал 3.4 на такой же плате как и у Вас - все отлично работало.

С результата printenv c "заводской" прошивки видно что в убуте не указана переменная bootargs.

Также обратите внимание на опцию в ядре CONFIG_CMDLINE и в последствии "Kernel command line type" в которой указывается приоритет использование параметров ядра.
rtcveel
Запустил заводской U-boot со "своим" ядром - эффект такойже (при том что с заводским ядром оба U-boot-а функционируют), следовательно проблемма именно в ядре, будем копать... При этом не работает не одно из 5 ти ядер, которые я сообрал cranky.gif, это наводит на мысли: либо я чтото эпичное в конфиге пропускаю, либо кросскомпилятор глючит...
Уже и собирал ядро больше объёма устанновленной DataFlash, заливал в оперативку, запускал из U-boot'a коммандой bootm, всёравно тоже самое wacko.gif
xor.kruger
Выложите конфиг ядра и файл arch/arm/mach-at91/board-sam9260ek.c
rtcveel
вот конфиг и board_sam9260ek.с, только конфиг последний, с ним ядро получилось около 4,7Мб.

-ссылку удалил- нашел косяк в CONFIG_CMDLINE, сейчас попробую пересобрать ядро

И, если не секрет, каким кросскомпилятором пользуетесь?
rtcveel
CONFIG_CMDLINE исправил, но это не помогло... всё как было так и есть...
прикрепил конфиг и board-at91sam9260ek.c
rtcveel
Применил make ARCH=arm at91sam9260_defconfig всё заработало beer.gif пойду праздновать! потом можт на досуге сравню, что косячил в своём конфиге...
P.S. большое спасибо xor.kruger за участие в беседе! sm.gif
xor.kruger
Только смог добраться до Вашего конфига.
На самом деле причина очень тривиальна - у Вас не была установлена опция
Код
# CONFIG_SERIAL_ATMEL is not set
которая указывает задействовать атмеловский UART для терминала.
Так же могу сказать что не стоит включать все опции подряд - на производительности, размере ядра и т.п. это сказывается наихудшим образом. Стоит включать только те опции, которые действительно необходимы.
Цитата
И, если не секрет, каким кросскомпилятором пользуетесь?

Для атмеловских армов использую glibc CodeSourcery последний стабильный релиз.
Цитата
P.S. большое спасибо xor.kruger за участие в беседе!

Всегда пожалуйста! wink.gif
Vull
Вопрос сняли, но все же добавлю, хороший мануал по запуску linux на чипе sam9260 есть на сайте

http://dmilvdv.narod.ru/AT91SAM9260/index.html?linux.html

Многие моменты хорошо описаны
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.