Android

From Openmoko

(Difference between revisions)
Jump to: navigation, search
m (Communities: URL typo)
m (Smaller changes)
 
(237 intermediate revisions by 49 users not shown)
Line 1: Line 1:
= Introduction =
+
{{Languages|Android}}
This page is dedicated to porting the [http://www.android.com Android OS] to the [[Neo 1973]] and [[Neo FreeRunner]] handsets. Since the Android OS was [http://source.android.com/posts/opensource  publically released] on 20081021, [http://benno.id.au/blog/2007/11/21/android-neo1973 work] [http://perpetual-notion.blogspot.com/search/label/android is] [http://groups.google.com/group/android-porting currently underway] to port Android to the [[Neo1973 Hardware|Neo 1973]] and [[Neo_FreeRunner_GTA02_Hardware|FreeRunner]] handsets.
+
{{Distributions|Android}}
  
== Goals ==
+
{|align=right
# Systematically introduce patches for ARMv4T in the Android codebase
+
|__TOC__
# Provide Neo1973 and Neo FreeRunner hardware-dependent patches in the Android codebase, leveraging the work already done by the Openmoko developers, without forcing Android-specific changes upstream
+
|}
# Provide a useable Android filesystem and kernel on the [[Distributions]] page that conform to current Openmoko installation routines
+
[[Image:Android-logo.png]]
 +
= Introduction =
 +
'''[[Android usage]]''' provides a brief overview to get started.
  
== Early Attempts ==
+
{{Note|The Android for [[Neo_FreeRunner_GTA02_Hardware|FreeRunner]] development is hosted on [http://code.google.com/p/android-on-freerunner/ http://code.google.com/p/android-on-freerunner/].}}
As [http://benno.id.au Ben Leslie] had pointed out on his [http://benno.id.au/blog/2007/11/21/android-neo1973 blog] far before the source code was released, [http://www.android.com Android] was originally designed to work with the ARMv5TE [http://en.wikipedia.org/wiki/Instruction_set_architecture instruction set architecture] (ISA), which allows for [http://en.wikipedia.org/wiki/ARM_architecture#DSP_Enhancement_Instructions DSP enhanced instructions]. Contrary to the ARMv5TE ISA, the Neo1973 and FreeRunner handsets both feature an arm920t core, which comply to the ARMv4T ISA.
+
  
Before the source code was released, kernel trap handlers were implemented to 'emulate' the ARMv5TE ISA. Although the results worked in many cases, trapping is costly and performance suffered as a result. Moreover, without explicitly knowing which conditions were set by various instructions, such as Thumb Mode execution, the result became nondeterministic.
+
This page is the central place for documentation about Android on the [[Neo_FreeRunner_GTA02_Hardware|FreeRunner]] handsets.
  
== Current State ==
+
[http://code.google.com/android/ Android] is a software stack for mobile devices developed by the [http://www.openhandsetalliance.com/ The Open Handset Alliance.] Although Android is publicized as being [http://en.wikipedia.org/wiki/Open_source open source software] (most of the source code has been released) parts of the code have not been released yet.
  
With the release of the Android [http://source.android.com source code], the Open Source community is no longer limited to dealing with a binary-only product. The Open Handset Alliance (OHA) has let their source code become their product for everyone enrich and benefit from.
+
A stable and working version of Android Cupcake is available for the Feerunner. The Froyo version is also available and continuously being improved. It is likely, in the near future, to be the distribution most suited for using the FreeRunner as a phone.
  
Currently, porting efforts are underway in many circles. Patches should be submitted via the [http://source.android.com/submit-patches official Android channels].
+
= Usage =
 +
See: '''[[Android usage]]''' for detailed instructions on using Android on the FreeRunner.
  
= How to Help =
+
= Installation =
  
== Getting Started ==
+
[http://code.google.com/p/android-on-freerunner/wiki/GetIt Installing Android on Openmoko Freerunner]
  
You can start by following the instructions to download and build the Android source from scratch. Please see [http://source.android.com/download http://source.android.com/download] and follow the instructions for your architecture.
+
= Development =
 +
Currently the development is done on [http://code.google.com/p/android-on-freerunner/ Android-on-Freerunner] (http://code.google.com/p/android-on-freerunner/)
  
== Publicize Your Efforts ==
+
See: [[Android porting]]
  
It's generally a good idea to make your efforts known via wiki systems, public mailing lists, forums, and publically open version control systems.  
+
= News =
 +
* 01 Oct 09 - new Home http://code.google.com/p/android-on-freerunner/  ( including googlegroup,IRC,mailinglist,... )
 +
* 19 Sept 09 - from Koolu-Forum:  ..."So I'm glad to announce a new Android Cupcake release for Freerunner! It's basically a merge of the Koolu code with Michael Trimarchi's enhancements and a few bug fixes and cosmetic things I've added. You can download it at our new Google Code site: http://code.google.com/p/android-on-freerunner/downloads/list "...
 +
* 22 May 09 - Koolu Releases Beta7 [http://trac.koolu.org/wiki/Releases]
 +
* 15 April 09 - Koolu Releases Beta6 [http://trac.koolu.org/wiki/Releases]
 +
* 07 March 09 - Panicking released a cupcake [http://panicking.kicks-ass.org/download/ rootfs]
 +
* 26 February 09 - As promised, Sean McNeil has released source code to [[GSM]] libraries [https://review.source.android.com/Gerrit#change,9013 Source]
 +
* 20090204 Koolu releases its Beta3 Android [http://freerunner.android.koolu.com/release-files release].
 +
** Changelog:
 +
*** Added GPS library that supports GPS under Android
 +
*** MAX_PROCESSES patch to enable more background processes to be run (fixes Pictures application)
 +
*** Added Dalvik optimization setting
 +
*** Started including 3rd party applications
 +
*** Updated user interfaces for GPS and Bluetooth to match new kernel
 +
*** Now report RSSI of Wifi signals to upper application layer
 +
*** Enable libsoundpool compilation to support audible clicks
  
Always take credit for your work but please don't do it in the form of comments. Some code is already hard enough to read without comments polluting the text. The best thing to do is to create a patch and put a header with your information at the top. Collaboration systems such as git might already do this for you (??).
+
* 20090122 Koolu releases its Beta2 Android [http://freerunner.android.koolu.com/release-files release].
  
If you create something new and have the ability to designate the license for it, please consider license compatibility issues.
+
* 20081219 Koolu releases its Beta Android [http://forum.koolu.org/files/androidfs-koolu-1_0.jffs2 Image] and [http://forum.koolu.org/files/uImage-android-patched_bc2caff9cdef8a16.bin kernel].
  
== Porting Strategy ==
+
* 20081202 [http://www.koolu.com Koolu], a Freerunner distributor, has released the source code of their Android port at [http://git.koolu.org http://git.koolu.org]. For details on the project source and some real detailed instructions on building the source, see the [http://trac.koolu.org/ the Koolu Trac Website for Android].  TODO: Find out where this link supposed to go->See the [[Android_porting#Building the Koolu Android Source]] instructions below for how to build an Android image for Freerunner.
  
* Analysis and leverage of the existing build system
+
* 20081104 The first Android-image has been successfully created by Sean McNeil!  - sms and calling works, wifi and bluetooth doesn't. [http://onlinedev.blogspot.com/2008/11/porting-android-phase-3-done.html ''news-source'']
** buid/core/combo/arm-linux.mk
+
*** -D__ARCH_ARM_4__ -D__ARCH_ARM_4T__
+
*** -march=armv4t -mcpu=arm920t
+
** fix various static references to 'armv5'
+
* Isolating ARMv5TE ISA dependent code
+
** e.g. grep -n -R -i "${armv5te_isa_pattern}" ~/android
+
* Abstracting
+
** ( C/C++ ) Use inlined functions / #ifdef statments to implement functions in a portable manner
+
** ( ASM ) #ifdef statements ?
+
  
For each ARMv5TE instruction, one could potentially
+
= See also =
* Implement the instruction using general registers instead of DSP calls (i.e. eabi / softfloat)
+
* http://code.google.com/p/android-on-freerunner/
* If that is a) nondeterministic, or b) slow, then sections of code need to be analyzed and hand-optimized for the ARMv4T isa
+
* [http://wiki.openmoko.org/wiki/User:Seanmcneil3 Sean McNeil] user page for some historical info
  
== Updates ==
+
== Usage ==
  
Feel free to post a link to any of your work in the list below
+
* [http://code.google.com/p/android-on-freerunner/wiki/Applications List of applications] known to be working on AoF
  
* 20081021 [[User:Cfriedt]] Android -> FreeRunner updates on my [http://perpetual-notion.blogspot.com/search/label/android blog]
+
* [http://digg.com/linux_unix/Video_demo_of_Freerunner_running_Android_Cupcake_Tutorial Short Video demo of Android] on [[FreeRunner]] to show how usable it is.
* 20081022 [[User:Cfriedt]] I was able to 'trivially' compile all of the Android source code without error for the ARMv4T architecture by removing v5TE instructions. Although it will definitely not run anything predictably, at least now that I know the build system will work with a few simple substitutions in build/core/combo/arm-linux.mk. At this point I am able to go ahead and re-implement v5TE instructions as v4T instruction sequences instead (or re-implement entire sections of assembly with hand-optimized v4T instructions).
+
  
= Important Links =
+
* [http://braydon.com/blog/2009/5/1/koolu-android-on-neo-freerunner-video Koolu beta6 on Neo Freerunner Video]
(Please Update Me)
+
  
== Documentation ==
+
* http://www.freewarelovers.com/android
* [http://source.android.com/documentation Android Documentation]
+
* [http://www.arm.com/products/CPUs/cpu-arch-DSP.html DSP Enhanced Instruction Set],[http://www.arm.com/pdfs/ARM-DSP.pdf White Paper]
+
* [http://www.arm.com/documentation/ ARM Documentation], (keywords: armv4t, armv5t, armv5te)
+
  
== Hardware Reference ==
+
* http://andappstore.com/
  
* [[Neo1973 Hardware]]
+
* http://slideme.org/
* [[Neo FreeRunner GTA02 Hardware]]
+
  
== Communities ==
+
* http://www.openintents.org/
* [http://source.android.com/discuss Android Public Mailing Lists]
+
* [http://forum.koolu.org/viewforum.php?f=10 Android on FreeRunner] at KoolU.com
+
* [[Openmoko Local Groups]]
+
* [[Openmoko:Community_Portal]]
+
  
== Buy a Handset and Debug Board ==
+
== Videos ==
 +
* Videos : [http://digg.com/linux_unix/Video_demo_of_Freerunner_running_Android_Cupcake_Tutorial]
 +
* [http://youtube.com/watch?v=m4NbsLmF9j0 YouTube Video 1]
 +
* [http://youtube.com/watch?v=r6Op-7tNTiw YouTube Video 2]
  
* [http://www.openmoko.com/distributors.html OpenMoko Store] - Worldwide distributors for FIC / OpenMoko handets
+
[[Category:Android| ]]
* [http://www.koolu.com Koolu.com] - North American distributor of the OpenMoko, backed by [http://koolu.com/component/option,com_mojo/Itemid,225/ Jon "maddog" Hall], announced a port to be released in November 2008.
+
* [http://us.direct.openmoko.com/collections/frontpage OpenMoko Direct] - [[Debug Board v3]]
+
 
+
= References =
+
 
+
= External Links =
+
 
+
[[Category:Distributions]]
+

Latest revision as of 16:47, 9 January 2012

Android is one of the many distributions that currently work on the Openmoko phones. You can compare a distribution with an Operating System on normal computers. It gives the phone all the software needed for operating. For more information about the different flavors, see distributions.

Contents

Android-logo.png

[edit] Introduction

Android usage provides a brief overview to get started.

NOTE: The Android for FreeRunner development is hosted on http://code.google.com/p/android-on-freerunner/.


This page is the central place for documentation about Android on the FreeRunner handsets.

Android is a software stack for mobile devices developed by the The Open Handset Alliance. Although Android is publicized as being open source software (most of the source code has been released) parts of the code have not been released yet.

A stable and working version of Android Cupcake is available for the Feerunner. The Froyo version is also available and continuously being improved. It is likely, in the near future, to be the distribution most suited for using the FreeRunner as a phone.

[edit] Usage

See: Android usage for detailed instructions on using Android on the FreeRunner.

[edit] Installation

Installing Android on Openmoko Freerunner

[edit] Development

Currently the development is done on Android-on-Freerunner (http://code.google.com/p/android-on-freerunner/)

See: Android porting

[edit] News

  • 01 Oct 09 - new Home http://code.google.com/p/android-on-freerunner/ ( including googlegroup,IRC,mailinglist,... )
  • 19 Sept 09 - from Koolu-Forum: ..."So I'm glad to announce a new Android Cupcake release for Freerunner! It's basically a merge of the Koolu code with Michael Trimarchi's enhancements and a few bug fixes and cosmetic things I've added. You can download it at our new Google Code site: http://code.google.com/p/android-on-freerunner/downloads/list "...
  • 22 May 09 - Koolu Releases Beta7 [1]
  • 15 April 09 - Koolu Releases Beta6 [2]
  • 07 March 09 - Panicking released a cupcake rootfs
  • 26 February 09 - As promised, Sean McNeil has released source code to GSM libraries Source
  • 20090204 Koolu releases its Beta3 Android release.
    • Changelog:
      • Added GPS library that supports GPS under Android
      • MAX_PROCESSES patch to enable more background processes to be run (fixes Pictures application)
      • Added Dalvik optimization setting
      • Started including 3rd party applications
      • Updated user interfaces for GPS and Bluetooth to match new kernel
      • Now report RSSI of Wifi signals to upper application layer
      • Enable libsoundpool compilation to support audible clicks
  • 20090122 Koolu releases its Beta2 Android release.
  • 20081219 Koolu releases its Beta Android Image and kernel.
  • 20081104 The first Android-image has been successfully created by Sean McNeil! - sms and calling works, wifi and bluetooth doesn't. news-source

[edit] See also

[edit] Usage

[edit] Videos

Personal tools

Introduction

This page is dedicated to porting the Android OS to the Neo 1973 and Neo FreeRunner handsets. Since the Android OS was publically released on 20081021, work is currently underway to port Android to the Neo 1973 and FreeRunner handsets.

Goals

  1. Systematically introduce patches for ARMv4T in the Android codebase
  2. Provide Neo1973 and Neo FreeRunner hardware-dependent patches in the Android codebase, leveraging the work already done by the Openmoko developers, without forcing Android-specific changes upstream
  3. Provide a useable Android filesystem and kernel on the Distributions page that conform to current Openmoko installation routines

Early Attempts

As Ben Leslie had pointed out on his blog far before the source code was released, Android was originally designed to work with the ARMv5TE instruction set architecture (ISA), which allows for DSP enhanced instructions. Contrary to the ARMv5TE ISA, the Neo1973 and FreeRunner handsets both feature an arm920t core, which comply to the ARMv4T ISA.

Before the source code was released, kernel trap handlers were implemented to 'emulate' the ARMv5TE ISA. Although the results worked in many cases, trapping is costly and performance suffered as a result. Moreover, without explicitly knowing which conditions were set by various instructions, such as Thumb Mode execution, the result became nondeterministic.

Current State

With the release of the Android source code, the Open Source community is no longer limited to dealing with a binary-only product. The Open Handset Alliance (OHA) has let their source code become their product for everyone enrich and benefit from.

Currently, porting efforts are underway in many circles. Patches should be submitted via the official Android channels.

How to Help

Getting Started

You can start by following the instructions to download and build the Android source from scratch. Please see http://source.android.com/download and follow the instructions for your architecture.

Publicize Your Efforts

It's generally a good idea to make your efforts known via wiki systems, public mailing lists, forums, and publically open version control systems.

Always take credit for your work but please don't do it in the form of comments. Some code is already hard enough to read without comments polluting the text. The best thing to do is to create a patch and put a header with your information at the top. Collaboration systems such as git might already do this for you (??).

If you create something new and have the ability to designate the license for it, please consider license compatibility issues.

Porting Strategy

  • Analysis and leverage of the existing build system
    • buid/core/combo/arm-linux.mk
      • -D__ARCH_ARM_4__ -D__ARCH_ARM_4T__
      • -march=armv4t -mcpu=arm920t
    • fix various static references to 'armv5'
  • Isolating ARMv5TE ISA dependent code
    • e.g. grep -n -R -i "${armv5te_isa_pattern}" ~/android
  • Abstracting
    • ( C/C++ ) Use inlined functions / #ifdef statments to implement functions in a portable manner
    • ( ASM ) #ifdef statements ?

For each ARMv5TE instruction, one could potentially

  • Implement the instruction using general registers instead of DSP calls (i.e. eabi / softfloat)
  • If that is a) nondeterministic, or b) slow, then sections of code need to be analyzed and hand-optimized for the ARMv4T isa

Updates

Feel free to post a link to any of your work in the list below

  • 20081021 User:Cfriedt Android -> FreeRunner updates on my blog
  • 20081022 User:Cfriedt I was able to 'trivially' compile all of the Android source code without error for the ARMv4T architecture by removing v5TE instructions. Although it will definitely not run anything predictably, at least now that I know the build system will work with a few simple substitutions in build/core/combo/arm-linux.mk. At this point I am able to go ahead and re-implement v5TE instructions as v4T instruction sequences instead (or re-implement entire sections of assembly with hand-optimized v4T instructions).

Important Links

(Please Update Me)

Documentation

Hardware Reference

Communities

Buy a Handset and Debug Board

References

External Links