aboutsummaryrefslogtreecommitdiff
path: root/en/devices/architecture/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'en/devices/architecture/index.html')
-rw-r--r--en/devices/architecture/index.html79
1 files changed, 79 insertions, 0 deletions
diff --git a/en/devices/architecture/index.html b/en/devices/architecture/index.html
new file mode 100644
index 00000000..a4a415e3
--- /dev/null
+++ b/en/devices/architecture/index.html
@@ -0,0 +1,79 @@
+<html devsite>
+ <head>
+ <title>Architecture</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2017 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.
+ -->
+
+
+
+<p>
+Android system architecture contains the following components:
+</p>
+
+<img src="../images/ape_fwk_all.png">
+
+<p class="img-caption"><strong>Figure 1.</strong> Android system architecture</p>
+
+<h2 id="application-framework">Application framework</h2>
+
+<p>The application framework is used most often by application developers. As a
+hardware developer, you should be aware of developer APIs as many map directly
+to the underlying HAL interfaces and can provide helpful information about
+implementing drivers.</p>
+
+<h2 id="binder-ipc">Binder IPC</h2>
+<p>The Binder Inter-Process Communication (IPC) mechanism allows the application
+framework to cross process boundaries and call into the Android system services
+code. This enables high level framework APIs to interact with Android system
+services. At the application framework level, this communication is hidden from
+the developer and things appear to "just work".</p>
+
+<h2 id="system-services">System services</h2>
+<p>System services are modular, focused components such as Window Manager,
+Search Service, or Notification Manager. Functionality exposed by application
+framework APIs communicates with system services to access the underlying
+hardware. Android includes two groups of services: <em>system</em> (such as
+Window Manager and Notification Manager) and <em>media</em> (services involved
+in playing and recording media).</p>
+
+<h2 id="hal">Hardware abstraction layer (HAL)</h2>
+<p>A HAL defines a standard interface for hardware vendors to implement,
+which enables Android to be agnostic about lower-level driver implementations.
+Using a HAL allows you to implement functionality without affecting or modifying
+the higher level system. HAL implementations are packaged into modules and
+loaded by the Android system at the appropriate time. For details, see
+<a href="/devices/architecture/hal.html">Hardware Abstraction Layer (HAL)</a>.
+</p>
+
+<h2 id="Linux-kernel">Linux kernel</h2>
+<p>Developing your device drivers is similar to developing a typical Linux
+device driver. Android uses a version of the Linux kernel with a few special
+additions such as wake locks (a memory management system that is more aggressive
+in preserving memory), the Binder IPC driver, and other features important for a
+mobile embedded platform. These additions are primarily for system functionality
+and do not affect driver development.</p>
+
+<p>You can use any version of the kernel 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 details, see
+<a href="/source/building-kernels.html">Building Kernels</a>.</p>
+
+ </body>
+</html>