QEMU: запуск программы без ОС

Инструментальные средства для разработчиков

QEMU: запуск программы без ОС

Сообщение kluchev » 10 окт 2009, 16:16

Кто-нибудь использовал QEMU для отладки программ (не linux) для сравнительно мощных процессорных ядер типа ARM9, ColdFire V2 и т.п.? Не хочется таскать с собой повсюду железо... У Coldfire, к примеру, эмулируется UART и Ethernet. В принципе, достаточно для допиливания ядра системы...


Для общего развития...

QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ.

Включает в себя эмуляцию процессоров Intel x86 и устройств ввода-вывода. Может эмулировать 80386, 80486, Pentium, Pentium Pro, AMD64 и другие x86-совместимые процессоры; PowerPC, ARM, MIPS, SPARC, SPARC64, m68k — лишь частично.


http://www.qemu.org/
http://qemu-forum.ipi.fi/
Последний раз редактировалось kluchev 10 окт 2009, 20:42, всего редактировалось 2 раз(а).
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

Re: QEMO

Сообщение invaisor » 10 окт 2009, 18:03

Использовал для запуска linux с приложениями собранными посредством OpenEmbedded для x86 архитектуры и ARM.
С отладкой я там не особо разбирался, но есть поддержка gdb для отладки гостя или можно на госте развернуть gdb для отладки приложений на нем же.
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: QEMO

Сообщение kluchev » 10 окт 2009, 19:41

invaisor, с Linux проблем нет. Работает.

Что собой представляет образ диска в случае Linux или Windows, более-менее понятно. А как быть с голым железом, у которого нет диска вообще? Это образ памяти?

Хочу попробовать позапускать программки без ОС на QEMU. Пока не понял как...
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

Re: QEMO

Сообщение kluchev » 10 окт 2009, 20:05

Есть такая опция mtdblock. Интересно, а как определить адрес старта? Или по умолчанию управление передаётся на начало? Убил бы за такую документацию...
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

Re: QEMO

Сообщение invaisor » 10 окт 2009, 20:32

kluchev писал(а):invaisor, с Linux проблем нет. Работает.
Что собой представляет образ диска в случае Linux или Windows, более-менее понятно. А как быть с голым железом, у которого нет диска вообще? Это образ памяти?
Хочу попробовать позапускать программки без ОС на QEMU. Пока не понял как...

Тогда загрузка по сети, если возможно. Например с использованием pxe. (Сначала получаем ip, получаем наше ядро по TFTP, а потом по NFS монтируем корневую файловую систему. Вот тут на VirtualBox это делается). Еще есть u-boot и RedBoot.

kluchev писал(а):Есть такая опция mtdblock. Интересно, а как определить адрес старта? Или по умолчанию управление передаётся на начало? Убил бы за такую документацию...

Насколько я понимаю да (управление передаётся на начало). Тогда переданный через этот параметр образ будет отображаться ядром как /dev/mtdblock{N}. Например: qemu-system-arm -kernel zImage.bin -mtdblock qemu-n800.img -m 130 -append "root=/dev/mtdblock1 rootfstype=jffs2".
Другой вопрос в том, что и ядро надо где-то хранить и доставать оттуда. Для этого можно к примеру использовать RedBoot - зашить во флэш сначала RedBoot, а далее образ ядра. При старте RedBoot считывает образ ядра в ОЗУ и передает ему выполнение, ядро получив выполнение монтирует корневую файловую систему в режиме rw или ro, инициализирует периферию и начинает выполнение пользовательских программ или еще чего.
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: QEMO

Сообщение kluchev » 10 окт 2009, 20:41

invaisor писал(а):Другой вопрос в том, что и ядро надо где-то хранить и доставать оттуда. Для этого можно к примеру использовать RedBoot - зашить во флэш сначала RedBoot, а далее образ ядра. При старте RedBoot считывает образ ядра в ОЗУ и передает ему выполнение, ядро получив выполнение монтирует корневую файловую систему в режиме rw или ro, инициализирует периферию и начинает выполнение пользовательских программ или еще чего.


Проблема в том, что я не хочу грузить какое-либо ядро. Я хочу в QEMU запустить нечто типа "Hello World" с выводом через UART.
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

Re: QEMU: запуск программы без ОС

Сообщение kluchev » 10 окт 2009, 20:46

Интересно, а если -kernel hello.elf подсунуть, прокатит?
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

Re: QEMU: запуск программы без ОС

Сообщение invaisor » 10 окт 2009, 21:21

kluchev писал(а):Интересно, а если -kernel hello.elf подсунуть, прокатит?

Проверил с командой qemu-system-arm -M versatilepb -kernel redboot.elf.
Прокатило, но покрашилось из-за доступа к адресу 0x80010040, который вне RAM или ROM.
Что неудивительно, т.к. redboot.elf для SDK-2.0.
Код: Выделить всё
qemu: fatal: Trying to execute code outside RAM or ROM at 0x80010040

R00=00000000 R01=00000000 R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=00000000 R14=00000000 R15=80010040


Вариант, который не использует код по данным адресам, даже не зависает.
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: QEMU: запуск программы без ОС

Сообщение kluchev » 10 окт 2009, 21:49

invaisor писал(а):Вариант, который не использует код по данным адресам, даже не зависает.


Спасибо, попробую завтра. А то на даче мне скачать компилятор весьма затруднительно, большой уж больно :smile:
В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb


Вернуться в Open Source

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron