Android深度探索(卷一)HAL与驱动开发 第七章

通过学习Android深度探索(卷一)HAL与驱动开发的第七章让我了解了如何通过驱动程序来控制发光二极管,实现驱动直接与硬件交互。

一个完整的Linux驱动主要由内部处理和硬件交互两部分组成,其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等;与硬件交互主要是指通过函数与硬件中的寄存器进行数据交互。

LED驱动的实现原理:尽管Linux驱动直接与硬件打交道,但并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。每一个连接Linux的硬件在I/O内存中都会有映射的首地址。

还要了解并注意:LED有两个引脚:GPB0和GPB1;控制LED需要通过3个寄存器来完成,3个寄存器分别是GPMCON,GPMDAT和GPMPUD;每个寄存器可以使用4个字节;使用GPMCON寄存器的低16位将LED的两个端口的属性设为output;使用GPMDAT寄存器的低4位控制4个LED的亮灭;使用GPMPUD寄存器的低8位分别打开4个LED的上拉电路。

创建LED驱动的设备文件的步骤:第一步,使用cdev_init函数初始化cdev;第二步,指定设备号,设备号有两种指定方式分别是直接在代码中指定和动态分配;第三步,使用cdev_add函数将字符设备添加到内核中的字符设备数组中;第四步,使用class_create宏创建struct class;第五步,使用device_create函数创建设备文件。

时间: 2024-08-10 23:25:09

Android深度探索(卷一)HAL与驱动开发 第七章的相关文章

Android深度探索HAL与驱动开发-——第七章

第七章主要介绍了嵌入式组态软件结构,.界面设计和功能选择区设计以及辅助功能区设计和程序生成区设计Android应用并采用Java开发嵌入式.   Android嵌入式是通过拖拽式进行程序设计,双击指定组件和调整组件属性完成的. Androd界面设计.包括布局.组件的使用.android嵌入式组态软件功能选择区设计包括界面设计.IO设计和数据库设计.   1.界面设计:分为六个模块,布局.按钮类.文本类.时间类.特殊类.属性组成.(1)布局类中包括绝对布局.框架布局和线性布局:(2)按钮类包括普通

Android深度探索HAL与驱动开发 第七章

第七章 本章学习控制发光二极管,通过直接与硬件交互完成,控制开发板上的四个小灯. LED驱动的实现原理是 理解了原理之后,我们便可以开始编写led驱动了,与上一章步骤类似,通过命令和读写文件实现.首先创建led驱动的设备文件,可以使用cdev_init,register_chrdev_region,cdev_add等建立主设备号的设备文件.步骤如下: 1使用cdev_init初始化cdev 2指定设备号 3使用cdev_add函数将字符设备添加到内核中的字符设备组中 4使用class_creat

Android深度探索(卷1)HAL与驱动开发 第七章 LED将为我闪烁:控制发光二极管

第七章  LED将为我闪烁:控制发光二极管 读书心得    LED驱动的实现原理 尽管Linux驱动程序直接与硬件打交道,但并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互. 编写LED驱动 测试LED驱动 LED驱动的移植 在修改Linux驱动的源代码时,应尽量不要修改Linux驱动的借口. LED驱动是本书第一个真正和硬件打交道的Linux驱动,虽然LED驱动并不复杂,只是控制了四个LED,但是LED驱动已经包括了Linux驱动所有必要的部分.一个完整的Linux

ANDROID深度探索(卷1)HAL与驱动开发 第七章

并不是 Linux 驱动直接向硬件中的内存写数据, 而是与 本机的 I/0 内存(I/O Memory,位于内核空间进行交互.所谓 1/0 内存是通过各种接口( PCI. USB.蓝牙.以太网口等〉连接到主机( PC.手机〉的硬件〈网卡.声卡.摄像头等〉在主机内 存中的映射.例如,在 Ubuntu Linux 上运行的驱动只需要访问运行 Ubuntu Linux 的主机中的 I/o 内存即可,然后 Linux 内核会利用 I/0 内存中的数据硬件交互. Linux 内 核的内存管理模块负责同步

Android深度探索(卷1)HAL与驱动开发第七章总结

本章学习了搭建S3C6410开发板的测试环境,主要都是围绕S3C6410开发板进行的.这个开发板是由三星公司推出的一款低功耗.高性价比的RISC处理器,基于ARM11的内核.一.搭建编译环境所需要的交叉编译工具链:S3C6410X Tool Chain 4.2.2 - EABI V0.0 - cross-4.2.2-eabi.tar1.解压上述工具链获得文件夹:4.2.2-eabi/2.在/usr/local/下面创建目录arm/ (注意,最好是放到这个目录,不然在以后的编译过程中可能出现一些错

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

首先创建led驱动的设备文件,可以使用cdev_init,register_chrdev_region,cdev_add等建立主设备号的设备文件.步骤如下: 1使用cdev_init初始化cdev 2指定设备号 3使用cdev_add函数将字符设备添加到内核中的字符设备组中 4使用class_creat宏创建struct class 5使用device_creat函数创建设备文件 然后卸载led驱动的设备文件 {Device_destroy(leds_class,dev_number); If(

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

Linux驱动是与I/O内存进行交互,所谓I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射.Linux内核提供了多个与I/O内存交互的函数,Linux内核的内存管理模块负责同步I/O内存与硬件中的数据. 一:首先创建led驱动的设备文件 1.使用cdev_init函数初始化cdev 2.指定设备号 3.使用cdev_add函数将字符设备添加到内核中的字符设备数组中 4.使用class_create宏创建struct_class 5.使用device_create函数创建设备文件 二:卸

《Android深度探索》(卷1)HAL与驱动开发 第七章心得体会

驱动的移植. 在drivers/char 目录下,我们建立一个驱动程序文件mini2440_leds.c,内容如下: <span style="font-size: 18px;">#include <linux/miscdevice.h>#include <linux/delay.h>#include <asm/irq.h>#include <mach/regs-gpio.h>#include <mach/hardwar

Android深度探索(卷1)HAL与驱动开发 第七章&#160;LED将为我闪烁:控制发光二极管 读书笔记

本章的实验将会实现真正意义上的Linux驱动,会实现直接与硬件的交互.需要控制4个LED灯. 7.1LED驱动的实现原理 事实上并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互.I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射. 7.2编写LED驱动 1.创建LED驱动的设备文件 (1).使用cdev_init函数初始化cdev (2).指定设备号 (3).使用cdev_add函数将字符设备添加到内核中的字符设备数组中. (4)使用class_create宏