第七章主要讲的是控制发光二极管的驱动程序,用来控制开发板上的4个led灯

首先讲了led驱动的实现原理,linux驱动并不是直接向硬件的内存中写数据,而是与本机的i/o内存进行交互,每一个连接linux的硬件在i/o内存中都会有映射首地址。

编写驱动程序,先创建led驱动的设备文件:

1.使用cdev_init函数初始化cdev

描述设备文件需要一个cdev的结构体,cdev的大多是成员变量并不需要我们去初始化,只要调用cdev_init函数就可以初始化大部分cdev的成员变量

2.指定设备号

Linux 的设备的文件号分为 主设备号和此设备号,设备号有两种指定方法:直接在代码中指定;动态分配。

3.使用cdev_add函数将字符设备添加到内核中的字符设备数组中,调用cdev_add函数需要指定设备文件指针、设备号和设备文件数量。

4.使用class_create宏创建struct class

5.使用device_create函数创建设备文件

卸载led驱动的设文件需要依次调用device_destroy、class_destroy、unregister_chrdev_region方法。

在控制led灯亮、灭之前必须要了解如何设置寄存器。

Led驱动可以使用两种方式控制led灯:

1.通过字符串控制led;

2.通过i/o命令控制led。

测试led驱动:

1.使用NDK测试LED驱动

2.使用java测试LED驱动

控制LED灯的驱动是本书第一个和硬件结合的驱动,虽然程序不复杂,但是包括了linux驱动所有必要的部分。

时间: 2024-10-10 13:36:29

第七章主要讲的是控制发光二极管的驱动程序,用来控制开发板上的4个led灯的相关文章

驱动控制开发板上的四个LED小灯

在上一章了解了开发linux驱动程序的步骤,在本章会完成一个真正意义上的linux驱动,该驱动用来控制开发板上的四个LED小灯,通过向驱动发送数据可以控制LED小灯的开关. 首先介绍了LED驱动的实现原理,虽然linux驱动直接与硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互.Linux内核的内存管理模块负责同步I/O内存与硬件中的数据.每一个连接linux的硬件在I/O内存中都会有映射首地址. 其次是编写LED驱动.以下创建一个设备文件,第一步:使用

第六章主要讲的是第一个linux驱动程序:统计单词个数

从这章开始进入了实战阶段,这一章首先介绍了linux驱动的工作方式,linux将每一个驱动都映射成一个文件,这些文件被称为设备文件或驱动文件,都保存在/dev目录中,使得linux驱动交互就像是普通文件交互一样. 编写linux驱动程序的步骤: 1.建立linux驱动骨架 在linux驱动程序中需要提供两个函数来分别处理驱动初始化和退出的工作.这两个函数分别用module_init和module_exit宏指定. 2.注册和注销设备文件 任何一个linux驱动都需要有一个设备文件,否则应用程序与

8_陀螺仪MPU6050和PWM控制在STM32F4-Discovery开发板上的实现

很早以前就把圆点博士的程序从STM32F103移植到STM32F4-Discovery(STM32F407),battery,陀螺仪和PWM电机控制的程序都已经测试完毕,运行有一段时间,正常.下面展示几张图片,都是用杜邦线连接起来的,陀螺仪,串口等外设,此外还有nRF24L01,不过nRF24L01的程序读写寄存器可以了,没有尝试过与别的nRF24L01通信.下面一张是正面照片: 下面这张是背面的连接线: 下面这张来个更清晰一些的: 下面这张是圆点博士的上位机软件: 同时我也录制了一些视频,上传

第七章 LED将为我闪烁:控制发光二极管

该Linux驱动用来控制开发板上的4个LED灯,即通过向Linux驱动发送数据可以控制LED灯的开关.LED驱动提供两种交互方式:命令和读写设备文件. 测试LED驱动之前需用USB线连接开发板,然后打开开发板.成功启动后,执行build.sh脚本文件编译和安装LED驱动.build.sh脚本文件会自动将s3c6410_leds.ko文件上传到开发板并安装.LED驱动只能在开发板上安装,build.sh执行了build_s3c6410.sh脚本文件进行编译和安装.LED驱动会建立一个/dev/s3

LED将为我闪烁:控制发光二极管

本章会完成一个真正意义上的Linux驱动.该linux驱动用来控制开发板上的4个LED灯.也就是说通过向linux驱动发送数据可以控制LED小灯的开关. 一.LED驱动的实现与原理 尽管Linux 驱动直接与硬件打交道, 但并不是 Linux 驱动直接向硬件中的内存写数据, 而是与本机的 I/O 内存(I/O Memory, 位于内核空间)进行交互. 所谓 I/O 内存是通过各种接口(PCI.USB.蓝牙.以太网等)连接到主机(PC.手机)的硬件(网卡.声卡.摄像头等)在主机内存的映射. 二.编

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

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

读书笔记第七章

控制发光二极管: 对于Linux驱动来说,需要直接与硬件交互,本章会完成一个真正意义的Linux驱动,用来控制开发板上的4个LED小灯,称为LED驱动,也就是说通过想Linux驱动发送数据可以控制LED小灯的开光. LED驱动: 1.创建LED驱动的设备文件: 1.使用cdev_init函数初始化cdev: 2.指定设备号,Linux设备文件的设备号分为主设备号和次设备号,设备号可以直接在代码中指定,也可以动态分配: 3.使用cdev_add函数将字符设备添加到内核中的字符设备数组中: 4.使用

第七章感想

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

基于TINY4412的Andorid开发-------简单的LED灯控制【转】

本文转载自:http://www.cnblogs.com/pengdonglin137/p/3857724.html 基于TINY4412的Andorid开发-------简单的LED灯控制 阅读目录(Content) 一.编写驱动程序 二.编写代码测试驱动程序 三.编写HAL代码 四.编写Framework代码 五.编写JNI代码 六.编写App 参考资料: <Andriod系统源代码情景分析> <嵌入式Linux系统开发完全手册_基于4412_上册> 作者:彭东林 邮箱:[em