Господа, получалось ли у кого запустить хотя-бы ядро на qemu-system-arm.
То, которое идет с qemu в примерах запускается на ура.
2.6.28 с патчем на кварц и без патча, не запускается вообще,
даже не распаковывается...
По qemu-system-arm -M ? вроде выдает ARM926EJ-S, что не так...
з.ы. ядро пытаемое на qemu, замечательно работает на железе.
з.ы.ы. и да, использую zImgae, a не uImage )
>По qemu-system-arm -M ? вроде выдает ARM926EJ-S, что не так...
Имхо там эмулируется система - это предполагает в том числе наличие видеоадаптера, у нас же нет ничего. При сборке ядра нужно наверно указывать тип системы - например я видел описания с ARM Versatile. Я не пользуюсь эмулятором... Раньше брал готовые ядра для соответствующей эмулируемой системы.
Я все понимаю, но не виснуть же еще даже не загрузившись.
Можно как вариант юзать и готовые ядра, благо такие есть, особенно учитывая, что сами фичи ядра и аппаратные на эмуляторе не проверишь. Смотрел то в сторону тестирования рутфс изначально, но думал, что можно будет нативно все сделать...
из поставляемого zImage можно вытащить конфиг ядра. на target (как это по-русски?) оно лежит в "/proc/conf.gz". можно и прямо из ядра утилитами из исходников ядра.
Ядро для SAM9260 без изменений на QEMU не работает, там переферия вообще другая... По бинарникам уровня юзера - 100% совместима...
Эмулируемые qemu-system-arm конфигурации железа:
Вот загрузка ядра на ARM-Versatile PB:
Особенности:
Процессор ARM-VersatilePB (CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), т.е. точно как SAM)
Serial port - AMBA PL011, консоль на нем же (ttyAMA0)
Накопители - образы дисков отображаются на PCI SCSI накопители. Образы, обычно, НЕ должны быть сжаты.
Сетевая карта - задается как параметр из строки запуска, я использую эмуляцию PCI RTL8139
Запускаю машину следующей строкой:
Где
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 :
Ядро все-равно чем собирать, т.к. оно не использует libc вообще... arm-linux, arm-uclibc, можно даже arm-elf-gcc собрать... чем бы не собирал - ядро получается плюс-минус одинаковое...
А вот рутфс - тем с чем собраны /lib и чем будете собирать все последующее...