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

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


wiki:somiq-am37-android-ics

Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

wiki:somiq-am37-android-ics [2013/01/09 11:26] (текущий)
Строка 1: Строка 1:
 +====== Портирование 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. В общем случае может потребоваться установить следующие пакеты:​
 +<​code>​
 +$ 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
 +</​code>​
 +Если вы собираетесь скомпилировать все пакеты,​ поставляемые в данной сборке от 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, но вы можете установить данный пакет в любую директорию,​ где достаточно места:
 +<​code>​
 +$ 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
 +</​code>​
 +Согласитесь с предлагаемой лицензией и наберите "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:
 +<​code>​
 +$ wget http://​mentorel.com/​downloads/​somiq-am37/​android/​ics/​patch/​ics.patch
 +</​code>​
 +Перейдите в директорию TI-Android-ICS-4.0.3_AM37x_3.0.0
 +<​code>​
 +$ cd $HOME/​rowboat-android/​TI-Android-ICS-4.0.3_AM37x_3.0.0/​
 +</​code>​
 +Примените дополнения (патч):
 +<​code>​
 +patch -p1 < <​путь к патчу>/​ics.patch
 +</​code>​
 +
 +Добавьте сразу путь к компилятору в переменные окружения,​ чтобы собирать всё программное обеспечение по короткому имени компилятора:​
 +<​code>​
 +$ 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
 +</​code>​
 +
 +===== x-loader =====
 +Перейдите в директорию с исходными текстами x-loader:
 +<​code>​
 +$ cd <android source path>/​x-loader
 +</​code>​
 +Задаем конфигурацию для SomIQ-AM37:
 +<​code>​
 +$ make somiq_am37_config
 +</​code>​
 +Компилируем:​
 +<​code>​
 +$ make ARCH=arm CROSS_COMPILE=arm-eabi-
 +</​code>​
 +В результате получаем файл x-load.bin, который нужно преобразовать в формат,​ понятный загрузчику процессора (Boot ROM). Для этого скачайте утилиту signGP ([[http://​beagleboard.googlecode.com/​files/​signGP]]),​ если она еще не установлена в вашей системе.
 +<​code>​
 +$ signGP x-load.bin
 +</​code>​
 +Полученный файл x-load.bin.ift переименовывают в «MLO». Позже этот файл будет записан на FAT раздел карты SD.
 +<​code>​
 +$ mv x-load.bin.ift MLO
 +</​code>​
 +===== u-boot =====
 +Перейдите в директорию с исходными текстами u-boot:
 +<​code>​
 +$ cd <android source path>/​u-boot
 +</​code>​
 +Задаем конфигурацию для SomIQ-AM37:
 +<​code>​
 +$ make somiq_am37_config
 +</​code>​
 +Компилируем:​
 +<​code>​
 +$ make ARCH=arm CROSS_COMPILE=arm-eabi-
 +</​code>​
 +В результате получаем файл u-boot.bin, который будет записан на FAT раздел карты SD.
 +===== Ядро Android =====
 +Перейдите в директорию с исходными текстами ядра:
 +<​code>​
 +$ cd <android source path>/​kernel
 +</​code>​
 +Выполните следующие команды:​
 +<​code>​
 +$ 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
 +</​code>​
 +После завершения компиляции будет создан файл 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:​
 +<​code>​
 +$ 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
 +</​code>​
 +Распакуем архив:
 +<​code>​
 +$ tar xzf beagleboardXM.tar.gz
 +</​code>​
 +Получится директория "​beagleboard",​ в которой мы изменим некоторые файлы.\\
 +Содержимое директории beagleboard:​
 +<​code>​
 +beagleboard$ ls
 +Boot_Images ​ Filesystem ​ Media_Clips ​ mkmmc-android.sh ​ README.txt ​ START_HERE
 +</​code>​
 +Заменим загрузочные файлы. Перейдите в директорию "​Boot_Images"​ и замените файлы MLO, u-boot.bin, uImage на скомпилированные для SomIQ-AM37.
 +
 +==== Запись образов на карту ====
 +
 +Теперь можно записать SD карту. Возьмите SD карту объемом от 2ГБ и классом не ниже 4-го (лучше 10го). Вставьте в устройство чтения карт и определите файл устройства для карты. Предположим,​ в вашей системе вставленная карта определяется как "/​dev/​sdc",​ тогда выполните команду (все данные на карте будут удалены):​
 +<​code>​
 +$ 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]
 +</​code>​
 +Данный скрипт автоматически отмонтирует все разделы на карте (их было создано три), но нам необходимо изменить файл конфигурации,​ чтобы пользоваться сетью Ethernet. Подмонтируйте раздел ext4 на карте и откройте файл init.rc для редактирования. Обратите внимание,​ что даже для чтения этого файла нужны права суперпользователя (root). В конец файла добавьте следующие строки:​
 +<​code>​
 +service dhcpcd_eth0 /​system/​bin/​dhcpcd -ABKL
 +    disabled
 +    oneshot
 +</​code>​
 +Сохраните файл и отмонтируйте раздел SD карты. Теперь можно загружать Somiqboard.
 +====== Запуск Android ======
 +
 +===== Переменные окружения u-boot =====
 +Для корректной загрузки Android нужны специальные параметры "​bootargs"​ для ядра, которые задают с помощью следующей команды:​
 +<​code>​
 +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'​
 +</​code>​
 +Параметры,​ которые вы можете изменить для конкретно вашей конфигурации:​
 +  * 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 бит глубина цветности)
 +===== Загрузка ядра и старт =====
 +Выполните последовательно следующие команды:​
 +<​code>​
 +mmc init
 +run loaduimage
 +bootm ${loadaddr}
 +</​code>​
 +===== Настройка Ethernet =====
 +После запуска Android вы можете вручную включить сеть Ethernet. Для этого выполните команду:​
 +<​code>​
 +netcfg eth0 dhcp
 +</​code>​
 +===== Демонстрация =====
 +Чтобы увидеть скорость работы и возможности новой операционной системы для процессорного модуля SomIQ-AM37 предлагаем видео:​\\
 +[[http://​www.youtube.com/​watch?​v=5obkgc0fH0I]]
  
wiki/somiq-am37-android-ics.txt · Последние изменения: 2013/01/09 11:26 (внешнее изменение)