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

本章会完成一个真正意义上的Linux驱动。该linux驱动用来控制开发板上的4个LED灯。也就是说通过向linux驱动发送数据可以控制LED小灯的开关。

一、LED驱动的实现与原理

尽管Linux 驱动直接与硬件打交道, 但并不是 Linux 驱动直接向硬件中的内存写数据, 而是与本机的 I/O 内存(I/O Memory, 位于内核空间)进行交互。 所谓 I/O 内存是通过各种接口(PCI、USB、蓝牙、以太网等)连接到主机(PC、手机)的硬件(网卡、声卡、摄像头等)在主机内存的映射。

二、编写LED驱动

1.创建LED驱动的设备文件

第一步:使用cdev_init函数初始化

第二步:指定设备号

第三步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中

第四步:使用class_create宏创建struct class

第五步:使用device_create函数创建设备文件

2.卸载LED驱动的设备文件

其中使用到的函数 device_destory、class_destory和unregister_chrdev_region方法

3.设置寄存器与初始化LED驱动

4.控制LED

通过字符串控制LED

通过I/O命令控制LED

5.LED驱动的模块参数

三、测试LED驱动本章介绍了一些更复杂的测试方法,这些方法不仅可以向LED设备文件发送字符串,还可以发送I/O控制命令。这些测试方法包括可执行程序测试、NDK测试和JAVA测试。

1.编写测试I/O控制命令的通用程序

2.可以使用NDK测试LED驱动

3.使用Java测试LED驱动

四、LED驱动的移植

Linux驱动必须要在当前使用的Liunx内核编译下才可以安装在当前的linux或者android系统中。因此,LED驱动最简单的移植就是将其在不同linux内核版本下进行编译。

LED 驱动是本书第一个真正和硬件打交道的 Linux 驱动。虽然 LED 驱动并不复杂, 只是控制了4个 LED,但 LED 驱动已经包括了 Linux 驱动所有必要的部分。 一个完整的 Linux 驱动主要由内部处理和与硬件交互降部分组成。其中内部处理主要是指 Linux 驱动的装载、卸载、与设备文件相关的动作处理(读写设备文件、向设备文件发送 I/O 命令等动作)以及业务逻辑等。与硬件交互主要是指通过 iowrite32、 .ioread32 等函数与硬件中的寄存器进行数据交互。Linux 驱动在不同平台的移植也是处理这两部分。

时间: 2024-10-11 17:19:13

LED将为我闪烁:控制发光二极管的相关文章

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

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

七、LED将为我闪烁:控制发光二级管 ——学习笔记

第七章LED将为我闪烁:控制发光二级管 ——学习笔记 1.LED驱动的实现原理 Linux驱动与硬件交互的原理:Linux驱动与I/O内存通过ioread30和iowrite32函数交互:I/O内存与硬件,内存管理模块负责同步I/O内存与硬件中德数据. 解释:尽管 Linux 驱动直接与硬件打交道,但并不是 Linux 驱动直接向硬件中的内存写数据 而是与 本机的 I/0 内存(νO Memory ,位于内核空间〉进行交互.所谓 1/0 内存是通过各种接口(PCI . USB .蓝牙.以太网口等

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

简单的LED程序主要步骤如下:一:首先创建led驱动的设备文件1.使用cdev_init函数初始化cdev2.指定设备号3.使用cdev_add函数将字符设备添加到内核中的字符设备数组中4.使用class_create宏创建struct_class5.使用device_create函数创建设备文件二:卸载LED驱动的设备文件三:设置寄存器与初始化LED驱动四:控制LED(及所谓的代码编写——linuxC语言)举例一种实现方法,如下:混杂设备驱动中需要实现的是填充file_operations结构

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

    在之前章节了解到Linux驱动程序可以控制软硬件,可以实现软硬件之间的交互.在这章我们学习LED驱动的实现原理.Linux内核提供了多个与I/O内存交互的函数可以实现控制硬件.    编写LED驱动,LED驱动会建立一个/dev/s3c6410_leds设备文件,该Linux驱动可以控制4个LED,靠近电池的LED编号为1,以此类推,另外1表示开,0表示关.接下来创建LED驱动的设备文件:第一步:使用cdev_init函数初始化cdev:第二步:指定设备号:第三步:使用cdev_add函

第七章 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 将为我闪烁: 控制发光二级管

一. led驱动的实现原理: 通过GPC0_3和GPC0_4引脚的高低电平来控制三极管的导通性,从而控制LED灯亮灭. 尽管 Linux 驱动直接与硬件打交道,但并不是 Linux 驱动直接向硬件中的内存写数据, 而是与本机的I0内存(I/O Memory,位于内核空间〉进行交互.所谓 1/0 内存是通过各种接口( PCI. USB.蓝牙.以太网口等〉连接到主机( PC.手机〉的硬件〈网卡.声卡.摄像头等〉在主机内存中的映射. 二. 编写led驱动 1>首先我们需要感受一下led驱动的结果: 测

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

所谓I/O内存是通过各种接口连接到主机的硬件在主机内存的映射.LED驱动还提供了两种交互方式:命令和读写设备文件. 创建设备文件的步骤: 第1步:使用cdev_init函数初始化cdev 第2步:指定设备号 Linux设备文件的设备号分为主设备号和次设备号,其中前12位表示主设备号 ,后20位表示次设备号.设备号有如下两种指定方法: (1)直接在代码中指定(硬编码). (2)动态分配. 第3步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第4步:使用class_create宏

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

一.LED驱动的实现原理.Linux驱动不是直接向硬件中的内存写数据,而是与本机的I/O内存交互,Linux内核提供了多个与I/O内存交互的函数,每个连接Linux的硬件在I/O内存中都会有映射首地址,开发板上的LED等也有其映射首地址. 二.编写LED驱动,步骤如下: 1.测试开发板,打开电源开关 2.创建LED驱动设备文件 1>使用cdev_init函数初始化cdev. 2>指定设备号:用1个int类型表示Linux设备文件的设备号,前12位表示主设备号,后20位表示次设备号设备号有两种指

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

通过对这一章的学习,我学会了对LED灯的驱动过程,inux驱动发送数据控制LED灯的亮灭. 驱动控制LED灯我们需要创建LED驱动的设备文件: 第一步:使用cdev-init函数初始化cdev: 第二步:指定设备号: 第三步:使用cdev-add函数将字符设备添加到内核中的字符设备数组中: 第四步:使用class-create:宏创建struct class: 第五步:使用device creat函数创建设备文件: 卸载LED驱动的设备文件是需要依次调用1.device-destory 2.cl