Showing posts with label google. Show all posts
Showing posts with label google. Show all posts

Friday, 12 February 2016

Embedded Android

                              Having plans to create a device that would change this world ? Are you an embedded programmer skilled in doing some stuffs with micro-controller kits. Time to move on to next level. Next generation arm  based embedded processor kits have arrived. These have already been introduced to run on operating systems like Windows CE, linux, android and more on.

Features of using micro-processors over micro-controllers:

* Connectivity: 

Today, each and every embedded device present before us are connected with each other to form an network. This would be a norm in future which your device must imply with. Connectivity might be either through Wifi, Bluetooth or Ethernet. To add this support to a standalone microcontroller kit would be tiresome. This is the main feature where embedded processors come into play, where the SoC Chip manufacturer handles this for you. These processors are placed on the development board that contains on board Wifi/BT combo chips and come with an Ethernet port. On the Software side, many source operating systems like embedded linux, embedded android are available which provide us with a reliable stack on top of which our applications need to developed. Hence most of our board-bringup and assembling is done by SoC vendors itself. With considerable efforts reduced, our role would be narrowed in developing the application.

* Display :

It would be weird these days if your product comes with a LED/LCD Display to display some text. User Interface [UI] has already been influential because at the end of the day, the user's decision is going to decide the fate of the product. High Resolution Display panels with Resistive/Capacitive Touch Screen would absolutely overthrow its LCD/LED counterparts in this era. These embedded development kits have provisions for connecting several kind of displays ranging from 3" inch to 10" inch. To be noted, they have HDMI ports too which provides rich color resolutions.

* Multimedia :

Have you ever tried to add Audio support for your controller kit?. With these embedded development kits, It is much easier to play audio and video files. Moreover, each kit comes with its own graphical processing unit[GPU] which provides immense gaming performance. To believe it, you need to experience it by playing gaming apps on a development kit running on Android. We prefer Ashphalt !!!!!!

* Storage :

Each embedded processor has its own internal storage in the form of flash[eMMC], whose size from 1GB to 16GB. Hence Data Storage must not be a problem.

* Hardware Interfaces:

Today, Embedded processors come with different interfaces which are not available in conventional microcontroller kits. They include
# USB
# PCI
# SATA

Each of the above interface has its own use case and in turn can provide varied functionalities.

* Camera :

Do you want your device to be bit more realistic manipulating some real time data. Then your device needs to have a camera. These kits have provision for those too.

Myths:

* Power Consumption:

Obviously, microcontrollers outplay these kits in terms of power consumption. But recent technological developments have shed some light onto that area. This might range from advanced suspend/resume operations to low power consuming ARM Cores.Soon this gap would be narrowed down. In the future, you can expect devices that consume almost little amount of energy.

* Complexity of Operating Systems:

Real Time Operating systems tend to be more complex from a developer point of view. But in reality, you have got more advantages than disadvantages. Nowadays, several Developer communities are available which openly offer support to any kind of problems faced while developing a device.

* Cost :

Embedded Development kits actually tend to be cost-effective because they provide end-to-end solution for making device. It is really good to see low cost development kits to hit the market. Front runners among them are Raspberry Pi and Snapdragon Board.

The continuation of these posts mainly target embedded developers who are aspiring to bring out some new innovation to this world like us. To begin with, we recommend you with the following kits.


  •  Freescale imx6 based processors.
  •  Wandboard Solo,Dual or Quad.
  •  Nitrogen 6x Kits
  •  UDOO imx6 kits.
  •  Ankaa Development Kit 
  •  Raspberry Pi
  •  Qualcomm Snapdragon


Regarding the Operating system, we prefer "Embedded Android". To know why, wait for the next post..

Monday, 10 November 2014

Android Booting Process explained step by step

Android Boot Process is more or less similar to linux booting process. We all know that android is a application running on the top of Linux operating system. More popularly known as " A Stack Of Application"  

Well talking about the various stages in Android Booting , first few steps below are steps of linux booting

Stages Of Booting
  • Bootloader normally the Grub
  • U-Boot or secondary Bootloader or second level Bootloader
  • linux kernel 
  • Android






The Android process has the following sequence
  • Init
  • Zygote
  • System Server
  • Service Manager
  • Other Daemons and processes
  • Applications
BOOTLOADER:
Bootloader is the initial piece of code stored in ROM which has address of the device ( the Boot Media ) from where it should start boot. For example we can boot an operating system from SD-Card , eMMC , SATA , HARDISK , CD-ROM , Network etc. So this Bootloader has the address of the boot media. Since ROM is a non-volatile device bootloader is stored in ROM. we can fuse the ROM to boot from various device. 

U-BOOT:

U-Boot is a second level bootloader which initializes DRAM and other peripheral devices like UART RTC etc. More specifically U-Boot is responsible for loading ramdisk image. Ramdisk image is nothing but the board specific images which initialize certain major peripherals which are necessary to debug the device in case of any emergency.

KERNEL:
Linux kernel is the heart of the Android responsible for the process creation, inter process communication, device drivers, file system management etc. Android applies a custom patch on the main stream kernel to support certain features like Wake locks etc needed for operation of the Android.
The kernel can be either loaded as uncompressed image or as a compressed image. Up on loading, it mounts the root file system (typically passed as kernel command line arguments) and starts the first application in user space.

ANDROID:
The android applications are executed over a Virtual Machine called the Dalvik. Android typically operates wholly on the user space. Now Google has replaced DVM ( The Dalvik Virtual Machine ) with ART ( Android Run Time).

More explanation regarding the boot stages after the zygote Initialization ( The Android Process ) will be explained in the next POST !!!!!


 G HARI PRASATH
Project Engineer





Friday, 15 August 2014

ANDROID ARCHITECTURE


Hai every one!!! Where ever you refer for Android Architecture people use to explain the various stacks in android architecture as Google usually refers to the Android OS as a software stack. I am just showing what i have gathered from other websites which is clearly explaining how Android Architecture is. Each layer of the stack groups together several programs that support specific operating system functions. The image shown below is the architecture of Android.




THE KERNEL:

The base of the stack is the kernel. Google used the Linux version 2.6 OS to build Android's kernel, which includes Android's memory management programs, security settings, power management software and several hardware drivers. Drivers are programs that control hardware devices. For example, the Nexus One has a camera. The Android kernel includes a camera driver, which allows the user to send commands to the camera hardware.

LIBRARIES:

On top of Linux kernel there is a set of libraries including open-source Web browser engine WebKit, well known library libc, SQLite database which is a useful repository for storage and sharing of application data, libraries to play and record audio and video, SSL libraries responsible for Internet security etc.. You can think of libraries as a set of instructions that tell the device how to handle different kinds of data. For example, the media framework library supports playback and recording of various audio, video and picture formats. Other libraries include a three-dimensional acceleration library (for devices with accelerometers) and a Web browser library.

DALVIK VIRTUAL MACHINE / ANDROID RUN TIME:

Located on the same level as the libraries layer, the Android run time layer includes a set of core Java libraries. Android application programmers build their apps using the Java programming language. It also includes the Dalvik Virtual Machine. Google is now replacing Dalvik Virtual Machine With Android Run Time which introduces Ahead-Of-time compilation, which can improve app performance . ART also has tighter install -time verification than Dalvik.

NOTE : I will explain about the difference between Android Run Time and Dalvik virtual Machine in the next post.

A virtual machine is a software application that behaves as if it were an independent device with its own operating system. You can run a virtual machine on a computer that operates on a completely different OS than the physical machine's OS. The Android OS uses virtual machines to run each application as its own process. That's important for a few reasons. First, no application is dependent upon another. Second, if an application crashes, it shouldn't affect any other applications running on the device. Third, it simplifies memory management.

APPLICATION FRAMEWORK:

The next layer is the application framework. This includes the programs that manage the phone's basic functions like resource allocation, telephone applications, switching between processes or programs and keeping track of the phone's physical location. Application developers have full access to Android's application framework. This allows them to take advantage of Android's processing capabilities and support features when building an Android application. Think of the application framework as a set of basic tools with which a developer can build much more complex tools.The Application Framework layer provides many higher-level services to applications in the form of Java classes. Application developers are allowed to make use of these services in their applications

APPLICATION LAYER:

At the top of the stack are the applications themselves. This is where you find the basic functions of the device such as making phone calls, accessing the Web browser and accessing your contacts list. If you're an average user, this is the layer you'll use most. You do that with the user interface. Only Google programmers, application developers and hardware manufacturers access the other layers further down the stack. Moreover most of the people are playing over in this layer, coz it is the one which makes Android an ANDROID :P........

Author
HARI PRASATH G
PROJECT ENGINEER