|
|
  |
Linux для AT91SAM9260, Проблемы с ядром |
|
|
|
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
|
|
|