Linux на платформах MIPS

встраиваемые модели

Модераторы: Olej, vikos

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Linux на платформах MIPS

Непрочитанное сообщение tundra37 » 05 мар 2012, 16:27

Начну с конца :) http://developer.mips.com/android/download-android-sdk/
Это не исходники, а именно SDK :
Download your host’s MIPS SDK toolset for Ice Cream Sandwich 4.0.3 from
Host Platform Package Android API Version Size (bytes) MD5 Checksum
Windows android-sdk_r16m-windows.zip 16 363182455 8beae38f6b2b3dfe28f9a8e48db81c09
Linux android-sdk_r16m-linux.zip 16 354931668 ff37a0577aace6f9db9ffdf9cf1c259d
---------------------------------
И пока я искал, где бы про это написать, они уже выложили для 4-го Андроида, а я скачал для 3.1
Те кто юзал SDK для ARM знает что там: кроме средств разработки на яве и примеров есть ЭМУЛЯТОР,
который позволяет играться с Андроидом на виртуальном смарте под Виндой или Линуксом.

Теперь начало: недавно купил плеер с Андроидом 2.2 Iconbit XDS1003d. Я конечно представлял что на АРМ лучше, но не ожидал что с MIPS такая ж...
Тем не менее железка работает, показывает и через HDMI и через тюльпаны, сеть тоже настроил : LAN и WiFi. Кинулся ставить программы и игры
и обнаружил, что в них очень часто используются нативные библиотеки и на моем Андроиде они не ставятся. Сначала была идея поэмулировать эту проблему на Андроид х86,
но понял что бесполезно и вот УРА: есть эмулятор именно для MIPS и средства разработки. Плюс есть еще и NDK, т.е. в принципе можно сделать нативные библиотеки.
Но увы скачанный эмулятор оказался СТРАШНЫЙ тормоз. Если кто работатал с эмулятором для Андроид 2.2 для АРМ, то это небо и земля. Для 2.2 я посмотрел - там терпимая скорость.
А вот для Андроида 3.1 под MIPS(там в SDK и для АРМ есть) эмулятор грузит Андроид полчаса и столько же приходится ждать реакции на нажатые иконки. А иногда и вообще виснет, точнее
циклит , а на экране тишина.
Теперь придется опять качать и проверять. Позже выложу инструкцию как это все запускать, т.к. пока не вижу смысла. Для энтузиастов две подсказки: создать переменую окружения ANDROID_SDK_HOME
и начинать с батника Андроид.
Попутно поискал как сейчас дело с qemu(именно ее исходники использованы для эмулятора MIPS и ARM). Сначала нашел статью про подвиги mamaich во внедрении qemu и win 95 в смартфоны,
а потом нашел новинки в debian - там много интересного: Debian для АРМ и MIPS, эмуляторы i386 на MIPS и не только. Т.е. в перспективе можно будет win95 запустить.

Пардон за сумбурное и неполное изложение. Жду критику и вопросы.

Ali
Писатель
Сообщения: 57
Зарегистрирован: 08 окт 2011, 08:00
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение Ali » 06 мар 2012, 10:26

Сумбурные вопросы и критика: :-)
Вам linux или андроид?
http://www.debian.org/ports/mips/
http://www.linux-mips.org/wiki/Main_Page

Код: Выделить всё

$ qemu-system-mipsel -M ?
Supported machines are:
mips       mips r4k platform
magnum     MIPS Magnum
pica61     Acer Pica 61
malta      MIPS Malta Core LV (default)
mipssim    MIPS MIPSsim platform
$ qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta  -append "root=/dev/ram console=ttyS0" -nographic 
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.32-5-4kc-malta (Debian 2.6.32-41) (ben@decadent.org.uk) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 Mon Jan 16 17:01:21 UTC 2012
[    0.000000] 
[    0.000000] LINUX started...

https://openwrt.org/
http://www.ovpworld.org/download_MIPS.php

bose
Писатель
Сообщения: 107
Зарегистрирован: 23 фев 2012, 14:41
Откуда: Киев
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение bose » 06 мар 2012, 13:24

tundra37 писал(а): Но увы скачанный эмулятор оказался СТРАШНЫЙ тормоз. Если кто работатал с эмулятором для Андроид 2.2 для АРМ, то это небо и земля.
Скорость эмулирования может зависить от возможности оборудования на которой работает виртуальная машина. У меня на одном ноутбуке IntelCore 2 DUO - эмулятор (qemu) работает без тормозов. На паходном нетбуке - Intel Atom N550, можно сказать что эмулятор не работает при этом очень большая загрузка процессора. Всё дело в Intel® Virtualization Technology (Secure Virtual Machines - AMD).
В cpuinfo они обозначены аббревиатурами vmx для Intel (svm для AMD) в поле flags.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение Olej » 06 мар 2012, 14:10

bose писал(а):
tundra37 писал(а): Но увы скачанный эмулятор оказался СТРАШНЫЙ тормоз. Если кто работатал с эмулятором для Андроид 2.2 для АРМ, то это небо и земля.
Скорость эмулирования может зависить от возможности оборудования на которой работает виртуальная машина. У меня на одном ноутбуке IntelCore 2 DUO - эмулятор (qemu) работает без тормозов. На паходном нетбуке - Intel Atom N550, можно сказать что эмулятор не работает при этом очень большая загрузка процессора. Всё дело в Intel® Virtualization Technology (Secure Virtual Machines - AMD).
В cpuinfo они обозначены аббревиатурами vmx для Intel (svm для AMD) в поле flags.
т.е. QEMU "c KVM" и "без KVM":

Код: Выделить всё

[olej@notebook include]$ lsmod | grep kvm
kvm_intel              34764  0 
kvm                   205352  1 kvm_intel
Только как я предполагаю, механизм аппаратной виртуализации и Intel и AMD "играет" только относительно виртуализации x86 платформы, а при виртуализации и ARM и MIPS всё происходит методом программной эмуляции в QEMU.
Или не так?

Ali
Писатель
Сообщения: 57
Зарегистрирован: 08 окт 2011, 08:00
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение Ali » 06 мар 2012, 22:12

Olej писал(а):...
Только как я предполагаю, механизм аппаратной виртуализации и Intel и AMD "играет" только относительно виртуализации x86 платформы, а при виртуализации и ARM и MIPS всё происходит методом программной эмуляции в QEMU.
Или не так?
Да, так. Технология VT-x не позволяет перехватывать ошибки типа "неизвестная инструкция" (Invalid Opcode). Про AMD не знаю, но даже если и позволяет, то придется интерпритировать маш.код мипса в интел. Правда, можно исхитриться и оптимизировать или иногда избежать смены контекстов и промахи кешей за счёт аппаратной поддержки.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение Olej » 08 мар 2012, 11:03

tundra37 писал(а): Попутно поискал как сейчас дело с qemu(именно ее исходники использованы для эмулятора MIPS и ARM). Сначала нашел статью про подвиги mamaich во внедрении qemu и win 95 в смартфоны,
а потом нашел новинки в debian - там много интересного: Debian для АРМ и MIPS, эмуляторы i386 на MIPS и не только. Т.е. в перспективе можно будет win95 запустить.
Вот здесь на этом форуме:
viewtopic.php?f=5&t=1516&start=0
- уже было подробно "как сейчас дело с qemu" : проект BuildRoot с полной сборкой и ядра Linux, и всего нужного инструментария под вашу платформу + всё это из самых свежих источников + сборка "от нуля", что очень способствует пониманию:
Изображение

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение tundra37 » 08 мар 2012, 20:49

Olej писал(а):Только как я предполагаю, механизм аппаратной виртуализации и Intel и AMD "играет" только относительно виртуализации x86 платформы, а при виртуализации и ARM и MIPS всё происходит методом программной эмуляции в QEMU.
Или не так?
Именно так. Но для не-х86 платформ используется динамическая трансляция http://www.posix.ru/apps/virt_mach2/ Грубо говоря кусок кода один раз переводится в х86 и сохраняется в кеш. Поэтому все выполняется быстрее, чем при простой эмуляции.

Теперь про дебиан и разные статьи про компиляцию qemu. Беда в том, что в открытых исходниках эмулируется очень мало периферии( по крайней мере это было раньше). Поэтому для проверки Андроида бессмысленно мучатся с построением из исходников. Все равно на нем нельзя будет проверить экран, сенсоры и т.п.
Возможно для смартфонов чуть проще, а вот в плеерах видео-процессор(и аудио) встроен в основной проц и сильно засекречен. Если проги для основного проца можно хотя бы дизассемблировать, то для видео это с трудом французам(или итальянцам) удалось и то не до конца.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение Olej » 12 мар 2012, 23:34

Здесь, кстати, на титульной странице сайта, дали ссылку на отличный перевод:
http://dmilvdv.narod.ru/Translate/ELSDD/index.html
P. Raghavan, Amol Lad, Sriram Neelakandan, "Разработка и внедрение системы на встраиваемом Linux" (перевод на русский язык отдельных глав книги).
Но там даже не столько встраиваемый Linux вообще, сколько встраиваемый Linux на примере MIPS.

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение tundra37 » 03 июн 2012, 16:56

Спасибо за ссылки. Русский перевод почитал - очень полезная инфа. Пробовал много всякого и остановился все-таки на освоении эмулятора от MIPS. Тут ждало разочарование: ядро в специальном формате и подсунуть свое не получится, наверное. Ну и надо его специально готовить, ведь это ядро под qemu(с правками). Заустил поиск "Android on qemu" и ура!!! http://developer.mips.com/android/andro ... ing-guide/ - похоже разработчики заинтересованы в том, чтобы эмулятор тестили.
Т.к. в поисках исходников для других своих интересов я освоил svn и начал осваивать git, то решил рискнуть. Поставил cygwin и закачал туда нужные git для Андроида. Заодно пришлось освоить установку repo :-D Закачалось 7 Гбайт. Сунулся смотреть и мейкать QEMU, но он оказался завязан на доп.пакеты. Попробовал собрать все под cygwin, но не осилил поиски javac. После решил поставить Линукс, но увы сеть под ним не заработала. Пришлось ставить в виртуалке. Centos 5.7, т.к. на работе он у меня стоит.
Теперь перечислю полезную инфу для тех, кто захочет повторить.
1) В centos нет git. Он скачивается в исходниках с code.google.com версия 1.7.10.х ( ссылку дам позже)
2) Пришлось осваивать yum, т.к. для построения из этого git-а много чего надо
Сначала искал в Интернете по сообщениям об ошибках, потом освоил :
yum provides *bin/javac - ищет пакеты с подобным контентом
Т.к. я уже много чего прочитал, то угадать что именно надо ставить было легко.

Помогло вот это : http://forums.fedoraforum.org/showthread.php?t=234634

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev
gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev
lib32readline5-dev lib32z-dev

Пришлось подправить под yum, написать devel и X11 и из-за лени ставил только часть.

Результаты: есть ядро под MIPS, есть эмулятор, вроде есть и система, но надо образ делать, а инфы нет
Порыскал по папкам и сделал make avd и sdkmanager, но android list avd ругается.

Строю все в консоли, т.к. Х-ы требуют много памяти и тормозят все. Все равно построитель Андроида без GUI у меня.
Ну вот доставил squashtool и gperf и Андроид 2.2.1 запустился. Мобила без кнопок - неудобно.
Вложения
Android-kb.png
Android-kb.png (35.72 КБ) 12540 просмотров
Android-ruslin.png
Android-ruslin.png (75 КБ) 12538 просмотров
Android-zoom.png
Android-zoom.png (39.93 КБ) 12538 просмотров

tundra37
Писатель
Сообщения: 149
Зарегистрирован: 03 мар 2012, 19:26
Контактная информация:

Re: Linux на платформах MIPS

Непрочитанное сообщение tundra37 » 21 июн 2012, 19:55

Продолжаем. В своих исследованиях сначала зашел в тупик, т.к. загнать прошивку от плеера с наскоку нереально было. Поэтому решил для начала загнать прошивку от планшета, но естественно на чипе MIPS. Такие редки, но есть семейство Ainol Novo7 и два из них : Basic и Palldin на MIPS. Параллельно выяснил куда запрягается лошадь в эмуляторе из Андроид СДК. Кратенькая справочка и пояснения по моему эксперименту:
1) -kernel задает используемое ядро. Можно подсунуть ядро из реальной прошивки, но работать оно не будет, т.к. в эмуляторе другая периферия и эмулятор не все корректно эмулирует - ядро надо патчить. В конце концов реальное ядро не понадобилось, хотя в дальнейшем можно поэкспериментировать: я нашел исходники именно для этого ядра(для эмулятора исходники есть в СДК для МИПС).
2) -system задает основную файловую систему. Файл для нее и в эмуляторе и в прошивках называется system.img( в моем плеере squashfs1.img) Некоторые подробности про ядро и system здесь: viewtopic.php?f=18&t=1655&p=4165#p4165
3) -ramdisk это в терминологии Линукс initrd Используется при загрузке системы
Есть еще один ключик задающий то, что монтируется в папку data, но тут все сильно зависит от устройства и я пока не буду описывать, т.к. не полностью разобрался. В прошивках обычно это называется yaffs2_2.img , хотя может я что-то напутал.
Теперь опуская подробности моих мучений в перемалывании гигабайтов инфы - результат. Берем прошивку _http://itpartner.net.ua/download/umpc/android/firmware/novo7_basic/update_basic_4.0.3.zip Вытаскиваем из нее system.img Монтируем в Линуксе (ее формат ext4), подменяем папки bin и lib аналогичными из файла system.img из эмулятора и упаковываем в формате yaffs2. В эмуляторе создаем устройство для чипа MIPS и Андроида 4.0.3 с именем MIPS1 Выполняем команду ./emulator-mips -avd MIPS1 -system ainol-4bin.img -partition-size 350 ( увеличен размер флешки для дальнейших экспериментов). Результат можно посмотреть тут : http://youtu.be/PB7fzHtjEhI Что не работает: нет сети(в эмуляторе была, сейчас виснет) и долбит сообщение про Baidu Input. Прямо сейчас попробую проделать аналогичное с прошивкой HTC HERO10K - это уже АРМ

Ответить

Вернуться в «Одноплатные компьютеры»

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

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