Android 4.2.2 (Jellybean) on i.MX6
Published on May 21, 2013
Freescale recently published a release of the Jellybean version of Android for i.MX6.
Weighing in at 247MB, it consists of:
1501 | patches |
7649967 | lines of patch (excluding the kernel and U-Boot) |
22 | AOSP projects changed |
15 | projects added to AOSP |
Where is it?
It took us a while to get things bootstrapped, but we now have a set of buildable sources:- The kernel is in our Github repository in branch boundary-jb4.2.2-staging.
- The Android modifications are in the now badly-named imx-android-r13.4-ga repository. Use branch jb-1.1.0.
This is alpha code!
Note that this is a very preliminary release. It's bootable and contains a lot of functionality, but there are a lot that hasn't been tested. Notably:- The vold structure has changed somewhat, so media playback hasn't been tested.
- Wi-Fi hasn't yet been tested on Nitrogen6X.
- Only the SABRE Lite and Nitrogen6X boards are currently supported.
- The camera application has not yet been tested, and
- The browser is slow to load pages.
Details of the browser issue
The last item in the list above is one of the things that put getting a Jellybean release up and running on our front burner. Those of you who have run the recent ICS releases have probably noticed that the browser is often unresponsive. We did some testing of the ICS code base and found that there appeared to be issues on initial page loads, and these seem to be present in the JB code base as well. Before setting it aside, we did find out that the issues seem to be related to I/O and not CPU:- top shows almost zero CPU utilization while the browser is stalled.
- Several customers indicated that switching to a Class 10 SD card
- We found that the speed was much improved on a board booted to eMMC (which has much higher bandwidth)
- We also found that there are warning messages from the audio subsystem like this:
W/AudioFlinger( 2361): write blocked for 343 msecs, 1 delayed writes...
Removing the audio output code didn't solve the issue though. Things were slow even when audio output consisted of a no-op.
How do I build and test?
The build process is essentially the same as on the ICS release, but with the jb-1.1.0 branch:~/$ mkdir myandroid
~/$ cd myandroid
~/myandroid$ repo init -u git://github.com/boundarydevices/imx-android-r13.4-ga.git
-b jb-1.1.0
~/myandroid$ repo sync
~/myandroid$ . build/envsetup.sh
~/myandroid$ lunch
[select nitrogen6x-eng here]
~/myandroid$ m 2>&1 | tee build.out
~/myandroid$ sudo device/boundary/mksdcard.sh /dev/sdc
Note that the reference to /dev/sdc above will need to match your SD card reader.