====== Портирование Android ICS 4.0.3 на SomIQ-AM37 ====== В качестве готовой сборки Android ICS берем дистрибутив Android IceCream Sandwich (ICS) 4.0.3 для процессоров Texas Instruments Sitara(TM) AM3715, DevKit 3.0.0. Этот дистрибутив содержит: драйвер SGX (3D графический акселератор), WLAN и Bluetooth для чипа TI WL1271 (см [[somiq-wlan|WLAN адаптер для Somiqboard]]), USB mass storage, и т.п. Также в дистрибутиве присутствует компилятор ARM GCC. **Полезные ссылки** [[http://code.google.com/p/rowboat/wiki/ICSonBeagleboard]] [[http://www.ti.com/tool/androidsdk-sitara]] [[http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/TI_Android_ICS_4_0_3_DevKit_3_0_0/index_FDS.html]] [[http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.0_DevelopersGuide]] [[http://processors.wiki.ti.com/index.php/TI-AM37x-Android-4.0-Guide]] [[http://processors.wiki.ti.com/index.php/TI-Android-ICS-PortingGuide]] ===== Пресобранный образ ===== В данной таблице данны ссылки на файлы, компиляция которых описана ниже. ^ Файл ^ Размер ^ Ссылка ^ | MLO (для DDR 512M) | 20k | [[http://mentorel.ru/downloads/somiq-am37/android/ics/demo/MLO]] | | u-boot.bin | 202k | [[http://mentorel.ru/downloads/somiq-am37/android/ics/demo/u-boot.bin]] | | uImage | 3.1M | [[http://mentorel.ru/downloads/somiq-am37/android/ics/demo/uImage]] | | Полное демо с установкой на SD (MLO, u-boot.bin, boot.scr, ядро, filesystem, benchmark tests, media files и др) | 192M | [[http://mentorel.ru/downloads/somiq-am37/android/ics/demo/somiq_am37_ics.tgz]] | ===== Подготовка окружения ===== Для разработки ПО для операционной системы Android 4.0.3 рекомендован дистрибутив Ubuntu 10.04 LTS 32bit. В общем случае может потребоваться установить следующие пакеты: $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" $ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner" $ sudo apt-get update $ sudo apt-get install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev minicom tftpd uboot-mkimage expect $ sudo update-java-alternatives -s java-6-sun Если вы собираетесь скомпилировать все пакеты, поставляемые в данной сборке от TI, то потребуется не менее 25ГБ свободного места на жестком диске. Для компиляции загрузчиков и ядра потребуется порядка 1ГБ сверх устанавливаемых. **Всего сборка занимает 11ГБ после распаковки и без компиляции.** Исходные тексты можно скачать используя Rowboat Gitorious (долго и не всегда доступно), либо скачать полностью всё необходимое одним файлом. Для этого перейдите на страницу\\ [[http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/TI_Android_ICS_4_0_3_DevKit_3_0_0/index_FDS.html]]\\ и скачайте установочный файл (внимание: размер файла 4.5ГБ)\\ [[http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/TI_Android_ICS_4_0_3_DevKit_3_0_0/exports/TI-Android-ICS-4.0.3_AM37x_3.0.0.bin]] Далее, как рекомендует руководство от TI, но вы можете установить данный пакет в любую директорию, где достаточно места: $ mkdir $HOME/rowboat-android $ cd $HOME/rowboat-android $ chmod a+x TI-Android-ICS-4.0.3_AM37x_3.0.0.bin $ ./TI-Android-ICS-4.0.3_AM37x_3.0.0.bin Согласитесь с предлагаемой лицензией и наберите "I ACCEPT", когда спросят.\\ Будут созданы следующие директории: * Android File system : $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM37x_3.0.0/ * Android Linux Kernel: $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM37x_3.0.0/kernel * Bootloader: $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM37x_3.0.0/u-boot * Toolchain (компилятор) $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM37x_3.0.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin Теперь самое главное - скачайте дополнения, чтобы добавить поддержку SomIQ-AM37 в Android: $ wget http://mentorel.com/downloads/somiq-am37/android/ics/patch/ics.patch Перейдите в директорию TI-Android-ICS-4.0.3_AM37x_3.0.0 $ cd $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM37x_3.0.0/ Примените дополнения (патч): patch -p1 < <путь к патчу>/ics.patch Добавьте сразу путь к компилятору в переменные окружения, чтобы собирать всё программное обеспечение по короткому имени компилятора: $ export PATH=$HOME/rowboat-android/TI-Android-ICS-4.0.3_AM37x_3.0.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH ===== x-loader ===== Перейдите в директорию с исходными текстами x-loader: $ cd /x-loader Задаем конфигурацию для SomIQ-AM37: $ make somiq_am37_config Компилируем: $ make ARCH=arm CROSS_COMPILE=arm-eabi- В результате получаем файл x-load.bin, который нужно преобразовать в формат, понятный загрузчику процессора (Boot ROM). Для этого скачайте утилиту signGP ([[http://beagleboard.googlecode.com/files/signGP]]), если она еще не установлена в вашей системе. $ signGP x-load.bin Полученный файл x-load.bin.ift переименовывают в «MLO». Позже этот файл будет записан на FAT раздел карты SD. $ mv x-load.bin.ift MLO ===== u-boot ===== Перейдите в директорию с исходными текстами u-boot: $ cd /u-boot Задаем конфигурацию для SomIQ-AM37: $ make somiq_am37_config Компилируем: $ make ARCH=arm CROSS_COMPILE=arm-eabi- В результате получаем файл u-boot.bin, который будет записан на FAT раздел карты SD. ===== Ядро Android ===== Перейдите в директорию с исходными текстами ядра: $ cd /kernel Выполните следующие команды: $ make ARCH=arm CROSS_COMPILE=arm-eabi- distclean $ make ARCH=arm CROSS_COMPILE=arm-eabi- somiq_am37_android_defconfig $ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage После завершения компиляции будет создан файл uImage в директории "arch/arm/boot" ===== Файловая система ===== ==== Готовый образ ==== В результате следующего шага вы получите образ файловой системы, готовый для записи на SD карту. Однако вы можете взять готовый образ, который мы уже исправили как надо и выкладываем готовым: | Полное демо с установкой на SD (MLO, u-boot.bin, boot.scr, ядро, filesystem, benchmark tests, media files и др) | 192M | [[http://mentorel.ru/downloads/somiq-am37/android/ics/demo/somiq_am37_ics.tgz]] | Скачайте этот архив, распакуйте и переходите к шагу "**Запись образов на карту**" ==== Редактирование файловой системы ==== Мы не будем вручную компилировать ПО, поставляемое в данной сборке, т.к. TI выкладывает уже собранные, готовые образы файловых систем для AM37EVM и Beagleboard. Скачаем файловую систему для beagleboard: $ wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/TI_Android_ICS_4_0_3_DevKit_3_0_0/exports/beagleboardXM.tar.gz Распакуем архив: $ tar xzf beagleboardXM.tar.gz Получится директория "beagleboard", в которой мы изменим некоторые файлы.\\ Содержимое директории beagleboard: beagleboard$ ls Boot_Images Filesystem Media_Clips mkmmc-android.sh README.txt START_HERE Заменим загрузочные файлы. Перейдите в директорию "Boot_Images" и замените файлы MLO, u-boot.bin, uImage на скомпилированные для SomIQ-AM37. ==== Запись образов на карту ==== Теперь можно записать SD карту. Возьмите SD карту объемом от 2ГБ и классом не ниже 4-го (лучше 10го). Вставьте в устройство чтения карт и определите файл устройства для карты. Предположим, в вашей системе вставленная карта определяется как "/dev/sdc", тогда выполните команду (все данные на карте будут удалены): $ sudo LANG=c ./mkmmc-android.sh /dev/sdc Assuming Default Locations for Prebuilt Images All data on /dev/sdc now will be destroyed! Continue? [y/n] y [Unmounting all existing partitions on the device ] umount: /dev/sdc: not mounted umount: /dev/sdc1: not mounted umount: /dev/sdc2: not mounted umount: /dev/sdc3: not mounted [Partitioning /dev/sdc...] Disk /dev/sdc doesn't contain a valid partition table DISK SIZE - 4035969024 bytes CYLINDERS - 490 [Making filesystems...] [Copying files...] [Copying START_HERE floder to boot partition] [Copying all clips to data partition] [Done] Данный скрипт автоматически отмонтирует все разделы на карте (их было создано три), но нам необходимо изменить файл конфигурации, чтобы пользоваться сетью Ethernet. Подмонтируйте раздел ext4 на карте и откройте файл init.rc для редактирования. Обратите внимание, что даже для чтения этого файла нужны права суперпользователя (root). В конец файла добавьте следующие строки: service dhcpcd_eth0 /system/bin/dhcpcd -ABKL disabled oneshot Сохраните файл и отмонтируйте раздел SD карты. Теперь можно загружать Somiqboard. ====== Запуск Android ====== ===== Переменные окружения u-boot ===== Для корректной загрузки Android нужны специальные параметры "bootargs" для ядра, которые задают с помощью следующей команды: setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootdelay=1 init=/init \ ip=off omap_vout.vid1_static_vrfb_alloc=y vram=12M omapfb.vram=0:12M omapdss.def_disp=dvi omapfb.mode=dvi:1280x720-24' Параметры, которые вы можете изменить для конкретно вашей конфигурации: * mem=256M - на модулях с ОЗУ 512М вы можете изменить значение с "256M" на "512M" * ip=off - по умолчанию сеть Ethernet не включена, чтобы получить IP адрес автоматически можно изменить "off" на "dhcp" * omapdss.def_disp=dvi - здесь значение "dvi" может также быть и "lcd", если вы добавили соответствующий драйвер для LCD дисплея (не DVI монитор) * omapfb.mode=dvi:1280x720-24 - можно менять разрешение для подключенного дисплея. Например, omapfb.mode=dvi:1024x768-16 (1024x768, 16 бит глубина цветности) ===== Загрузка ядра и старт ===== Выполните последовательно следующие команды: mmc init run loaduimage bootm ${loadaddr} ===== Настройка Ethernet ===== После запуска Android вы можете вручную включить сеть Ethernet. Для этого выполните команду: netcfg eth0 dhcp ===== Демонстрация ===== Чтобы увидеть скорость работы и возможности новой операционной системы для процессорного модуля SomIQ-AM37 предлагаем видео:\\ [[http://www.youtube.com/watch?v=5obkgc0fH0I]]