aboutsummaryrefslogtreecommitdiff
path: root/src/devices/porting.jd
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/porting.jd')
-rw-r--r--src/devices/porting.jd98
1 files changed, 0 insertions, 98 deletions
diff --git a/src/devices/porting.jd b/src/devices/porting.jd
deleted file mode 100644
index e0b6eb8f..00000000
--- a/src/devices/porting.jd
+++ /dev/null
@@ -1,98 +0,0 @@
-page.title=Porting
-@jd:body
-
-<!--
- Copyright 2010 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<div id="qv-wrapper">
- <div id="qv">
- <h2>In this document</h2>
- <ol id="auto-toc">
- </ol>
- </div>
-</div>
-
- <p>Android provides you with the freedom to implement your own device specifications
- and the drivers to support them. The hardware abstraction layer (HAL) gives you a
- standard way to create software hooks in between the Android
- platform stack and your hardware. In addition, the Android operating system
- is open-sourced to help you through your device's bringup.</p>
-
- <p>To ensure that your devices maintain a high level of quality and offers a consistent
- experience for your users, they must must also
- pass the tests in the compatibility test suite (CTS). CTS ensures that anyone
- building a device meets a quality standard that ensures apps run reliabaly well
- and gives users a good experience. For more information, see the
- <a href="{@docRoot}compatibility/index.html">Compatibility</a> section.</p>
-
- <h2>Android Low-Level System Architecture</h2>
-
-<p>Before you begin porting Android to your hardware, it is important to have an
-understanding of how Android works at a high level. Because your drivers and HAL code interact
-with many layers of Android code, this understanding can help you find
-your way through the many layers of code that are available to you through the AOSP
-(Android Open Source Project) source tree. The following diagram shows a system
-level view of how Android works:
-</p>
-
-<img src="images/system-architecture.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Android System Architecture</p>
-
- <h4>Application framework</h4>
- <p>This is the level that most application developers concern themselves with. You should be
- aware of the APIs available to developers as many of them map 1:1 to the underlying HAL
- interfaces and can provide information as to how to implement your driver.
- </p>
-
- <h4>Binder IPC</h4>
- <p>
- The Binder Inter-Process Communication mechanism allows the application framework to
- cross process boundaries and call into the Android system services code. This basically allows
- high level framework APIs to interact with Android's system services. At the application framework level, all
- of this communication is hidden from the developer and things appear to "just work."
- </p>
-
- <h4>System services</h4>
- <p>Most of the functionality exposed through the application framework APIs must
- communicate with some sort of system service to access the underlying hardware. Services
- are divided into modular components with focused functionality
- such as the Window Manager, Search Service, or Notification Manager. System services are grouped
- into two buckets: system and media. The system services include things such as the Window or
- Notification Manager. The media services include all the services involved in playing and
- recording media.
- </p>
-
-<h4>Hardware abstraction layer (HAL)</h4>
-<p>The HAL serves as a standard interface that allows the Android system to call into the device
- driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
- You must implement the corresponding HAL (and driver) for the particular piece of hardware that your product
- provides. Android does not mandate a standard interaction between your HAL implementation and your device drivers, so
- you have free reign to do what is best for your situation. However, you must abide by the contract
- defined in each hardware-specific HAL interface for the Android system to be able
- to correctly interact with your hardware. HAL implementations are typically built into
- shared library modules (<code>.so</code> files).
-</p>
-<h4>Linux Kernel</h4>
-<p>For the most part, developing your device drivers is the same as developing a typical Linux device driver.
- Android uses a specialized version of the Linux kernel with a few special additions such as
- wakelocks, a memory management system that is more agressive in preserving memory,
- the Binder IPC driver, and other features that are important for a mobile embedded platform like Android.
- These additions have less to do with driver development than with the system's functionality. The PDK
- does not provide kernel sources, so you must provide your own. You can use any version of the kernel that
- you want as long as it supports the required features, such as the binder driver. However, we recommend
- using the latest version of the Android kernel. For the latest Android kernel, see
- <a href="{@docRoot}source/building-kernels.html" >Building Kernels</a>.
-</p> \ No newline at end of file