Android builders summit update

Amazing event, very nicely organized and executed.

Thanks for Linux Foundation for the picture

Jason and Khasim at Android builders summit

Jason Kridner and Khasim Syed Mohammed giving Key Note on “Using Android outside of Mobile phones”

Our talk video is hosted here,

Disable HTML5 and turn off HD for easy view,

http://video.linux.com/videos/using-android-outside-the-mobile-phone-space

There are multiple action items on us for arowboat, I will keep posting here on our progress, on quick thing to quote is working closely with Linaro to enable all open platforms.

Thanks to Linux Foundation for the picture

Khasim wearing Recon's goggles powered by Android

 

Android 4.0 IceCream on Beagleboard XM (TI AM37x – ARM Cortex A8)

You thought we would be late – didn’t you ? – Impossible !!!

arowboat.org brings you first cut of Android 4.0 Ice Cream Sandwich on Texas Instruments AM37x based Beagleboard XM (ARM Cortex A8 at 1GHz).

This is very preliminary version and there is lot more do, we are continuing our efforts to evaluate and bring in support for all other peripherals like Audio, video, connectivity, SGX acceleration etc. This might take some time.

The official TI DevKit  release is still not planned yet as we have to evaluate the performance on each arowboat supported devices like AM37x, AM335x, AM35x, etc.

Complete details about building sources, pre-built image to quickly evaluate ICS on beagleboard and source locations for download are documented by Pankaj Bharadiya from arowboat team here,

http://code.google.com/p/rowboat/wiki/ICSonBeagleboard

Coming soon : ICS on Beaglebone :)

Happy Thanks Giving.

beaglebone introduced at droidcon.in

Droidcon.in completed yesterday with a wonderful note from Khasim member of arowboat.org and beagleboard community.

This was an unique event where audience were given access to beaglebone, beagleboard XM, pandaboard and craneboards, there were software fueling stations to setup laptops for Android development, trying platforms with pre-built images, solving queries and so on.

Satish Patel from Texas Instruments gave a talk on “Android memory optimization techniques for non phone segment”. The talk was houseful :)

Lot of fun, excellent talent to talk to – we had Diogo Ferreira from CyanogenMod at our hackers corner.

 

Let’s get back to work now :(

arowboat.org hosts Android Quiz and Hackers corner

arowboat.org hosts Android Quiz and Android Hackers corner at http://droidcon.in/2011/

Texas Instruments sponsored Android hackers’ corner

  • Get access to multiple open platforms like Pandaboard, beagleboard, craneboard, beaglebone, etc
  • Fueling stations where you can find pre-built images, Android tools, sources and lot more developer resources to install/copy & setup your laptops
  • Talk to experts from arowboat.org on multimedia, 3D graphics acceleration, Android internals, Embedded Linux, etc.
  • Get trained instantly on basics to advanced topics on Android.
  • Go Live on Android development for embedded and mobile products / applications.

Win exciting prizes every hour and bumper prize “beaglebone” !!!!

Participate in arowboat Android Quiz and win prizes every hour for two continuous days

The steps are simple,

a)       Follow us on http://twitter.com/arowboattwits, you will be auto followed.

b)       Every hour questions will be posted on arowboat twitter account

c)       Answer the question, the first correct entry will win an exciting prize sponsored by Texas Instruments

d)       Get ready to win Beaglebone – Lucky draw among all the quiz participants on final day

Follow us on http://twitter.com/arowboattwits for more updates.

Posted by:

Syed Mohammed Khasim

http://www.khasim.in

Join us at droidcon.in

Yes we “arowboat.org” team is at droidcon.in – on November 18th and 19th at Bangalore. More details here http://droidcon.in/2011/

We will be presenting multiple sessions at the event.

Interesting news:

We will be demonstrating Beaglebone running Android (http://beagleboard.org/bone)  live at the venue.

There will be 21×18 feet of hackers corner hosted by arowboat.org community with lots of boards to play and learn around, instructors from arowboat.org will be available to discuss Android issues, live trainings and a lot more.

Just excited … more info will be provided soon. Looking forwarded to meet you there.

Khasim (http://www.khasim.in)

TI’s AM335x is announced …!

Really cool device indeed.

TI’s AM335x based on ARM Cortex A8 running at 720MHz, support for mDDR, DDR2/DDR3, lots of in built peripherals like ADC (can be configured to be Touch screen controller), USB PHY(two numbers), EMAC, LCD controller, CAN, PWM, 3D graphics acceleration, etc.

More details about device and its capabilities can be found here, http://www.ti.com/lit/ml/sprt617/sprt617.pdf

Now the interesting stuff, the first board that comes out of this product is a Beagleboard bone :) – It is just 89$ platform that can be used to prototype products, evaluate high level operating system distributions like Android, Linux and try out OS less software libraries called starterware. They are also planning to support RTOS from mentor, Windriver, etc.

Coming back a bit, Android is fully functional on this device “AM335x”. Two ways to get access :

- Get EVM that gives fully functional Android feature set.

- Get Beaglebone : This will allow you to run Android but since there is no display on board, we provide you in built VNC app, that can be used to access the Android screen over ethernet. This should be good enough for any app developer to go live …

http://gitorious.org/rowboat has support for AM335x, choose the target product as am335xevm or beaglebone accordingly.

In next few days we will be putting more documents and wikis to help you understand the product and Android offering better.

– published by Khasim Syed Mohammed (www.khasim.in)

Training from Mentor Graphics on Android for TI Devices

The Introduction to Android Platform Development course will help you understand how to leverage Android open source software to engineer Android-based products. This class will help you understand the challenges you are likely to face (e.g., Android porting, power management optimization, …) and start to address how to solve these problems. There will be hands-on lab exercises using the BeagleBoard-xM that will reinforce lecture and discussion topics under the guidance of our industry expert instructors.

You will learn how to

  • Use the Android build system and development environment
  • Configure and build a kernel
  • Work with Android libraries, memory management, and file systems
  • Best use the Android runtime environment
  • Understand the anatomy of an Android application
  • Do basic Android porting
  • Implement audio & video hardware acceleration
  • Port legacy C/C++ code into an Android environment
  • Customize User interfaces
  • Handle software updates

Hands-On labs

Throughout this course, extensive hands-on lab exercises provide you with practical experience using the BeagleBoard-xM  topics include:

  • Build an Android runtime environment and boot it natively on the BeagleBoard-xM
  • Using the Android SDK
  • Debugging Java and native C/C++ code
  • Build the Android kernel
  • Structure, build, and test Android driver

*Please note: These classes are held at specific Texas Instruments facilities.

More Details  here http://focus.ti.com/docs/training/catalog/events/event.jhtml;jsessionid=VQTCH24XLXOHDQC1JAKR3KQ?sku=4DW102001&tfsection=Overview

 

Prerequisites

  • Systems-level familiarity with operating systems like Linux or Windows.  C/C++ programming proficiency and device driver experience are important. Java knowledge is helpful.

Android, Linux-ARM and TLS register emulation

If you are an Android integration/porting guy and you don’t know what TLS is or why you should care about it while porting Android on a new Linux Kernel, then you have just landed on the right page.

What is TLS or Thread Local Storage?

In a multi-threaded application, where all threads in a process share the same address space, there often arises the need to maintain data that is unique to a thread. Use of errno, in a C code, is a classic example of using this type of data which is local to a given thread. TLS or Thread Local Storage, as you can probably figure out from its name now, is a concept used for Threading abstraction. It is a fast and efficient way to store per-thread local data. Offset of thread’s local data is accessible via the TLS register(h/w or s/w block) which points to Thread Control Block of respective thread. Check this PDF for more information.

Yesteryears High end ARM cores viz. ARM9 and even some of ARM11 cores do not have this TLS Register physically available. Operating Systems (Linux from here onwards) need to emulate it in software. New generation ARM cores viz. Cortex-Ax onwards, however, do have this TLS register available (CP15).

Why do I being an Android porting/integration guy, need to care about all this?

Android(till Froyo? I guess) had this unique bug (or feature?) where in, it assumes that TLS register is emulated by the Kernel(Linux) and thus expect Linux to trap it. It worked well for ARM cores who were already emulating TLS register in software.

With the rise of ARM Cortex-Ax cores, people started reporting all sort of errors related to Android mounting or random Android service crashes. It turned out that the error was due to hard dependency of Android on TLS register emulation. Since Cortex-Ax devices do have TLS register available and Linux was not trapping it, that made Android really really mad.

By that time there was no known way to make Android user-space TLS register aware, people started patching Linux to make it compatible with the emulated TLS register. Here is the relevant TLS patch for 2.6.32 and patch for 2.6.37 ARM kernel.

With Gingerbread i.e. v2.3, Android introduced a build config variable ARCH_ARM_HAVE_TLS_REGISTER which (you need to set it to true during build time) will make Android user-space TLS register aware and you don’t need to patch your Linux anymore.

So now you know what else to look for if your Android port is crashing on an unsupported Kernel version.

P.S.
I’m yet to figure out what ARCH_ARM_HAVE_TLS_REGISTER ends up doing. A quick grep of this variable in AOSP came out with results in bionic/ and frameworks/base/opengl/ projects.

Contributed by :- Amit Pundir

TI Android Gingerbread 2.3 DevKit 1.0

TI Android Gingerbread 2.3 DevKit version 1.0 is available for AM37x, AM35x & OMAP35x devices.

TI’s Android Gingerbread 2.3 DevKit version 1.0 (EA) release is available for AM35x, AM37x, OMAP35x devices. The release has been validated on AM35x/37x EVMs and Beagleboard rev C4.

The DevKit release can be downloaded from http://focus.ti.com/docs/toolsw/folders/print/androidsdk-sitara.html

This release package provides a Andorid GingerBread 2.3 sources, SGX (3D graphics) drivers, Adobe Flash 10 support, WLAN, Bluetooth support for WL1271, Power Management (DVFS, suspend, resume, CPU IDLE, etc), S-Video, RowboPERF performance measurement application, NAND (UBIFS), USB Mouse cursor, Fastboot and standard applications from Android.

Release Notes are available at http://processors.wiki.ti.com/index.php/TI-Android-GingerBread-2.3-DevKit-1.0_ReleaseNotes

What’s new in this release?

The Devkit release has improved tools for debug and development environment. The release includes TI’s Code Composer Studio V5 with Android Plugins to ease Android app development and porting for developers. The gitorious.org/rowboat android sources (kernel, file system and boot loader) are pre-packaged to enable developers start building android for custom hardware with detailed host setup instructions.

Refer to http://processors.wiki.ti.com/index.php/TI-Android-GingerBread-2.3-DevKit-1.0_DeveloperGuide for more details.

Power Management is improved as it supports DVFS, CPU IDLE, Suspend, Resume, etc.

Bluetooth Hands Free and Head Set profiles are supported, Mouse cursor is added (not in standard Gingerbread frame work from Google).

The following features from previous FroYo release are still retained,

Adobe Flash 10 libraries (on request), USB Mass Storage, Audio record/playback, Keypad, Touchscreen, S-video, DVI, etc.

For support and queries please use http://e2e.ti.com/android

Regards,

Khasim

Camera porting trials on Gingerbread

Since few weeks we were struggling to get camera working on beagleboard-xm. At start we felt it should be easy to migrate from froyo to gingerbread with respect to HAL. But..!!! got stuck in white display problem and dead lock while capture.

We would like to put our understanding which might help somebody who works with camera port on Android.

Camera Preview is only white screen on gingerbread

We have seen couple of issues reported related to this ; either with simulator or with h/w. Some applications which were accessing a camera in froyo have failed to preview correctly in gingerbread. In gingerbread there is a change in camera service – added support for multiple camera access – and surface flinger – OpenGL ES textures.

Error: D/CameraHardware( 1952): Preview Heap
I/ActivityManager( 954): Displayed com.android.camera/.Camera: +2s393ms (total +16s148ms)
W/OrientationEventListener( 1995): Cannot detect sensors. Not enabled
E/SurfaceFlinger( 954): texture=1984777172, using format 17, which is not supported by the GL
D/dalvikvm( 1995): GC_CONCURRENT freed 469K, 54% free 2690K/5831K, external 901K/1038K, paused 2ms+19ms
W/AudioPolicyManagerALSA( 1952): AudioPolicyManagerALSA::getStrategyForStream() Stub Called…

Camera application use default surface holder for preview and that is RGB565 by default at surface flinger.

We could see some display format has been removed. It might be the case with specific vendor as well. With respect to beagleboard-xm and TI SGX; we need to change display to RGB565 in underline file. This change has enabled camera preview on gingerbread.

Filename: CameraService.cpp
Function: CameraService::Client::registerPreviewBuffers

ISurface::BufferHeap buffers(w, h, w, h,
– HAL_PIXEL_FORMAT_YCrCb_420_SP,
+ HAL_PIXEL_FORMAT_RGB_565,
mOrientation,
0,
mHardware->getPreviewHeap());

Optimization Scope: One can enable support to render directly YUV422 frame and remove conversation YUV422->RGB565 at camera HAL.

Dead lock/Hand up @image capture
After resolving we felt like we were  done… But very next we pressed capture button…opps….Application just hanged up.

After looking into the code we found:
1. Camera service is acquiring a lock and calling camera HAL function
2. Camera HAL function creating a thread
3. New thread gets compressed image and call Camera service’s callback
4. Data callback again tries to check for valid message and for the same try to acquire a lock

Here:
1. If – CameraHardware:takepicture() returns to the camera service before PictureThread calls callback ; scenario will work fine.

In Other case camera service will go for a sleep. Somehow takepicture() should gets return back to free the lock. But even in sleep mode that is not happening and continuous while loop in lockIfMessageWanted kept running. This might be scenario of thread exception.

We got it fixed by removing conditional check in callback. We don’t see any side effects with this change.

Now… moving on recording part with soft codecs :)

===

contributed by Satish Patel Texas Instruments.

If you want to share any message, please write to sm dot khasim at gmail dot com

Follow

Get every new post delivered to your Inbox.