diff options
Diffstat (limited to 'en/devices/architecture/index.html')
-rw-r--r-- | en/devices/architecture/index.html | 79 |
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> |