Как я разобрался с эмулятором

В общем, в этот четверг я разобрался, почему не работал эмулятор qemu-JZ. К сожалению, мне так и не удалось запустить на нем Linux. U-Boot и ядро загружаются, но не удается получить работоспособную файловую систему. На некоторых из них с ошибкой валится стартовая проверка целостности флешки (это относится к ФС с сайта Ingenic), в сборках konst.cranky странным образом пропадают некоторые файлы (причем необходимые для запуска системы – в одном случае нет /bin/sh, в другом – /dev/console). Кроме того, удалось заставить китайскую утилиту для создания образа флешки работать в MinGW (а также написать свою, практически аналогичную) – надо явным образом добавить ко всем вызовам open() флаг O_BINARY.

Выложу, что ли, подправленные архивы с исходниками, желающие могут поковыряться. Qemu надо собирать, как описано на форуме qemu:

1. Установить MSYS, msysDTK, MinGW.
2. В MinGW установить или скомпилировать из исходников библиотеки directx-devel, SDL, zlib
3. Затем распаковать архив с qemu-JZ, выполнить ./configure --static --target-list=mipsel-softmmu, затем make.

После этого забираем из директории mipsel-softmmu готовый файл qemu-mipsel-softmmu.exe.

С поправленным jz-tools все еще проще. Распаковываем и собираем make-ом.

Файлы лежат у меня:

http://shura.luberetsky.ru/tools/qemu-JZ.rar
http://shura.luberetsky.ru/tools/jz_tools.rar

Кто хочет “поковырять” – берите. Подозреваю, что в qemu-JZ не совсем адекватно эмулируется флешка, оттого и глюки ядра Linux при ее проверке.

Кстати, насчет глюков на уровне ядра операционки. Если в любой нормальной ОС вылет драйвера файловой системы – это “тушите свет, сливайте воду” и полный kernel panic (в общем, что я и наблюдал), то в кошерном Minix паникеров расстреливает и заменяет свежими заградотряд, почему-то названный Reincarnation Server. Вчера “добился” сбоя драйвера VFS (Virtual File System) в Minix 3.1.8 – представьте себе, это совершенно незаметно, заглючивший драйвер моментально перезапустился. Все-таки микроядерность имеет свои преимущества.

Кроме того, в документации на процессорное ядро MIPS32 4Kc (оно совместимо с XBurst, но китайцы этого не афишируют, чтобы не платить лицензионные отчисления) написано о том, что предусмотрен специальный механизм, позволяющий не выгружать из MMU (Memory Management Unit) страницы, соответствующие ядру. Это позволяет избежать “дорогостоящего” переключения контекста, которое в более традиционных системах возникает при каждом вызове ядра и возврате в “пользовательский” процесс (а они у микроядер происходят часто). Надо поиграться, а то и сравнить производительность в обоих случаях.

Комментарии отключены.