|
|
  |
Linux для AT91SAM9260, Проблемы с ядром |
|
|
|
Feb 29 2008, 02:07
|
Участник

Группа: Validating
Сообщений: 19
Регистрация: 2-05-06
Пользователь №: 16 663

|
Для начала заказал оценочную плату с данным процессором. Там на компакт диске шел демо Linux для этого процесора (впринципе он бы подошел если бы только не отсутсвие поддержки ethernet и usb gadget) . Поэтому решил собрать новое ядро и соотвественно toolchain. Для сборки toolchain и Linux я воспользовался Buildroot (информация на linux4sam.org). С сборкой кроскомпилятора gcc и uclibc для ARM особых проблем не возниклою Удалось собрать загрузчики тоже без особых проблем. При сборке возникли небольшие проблемы с makefile для архитектуры ARM (ядро получалолсь просто невероятных размеров ), но их тоже решил. Так вот проблема возникла в следующем: - ядро загружается вполне штатно (так же как и работающий демоLinux для 9260) , но после того как он загрузился и подключил RAm диск не грузит консоль:
NET: Registered protocol family 1 NET: Registered protocol family 17 RAMDISK: ext2 filesystem found at block 0 RAMDISK: Loading 4096KiB [1 disk] into ram disk... done. VFS: Mounted root (ext2 filesystem). Freeing init memory: 100K
по идее дальше должен обрабатыватся либо init либо linuxrc (в настройках ядра указано что init=/linuxrc), но это не происходит.
Что делать и как это исправить?
з.ы. сначала думал что какие то проблемы с фс , но нет , она прекрасно монтируется под обычным линуксом. Пробовал использовать ядро от демоLinux для 9260 оно нормально подключает мою фс и начинает обрабатывать init и тд
|
|
|
|
|
Feb 29 2008, 08:33
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата RAMDISK: ext2 filesystem found at block 0 RAMDISK: Loading 4096KiB [1 disk] into ram disk... done. VFS: Mounted root (ext2 filesystem). Тут же написано что фс смонтирована. А на этой фс есть все необходимые устройства? В частности /dev/console, /dev/loop*, /dev/ram*, /dev/null. И еще, что используетс в качестве init? busybox? Думаю - не хватает библиотек, а точнее пути к ним не сконфигурированы. Скомпилируете busybox (ну или что Вы используете как init) статически. Там есть в конфигурации опция. BTW. linuxrc - это скрипт, как я понимаю. То есть для его исполнения нужен /bin/sh, то же статически слинкованый. А динамические библиотеки подключите позже.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Feb 29 2008, 10:03
|
Участник

Группа: Validating
Сообщений: 19
Регистрация: 2-05-06
Пользователь №: 16 663

|
да если фсэку подмантировать к host системе и посмотреть содержимое то там уже есть все устройства типа console loop null. Пробовал разные фс ничего не меняется (cramfs, jffs,ext2) после
VFS: Mounted root (ext2 filesystem). Freeing init memory: 100K
и все ... Попробую сделать свою фс без всяких библиотек со стаичным busybox...
з.ы. осталосось то всего ничего ... ядро в принципе работает ... если воткнуть флэху то он пишет логи ее подключения к usb-host (ядро откомпилено с дебаг )
|
|
|
|
|
Feb 29 2008, 10:14
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Bladerunner @ Feb 29 2008, 12:03)  да если фсэку подмантировать к host системе и посмотреть содержимое то там уже есть все устройства типа console loop null. Пробовал разные фс ничего не меняется (cramfs, jffs,ext2) после
VFS: Mounted root (ext2 filesystem). Freeing init memory: 100K
и все ... Попробую сделать свою фс без всяких библиотек со стаичным busybox...
з.ы. осталосось то всего ничего ... ядро в принципе работает ... если воткнуть флэху то он пишет логи ее подключения к usb-host (ядро откомпилено с дебаг ) А покажите-ка /etc/inittab. Может init настраивается не на ту консоль? У Вас консоле на последовательном порту? Попробуйте так: Код ttyS0:respawn:/bin/sh Не помню точно, гляньте в документации busybox точное количество двоеточий и их порядок.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 4 2008, 01:07
|
Участник

Группа: Validating
Сообщений: 19
Регистрация: 2-05-06
Пользователь №: 16 663

|
Цитата(amw @ Feb 29 2008, 13:14)  А покажите-ка /etc/inittab. Может init настраивается не на ту консоль? У Вас консоле на последовательном порту? Попробуйте так: Код ttyS0:respawn:/bin/sh Не помню точно, гляньте в документации busybox точное количество двоеточий и их порядок. непонятно то что я беру фс от демаLinux, тот который идет на сд с китом , он тоже никак не хочет запускать init
|
|
|
|
|
Mar 6 2008, 07:11
|
Местный
  
Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821

|
Цитата(amw @ Feb 29 2008, 11:14)  А покажите-ка /etc/inittab. Может init настраивается не на ту консоль? У Вас консоле на последовательном порту? Попробуйте так: Код ttyS0:respawn:/bin/sh Не помню точно, гляньте в документации busybox точное количество двоеточий и их порядок. Могу только подтвердить. У меня была такая проблемка, консоль на другой порт перестраивалась. глянь /etc/inittab, в общем, полазь в /etc/
|
|
|
|
|
Mar 12 2008, 09:19
|

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

|
Вот содержимое: Код cat inittab
# /etc/inittab # # Copyright (C) 2001 Erik Andersen <andersen@codepoet.org> # # Note: BusyBox init doesn't support runlevels. The runlevels field is # completely ignored by BusyBox init. If you want runlevels, use # sysvinit. # # Format for each entry: <id>:<runlevels>:<action>:<process> # # id == tty to run on, or empty for /dev/console # runlevels == ignored # action == one of sysinit, respawn, askfirst, wait, and once # process == program to run
# Startup the system null::sysinit:/bin/mount -o remount,rw / null::sysinit:/bin/mount -t proc proc /proc null::sysinit:/bin/mount -a null::sysinit:/bin/hostname -F /etc/hostname null::sysinit:/sbin/ifconfig lo 127.0.0.1 up null::sysinit:/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo # now run any rc scripts ::sysinit:/etc/init.d/rcS
# Set up a couple of getty's #tty1::respawn:/sbin/getty 38400 tty1 #tty2::respawn:/sbin/getty 38400 tty2
# Put a getty on the serial port # ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 ttyS0::respawn:/bin/ash
# Logging junk null::sysinit:/bin/touch /var/log/messages null::respawn:/sbin/syslogd -n -m 0 null::respawn:/sbin/klogd -n tty3::respawn:/usr/bin/tail -f /var/log/messages
# Stuff to do for the 3-finger salute ::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting null::shutdown:/usr/bin/killall klogd null::shutdown:/usr/bin/killall syslogd null::shutdown:/bin/umount -a -r null::shutdown:/sbin/swapoff -a в строках: Код # ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 ttyS0::respawn:/bin/ash Пробовал и первую и вторую (предложенную здесь)... во второй один раз ошибся, система даже не отругалась...
|
|
|
|
|
Mar 13 2008, 06:43
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 423

|
Цитата(MTh @ Mar 13 2008, 04:52)  Работать так и не хочет.... все в том же состоянии как и было... Господа, у кого есть рабочее откомпиленное ядро для AT91SAM9260? киньте если не жалко.  Есть то есть, и не жалко ни грамма  , только вот что в ядре нужно ? А то вот напрмер: http://rapidshare.com/files/98402351/uImage.html - это рабочий вариант ядра для вот этого проекта http://electronix.ru/forum/index.php?showtopic=42507
|
|
|
|
|
Mar 13 2008, 08:38
|

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

|
Э-э-э... а можно в другое место или на почту? Рапида закрыта...  Может подскажете чем собирали (crosscompiler)? И из чего... если был какой-то мануал, может линк есть? В ядре нужно: Ethernet USB Host+ communication device + storage device Com (все) + RS485 NAND Flash RTC (DS1682) I2C DataFlash
|
|
|
|
|
Mar 13 2008, 08:45
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 12 2008, 11:19)  Вот содержимое: Код cat inittab
# /etc/inittab # # Copyright (C) 2001 Erik Andersen <andersen@codepoet.org> # # Note: BusyBox init doesn't support runlevels. The runlevels field is # completely ignored by BusyBox init. If you want runlevels, use # sysvinit. # # Format for each entry: <id>:<runlevels>:<action>:<process> # # id == tty to run on, or empty for /dev/console # runlevels == ignored # action == one of sysinit, respawn, askfirst, wait, and once # process == program to run
# Startup the system null::sysinit:/bin/mount -o remount,rw / null::sysinit:/bin/mount -t proc proc /proc null::sysinit:/bin/mount -a null::sysinit:/bin/hostname -F /etc/hostname null::sysinit:/sbin/ifconfig lo 127.0.0.1 up null::sysinit:/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo Это лучше переместить в один из rc scripts, который будет вызываться из /etc/init.d/rcS Цитата Код # now run any rc scripts ::sysinit:/etc/init.d/rcS
# Set up a couple of getty's #tty1::respawn:/sbin/getty 38400 tty1 #tty2::respawn:/sbin/getty 38400 tty2
# Put a getty on the serial port # ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 ttyS0::respawn:/bin/ash Попробуйте так: Код ttyS0::askfirst:/bin/sh Шелл - busybox? Если да - то убедитесь, что шелл по умолчанию в busybox сконфигурирован и есть соответствующий симлинк (/bin/sh -> /bin/ash) Цитата Код # Logging junk null::sysinit:/bin/touch /var/log/messages null::respawn:/sbin/syslogd -n -m 0 null::respawn:/sbin/klogd -n tty3::respawn:/usr/bin/tail -f /var/log/messages
# Stuff to do for the 3-finger salute ::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting null::shutdown:/usr/bin/killall klogd null::shutdown:/usr/bin/killall syslogd null::shutdown:/bin/umount -a -r null::shutdown:/sbin/swapoff -a в строках: Код # ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 ttyS0::respawn:/bin/ash Пробовал и первую и вторую (предложенную здесь)... во второй один раз ошибся, система даже не отругалась... А как выглядит командная строкой ядра? UARTы имеют имена ttyS* или ttyAT* ? Если Вы видите на UART вывод сообщений ядра при загрузке, а судя по первому посту - Вы их видите, то ищите причину в конфигурации rootfs. Это может быть или скрипт, или настроечный файл, или сам busybox. Его лучше всего собрать статически, тогда он точно будет запускаться и Вы сможете увидеть его сообщения. И дайте полный лог загрузочных сообщений ядра. Убедитесь, что на rootfs есть /linuxrc. А лучше укажите init=/bin/init, или на крайний случай init=/bin/sh
Сообщение отредактировал amw - Mar 13 2008, 08:53
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 13 2008, 09:26
|

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

|
Код AT91Bootstrap loading from 0x8400... >AT45DB642D detected >Loading from Dataflash[0x00008400] to SDRAM[0x23F00000] ....... >Loading complete, [0x00032000] bytes >Start application at [0x23F00000]
U-Boot 1.2.0 (Feb 21 2008 - 16:29:37)
DRAM: 64 MB NAND: No NAND device found!!! No NAND device found!!! 0 MiB 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 In: serial Out: serial Err: serial DM9161A PHY Detected No link MAC: error during RMII initialization Hit any key to stop autoboot: 0 ## Booting image at 21600000 ... Image Name: Linux-2.6.23.1 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1498432 Bytes = 1.4 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK OK
Starting kernel ...
Uncompressing Linux........................................................................... ....................... done, booting the kernel. Linux version 2.6.23.1 (root@skb_p4) (gcc version 4.2.1) #1 Thu Feb 28 10:29:48 IRKT 2008 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 Machine: Atmel AT91SAM9260-EK Memory policy: ECC disabled, Data cache writeback Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz CPU0: D VIVT write-back cache CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets Built 1 zonelists in Zone order. Total pages: 16256 Kernel command line: mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw AT91: 96 gpio irqs in 3 banks PID hash table entries: 256 (order: 8, 1024 bytes) Console: colour dummy device 80x30 console [ttyS0] enabled Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar ... MAX_LOCKDEP_SUBCLASSES: 8 ... MAX_LOCK_DEPTH: 30 ... MAX_LOCKDEP_KEYS: 2048 ... CLASSHASH_SIZE: 1024 ... MAX_LOCKDEP_ENTRIES: 8192 ... MAX_LOCKDEP_CHAINS: 16384 ... CHAINHASH_SIZE: 8192 memory used by lock dependency info: 1024 kB per task-struct memory footprint: 1920 bytes Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 64MB = 64MB total Memory: 56576KB available (2748K code, 2396K data, 116K init) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 Generic PHY: Registered new driver SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 2048 (order: 4, 73728 bytes) TCP bind hash table entries: 2048 (order: 4, 73728 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd Freeing initrd memory: 3072K JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254) io scheduler noop registered io scheduler anticipatory registered (default) atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize loop: module loaded Davicom DM9161E: Registered new driver Davicom DM9161A: Registered new driver Davicom DM9131: Registered new driver ICPlus IP175C: Registered new driver MACB_mii_bus: probed eth0: Atmel MACB at 0xfffc4000 irq 21 (00:00:00:00:00:00) eth0: attached PHY driver [Davicom DM9161A] (mii_bus:phy_addr=ffffffff:00, irq=-1) No NAND device found!!! usbmon: debugfs is not available at91_ohci at91_ohci: AT91 OHCI at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 at91_ohci at91_ohci: irq 20, io mem 0x00500000 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected drivers/usb/host/r8a66597-hcd.c: driver r8a66597_hcd, 29 May 2007 Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. udc: at91_udc version 3 May 2006 mice: PS/2 mouse device common for all mice i2c /dev entries driver at91_i2c at91_i2c: AT91 i2c bus driver. usbcore: registered new interface driver usbhid drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver Advanced Linux Sound Architecture Driver Version 1.0.14 (Fri Jul 20 09:12:58 2007 UTC). ALSA device list: No soundcards found. TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 Installing 9P2000 support RAMDISK: cramfs filesystem found at block 0 RAMDISK: Loading 2912KiB [1 disk] into ram disk... done. VFS: Mounted root (cramfs filesystem) readonly. Freeing init memory: 116K
|
|
|
|
|
Mar 13 2008, 09:48
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата Kernel command line: mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw То есть в качестве init у Вас используется либо /sbin/init, либо /bin/init. Он слинкован статически? Покажите карту памяти. Цитата Этта ... Вы бы printenv из u-boot бы привели... Телепатия мне подсказывает, что у Вас переменные не настроены. Да, не помешало бы.
Сообщение отредактировал amw - Mar 13 2008, 09:49
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 14 2008, 00:53
|

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

|
Переменные окружения: Код 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 Карта памяти: Код 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 init слинкован НЕ статически Сейчас пытаюсь собрать все еще раз с нуля так сказать... Если есть какие-то предложения, очень прошу написать )) Про то что busybox должен быть статический я уже понял.
Сообщение отредактировал MTh - Mar 14 2008, 01:50
|
|
|
|
|
Mar 14 2008, 08:24
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Mar 14 2008, 09:50
|
Частый гость
 
Группа: Свой
Сообщений: 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 ?
|
|
|
|
|
Mar 16 2008, 13:34
|

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

|
C bootargs был трабл.... сейчас он есть )) Завтра на работе скину последнее все что есть... Дело в том что начал все это один человек (т.е. ядро-то грузится именно его), а продолжаю я... Пока разбираюсь что к чему и пытаюсь таки перекомпилить и запустить... BuildRoot был собран на ASP Linux, его скачал... и допилил напильником BladeRunner (как я понял пилить пришлось много) Я под Debian собрал buildroot который был на диске argussoft для оценочной платы. Собралось не без проблем, но собралось. Но вот ядро отказывается запускаться напрочь  Завтра продолжу "извращения" и обновлю всю инфу. Очень признателен за помощь. ))
|
|
|
|
|
Mar 17 2008, 08:22
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 17 2008, 04:51)  Сделал статический busybox.... может причина и была в этом.... Большинство проблем, похожих на Ваши, именно в этом и заключаются.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 17 2008, 08:50
|

Местный
  
Группа: Свой
Сообщений: 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 # Что я делаю не так?
|
|
|
|
|
Mar 17 2008, 09:30
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Mar 18 2008, 09:02
|

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

|
amw спасибо  Я использовал АРМовый компилер и вместо 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 появились библиотеки...
|
|
|
|
|
Mar 18 2008, 09:31
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Mar 19 2008, 00:14
|

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

|
Цитата(amw @ Mar 18 2008, 12:31)  Извините - не понял. Про АРМовский компилер. Компилятор собранный для компиляции прилады под ARM //*Масло маслянное но факт Цитата(amw @ Mar 18 2008, 12:31)  PS: Для uClinux могут быть ньюансы по линковке. Однако тут я Вам помочь не смогу. uClinux не пользую. Это не uCLinux... Спасибо за развернутый ответ
|
|
|
|
|
Mar 19 2008, 08:15
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 19 2008, 02:14)  Компилятор собранный для компиляции прилады под ARM //*Масло маслянное но факт Очепятка? Про масло я понял а вот про все остальное - нет  . Цитата Это не uCLinux... Используете uClibc? Или просто компилятор стащеный? Я как-то привык сам пересобирать компиляторы, потому плохо ориентируюся в том, что можно скачать. Цитата Спасибо за развернутый ответ  Главное, чтоб в пользу  .
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 21 2008, 08:04
|

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

|
Господа, спасайте.... Собрал ядро и ФС... заработало... Потребовалось включить поддержку libusb и libtool... В buildroot в menuconfig включил соответствующие пункты. Собираю все... закидываю на АРМ - вешается после монтирования ФС... пишет freeing init memory 96K и все... тишина.... Правда на вводимые символы реагирует... т.е. echo работает. Иогда система пишет что неверный формат архива... ФС лежит по адресу 0х21100000, ядро по 0х22200000 т.е. между ними около 20 МБ (знаю что много, пока поставил так,чтобы отладить  ) -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
|
|
|
|
|
Mar 21 2008, 08:16
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Mar 21 2008, 08:24
|
Местный
  
Группа: Участник
Сообщений: 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 пользую.
|
|
|
|
|
Mar 21 2008, 08:43
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 21 2008, 10:04)  ФС лежит по адресу 0х21100000, ядро по 0х22200000 т.е. между ними около 20 МБ (знаю что много, пока поставил так,чтобы отладить  ) Еще вспомнил. Рекомендуется образ RAMDISK грузить в память по адресу MAX_MEM_ADDR - RAMDISK_SIZE. Не нужно воспринимать буквально, но нужно следовать принципу. Суть в том, что ядро распаковывается в нижние адреса при выключенном MMU (читай linux/Documentation/arm/Booting). Размер распакованного ядра будет не меньше чем размер файла vmlinux (посмотрите его размер). Если зазора не хватает - при распаковке ядра будет похерен образ RAMDISK (еще сжатый). Потом распаковывается RAMDISK, но на этот момент MMU уже включен, и ядро может управлять распаковкой RAMDISK.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 25 2008, 08:43
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 25 2008, 02:27)  Итак, попытка сборки ядра 2.6.24 не удалась... вернее удалась, но ядро не видит RAM диск... никак....
(AT91_MATRIX_EBICSA и AT91_MATRIX_CS3A_SMC)... а будет ли работать? Проверить в железе пока возможности нет... На сколько я могу судить это выводы CS и/или другие управляющие выводы для NAND. Если да - то смотреть по схеме. Вожможно так-же, что при конфигурировании ядра был неправильно или не полностью сконфигурирован MTD NAND.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 25 2008, 09:05
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 423

|
Цитата(MTh @ Mar 25 2008, 03:27)  Итак, попытка сборки ядра 2.6.24 не удалась... вернее удалась, но ядро не видит RAM диск... никак....
Решили пока остановиться на 2.6.19, от него удалось добиться стабильной сборки и запуска. Позволю себе небольшую ремарку. Юзайте ядро 2.6.22. На мой взгляд самое оно пока
|
|
|
|
|
Mar 25 2008, 09:25
|

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

|
Цитата(slava2005 @ Mar 25 2008, 12:05)  Позволю себе небольшую ремарку. Юзайте ядро 2.6.22. На мой взгляд самое оно пока  Спасибо! Но это не раньше выходных.... кроме того опыта у меня маловато, хотя сидя без дела его не получишь.... Цитата На сколько я могу судить это выводы CS и/или другие управляющие выводы для NAND. Если да - то смотреть по схеме. Вожможно так-же, что при конфигурировании ядра был неправильно или не полностью сконфигурирован MTD NAND. Посмотрю. Спасибо.... Еще вопрос попутно :-[ Написал простенькую программку: Код # cat main.cpp #include <iostream> using namespace std;
int main() { cout << "g++ compiler test\n"; return 0; } Makefile: Код # cat Makefile main: main.o $(CC) -o main main.o
main.o: main.cpp $(CC) -c main.cpp Компилирую: Код # make ARCH=arm CC=arm-linux-uclibc-g++ arm-linux-uclibc-g++ -o main main.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towupper_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtold_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__nl_langinfo_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__newlocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__freelocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__iswctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towlower_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtod_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__uselocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strcoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtof_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcscoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__duplocale' collect2: ld returned 1 exit status make: *** [main] Ошибка 1 Я что-то упустил при сборке? Хотя приложение (udp сервер) написанное на Си компилируется и работает "на УРА!"...
|
|
|
|
|
Mar 25 2008, 09:42
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 25 2008, 11:25)  Код #include <iostream> using namespace std;
int main() { cout << "g++ compiler test\n"; return 0; } Makefile: Код main: main.o $(CC) -o main main.o
main.o: main.cpp $(CC) -c main.cpp В крне не верно!!!! Переменная CC - это C компилятор. Переменная CXX - это C++ компилятор. Переменная CPP - это C препроцессор. Эти перемнные проверяются make-ом. Используйте правильный синтаксис. Наберите в командной строке вот это Код arm-linux-uclibc-g++ -v -o main main.cpp Примечание: *-uclibc-* вообще-то расчитано на uClibc. Возможно используется glibc.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 26 2008, 00:26
|

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

|
Цитата(amw @ Mar 25 2008, 12:42)  В крне не верно!!!! Переменная CC - это C компилятор. Переменная CXX - это C++ компилятор. Переменная CPP - это C препроцессор. Эти перемнные проверяются make-ом. Используйте правильный синтаксис. Наберите в командной строке вот это Код arm-linux-uclibc-g++ -v -o main main.cpp Примечание: *-uclibc-* вообще-то расчитано на uClibc. Возможно используется glibc. Вот что получается: Код # /usr/local/arm/gcc-3.4.6-uclibc/bin/arm-linux-uclibc-g++ -o main /home/mamonth/g++_test/main.cpp -v Reading specs from /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/specs Configured with: /root/arm/argussoft/toolchain_build_arm_nofpu_small/gcc-3.4.6/configure --prefix=/usr/local/arm/gcc-3.4.6-uclibc --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-linux-uclibc --enable-languages=c,c++,objc --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-shared --enable-threads --enable-multilib --with-float=soft --enable-sjlj-exceptions --with-float=soft Thread model: posix gcc version 3.4.6 /usr/local/arm/gcc-3.4.6-uclibc/libexec/gcc/arm-linux-uclibc/3.4.6/cc1plus -quiet -v -D_GNU_SOURCE -D__ARM_ARCH_3__ /home/mamonth/g++_test/main.cpp -quiet -dumpbase main.cpp -msoft-float -auxbase main -version -o /tmp/ccXMa3qM.s ignoring nonexistent directory "/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/include" #include "..." search starts here: #include <...> search starts here: /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../include/c++/3.4.6 /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../include/c++/3.4.6/arm-linux-uclibc /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../include/c++/3.4.6/backward /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/include /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/sys-include End of search list. GNU C++ version 3.4.6 (arm-linux-uclibc) compiled by GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/bin/as -mfpu=softfpa -mfpu=softfpa -o /tmp/ccUYu4iU.o /tmp/ccXMa3qM.s /usr/local/arm/gcc-3.4.6-uclibc/libexec/gcc/arm-linux-uclibc/3.4.6/collect2 --eh-frame-hdr -dynamic-linker /lib/ld-uClibc.so.0 -X -m armelf_linux -p -o main /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crt1.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crti.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtbegin.o -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6 -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib /tmp/ccUYu4iU.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtend.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crtn.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towupper_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtold_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__nl_langinfo_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__newlocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__freelocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__iswctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__towlower_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtod_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__uselocale' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strcoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wctype_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strxfrm_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcsftime_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__strtof_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__wcscoll_l' /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/libstdc++.so: undefined reference to `__duplocale' collect2: ld returned 1 exit status Однако, если сделать вот так: Код # #arm-linux-uclibc-g++ -c main.cpp -o main И на выходе даже что-то получается... Код # arm-linux-uclibc-readelf -h main Заголовок ELF: Magic: 7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00 Класс: ELF32 Данные: дополнение до 2, little endian Версия: 1 (current) OS/ABI: ARM Версия ABI: 0 Тип: REL (Перемещаемый файл) Машина: ARM Версия: 0x1 Адрес точки входа: 0x0 Начало заголовков программы: 0 (байт в файле) Начало заголовков программы: 940 (байт в файле) Флаги: 0x200, GNU EABI, software FP Размер этого заголовка: 52 (байт) Размер заголовков программы: 0 (байт) Число заголовков программы: 0 Размер заголовков раздела: 40 (байт) Число заголовков раздела: 16 Индекс табл. строк загол. раздела: 13 однако это что-то потом не запускается... На целевой платформе выдается сообщение: Код # tftp -r main -g ХХ.ХХ.ХХ.ХХ # chmod +x main # ./main ./main: ./main: 1: Syntax error: word unexpected (expecting ")")
|
|
|
|
|
Mar 26 2008, 08:33
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 26 2008, 05:04)  Вопрос снимается... проблема с компилятором.... А какая? Код /usr/local/arm/gcc-3.4.6-uclibc/libexec/gcc/arm-linux-uclibc/3.4.6/collect2 --eh-frame-hdr -dynamic-linker /lib/ld-uClibc.so.0 -X -m armelf_linux -p -o main /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crt1.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib/crti.o /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtbegin.o -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6 -L/usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/../../../../arm-linux-uclibc/lib /tmp/ccUYu4iU.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/arm/gcc-3.4.6-uclibc/lib/gcc/arm-linux-uclibc/3.4.6/crtend.o Проанализируйте на предмет наличия используемых библиотек (опции -l) в указанных путях (опции -L). А также соответствие форматов библиотек (поскольку --enable-multilib). Несколько смущает использование --enable-languages=c,c++,objc, у меня с objc были конфликты.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 26 2008, 16:02
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(MTh @ Mar 26 2008, 15:50)  Проблема как раз с баблиотеками для С++ (libsdtc++.so)... компилятор напрочь отказывается видеть процедуры и функции включенные в стандартные инклуды... в чем причина - понять не могу... А в самой библиотеке они есть? Судя по ошибке - нет. Тогда надо искать, в какой они библиотеке и подключить принудительно ее.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 9 2008, 13:31
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 423

|
Цитата(3.14 @ Apr 8 2008, 23:34)  Поделитесь плиз живой корневухой для 9260. А что именно интересует ? Например этот проект успешно стартует с этим - это Дебиан Цитата(MTh @ Mar 27 2008, 09:34)  А позвольте поинтересоваться, если Вы используете buildroot то какой версии? Если нет, то какие порекомендуете остальные пакеты (binutils, uClibc и прочее).
Трабл в том, что в каждой версии пакета свои заморочки... с каким-то я справился, с какими-то не смог... Вот и хотелось бы с минимумом проблем, но это линукс, тут такое бывает редко )) Buidroot не использую. Я сторонник полновесных дистрибутивов (см мою тему про Дебиан).
|
|
|
|
|
Apr 10 2008, 13:29
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Проблема с той же платой  Переменные среды: Цитата bootdelay=3 baudrate=115200 ethaddr=3e:36:65:ba:6f:be filesize=11fd70 fileaddr=20000000 netmask=255.255.255.0 ipaddr=192.168.1.22 serverip=192.168.1.8 bootcmd=cp.b 0xD0030000 0x21500000 0x0011FD70; cp.b 0xD0300000 0x21100000 0x00400000; bootm 0x21500000 stdin=serial stdout=serial stderr=serial при них он нормально грузит линукс из флеша. Пытаюсь использовать тоже ядро, но другую корневую, для этого делаю: Цитата tftp 0х21100000 /tftpboot/rootfs setenv bootcmd 'cp.b 0xD0030000 0x21500000 0x0011FD70; bootm 0x21500000' boot После этого идёт процесс загрузки ядра и в конце выводится вот такая надпись: Цитата List of all partitions: No filesystem could mount root, tried: ext2 cramfs msdos vfat Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet Где я неправ? Что может быть?
|
|
|
|
|
Apr 10 2008, 13:35
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 423

|
Цитата(igrok213 @ Apr 10 2008, 17:29)  Проблема с той же платой  Переменные среды: при них он нормально грузит линукс из флеша. Пытаюсь использовать тоже ядро, но другую корневую, для этого делаю: После этого идёт процесс загрузки ядра и в конце выводится вот такая надпись: Где я неправ? Что может быть?  Элементарно  Код tftp 0х21100000 /tftpboot/rootfs setenv bootcmd 'cp.b 0xD0030000 0x21500000 0x0011FD70; bootm 0x21500000' boot А где копирование рутфс в память ? Тщательнее надо
|
|
|
|
|
Apr 10 2008, 14:18
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(slava2005 @ Apr 10 2008, 17:35)  Элементарно  Код tftp 0х21100000 /tftpboot/rootfs setenv bootcmd 'cp.b 0xD0030000 0x21500000 0x0011FD70; bootm 0x21500000' boot А где копирование рутфс в память ? Тщательнее надо  я думал что по tftp сразу записываю в память рутфс, а второй строкой копирую из флеша ядро и запускаю его. Разве нет? Цитата(amw @ Apr 10 2008, 17:36)  В ядре включена поддержка initrd и initramfs. полный лог загрузки: Цитата U-Boot> boot ## Booting image at 21500000 ... Image Name: linux-2.6.22.19 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1178928 Bytes = 1.1 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK OK
Starting kernel ...
Uncompressing Linux........................................................................... . done, booting the kernel. Linux version 2.6.22.19 (roman@miracle) (gcc version 4.2.3 (Debian 4.2.3-3)) #2 Mon Apr 7 21:38:07 MSD 2008 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 Machine: Atmel AT91SAM9260-EK Memory policy: ECC disabled, Data cache writeback Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz CPU0: D VIVT write-back cache CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets Built 1 zonelists. Total pages: 16256 Kernel command line: mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw AT91: 96 gpio irqs in 3 banks PID hash table entries: 256 (order: 8, 1024 bytes) Console: colour dummy device 80x30 Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 64MB = 64MB total Memory: 59392KB available (2112K code, 210K data, 108K init) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 Generic PHY: Registered new driver SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 2048 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd Freeing initrd memory: 3072K NetWinder Floating Point Emulator V0.97 (double precision) JFFS2 version 2.2. (NAND) (SUMMARY) \0xc2\0xa9 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler anticipatory registered (default) atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize loop: module loaded Davicom DM9161E: Registered new driver Davicom DM9161A: Registered new driver Davicom DM9131: Registered new driver dm9000 Ethernet Driver macb macb: detected PHY at address 0 (ID 0181:b8a0) eth0: Atmel MACB at 0xfffc4000 irq 21 (3e:36:65:ba:6f:be) No NAND device found!!! usbmon: debugfs is not available at91_ohci at91_ohci: AT91 OHCI at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 at91_ohci at91_ohci: irq 20, io mem 0x00500000 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. udc: at91_udc version 3 May 2006 ether gadget: using random self ethernet address ether gadget: using random host ethernet address usb0: Ethernet Gadget, version: May Day 2005 usb0: using at91_udc, OUT ep2 IN ep1 STATUS ep4 usb0: MAC 82:50:d6:0b:0f:0b usb0: HOST MAC 7e:80:e2:8e:96:62 usb0: RNDIS ready \0x00mice: PS/2 moususbcore: registered new interface driver usbhid drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver Advanced Linux Sound Architecture Driver Version 1.0.14 (Thu May 31 09:03:25 2007 UTC). mmc0: card claims to support voltages below the defined range. These will be ignored. ALSA device list: No soundcards found. TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 drivers/rtc/hctosys.c: unable to open rtc device (rtc0) RAMDISK: Couldn't find valid RAM disk image starting at 0. List of all partitions: No filesystem could mount root, tried: ext2 cramfs msdos vfat Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet
|
|
|
|
|
Apr 10 2008, 17:12
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(igrok213 @ Apr 10 2008, 17:18)  я думал что по tftp сразу записываю в память рутфс, а второй строкой копирую из флеша ядро и запускаю его. Разве нет? В ядре включена поддержка initrd и initramfs. полный лог загрузки: Сравните с этим: http://electronix.ru/forum/index.php?showt...3994&st=31#Возможно ядро затирает образ корневухи. Если не ошибаюсь у Вас образ грузится почему-то ниже ядра.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 11 2008, 09:46
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(MTh @ Apr 11 2008, 11:25)  Проверьте что и куда вы складываете, как правило у меня такая ошибка вываливалась когда накладывались образа ядра и ФС. )) Кроме того, ФС можно очень легко проверить на линуксе, например так: mount -t ext2 -o loop /tftpboot/rootfs.ext2 /mnt/tmp1 Если подцепится, то проверяйте память... я адресами вроде всё нормально делаю. Вываливается ошибка вида: Цитата boot ## Booting image at 20000000 ... Image Name: linux-2.6.22.19 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1178928 Bytes = 1.1 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK OK ## Loading Ramdisk Image at 22000000 ... Bad Magic Number на большой машине образ ФС нормально монтируется, нормально работет.
Сообщение отредактировал igrok213 - Apr 11 2008, 09:47
|
|
|
|
|
Apr 11 2008, 10:07
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(igrok213 @ Apr 11 2008, 12:46)  Код ## Loading Ramdisk Image at 22000000 ... Bad Magic Number Вроде как для u-boot имеется какой-то формат образов специфический. uImage кажись. Правда ли - не знаю, потомук как с u-boot не работал. А адреса все таки перепроверте.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 11 2008, 10:16
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-12-06
Пользователь №: 24 021

|
2 igrok213 можно не заморачиваться распаковыванием образа корневухи именно u-boot-ом, просто положите по 21100000 загзипленый (или бинарный, ради эксперимента) образ корневухи, все должно заработать (ядро должно само его распаковать).
Сообщение отредактировал starterkit - Apr 11 2008, 10:18
--------------------
Покупайте наших слонов!!!
|
|
|
|
|
Apr 11 2008, 10:38
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(starterkit @ Apr 11 2008, 14:16)  2 igrok213 можно не заморачиваться распаковыванием образа корневухи именно u-boot-ом, просто положите по 21100000 загзипленый (или бинарный, ради эксперимента) образ корневухи, все должно заработать (ядро должно само его распаковать). Сейчас происходит загрузка так: Цитата bootcmd=cp.b 0xD0030000 0x21500000 0x0011FD70; cp.b 0xD0300000 0x21100000 0x00400000; bootm 0x21500000 т.е. между ядром и корнем получается 400кб. Мой новый корень весит 1.6Мб, запакованный. Соотвественно по эти же адресам его положить не удастся.  Можно или ядро сдвигать, или ФС, или первое и второе. Но, я к сожалению, не могу так подобрать адреса чтобы всё это заработало  ( Цитата(amw @ Apr 11 2008, 14:07)  Вроде как для u-boot имеется какой-то формат образов специфический. uImage кажись. Правда ли - не знаю, потомук как с u-boot не работал.
А адреса все таки перепроверте. Формат специфический там для ядра Linux. А вот файловая система, вроде как самая обычная.
|
|
|
|
|
Apr 11 2008, 10:47
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-12-06
Пользователь №: 24 021

|
Цитата cp.b 0xD0300000 0x21100000 0x00400000; Вы туда "чистый" архив ложите или обработаный mkimage (если второе, то ядро не поймет такую корневуху)?
--------------------
Покупайте наших слонов!!!
|
|
|
|
|
Apr 11 2008, 10:53
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(igrok213 @ Apr 11 2008, 13:38)  Сейчас происходит загрузка так: Распишите пожалуйста назначение адресов. По какому адресу ядро, корневуха, сколько ОЗУ всего и размеры ядра и корневухи.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 11 2008, 11:02
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(starterkit @ Apr 11 2008, 14:47)  Вы туда "чистый" архив ложите или обработаный mkimage (если второе, то ядро не поймет такую корневуху)? Спасибо за подсказку. Действительно до этого образ корневухи я не обрабатывал. Но даже после обработки оно пишет: Цитата ## Loading Ramdisk Image at xxx ... Bad Magic Number Что ещё может быть?
|
|
|
|
|
Apr 11 2008, 11:04
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-12-06
Пользователь №: 24 021

|
Попробуйте залить по адресу 21100000 несжатый образ корневухи и статануть ядро.
--------------------
Покупайте наших слонов!!!
|
|
|
|
|
Apr 11 2008, 11:21
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(amw @ Apr 11 2008, 14:53)  Распишите пожалуйста назначение адресов. По какому адресу ядро, корневуха, сколько ОЗУ всего и размеры ядра и корневухи. Значит так: с такими параметрами грузится ядро с флеша и корень, что там сейчас лежит: Цитата bootcmd=cp.b 0xD0030000 0x21500000 0x0011FD70; cp.b 0xD0300000 0x21100000 0x00400000; bootm 0x21500000 Далее я выполняю: Цитата tftp 0х31100000 /tftpboot/fsImage где fsImage получено при помощи mkimage: Цитата .../u-boot/mkimage-u-boot/mkimage -A arm -O linux -C gzip -T ramdisk -a 0x20288000 -d /tftpboot/rootfs.arm.ext2.gz /tftpboot/fsImage После этого ставлю переменные вот так: Цитата setenv bootcmd 'cp.b 0xD0030000 0x20000000 0x0011FD70; bootm 0x20000000 0x31100000' Чтобы ядро скопировалось из 0xD0030000 (флеш) в 0x20000000 (память). Далее bootm 0x20000000 0x31100000, чтобы ядро загрузилось и подхватило корневую ФС. После чего запускаю boot и вижу: Цитата U-Boot> boot ## Booting image at 20000000 ... Image Name: linux-2.6.22.19 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1178928 Bytes = 1.1 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK OK ## Loading Ramdisk Image at 31100000 ... Bad Magic Number Корень нормально работает на большой машине. Вернее работал до применения mkimage. Соотвественно размеры ядра - 0x0011FD70 Размеры fsImage, т.е. пожатого корня, после использования mkimage - 2330317 Всего памяти - 64Мб.
|
|
|
|
|
Apr 11 2008, 11:35
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-12-06
Пользователь №: 24 021

|
Чего то я не понимаю, ядро ищет корневуху по 21100000 (из предыдущего лога), а Вы ее распаковываете с помощью u-boot по адресу 0x20288000 ... Возьмите rootfs.arm.ext2.gz (!!!без обработкти mkimage!!!) (а лучше просто rootfs.arm.ext2) и положите по адресу 21100000, после загрузите ядро (пусть по 20400000) и запустите bootm 20400000
Сообщение отредактировал starterkit - Apr 11 2008, 11:36
--------------------
Покупайте наших слонов!!!
|
|
|
|
|
Apr 11 2008, 11:58
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(starterkit @ Apr 11 2008, 15:35)  Чего то я не понимаю, ядро ищет корневуху по 21100000 (из предыдущего лога), а Вы ее распаковываете с помощью u-boot по адресу 0x20288000 ... Возьмите rootfs.arm.ext2.gz (!!!без обработкти mkimage!!!) (а лучше просто rootfs.arm.ext2) и положите по адресу 21100000, после загрузите ядро (пусть по 20400000) и запустите bootm 20400000 сделал. получил: Цитата VFS: Mounted root (ext2 filesystem). Freeing init memory: 108K EXT2-fs error (device ram0): ext2_check_page: bad entry in directory #80: 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 #217: rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0 Kernel panic - not syncing: No init found. Try passing init= option to kernel. usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet
|
|
|
|
|
Apr 11 2008, 12:24
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-12-06
Пользователь №: 24 021

|
Вот, видно что то не то с самой корневой, попробуйте "полечить" образ подмонтировав его на хосте. Ради эксперимента, вот мой образ корневой системы ... Еще, у Вас размер памяти под initrd выдан 3М, а копируете все 4M, размер самой корневой ФС должен быть меньше выделяемой области ...
Прикрепленные файлы
rootfs.rar ( 1.62 мегабайт )
Кол-во скачиваний: 73
--------------------
Покупайте наших слонов!!!
|
|
|
|
|
Apr 11 2008, 12:34
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(starterkit @ Apr 11 2008, 16:24)  Вот, видно что то не то с самой корневой, попробуйте "полечить" образ подмонтировав его на хосте. Ради эксперимента, вот мой образ корневой системы ...
Еще, у Вас размер памяти под initrd выдан 3М, а копируете все 4M, размер самой корневой ФС должен быть меньше выделяемой области ... Спасибо. Сейчас покажу что получилось: Цитата tftp 21100000 /tftpboot/rootfs setenv bootcmd 'cp.b 0xD0030000 20400000 0x0011FD70; bootm 20400000' boot Копирую ваш корень в память по адресу:21100000, далее запускаю своё ядро из 20400000. получаю: Цитата U-Boot> boot ## Booting image at 20400000 ... Image Name: linux-2.6.22.19 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1178928 Bytes = 1.1 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK OK
Starting kernel ...
Uncompressing Linux........................................................................... . done, booting the kernel. Linux version 2.6.22.19 (roman@miracle) (gcc version 4.2.3 (Debian 4.2.3-3)) #2 Mon Apr 7 21:38:07 MSD 2008 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 Machine: Atmel AT91SAM9260-EK Memory policy: ECC disabled, Data cache writeback Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz CPU0: D VIVT write-back cache CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets Built 1 zonelists. Total pages: 16256 Kernel command line: mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw AT91: 96 gpio irqs in 3 banks PID hash table entries: 256 (order: 8, 1024 bytes) Console: colour dummy device 80x30 Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 64MB = 64MB total Memory: 59392KB available (2112K code, 210K data, 108K init) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 Generic PHY: Registered new driver SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 2048 (order: 2, 16384 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered checking if image is initramfs...it isn't (no cpio magic); looks like an initrd Freeing initrd memory: 3072K NetWinder Floating Point Emulator V0.97 (double precision) JFFS2 version 2.2. (NAND) (SUMMARY) \0xc2\0xa9 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler anticipatory registered (default) atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize loop: module loaded Davicom DM9161E: Registered new driver Davicom DM9161A: Registered new driver Davicom DM9131: Registered new driver dm9000 Ethernet Driver macb macb: detected PHY at address 0 (ID 0181:b8a0) eth0: Atmel MACB at 0xfffc4000 irq 21 (3e:36:65:ba:6f:be) No NAND device found!!! usbmon: debugfs is not available at91_ohci at91_ohci: AT91 OHCI at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 at91_ohci at91_ohci: irq 20, io mem 0x00500000 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. udc: at91_udc version 3 May 2006 ether gadget: using random self ethernet address ether gadget: using random host ethernet address usb0: Ethernet Gadget, version: May Day 2005 usb0: using at91_udc, OUT ep2 IN ep1 STATUS ep4 usb0: MAC 2a:64:48:da:ce:a0 usb0: HOST MAC fa:42:8d:96:9c:ac usb0: RNDIS ready \0x00mice: PS/2 moususbcore: registered new interface driver usbhid drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver Advanced Linux Sound Architecture Driver Version 1.0.14 (Thu May 31 09:03:25 2007 UTC). mmc0: card claims to support voltages below the defined range. These will be ignored. ALSA device list: No soundcards found. TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 drivers/rtc/hctosys.c: unable to open rtc device (rtc0) RAMDISK: Compressed image found at block 0 usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet VFS: Mounted root (ext2 filesystem). Freeing init memory: 108K после этого всё виснет. Получается что я ядро криво собрал?
|
|
|
|
|
Apr 11 2008, 12:40
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-12-06
Пользователь №: 24 021

|
Странно конечно, что мой бузибокс весит Вашу систему ... Попробуйте подмонтировать на хосте мой rootfs и замените бузибокс (если чонечно Ваш init на него ссылается), так же проследите за тем чтоб Ваш бузибокс был собран статически ну или в противном случае прийдется и либы в коневуху ложить.
Сообщение отредактировал starterkit - Apr 11 2008, 12:41
--------------------
Покупайте наших слонов!!!
|
|
|
|
|
Apr 11 2008, 12:53
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(starterkit @ Apr 11 2008, 16:40)  Странно конечно, что мой бузибокс весит Вашу систему ... Попробуйте подмонтировать на хосте мой rootfs и замените бузибокс (если чонечно Ваш init на него ссылается), так же проследите за тем чтоб Ваш бузибокс был собран статически ну или в противном случае прийдется и либы в коневуху ложить. А можно про init поподробнее? Я свой корень собирал при помощи это штуки: http://buildroot.uclibc.org/
|
|
|
|
|
Apr 11 2008, 14:12
|
Частый гость
 
Группа: Участник
Сообщений: 131
Регистрация: 30-12-06
Пользователь №: 24 021

|
init это первое приложение запускаемое системой при старте, как правило, во встраиваемых системах используется busybox - одно приложение включающее в себя целую тучу утилит, init может быть однтим из апплетов busybox, подмонтируйте Вашу корневуху и посмотрите что из себя представляет init, если это ссылка на /bin/busybox, попробуйте скопировать Ваш бузибокс в мою корневуху. Так же обратите внимание на то что лкжит в /lib Вашей корневухи.
--------------------
Покупайте наших слонов!!!
|
|
|
|
|
Apr 11 2008, 16:28
|

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

|
Цитата(igrok213 @ Apr 11 2008, 14:02)  Спасибо за подсказку. Действительно до этого образ корневухи я не обрабатывал. Но даже после обработки оно пишет: Что ещё может быть?  Накладываются образа... BAD Magic Number - плохое "магическое" число - признак того что образ поврежден. )) Распишите что где лежит, какие размеры образов, объем памяти и т.д так трудно сказать что Вы делаете не так. Второе (уже не имеющее отношения к плохому магическому числу), после того как подмонтировали образ в корне должно быть один (два) файла... В /bin должен быть busybox... и большая часть исполняемых файлов ссылаются на него... Не забывайте также, что образа разворачиваются в памяти
Сообщение отредактировал MTh - Apr 11 2008, 16:30
|
|
|
|
|
Apr 11 2008, 19:44
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(starterkit @ Apr 11 2008, 17:12)  init это первое приложение запускаемое системой при старте, как правило, во встраиваемых системах используется busybox - одно приложение включающее в себя целую тучу утилит, init может быть однтим из апплетов busybox, подмонтируйте Вашу корневуху и посмотрите что из себя представляет init, если это ссылка на /bin/busybox, попробуйте скопировать Ваш бузибокс в мою корневуху. Так же обратите внимание на то что лкжит в /lib Вашей корневухи. Код Должен быть: /bin/busybox /bin/init -> /bin/busybox /bin/sh -> /bin/busybox /dev/ram0 /dev/console /dev/null /dev/ttyS0 /etc/inittab Это как минимум. В /etc/inittab запишите одну строку типа Код ttyS0::respawn:/bin/sh После загрузки должно появиться приглашение shell. Эир если с самим файлом корнвухи все в порядке и busybox слинкован статически.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 15 2008, 23:19
|

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

|
Цитата(igrok213 @ Apr 11 2008, 15:53)  А можно про init поподробнее? Я свой корень собирал при помощи это штуки: http://buildroot.uclibc.org/buildroot 20080317 gcc 4.2.1 linux 2.6.22.10 Вот полный список всего что есть в дирректории: Код binutils-2.18.tar.bz2 busybox-1.9.1.tar.bz2 dbus-1.1.1.tar.gz fakeroot_1.9.3.tar.gz gcc-4.2.1.tar.bz2 genext2fs-1.4.tar.gz gettext-0.16.1.tar.gz glib-2.15.4.tar.bz2 gmp-4.2.2.tar.bz2 libtool-1.5.24.tar.gz libusb_0.1.12-9.diff.gz libusb_0.1.12.orig.tar.gz libxml2-sources-2.6.29.tar.gz linux-2.6.22.10.tar.bz2 module-init-tools-3.2.2.tar.bz2 mpfr-2.3.0.patch mpfr-2.3.0.tar.bz2 nano-1.3.12.tar.gz ncurses-5.6.tar.gz openssh-4.6p1.tar.gz openssl-0.9.7m.tar.gz pkg-config-0.21.tar.gz startup-notification-0.9.tar.gz sysfsutils-2.1.0.tar.gz sysklogd-1.4.1.tar.gz sysvinit-2.86.tar.gz tftp-hpa-0.40.tar.bz2 u-boot-1.2.0-atmel-patch.tar.bz2 u-boot-1.2.0-atmel.tar.bz2 uClibc-0.9.29.tar.bz2 uClibc-locale-030818.tgz udev-114.tar.bz2 usbutils-0.72.tar.gz zlib-1.2.3.tar.bz2 Там есть пара фатальных ошибок в buildroot'e... потому есть дока по сборке (см аттач)... в ней только самое необходимое... и конфиги )) Для того что делали мы... И еще один момент, почитайте доки в buildroot'e - помогает во многом. )) Большинство форумчан кто собирает линукс для АРМа, как я понял, не пользуются buildroot'ами... Там вроде все не сложнее, но я не пробовал...
|
|
|
|
|
Apr 17 2008, 09:32
|
Группа: Новичок
Сообщений: 14
Регистрация: 12-03-08
Пользователь №: 35 839

|
Цитата(amw @ Apr 11 2008, 23:44)  Код Должен быть: /bin/busybox /bin/init -> /bin/busybox /bin/sh -> /bin/busybox /dev/ram0 /dev/console /dev/null /dev/ttyS0 /etc/inittab Это как минимум. В /etc/inittab запишите одну строку типа Код ttyS0::respawn:/bin/sh После загрузки должно появиться приглашение shell. Эир если с самим файлом корнвухи все в порядке и busybox слинкован статически. у меня не получилось с такими настройками завести корневуху. Есть подозрение что она криво собирается buildroot`ом. Цитата(MTh @ Apr 16 2008, 03:19)  buildroot 20080317 gcc 4.2.1 linux 2.6.22.10 Вот полный список всего что есть в дирректории: Код binutils-2.18.tar.bz2 busybox-1.9.1.tar.bz2 dbus-1.1.1.tar.gz fakeroot_1.9.3.tar.gz gcc-4.2.1.tar.bz2 genext2fs-1.4.tar.gz gettext-0.16.1.tar.gz glib-2.15.4.tar.bz2 gmp-4.2.2.tar.bz2 libtool-1.5.24.tar.gz libusb_0.1.12-9.diff.gz libusb_0.1.12.orig.tar.gz libxml2-sources-2.6.29.tar.gz linux-2.6.22.10.tar.bz2 module-init-tools-3.2.2.tar.bz2 mpfr-2.3.0.patch mpfr-2.3.0.tar.bz2 nano-1.3.12.tar.gz ncurses-5.6.tar.gz openssh-4.6p1.tar.gz openssl-0.9.7m.tar.gz pkg-config-0.21.tar.gz startup-notification-0.9.tar.gz sysfsutils-2.1.0.tar.gz sysklogd-1.4.1.tar.gz sysvinit-2.86.tar.gz tftp-hpa-0.40.tar.bz2 u-boot-1.2.0-atmel-patch.tar.bz2 u-boot-1.2.0-atmel.tar.bz2 uClibc-0.9.29.tar.bz2 uClibc-locale-030818.tgz udev-114.tar.bz2 usbutils-0.72.tar.gz zlib-1.2.3.tar.bz2 Там есть пара фатальных ошибок в buildroot'e... потому есть дока по сборке (см аттач)... в ней только самое необходимое... и конфиги )) Для того что делали мы... И еще один момент, почитайте доки в buildroot'e - помогает во многом. )) Большинство форумчан кто собирает линукс для АРМа, как я понял, не пользуются buildroot'ами... Там вроде все не сложнее, но я не пробовал... я добился чтобы у меня всё собиралось. Но есть подозрения что собранная ФС, некорректна для запуска билдрутом.  Цитата(starterkit @ Apr 11 2008, 16:24)  Вот, видно что то не то с самой корневой, попробуйте "полечить" образ подмонтировав его на хосте. Ради эксперимента, вот мой образ корневой системы ...
Еще, у Вас размер памяти под initrd выдан 3М, а копируете все 4M, размер самой корневой ФС должен быть меньше выделяемой области ... получилось запустить вашу ФС, огромное спасибо!!! Такой вопрос: а чем она была собрана?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|