This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Is it possible (and practical) for fitting android into 4Gbits (512MB) NAND

We are going to design an industrial handheld device with very few peripherals. Our customers prefer android to QTE/Linux. We plan to go with TI AM335x and Jelly Bean 4.2.2 release.

Most android devices today use eMMC as main storage. eMMCs with low capacity, say 2GB or 4GB, are now very hard to purchase. 8GBs or higher capacity are relatively expensive and far more than our needs.

The device just has the very basic functions, display, audio, wifi, (possibly gprs), and battery; no camera, no ethernet, no gps or other sensors. Our customer won't use any imaging or video applications. Just connect the device to some serial devices (via uart), read/write a few bytes and send them to remote servers via networking. They will write one or two very simple applications, at most consuming 10-20Mbytes storage space. Most built-in applications can be stripped away, they don't use them.

Also we want the device to be fully compatible with Android API, removing core packages out of Android framework is not a choice, even if they are not used now. 

I wonder if we can use 4Gbit (512MB) NAND as the only storage device. Is it possible and practical for a minimal android system with GUI? Or is it too limited for android system to work and perform as usual and we must have more storage space? How much space would be sufficient?

Please give us some advice.

Thanks.

matianfu

  • Hi Matianfu,

    To my knowledge 512MB eMMC storage space is not enogh to install Android OS. As I remember (from my experience with other TI OMAP based platforms) the minimum required space is about 2GB storage space, which is also confirmed here: http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.1_UserGuide#Installation

    Best Regards,
    Yordan
  • Moving this to the Android forum.
  • Thanks, Sir.

    I understand 2GB mmc card is required for ics/jb official release demo. There are many media files to be fitted into the card. However, I tried the prebuilt release image. The system image is no more than 200MB in compressed format, and after boot, the dalvik cache are established, this adds around 60MB to (user data) partition.

    Also, TI has an excellent wiki article on stripping down memory footprint based on Gingerbread release:

    http://processors.wiki.ti.com/index.php/Android_Memory_Analysis

    I read the article and do the similar things over Jelly Bean. Many unused packages and services are removed. After stripping down, the rootfs partition is about 256MB. Since its a read-only partition, it does not grow in size after initial boot.

    What I am mostly concerned is data partition. The dalvik cache grows up to around 40-60MB after init boot. So it looks like the 512MB is probably sufficient for booting the vanilla system. But users don't have much space to store files. It seems that user can have around 100MB ~ 150MB to store apks and sqlite databases. But if they want to store files, an external card is a recommended.

    I think we can tell the customer that the storage space is extremely limited. But I have no idea if we can put some limit inside the system to prevent users from storing large files. Jelly Bean use FUSE user space file system to simulate sdcard, can we set a limit on it? or can we totally remove it? Will the system work properly without simulated sdcard partition?

    Any advice would be greatly appreciated.

  • Hi Matianfu,

    Indeed reducing the non volatile storage to 512MB can be challenging but is feasible depending on the trade-offs you are willing to make.

    As explained in the "Android Memory Analysis" some stocks packages can be removed but know that this operation is not trivial as there are lots of packages dependencies within the Android system. For instance the Phone application implements the System Service which would break the Phone API if removed. Another example would be the CTS, you cannot pass the CTS with that amount of storage as some media tests require lots of space.

    Also, you are right about /data being the partition to be very careful about. As for the /sdcard size, it is actually the same as /data, you can look at this emulated space creation inside /init.am335xevm.rc.

    Here are a possible layout that would need some testing but that might fit your needs:

    • boot partition: 8MB
    • rootfs partition: 128MB
    • data partition: 376MB