Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.84] |
|
Сообщ.
#1
,
|
|
|
Итак, отправной точкой для данной темы нам будет служить оригинальная статья: Gumstix emulation for QEMU, в которой говориться о возможности запуска образа на другой платформе.
Достаточно принципиальным фактом является то, что Gumstix базируется на ARM архитектуре и это ограничивает круг доступных эмуляторов. В данной теме будет обсуждаться эмулятор QEMU. Не смотря на наличие его компиляций под разные операционные системы, простейшим случаем будет использование его под *nix . Берём актуальную, на данный момент, версию qemu-0.12.2. Разворачиваем архив. Переходим в корень. Для начала, стоит сконфигурить сборку ./configure --target-list=arm-softmmu make make install так-же можно использовать дополнительные директивы при сборке (make): all clean cscope distclean dvi html info install install-doc recurse-all speed tar tarbin test build-all После успешной сборки и установки эмулятора, можно переходить к сборке образа. В роли загрузчика применяется U-Boot Его исполняемый код для Verdex можно взять здесь. Там-же можно скачать образ ядра и файловой системы; или-же использовать полученные образы в Здравствуй, Мир! (ls -1 ~/gumstix/gumstix-oe/tmp/deploy/glibc/images/gumstix-custom-verdex/). Эти три составляющие следует собрать в один файл в соответствии c аппаратной архитектурой. rm flash dd of=flash bs=1k count=128k if=/dev/zero dd of=flash bs=1k conv=notrunc seek=0 if=uBoot.bin dd of=flash bs=1k conv=notrunc seek=256 if=rootfs.jffs2 dd of=flash bs=1k conv=notrunc seek=31744 if=uImage.bin Единый образ получен, пришло время запуска: qemu-system-arm -M verdex -pflash flash -monitor null -nographic -m 289 Процесс пошёл, мы видим родные строчки процесса загрузки.. но в определённый момент, всё это дело омрачает навязчивое сообщение: Internal resource leak before ... Причиной его появления, на сколько я понимаю, является неудаление всех созданных временных переменных в исходном коде самого эмулятора - собственно это сообщение и выводится для сигнализации о возникновении такой ситуации (см. target-arm/translate.c). И с ходу, это дело подрулить мне не удалось. Однако, в природе ещё существует QEMU OpenSolaris релиз. Скачиваем qemu-0.9.1-06222008-sol, конфигурируем, собираем и устанавливаем аналогично. Запускаем: [centos@CentOS GUMimg]$ qemu-system-arm -M verdex -pflash flash -nographic -m 289 pxa2xx_clkpwr_write: CPU frequency change attempt U-Boot 1.2.0 (May 10 2008 - 21:22:03) - PXA270@600 MHz - 1604 *** Welcome to Gumstix *** DRAM: 256 MB pflash_write: Unimplemented flash cmd sequence (offset 00000000, wcycle 0x0 cmd 0x0 value 0x90 Flash: 32 MB Using default environment pflash_write: Unimplemented flash cmd sequence (offset 00000000, wcycle 0x0 cmd 0x0 value 0x90 pflash_write: Unimplemented flash cmd sequence (offset 00000000, wcycle 0x0 cmd 0x0 value 0x90 Hit any key to stop autoboot: 0 Instruction Cache is ON Copying kernel to 0xa2000000 from 0x01f00000 (length 0x00100000)...done ## Booting image at a2000000 ... Image Name: Angstrom/2.6.21/gumstix-custom-v Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1030052 Bytes = 1005.9 kB Load Address: a0008000 Entry Point: a0008000 OK Starting kernel ... Linux version 2.6.21 (centos@CentOS) (gcc version 4.1.2) #1 Tue Jan 19 14:46:39 MSK 2010 CPU: XScale-PXA270 [69054114] revision 4 (ARMv5TE), cr=00007977 Machine: The Gumstix Platform Memory policy: ECC disabled, Data cache writeback Run Mode clock: 208.00MHz (*16) Turbo Mode clock: 624.00MHz (*3.0, active) Memory clock: 104.00MHz (/2) System bus clock: 208.00MHz CPU0: D VIVT write-back cache CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets Built 1 zonelists. Total pages: 65024 Kernel command line: console=ttyS0,115200n8 root=1f01 rootfstype=jffs2 reboot=cold,hard PID hash table entries: 1024 (order: 10, 4096 bytes) Console: colour dummy device 80x30 Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 256MB = 256MB total Memory: 257664KB available (1808K code, 196K data, 148K init) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 Time: pxa_timer clocksource has been installed. NET: Registered protocol family 2 IP route cache hash table entries: 2048 (order: 1, 8192 bytes) TCP established hash table entries: 8192 (order: 4, 65536 bytes) TCP bind hash table entries: 8192 (order: 3, 32768 bytes) TCP: Hash tables configured (established 8192 bind 8192) TCP reno registered JFFS2 version 2.2. (NAND) (SUMMARY) (C) 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler cfq registered (default) Console: switching to colour frame buffer device 80x24 pxa2xx-uart.0: ttyS0 at MMIO 0x40100000 (irq = 22) is a FFUART pxa2xx-uart.1: ttyS1 at MMIO 0x40200000 (irq = 21) is a BTUART pxa2xx-uart.2: ttyS2 at MMIO 0x40700000 (irq = 20) is a STUART Probing Gumstix Flash ROM at physical address 0x00000000 (16-bit bankwidth) pflash_write: Unimplemented flash cmd sequence (offset 00000000, wcycle 0x0 cmd 0x0 value 0xf0 Gumstix Flash ROM: Found 1 x16 devices at 0x0 in 16-bit bank Intel/Sharp Extended Query Table at 0x0031 Using buffer write method Using static partitions on Gumstix Flash ROM Creating 3 MTD partitions on "Gumstix Flash ROM": 0x00000000-0x00040000 : "Bootloader" 0x00040000-0x01f00000 : "RootFS" 0x01f00000-0x02000000 : "Kernel" TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 XScale DSP coprocessor detected. VFS: Mounted root (jffs2 filesystem). Freeing init memory: 148K INIT: version 2.86 booting Starting the hotplug events dispatcher udevd Synthesizing the initial hotplug events Remounting root file system... gumstix_smc91x_init: smc91x chip found gumstix_smc91x_init: found 1 smc91x chip(s) smc91x: IOADDR d0870300 doesn't match configuration (0). smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@cam.org> eth0: SMC91C11xFD (rev 1) at d0870300 IRQ 131 DMA 8 [nowait] eth0: Ethernet addr: 52:54:00:12:34:56 Bluetooth: Core ver 2.11 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP ver 2.8 Bluetooth: L2CAP socket layer initialized Bluetooth: HIDP (Human Interface Emulation) ver 1.2 usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb pxa27x-ohci pxa27x-ohci: PXA27x OHCI pxa27x-ohci pxa27x-ohci: new USB bus registered, assigned bus number 1 pxa27x-ohci pxa27x-ohci: irq 3, io mem 0x4c000000 pxa27x-ohci pxa27x-ohci: init err (00000000 0000) drivers/usb/host/ohci-pxa27x.c: can't start pxa27x pxa27x-ohci pxa27x-ohci: startup error -75 pxa27x-ohci pxa27x-ohci: USB bus 1 deregistered pxa27x-ohci: probe of pxa27x-ohci failed with error -75 Detected netCF-vx board: using older GPIO configuration CPLD responded with: 00 Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM ver 1.8 root: mount: special device /dev/hda1 does not exist root: mount: special device /dev/mmcblk0p1 does not exist root: mount: special device /dev/sda1 does not exist Setting up IP spoofing protection: rp_filter. Configuring network interfaces... eth0: link up eth0 no wireless extensions. udhcpc (v1.2.1) started udhcpc[564]: udhcpc (v1.2.1) started Sending discover... udhcpc[564]: Sending discover... Sending select for 10.0.2.15... udhcpc[564]: Sending select for 10.0.2.15... Lease of 10.0.2.15 obtained, lease time 86400 udhcpc[564]: Lease of 10.0.2.15 obtained, lease time 86400 adding dns 10.0.2.3 cs: pcmcia_socket0: time out after reset. cfio: module license 'unspecified' taints kernel. cs: pcmcia_socket0: time out after reset. Before register driver After register driver Error for wireless request "Set ESSID" (8B1A) : SET failed on device wlan0 ; No such device. Error for wireless request "Set Mode" (8B06) : SET failed on device wlan0 ; No such device. SIOCGIFFLAGS: No such device wlan0 No such device udhcpc (v1.2.1) started udhcpc[616]: udhcpc (v1.2.1) started SIOCGIFINDEX failed!: No such device udhcpc[616]: SIOCGIFINDEX failed!: No such device done. Configuring dbus-1 System startup links for /etc/init.d/dbus-1 already exist. Configuring ntpdate update-rc.d: /etc/init.d/busybox-cron: file does not exist System startup links for /etc/init.d/ntpdate already exist. Configuring update-modules INIT: Entering runlevel: 5 Starting Dropbear SSH server: dropbear. Starting HTTP server: boagethostbyname:: Success Starting system message bus: dbus. Starting ntpd: done Starting syslogd/klogd: done Starting 32kHz clock...Settled Starting Bluetooth subsystem: Trying baud rate 921600... No response after reset No response from BT module Trying baud rate 921600... No response after reset No response from BT module Trying baud rate 115200... No response after reset No response from BT module Trying baud rate 57600... No response after reset No response from BT module Can't initialize device: Success ALSA: loading sound modules... ASoC version 0.13.0 AC97 SoC Audio Codec 0.6 asoc: AC97 HiFi <-> pxa2xx-ac97 mapping ok pxa2xx_ac97_cold_reset: cold reset timeout (GSR=0x0) pxa2xx_ac97_read: read error (ac97_reg=7c GSR=0x0) pxa2xx_ac97_read: read error (ac97_reg=7e GSR=0x0) AC'97 0 access is not valid [0xffffffff], removing mixer. soc-audio: probe of soc-audio failed with error -5 ALSA: Restoring mixer settings... /usr/sbin/alsactl: load_state:1329: No soundcards found... Running ntpdate to synchronize clockError : Name or service not known . Starting bonjour: Starting Vixie-cron. Starting i2c... tsc2003 i2c touch screen controller i2c: error: exhausted retries i2c: msg_num: 0 msg_idx: -2000 msg_ptr: 0 i2c: ICR: 000007e0 ISR: 00000002 i2c: log: [00000442:000007e0] I2C: i2c-0: PXA I2C adapter tsc2003 i2c touch screen controller i2c: error: exhausted retries i2c: msg_num: 0 msg_idx: -2000 msg_ptr: 0 i2c: ICR: 000007e0 ISR: 00000002 i2c: log: [00000442:000007e0] I2C: i2c-1: PXA I2C adapter i2c /dev entries driver OpenEmbedded Linux gumstix-custom-verdex ttyS0 Angstrom 2007.9-test-20100119 gumstix-custom-verdex ttyS0 gumstix-custom-verdex login: root Password: Welcome to gumstix! For information on how to customize or update this software please visit: http://www.gumstix.net root@gumstix-custom-verdex:~$ Однако, если вдруг захочется пересобрать запускаемый образ и запустить его, нас будет ожидать сюрприз pflash_write: Unimplemented flash cmd sequence (offset 014c0000, wcycle 0x1 cmd 0x20 value 0x70 Gumstix Flash ROM: block erase error: (bad command sequence, status 0xffff) Erase at 0x01480000 failed immediately: errno -22 Gumstix Flash ROM: Waiting for chip to be ready timed out. Status 0 Erase at 0x01460000 failed immediately: errno -5 .... Выход пока я знаю только один: запустить однажды образ из под оригинального qemu, а затем его можно запускать из под qemu-sol. В процессе первого запуска, образ подвергается некоторой модификации. Отдельно можно отметить наличие ещё qemu-gumstix-2006-07-12, но список интересуемых нас платформ слишком мал: 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), gumstix PXA255 Gumstix. Приложение: Цитата QEMU_Supported-machines syborg Syborg (Symbian Virtual Platform) musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S) mainstone Mainstone II (PXA27x) n800 Nokia N800 tablet aka. RX-34 (OMAP2420) n810 Nokia N810 tablet aka. RX-44 (OMAP2420) cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310) sx1 Siemens SX1 (OMAP310) V2 sx1-v1 Siemens SX1 (OMAP310) V1 tosa Tosa PDA (PXA255) akita Akita PDA (PXA270) spitz Spitz PDA (PXA270) borzoi Borzoi PDA (PXA270) terrier Terrier PDA (PXA270) connex Gumstix Connex (PXA255) verdex Gumstix Verdex (PXA270) lm3s811evb Stellaris LM3S811EVB lm3s6965evb Stellaris LM3S6965EVB realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S) realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore) realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8 realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9 versatilepb ARM Versatile/PB (ARM926EJ-S) versatileab ARM Versatile/AB (ARM926EJ-S) integratorcp ARM Integrator/CP (ARM926EJ-S) (default) |
Сообщ.
#2
,
|
|
|
Кроме всего прочего, QEMU предоставляет и эмуляцию устройства вывода информации.
Для этого, перед конфигурацией и сборкой QEMU необходимо проверить в системе наличия SDL-devel пакета. Если таковой уже установлен, при конфигурировании увидим: SDL support yes Процесс последующей сборки и установки остаётся без изменений. Остался вопрос: каким образом осуществить перенос файлов в/из эмулируемой системы? Один из вариантов: имитация внешнего носителя, а именно SD карты; т.е. создание его образа и подключение к обоим системам. После нескольких различных неудачных попыток создать файл образа SD, остановился на создании его средствами mksdcard. 1. Создаём образ SD ./mksdcard 128M sd.img 2. Монтируем его к какой-либо точке и производим запись требуемых данных mount sd.img SD -o loop 3. Выполняем umount SD 4. Запускаем эмулятор qemu-system-arm -M verdex -pflash flash -serial stdio -m 289 -sd sd.img 5. Далее, через терминальное окно осуществляем консольные команды. 6. Данные с образа SD будут тут: /media/mmcblk0 Прикреплённая картинка
|
Сообщ.
#3
,
|
|
|
также, можно перенаправить имеющиеся устройства, например, добавляем эмуляцию манипулятора "мышь":
qemu-system-arm -M verdex -pflash flash -serial stdio -m 289 -sd sd.img -usbdevice mouse Прикреплённая картинка
|
Сообщ.
#4
,
|
|
|
Цитата SVK @ всё это дело омрачает навязчивое сообщение: Internal resource leak before ... Цитата SVK @ Однако, в природе ещё существует QEMU OpenSolaris релиз. С выходом 0.14.0 версии qemu шаманства с двумя версиями эмулятора уходят в прошлое |