Инструменты пользователя

Инструменты сайта


wiki:somiq-am37-android-ics

Портирование 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 (см 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 <android source path>/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 <android source path>/u-boot

Задаем конфигурацию для SomIQ-AM37:

$ make somiq_am37_config

Компилируем:

$ make ARCH=arm CROSS_COMPILE=arm-eabi-

В результате получаем файл u-boot.bin, который будет записан на FAT раздел карты SD.

Ядро Android

Перейдите в директорию с исходными текстами ядра:

$ cd <android source path>/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:1280×720-24 - можно менять разрешение для подключенного дисплея. Например, omapfb.mode=dvi:1024×768-16 (1024×768, 16 бит глубина цветности)

Загрузка ядра и старт

Выполните последовательно следующие команды:

mmc init
run loaduimage
bootm ${loadaddr}

Настройка Ethernet

После запуска Android вы можете вручную включить сеть Ethernet. Для этого выполните команду:

netcfg eth0 dhcp

Демонстрация

Чтобы увидеть скорость работы и возможности новой операционной системы для процессорного модуля SomIQ-AM37 предлагаем видео:
http://www.youtube.com/watch?v=5obkgc0fH0I

wiki/somiq-am37-android-ics.txt · Последние изменения: 2013/01/09 11:26 (внешнее изменение)