Android深度探索(卷1)HAL与驱动开发学习笔记(1)

第一章Android系统移植与驱动开发概述

Android的系统架构分为四层:Linux内核(Android使用Linux2.6作为内核)、C/C++代码库、Android SDK API(JAVA编写的Library)、应用程序。

Android移植分为系统移植和应用移植,Android的系统移植中,Android在不同的cpu架构之间不需要做过多的改动(有时仍需要一些调整),为了可以让Android支持不同的硬件平台,还需要进行Linux驱动移植。Android系统中还增加了一个硬件抽象层HAL(Hardware Abstraction Layer),Android通过HAL访问Linux驱动。如果增加了新的驱动或对原先的驱动进行了更改,则需要对HAL进行更改。在进行Linux驱动移植的时候,主要考虑Linux内核版本,Linux内核版本相同驱动就可以相互替换(驱动与HAL兼容的情况下)。

Linux内核版本的查看

1.手机Android版---设备---关于手机

2.Linux内核版本查询

方法一:uname -a

方法二:cat /proc/version

linux内核版本号由主版本号,次版本号,修订版本号,微调版本号,为特定的Linux 系统特别调校的描述。

Linux将存储器和外设分为三大类,字符设备、块设备、网络设备。Linux内核与网络设备的通信与字符设备和块设备的通信方式完全不同,网络设备面向数据包的接收和发送而设计。可以将字符设备和块设备归为一类,它们都是可以顺序/随机地进行读取和存储的单元,网络设备是特殊设备的驱动,它负责接收和发送帧数据,可能是物理帧,也可能是ip数据包,这些特性都有网络驱动决定。

时间: 2024-11-05 17:29:14

Android深度探索(卷1)HAL与驱动开发学习笔记(1)的相关文章

Android深度探索(卷1)HAL与驱动开发学习笔记(2)

Android深度探索(卷1)HAL与驱动开发学习笔记(2) 第二章搭建Android开发环境 书中介绍了两种JDK的安装方法, 方法一: 从官网下载JDK并进行配置,解压后在终端打开profile文件来设置PATH环境变量(# soure /etc/profile),打开profile文件后输入下面的内容 export PATH=.:developer/jdk6/bin:$PATH 保存profile文件以后,有两种方法可以重新加载profile文件. 1.# sourse  /etc/pro

Android深度探索(卷1)HAL与驱动开发学习笔记(7)

Android深度探索(卷1)HAL与驱动开发学习笔记(7) 第七章 控制发光二极管   LED驱动实现原理       2. 编写LED驱动 * 创建LED驱动的设备文件 ·使用cdev_init 函数初始化cdev ·指定设备号 ·使用cdev_add函数将字符设备添加到内核中字符设备组中 ·使用class_creat宏创建stuct class ·使用device_creat 创建设备文件 卸载LED驱动的设备文件 依次调用device_destory.class_destory.unre

Android深度探索(卷1)HAL与驱动开发学习笔记(4)

Android深度探索(卷1)HAL与驱动开发学习笔记(4) 第四章  源代码的下载与编译 一.源代码配置Android源代码下载环境 1.建一个用于存放下载脚本文件(repo)的目录 # mkdir ~/bin # PATH=~.bin:$PATH 2.下载repo脚本文件 # curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo #chmod a+x ~/bin/repo 3.创建用于存放Andro

Android深度探索(卷1)HAL与驱动开发学习笔记(6)

Android深度探索(卷1)HAL与驱动开发学习笔记(6) 第六章 第一个Linux驱动程序 统计单词个数   Linux系统将每一个驱动都映射成一个文件.这些文件称为设备文件或驱动文件,都保存在/dev目录中.这种设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易.虽然C语言里没有事件的概念,但却有与事件类似的概念,这就是回调(c a l l b a c k)函数.因此,编写Lin u x驱动最重要的一步就是编写阴调函数,否则与设备文件交互的数据将无法得到处理. 6.1编写L

Android深度探索(卷1)HAL与驱动开发学习笔记(5)

Android深度探索(卷1)HAL与驱动开发学习笔记(5) 第五章 搭建S3C6410的开发版的测试环境 1.  S3C6410 处理器概述   S3C6410是一个16/32位RISC微处理器,旨在提供一个具有成本效益.功耗低,性能高的应用处理器解决方案,像移动电话和一般的应用.它为2.5G 和 3G通信服务提供优化的H /W性能, S3C6410采用了64/32位内部总线架构.该64/32位内部总线结构由AXI.AHB 和APB总线组成.它还包括许多强大的硬件加速器,像视频处理,音频处理,

Android深度探索(卷1)HAL与驱动开发--读书笔记(第一章)

Android系统架构是由四层构成,第一层为Linux内核,主要包括Linux驱动程序以及内存管理.进程管理.电源管理的等程序.并且不同的Android的版本的驱动可能并不通用.第二层为C/C++代码库,主要包括使用C/C++编写的代码库(Linux下的.so文件),也包括.Dalivak虚拟机的运行时(Runtime).第三层为Android SDK API,这一层是用JAVA编写的各种Library,并且均是基于Dalvik虚拟机格式的.第四层则是应用程序,这一层是Android用户,包括程

Android深度探索(卷1)HAL与驱动开发--读书笔记(第四章)

l  配置Android源代码下载环境步骤 创建一个用于存放下载脚本文件(repo)的目录 #mkdir ~/bin #PATH=~/bin/repo 下载repo脚本文件 #curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo >~bin/repo #chmod a+x~/bin/repo 创建用于存放Android源代码目录 #mkdir android_source #cd android_source 初始化 #repo

Android深度探索(卷1)HAL与驱动开发--读书笔记(第二章)

搭建Android底层开发环境的步骤 l  安装JDK: 1.下载JDK,解压,打开profile设置PATH环境变量 2.#gedit  /etc/profile Export PATH= .:/developer/jdk6/bin:$PATH 3.#source /etc/profile # . /etc/profile 注:可通过echo $PATH查看环境变量的值 l  搭建Android应用程序开发环境 安装Android SDK 首先下载好SDK,然后将这个压缩包文件复制到Linux

Android深度探索(卷1)HAL与驱动开发--读书笔记(第七章)

LED控制发光二级管 1.实现原理:与本机的I/0 内存进行交互.所谓I/0 内存是通过各种接口连接到主机的硬件在主机内存中的映射.然后Linux 内核会利用I/0 内存中的数据硬件交互.Linux 内核提供了多个与1/0 内存交互的函数.每一个连接Linux 的硬件在ν0 内存中都会有映射首地址. 2.编写LED驱动: 1)         adb shell  “ echo ’1’ > /de>/s3c6.410 leds" 2)         adb shell  ” ech