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

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Linux для AT91SAM9260, Проблемы с ядром
MTh
сообщение Mar 14 2008, 07:56
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



А то что busybox ругается когда его пытаешься скомпилить статически, ничего страшного? Говорит что бинарники могут быть битыми?
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 14 2008, 08:24
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(MTh @ Mar 14 2008, 09:56) *
А то что busybox ругается когда его пытаешься скомпилить статически, ничего страшного? Говорит что бинарники могут быть битыми?

Он предупреждает, что статически слинкованный busybox будет использовать системные вызовы dlopen и пр. при работе с DNS.
Пусть его, пускай использует.
Главное - при загрузке, когда доступа к shared libraryes еще может не быть, статически слинкованный init (т.е. busybox) не требует этих библиотек.
Есть какаято другая ругань? Кроме dlopen?


Цитата(MTh @ Mar 14 2008, 02:53) *
Карта памяти:
Код
DataFlash:AT45DB642
Nb pages:   8192
Page Size:   1056
Size= 8650752 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C0004144 (RO) bootstrap
Area 1: C0004200 to C00083FF      Environment
Area 2: C0008400 to C0041FFF (RO) U-BOOT 1.20
Area 3: C0042000 to C02FFFFF      KERNEL
Area 4: C0300000 to C0800000      FS

Это, как я понимаю карта флаш памяти, а я имел в виду карту памяти типа
C0000000 - CFFFFFFF - Flash
20000000 - 24000000 - SDRAM
То есть проверить не накладывается ли образ initrd после распаковки на область памяти ядра.
Точнее наоборот.
Общаяя рекомендяция загрузки - ядро по младшим адресам ОЗУ, initrd по адресу RAM_Size - sizeof(initrd). Примерно так. Буквально выполнять не обязательно, но придерживаться идеологии.
Цитата
init слинкован НЕ статически
Сейчас пытаюсь собрать все еще раз с нуля так сказать... Если есть какие-то предложения, очень прошу написать ))
Про то что busybox должен быть статический я уже понял.

Сделайте именно статически. Динамичекой линковкой (а точнее подготовкой запуска динамически слинкованных приложений) можно будет заняться потом.

Сколько у Вас UART-ов? Можете глятуть на каждом?
Уберите все лишнее из /etc/inittab. оставте только
Код
ttyS0:askfirst:/bin/sh
ttyS1:askfirst:/bin/sh
ttyS2:askfirst:/bin/sh
ttyS3:askfirst:/bin/sh
ttyS4:askfirst:/bin/sh

И так по всем UARTам. Сколько их у Вас есть в процессоре а не на плате, включая DBGU (не помню точно есть ли он в Вашем процессоре).
Возможно Вы считаете номера UART не в том порядке, в каком их считает Linux.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
slava2005
сообщение Mar 14 2008, 09:50
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 423



[quote name='MTh' date='Mar 14 2008, 03:53' post='379129']
Переменные окружения:
Код
ARM M7 BOOT> printenv
baudrate=115200
ethaddr=04:05:fe:ed:00:18
ipaddr=XX.XX.XX.XX
gatewayip=XX.XX.XX.XX
netmask=255.255.255.0
hostname=at91sam9260_arm_test
bootcmd=cp.b 0xc0042000 0x21600000 0x1fffff; cp.b 0xc0300000 0x21100000 0x3fffff; bootm 0x21600000
bootdelay=1
serverip=10.10.10.11
stdin=serial
stdout=serial
stderr=serial

Environment size: 488/8188 bytes


А где bootargs ?
Go to the top of the page
 
+Quote Post
MTh
сообщение Mar 16 2008, 13:34
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



C bootargs был трабл.... сейчас он есть )) Завтра на работе скину последнее все что есть...
Дело в том что начал все это один человек (т.е. ядро-то грузится именно его), а продолжаю я... Пока разбираюсь что к чему и пытаюсь таки перекомпилить и запустить...
BuildRoot был собран на ASP Linux, его скачал... и допилил напильником BladeRunner (как я понял пилить пришлось много)
Я под Debian собрал buildroot который был на диске argussoft для оценочной платы. Собралось не без проблем, но собралось. Но вот ядро отказывается запускаться напрочь sad.gif
Завтра продолжу "извращения" и обновлю всю инфу.

Очень признателен за помощь. ))
Go to the top of the page
 
+Quote Post
MTh
сообщение Mar 17 2008, 02:51
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



Каким-то неведомым образом оно завелось. т.е. все: ядро грузиться, приглашение появляется...
В чем была причина понять до конца так и не понял. Собирал buildroot с диска argussoft. Сделал статический busybox.... может причина и была в этом....

Всем большое спасибо за помощь. ))
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 17 2008, 08:22
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(MTh @ Mar 17 2008, 04:51) *
Сделал статический busybox.... может причина и была в этом....

Большинство проблем, похожих на Ваши, именно в этом и заключаются.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
MTh
сообщение Mar 17 2008, 08:50
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



Теперь другой трабл: поднял сеть... все ок...
Пытаюсь скомпилить приложение:
Код
make ARCH=arm CROSS_COMPILE=/usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-

Приложение с кучей варнингов компилиться, копирую в коренвую систему, по tftp заливаю... пытаюсь запустить приложение:
Код
ls
hello  s.sh
# ./hello
-sh: ./hello: not found

написал небольшой скрипт, в нем вывод строки и запуск hello в двух вариантах:
Код
# ./s.sh
Just string
./s.sh: ./s.sh: 3: hello: not found
./s.sh: ./s.sh: 4: ./hello: not found
#


Что я делаю не так?
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 17 2008, 09:30
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(MTh @ Mar 17 2008, 10:50) *
Теперь другой трабл: поднял сеть... все ок...
Пытаюсь скомпилить приложение:
Код
make ARCH=arm CROSS_COMPILE=/usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-

Приложение с кучей варнингов компилиться, копирую в коренвую систему, по tftp заливаю... пытаюсь запустить приложение:
Код
ls
hello  s.sh
# ./hello
-sh: ./hello: not found

написал небольшой скрипт, в нем вывод строки и запуск hello в двух вариантах:
Код
# ./s.sh
Just string
./s.sh: ./s.sh: 3: hello: not found
./s.sh: ./s.sh: 4: ./hello: not found
#


Что я делаю не так?

1. Та же проблема, что и с busybox. Скомпилируйте статически. Если запускается - скопируйте нужные библиотеки на rottfs.
Как проверить можно посмотреть тут http://electronix.ru/forum/index.php?showtopic=44076 пост #5. Рекомендации и методы в данном вопросе не зависят от архитектуры. Библиотеки лучше всего ложить на rootfs в папку /lib. По крайней мере для начала. Не забывайте что libstdc++ не бывает статической. Таким образом все C++ приложения требуют библиотеку. Некоторые библиотеки зависят от других. Если Ваше приложение требует одну, то нужно копировать обе и т.д.
2. Как я понял Вы используете buildroot. Если да - смотрите в его доках как вставит свое приложение в систему. Не могу сказать подробнее, так как buildroot не использую вообще.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
MTh
сообщение Mar 18 2008, 09:02
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



amw спасибо smile.gif

Я использовал АРМовый компилер и вместо Makefile скомпилил все напрямую, т.е.:
/usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-gcc -c hello.c
/usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-gcc -o hello hello.o
Воткнул в rootfs, закинул по tftp и запустилось без проблем... Хотя в Makefile прописал опцию на вызов компилятора именно АРМ... Это и есть статическая линковка?
Правда я ядро пересобрал... и в /lib появились библиотеки...
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 18 2008, 09:31
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(MTh @ Mar 18 2008, 11:02) *
Я использовал АРМовый компилер и вместо Makefile скомпилил все напрямую, т.е.:
/usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-gcc -c hello.c
/usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-gcc -o hello hello.o
Воткнул в rootfs, закинул по tftp и запустилось без проблем... Хотя в Makefile прописал опцию на вызов компилятора именно АРМ... Это и есть статическая линковка?

Извините - не понял. Про АРМовский компилер.

Статическая линковка - это когда все функции и переменные из библиотек вставляются линкеров в исполняемый файл полностью.
Динамическая линковка - это когда линкер создает в исполняемом вайле только ссылки на имена функций в библиотеках.
При статической линковке - исполняемый файл содержит все, в том числе копии всех используемых им библиотечных функций.
При динамической линковке - исполняемый файл содержит только написаный Вами код. Для его запуска необходимы все библиотеки, из которых он использует функции.

Статическая линковка:
Код
/usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-gcc -Wl,-static -o hello hello.o

Динамическая линковка выполняется по умолчанию. (То есть Вы не указали что нужно линковать статически - значит динамически)
Цитата
... и в /lib появились библиотеки...

У Вас линковка динамическая. Но появились библиотеки.

PS: Для uClinux могут быть ньюансы по линковке. Однако тут я Вам помочь не смогу. uClinux не пользую.

Сообщение отредактировал amw - Mar 18 2008, 09:32


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
MTh
сообщение Mar 19 2008, 00:14
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



Цитата(amw @ Mar 18 2008, 12:31) *
Извините - не понял. Про АРМовский компилер.


Компилятор собранный для компиляции прилады под ARM //*Масло маслянное но факт

Цитата(amw @ Mar 18 2008, 12:31) *
PS: Для uClinux могут быть ньюансы по линковке. Однако тут я Вам помочь не смогу. uClinux не пользую.


Это не uCLinux...

Спасибо за развернутый ответ smile.gif
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 19 2008, 08:15
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(MTh @ Mar 19 2008, 02:14) *
Компилятор собранный для компиляции прилады под ARM //*Масло маслянное но факт

Очепятка? Про масло я понял а вот про все остальное - нет smile.gif.
Цитата
Это не uCLinux...

Используете uClibc? Или просто компилятор стащеный?
Я как-то привык сам пересобирать компиляторы, потому плохо ориентируюся в том, что можно скачать.
Цитата
Спасибо за развернутый ответ smile.gif

Главное, чтоб в пользу smile.gif.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
MTh
сообщение Mar 21 2008, 08:04
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 28-02-06
Из: Иркутск
Пользователь №: 14 771



Господа, спасайте....
Собрал ядро и ФС... заработало... Потребовалось включить поддержку libusb и libtool... В buildroot в menuconfig включил соответствующие пункты. Собираю все... закидываю на АРМ - вешается после монтирования ФС... пишет freeing init memory 96K и все... тишина.... Правда на вводимые символы реагирует... т.е. echo работает. Иогда система пишет что неверный формат архива...

ФС лежит по адресу 0х21100000, ядро по 0х22200000 т.е. между ними около 20 МБ (знаю что много, пока поставил так,чтобы отладить smile.gif )
-rw-r--r-- 1 root root 1065698 2008-03-21 15:49 at91sam9260ek-linux-2.6.19-2008-03-21.gz
-rw-r--r-- 1 root root 3610702 2008-03-21 15:45 rootfs.arm_nofpu.ext2.gz

Версия ядра: 2.6.19.2
Версия buildroot: 2007116-RC2

Вот вывод printenv:
Код
baudrate=115200
bootdelay=1
boot_addr=0x21600000
ramdisk_addr=0x21100000
ld_root=run linux; run ramdisk; bootm $(boot_addr)
ethaddr=04:05:fe:ed:00:18
hostname=at91sam9260_arm_test
initrd=0x2118C000,6000000
OS=C0042000
endflash=c083ffff
ver=1
config=tftp  ${ramdisk} autoscript.${hostname}; autoscr ${ramdisk}
kernel-version=2.6.21.1
kernel-date=2007-06-05
fs-date=2007-06-05
get-ramdisk=tftp        ${ramdisk}      ${rd};          setenv rd-size  ${filesize}
store-ramdisk=cp.b      ${ramdisk}      ${FS}           ${rd-size}
load-ramdisk=cp.b       ${FS}           ${ramdisk}      ${rd-size}
flash-ramdisk=run       get-ramdisk;    run             store-ramdisk
get-kernel=tftp ${kernel}       ${linux};       setenv  kernel-size     ${filesize}
store-kernel=cp.b       ${kernel}       ${OS}           ${kernel-size};         saveenv
load-kernel=cp.b        ${OS}           ${kernel}       ${kernel-size};         saveenv
flash-kernel=run        get-kernel;     run             store-kernel
get=run get-kernel        ; run get-ramdisk
flash=run flash-kernel; run flash-ramdisk; saveenv
load=run load-kernel ; run load-ramdisk
fstype=ram
flashfs=/dev/mtdblock2
ramfs=/dev/ram
access=rw
ramdisk_size=15360
console=ttyS0,115200
mem=64M
update=os; fs; setargs
cmpk=run flash-kernel; cp.b ${OS} ${ramdisk} ${kernel-size}; cmp ${kernel} ${ramdisk} ${kernel-size}
rootfstype=ext2
FS=C0300000
bootcmd=run load; bootm 0x21600000
rd=rootfs.ext2.gz
linux=linuximage.gz
myboot=bootm ${kernel}
ramdisk=21100000
bootargs=root=/dev/ram0 initrd=0x21100000,3000000 console=ttyS0,115200 mem=64M
rd-size=1d3a14
filesize=1248b3
fileaddr=32000000
gatewayip=10.10.10.1
netmask=255.255.255.0
ipaddr=10.10.10.83
serverip=10.10.10.15
kernel-size=1248b3
kernel=22200000
stdin=serial
stdout=serial
stderr=serial


Заканчивается все вот так:
Код
RAMDISK: Compressed image found at block 0
RAMDISK: ran out of compressed data
invalid compressed format (err=1)
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 92K
EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #624: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
Warning: unable to open an initial console.
EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #568: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0


Больше всего меня пугает, то что концовка меняется... т.е. она не постоянно такая...

busybox собран статически:
Код
#arm-linux-uclibc-readelf -d busybox

В этом файле нет динамического раздела.


Сообщение отредактировал MTh - Mar 21 2008, 08:16
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 21 2008, 08:16
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(MTh @ Mar 21 2008, 10:04) *
Заканчивается все вот так:
Код
RAMDISK: Compressed image found at block 0
RAMDISK: ran out of compressed data
invalid compressed format (err=1)
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 92K
EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #624: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
Warning: unable to open an initial console.
EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #568: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0

Это первое упоминание в логе про RAMDISK? Приведите чуть больше перед этими строками если есть что-то про RAMDISK.
Какой формат RAMDISK фактически? Какой формат поддерживает Вами собранное ядро?
Скорее всего образ корневухи (RAMDISK) initramfs, а ядро поддерживает только initrd. Или наоборот.
Включите в ядре поддержку всех форматов и приведите полный лог загрузки, если будутет та-же проблема.

Сообщение отредактировал amw - Mar 21 2008, 08:17


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
andron86
сообщение Mar 21 2008, 08:24
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(MTh @ Mar 21 2008, 09:04) *
Код
RAMDISK: Compressed image found at block 0
RAMDISK: ran out of compressed data
invalid compressed format (err=1)
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 92K
EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #624: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
Warning: unable to open an initial console.
EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #568: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0


Больше всего меня пугает, то что концовка меняется... т.е. она не постоянно такая...

busybox собран статически:


Хе, Хе это у тебя файловая система глючит. Помочь не могу, так как подход индивидуальный нужен, сам jffs2 пользую.
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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