Android底层驱动开发(五)

目录

一、Linux驱动开发

Linux操作系统框架图

Linux内核组成

Linux驱动

Linux 内核编译

Linux 驱动编程

驱动开发基础

安卓系统内核的Bring Up

补充:

二、Android内核配置和编译原理

内核源码目录分析

kernel的配置体系

内核的配置原理

三、Kconfig文件

四、defconfig文件


一、Linux驱动开发

Linux操作系统框架图

        Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。

Linux内核组成

在这里插入图片描述

Linux驱动

        广义定义:操作硬件,让硬件工作起来的程序代码。

        狭义定义:操作系统中用来控制硬件的逻辑方法的那部分代码。

1、分类

(1)system驱动:SOC、Memory、GPIO、CLK

(2)多媒体驱动:Display、Audio、camera

(3)功耗:PMIC、LDO、charger

(4)RF:WiFi、BT、GPS、UWB、NFC

(5)Sensor/外设:IMU、BIO、Touch、LED、Key/Button、USB

2、Linux驱动三大组件

(1)Bus(总线):总线是CPU和一个或多个设备之间信息交互的通道。而为了方便设备模型的建立,Linux就虚构了Platform Bus(虚拟总线),使得所有设备都能挂靠。

(2)Device:用来描述硬件设备信息的结构体,描述它的名字、属性、连接的Bus、归属的Class等信息。

(3)Driver:描述硬件设备的驱动程序的结构体,它包含设备初始化等函数操作,是linux内核驱动的核心。

(4)Device与Driver的匹配方法:

①直接根据名字来进行匹配,即device name和driver name相同。

②通过id_table来实现,采用表中的name与device name匹配。

(5)三大驱动组件之间的关系

关系一:

硬件模块 → 模块信息 → Device → 匹配device和driver → BUS

                → 功能实现 → Driver → 匹配device和driver → BUS

关系二:

Devices list → BUS → drivers list

        一             对              多

3、Linux设备驱动模型

        Linux设备驱动模型是一种抽象模型,为内核建立起统一的设备模型,其目的是提供一个对系统结构的一般性抽象描述。Linux设备驱动模型提供统一的设备管理抽象,这些抽象包括总线、类、设备和设备驱动等。

       Class(类):集合具有相似功能或属性的设备,抽象出一套可以在多个设备之间共用的数据结构和接口函数。

Linux 内核编译

kernel源代码 —— 根目录 —— Linux配置文件:Makefile、.config

                      —— Drivers等各级子目录 —— Linux配置文件:kconfig、Makefile

                      —— Arch目录中platform子目录 —— Linux配置文件:Deficonfig

1、内核配置及编译步骤:

  • make distclean :清除临时文件、中间文件和配置文件。
  • make xxx_config(默认配置文件):得到内核的当前配置文件.config。
  • make menuconfig(或config、xconfig):进入配置用户界面,进行内核的详细配置。
  • make all:编译内核。

2、F

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值