Home / Android 多媒體圖形開發 / Android 4.0 Ice Cream Sandwich on S3C6410

Android 4.0 Ice Cream Sandwich on S3C6410

Android 4.0 ICS原始碼已在 2011/11/15 公佈,新版的Android 同時兼顧了手機與平板的使用者介面,在各家廠商還在努力移植Android 2.3時,我們以最快的速度搶先將Android 4.0成功移植到S3C6410開發板上,本篇將介紹 4.0 移植到 S3C6410開發板上的過程

  • 開發環境
    • Host environment:   Ubuntu 11.04 64-bit with JDK 1.6
    • Requirement packages:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl  zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
  • 安裝repo
      cd ~
      mkdir bin
      PATH= ~/bin:$PATH

      curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
      chmod a+x ~/bin/repo
  • 初始化repo client
      mkdir cdpda_android_ics
      cd cdpda_android_ics

      repo init -u https://android.googlesource.com/platform/manifest
      repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
  • 下載原始碼
    repo sync
  • 編譯Android 4.0 Soure
    • Android 4.0 code 提供generic and generic_armv5 兩個分支可供編譯,預設沒指定的話是使用generic版本編譯,此版本會使用armv7架構編譯,所以對於S3C6410並不適用,此外實際測試時generic_armv5版本在編譯時webrtc套件編譯會出現錯誤,因此還需要進行適當的修改
    • 在devices目錄下有提供samsung以及ti pandaboard的產品分支可直接編譯
    • 本中心所使用的開發板為real6410,因此我們自行建立一組產品分支,並且修改webrtc原始碼使其能夠編譯armv5的版本
source build/envsetup.sh
choosecombo
Build type choices are:

1. release

2. debug

Which would you like? [1]

Which product would you like? [full] real6410

Variant choices are:

1. user

2. userdebug

3. eng

Which would you like? [eng]

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=4.0.1

TARGET_PRODUCT=real6410

TARGET_BUILD_VARIANT=eng

TARGET_BUILD_TYPE=release

TARGET_BUILD_APPS=

TARGET_ARCH=arm

TARGET_ARCH_VARIANT=armv5te-vfp

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=ITL41D

============================================

    make -j4
  • 編譯完成後即會在out/target/product/real6410/ 下產生檔案系統
    • 修改init.rc 檔案
    • 使用UBI檔案格式 燒錄至板子
  • 已知問題
    • 編譯過程中可能會出現以下錯誤
      Problem:

      host C++: libGLES_CM_translator <= development/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp

      host C++: libGLES_CM_translator <= development/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmUtils.cpp

      host C++: libGLES_CM_translator <= development/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp

      host C++: libGLES_CM_translator <= development/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmValidate.cpp

      host C++: libGLcommon <= development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp

      development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22:20: fatal error: GL/glx.h: 沒有此一檔案或目錄

      compilation terminated.

      make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error 1

      make: *** Waiting for unfinished jobs….

      解決方法 安裝 libgl1-mesa-dev套件

    • sudo apt-get install libgl1-mesa-dev
  • 有進行修改的部份
    • 建立real6410產品分支至 vendor/cdpda/real6410下
    • 修改webrtc原始碼使其支援armv5架構
    • 取消核心framebuffer console (否則會有閃爍的現象並造成互相搶奪fb資源的情況)
    • 修改battery service (使用虛擬的電池)
    • 預設勾選stay awake
    • 修改key code驅動
  • 以S3C6410這樣等級的SOC來跑Android 4.0 ICS事實上有些勉強,畫面的部份不若2.3.5來的順暢,更遑論arm926架構的SOC了,就算把2D 3D硬體加速做到4.0內,提昇的速度估計仍然有限,對於真的想玩Android 4.0的人,建議使用Cortex-A8以上等級的SOC,才能擁有較佳的性能
  • 本中心將會持續專注於Android 4.0的移植與版本差異性的分析比較,而未來的課程中將會導入Android 4.0的移植概念與實務演練部份

Author: Howard

About admin

Scroll To Top