Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:4
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:8
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512
qemu и AT91SAM9260EK
berg (Guest)
Добавлено 30.11.1999 00:00 Редактировалось 14.02.2009 11:31
0
Сообщение: 1
berg (Guest)

Topic opened
Спуститься к концу Подняться к началу
berg (Guest)
Добавлено 10.02.2009 17:39 Редактировалось 10.02.2009 17:39 Сообщение: 2
berg (Guest)

День добрый.

Господа, получалось ли у кого запустить хотя-бы ядро на qemu-system-arm.
То, которое идет с qemu в примерах запускается на ура.
2.6.28 с патчем на кварц и без патча, не запускается вообще,
даже не распаковывается...
По qemu-system-arm -M ? вроде выдает ARM926EJ-S, что не так...

з.ы. ядро пытаемое на qemu, замечательно работает на железе.
з.ы.ы. и да, использую zImgae, a не uImage )

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно berg 10.02.2009 г. в 18:01:28
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 10.02.2009 19:55 Редактировалось 10.02.2009 19:55 Сообщение: 3
sasamy (Guest)

>По qemu-system-arm -M ? вроде выдает ARM926EJ-S, что не так...

Имхо там эмулируется система - это предполагает в том числе наличие видеоадаптера, у нас же нет ничего. При сборке ядра нужно наверно указывать тип системы - например я видел описания с ARM Versatile. Я не пользуюсь эмулятором... Раньше брал готовые ядра для соответствующей эмулируемой системы.
Спуститься к концу Подняться к началу
berg (Guest)
Добавлено 10.02.2009 20:03 Редактировалось 10.02.2009 20:03 Сообщение: 4
berg (Guest)

Я все понимаю, но не виснуть же еще даже не загрузившись.
Можно как вариант юзать и готовые ядра, благо такие есть, особенно учитывая, что сами фичи ядра и аппаратные на эмуляторе не проверишь. Смотрел то в сторону тестирования рутфс изначально, но думал, что можно будет нативно все сделать...
Спуститься к концу Подняться к началу
jellyfish (Guest)
Добавлено 11.02.2009 08:23 Редактировалось 11.02.2009 08:23 Сообщение: 5
jellyfish (Guest)

из поставляемого zImage можно вытащить конфиг ядра. на target (как это по-русски?) оно лежит в "/proc/conf.gz". можно и прямо из ядра утилитами из исходников ядра.
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 11.02.2009 10:27 Редактировалось 11.02.2009 10:27 Сообщение: 6
repairman (Guest)

Ядро для SAM9260 без изменений на QEMU не работает, там переферия вообще другая... По бинарникам уровня юзера - 100% совместима...

Эмулируемые qemu-system-arm конфигурации железа:
Код

[repman@repairman ~]$ qemu-system-arm -M ?
Supported machines are:
integratorcp926 ARM Integrator/CP (ARM926EJ-S) (default)
integratorcp1026 ARM Integrator/CP (ARM1026EJ-S)
versatilepb ARM Versatile/PB (ARM926EJ-S)
versatileab ARM Versatile/AB (ARM926EJ-S)
realview ARM RealView Emulation Baseboard (ARM926EJ-S)


Вот загрузка ядра на ARM-Versatile PB:

Код

Linux version 2.6.27.9 (repman@repairman._____.ru) (gcc version 4.1.2 20070816 (Red Hat 4.1.2-18.fa1)) #5 Fri Dec 26 14:21:56 MSK 2008
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00003137
Machine: ARM-Versatile PB
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 32768
free_area_init_node: node 0, pgdat c0435bb4, node_mem_map c045f000
DMA zone: 32512 pages, LIFO batch:7
CPU0: D VIVT write-through cache
CPU0: I cache: 4096 bytes, associativity 4, 32 byte lines, 32 sets
CPU0: D cache: 65536 bytes, associativity 4, 32 byte lines, 512 sets
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: root=/dev/sda rw ip=dhcp console=ttyAMA0
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 128MB = 128MB total
Memory: 125312KB available (4024K code, 287K data, 124K init)
Calibrating delay loop... 673.38 BogoMIPS (lpj=3366912)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 288 bytes
NET: Registered protocol family 16
PCI core found (slot 11)
PCI: 0000:00:0c.0 reg 10 io port: [0, fff]
PCI: 0000:00:0c.0 reg 14 32bit mmio: [0, fff]
PCI: 0000:00:0d.0 reg 10 io port: [0, ff]
PCI: 0000:00:0d.0 reg 14 32bit mmio: [0, 3ff]
PCI: 0000:00:0d.0 reg 18 32bit mmio: [0, 1fff]
PCI: bus0: Fast back to back transfers disabled
PCI map irq: slot 0, pin 1, devslot 12, irq: 27
PCI map irq: slot 0, pin 1, devslot 13, irq: 27
SCSI subsystem initialized
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
NET: Registered protocol family 1
NetWinder Floating Point Emulator V0.97 (double precision)
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
DLM (built Dec 26 2008 14:18:29) installed
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
NTFS driver 2.1.29 [Flags: R/W].
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
msgmni has been set to 245
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
CLCD: unknown LCD panel ID 0x00001000, using VGA
CLCD: Versatile hardware, VGA display
Clock CLCDCLK: setting VCO reg params: S=1 R=99 V=98
Console: switching to colour frame buffer device 80x60
Serial: AMBA PL011 UART driver
dev:f1: ttyAMA0 at MMIO 0x101f1000 (irq = 12) is a AMBA/PL011
console [ttyAMA0] enabled
dev:f2: ttyAMA1 at MMIO 0x101f2000 (irq = 13) is a AMBA/PL011
dev:f3: ttyAMA2 at MMIO 0x101f3000 (irq = 14) is a AMBA/PL011
fpga:09: ttyAMA3 at MMIO 0x10009000 (irq = 38) is a AMBA/PL011
brd: module loaded
8139cp: 10/100 PCI Ethernet driver v1.3 (Mar 22, 2004)
PCI: enabling device 0000:00:0c.0 (0145 -> 0147)
eth0: RTL-8139C+ at 0xc8872000, 52:54:00:12:34:56, IRQ 27
PCI: enabling device 0000:00:0d.0 (0140 -> 0143)
sym0: <895a> rev 0x0 at pci 0000:00:0d.0 irq 27
sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking
sym0: SCSI BUS has been reset.
scsi0 : sym-2.2.3
scsi scan: INQUIRY result too short (5), using 36
scsi 0:0:0:0: Direct-Access PQ: 0 ANSI: 0
target0:0:0: Beginning Domain Validation
target0:0:0: Ending Domain Validation
scsi scan: INQUIRY result too short (5), using 36
scsi 0:0:2:0: Direct-Access PQ: 0 ANSI: 0
target0:0:2: Beginning Domain Validation
target0:0:2: Ending Domain Validation
Driver 'sd' needs updating - please use bus_type methods
sd 0:0:0:0: [sda] 8388608 512-byte hardware sectors (4295 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 13 00 00 00
sd 0:0:0:0: [sda] Got wrong page
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] 8388608 512-byte hardware sectors (4295 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 13 00 00 00
sd 0:0:0:0: [sda] Got wrong page
sd 0:0:0:0: [sda] Assuming drive cache: write through
sda: unknown partition table
sd 0:0:0:0: [sda] Attached SCSI disk
sd 0:0:2:0: [sdb] READ CAPACITY failed
sd 0:0:2:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
sd 0:0:2:0: [sdb] Sense Key : 0x2 [current]
sd 0:0:2:0: [sdb] ASC=0x0 ASCQ=0x0
sd 0:0:2:0: [sdb] Write Protect is on
sd 0:0:2:0: [sdb] Mode Sense: 28 00 80 00
sd 0:0:2:0: [sdb] Got wrong page
sd 0:0:2:0: [sdb] Assuming drive cache: write through
sd 0:0:2:0: [sdb] Attached SCSI disk
Driver 'sr' needs updating - please use bus_type methods
mice: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
SCTP: Hash tables configured (established 4096 bind 8192)
VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0
input: AT Raw Set 2 keyboard as /class/input/input0
eth0: link up, 100Mbps, full-duplex, lpa 0x05E1
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 10.0.2.2, my address is 10.0.2.15
IP-Config: Complete:
device=eth0, addr=10.0.2.15, mask=255.255.255.0, gw=10.0.2.2,
host=10.0.2.15, domain=, nis-domain=(none),
bootserver=10.0.2.2, rootserver=10.0.2.2, rootpath=
input: ImExPS/2 Generic Explorer Mouse as /class/input/input1
kjournald starting. Commit interval 5 seconds
EXT3 FS on sda, internal journal
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem).
Freeing init memory: 124K


Особенности:
Процессор ARM-VersatilePB (CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), т.е. точно как SAM)
Serial port - AMBA PL011, консоль на нем же (ttyAMA0)
Накопители - образы дисков отображаются на PCI SCSI накопители. Образы, обычно, НЕ должны быть сжаты.
Сетевая карта - задается как параметр из строки запуска, я использую эмуляцию PCI RTL8139

Запускаю машину следующей строкой:
Код

qemu-system-arm -M versatilepb -nographic -kernel zImage -hda rootfs -append "root=/dev/sda rw ip=dhcp console=ttyAMA0" -net nic,model=rtl8139 -net user


Где
rootfs - образ корневой FS
-nographic - позволяет использовать текущую текстовую консоль, если убрать - будет использоваться graphic frame buffer и эмулируется "Versatile hardware, VGA display" в новом окне (текстовый режим мне удобнее, т.к. работают все вкусности с буфером обмена и т.п., в графическом - полная изоляция)
zImage - образ ядра, в том виде как оно получено при компиляции ядра в arch/arm/boot
ip=dhcp - автоматически назначает параметры TCP/IP, виртуальная машина сразу получает сеть и инет (если он есть у хоста). Про "волшебные" хосты 10.0.2.2, 10.0.2.3, 10.0.2.4 - читайте мануал QEMU.
-hda (hdb, hdc ...) первый и последующие образы дисков
-append - командная строка, передаваемая ядру при загрузке

Кроме того, для текстового режима, в коневой FS:
Назначить консоль на ttyAMA0 в /etc/inittab :
Код

co:2345:respawn:/sbin/mingetty ttyAMA0

и разрешить использовать ее в /etc/securetty

Готовые ядра для QEMU и их конфиги можно взять здесь:
http://ftp.linux.org.uk/pub/linux/arm/fedora/qemu/

Здесь же можно взять rootfs FedoraCore Linux v6, v8 и v10
http://ftp.linux.org.uk/pub/linux/arm/fedora/rootfs/
(работают как на QEMU так и на SAM9260)

rootfs производимые buildroot и прочие самодельные - полностью работоспособны (если не забыть про консоль).

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 11.02.2009 г. в 22:00:02
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 13.02.2009 16:08 Редактировалось 13.02.2009 16:08 Сообщение: 7
repairman (Guest)

Да, забыл... если на rootfs в /dev нет линка на устройство ttyAMA0 (что скорее всего так и есть) - его нужно создать перед первой загрузкой:

Код

mknod ttyAMA0 c 204 64


..или заставить udev (если используется) его искать...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 13.02.2009 г. в 17:07:54
Спуститься к концу Подняться к началу
berg (Guest)
Добавлено 14.02.2009 03:44 Редактировалось 14.02.2009 03:44 Сообщение: 8
berg (Guest)

Пасибки за исчерпывающую помощь.
Один вопрос остался, обязательно собирать ядро и рутфс одним
кросстулзом?
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 14.02.2009 11:31 Редактировалось 14.02.2009 11:31 Сообщение: 9
repairman (Guest)

Ядро все-равно чем собирать, т.к. оно не использует libc вообще... arm-linux, arm-uclibc, можно даже arm-elf-gcc собрать... чем бы не собирал - ядро получается плюс-минус одинаковое...

А вот рутфс - тем с чем собраны /lib и чем будете собирать все последующее...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 14.02.2009 г. в 20:13:16
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512