第七章随想

第七章 控制发光二极管读后感

本章学的是通过向Linux驱动发送数据可以控制LED小灯的开关。

LED的原理就是:Linux驱动与本机的I/O内存进行交互。所谓I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射。Linux内核提供了多个与I/O交互的函数,每一个连接Linux的硬件在I/O内存中都会有映射首地址。

接下来创建LED驱动的设备文件

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

第二步:指定设备号:Linux设备文件的设备号分为主设备号和次设备号。用一个int类型(dev_t)表示。其中前12位表示主设备号,后20位表示次设备号

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

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

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

然后设置寄存器,初始化LED驱动

LED有俩个引脚:GPB0和GPB1,由这俩个引脚控制电源的连,断来控制LED的亮灭。控制LED需要通过3个寄存器来完成,这三个寄存器分别是GPMCON(端口配置寄存器),GPMDAT(端口数据寄存器).GPMPUD(端口上拉电路寄存器)

LED驱动可以使用如下俩种方式控制LED

1.通过字符串控制LED

2.通过I/O命令控制LED(需要使用file_operations.ioctl函数控制)

在编写代码的时候需要了解如下几点。

1.四个LED的状态用一个长度为4的char数组存储。1表示亮,0表示灭

2.如果写入的字符串长度小于等于4,直接写入这些字符串。如果字符串长度大于4,则只会写入前四个字符串

3.由于实现mem数组已被清零,因此,如果写入的字符串长度小于4,则相当于后面的字符都是0

一个完整的驱动主要由内部处理和硬件交互俩部分组成。Linux驱动在不同平台的移植也是处理这俩部分。如果在不同Linux内核版本之间的移植,主要是移植第一部分,如果在不同硬件平台的移植,主要是移植第二部分。

时间: 2024-12-12 21:29:20

第七章随想的相关文章

第七章

第七章 控制发光二极管. 尽管linux 驱动直接和硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是与本机的i/o内存进行交互.所谓I/O内存是通过各种接口(PCI, USB.蓝牙以太网等)连接到主机的硬件在主机的内存映射.Linux内核提供了多个与I/O内存交互的函数.Linux内核的内存管理模块负责同步I/O内存与硬件的数据. 每一个连接Linux 的硬件在I/O内存中都会有映射首地址.在使用ioread 32.ioread32等函数读写I/O内存时需要指定这些首地址.Led

第七章:常用类

第七章:常用类 包装类 java中有8中基本类型,对应有八种包装类作用:包装类中封装了该类型常用的属性和方法,以方便操作.byte---->Byteshort--->Shortint--->Integerlong---->Longfloat---->Floatdouble---->Doublechar---->Characterboolean---->Boolean装箱:将基本数据类型转换成包装类,经常通过构造方法完成.Integer i = new Int

构建之法学习(第七章 MSF)

第七章 MSF MSF(Microsoft Solution Framework)微软解决方案框架: MSF是一套大型系统开发指南,是微软推荐的软件开发方法,它描述了如何用组队模型.过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考. 一.MSF 9条基本原则 1.推动信息共享与沟通 --把所有信息都保留并公开,讨论要包括所有涉及的角色,决定要公开并告知所有人. 当然,对牵涉到技术机密.安全性等信息要采取必要的保护措施

Android开发艺术探索——第七章:Android动画深入分析

Android开发艺术探索--第七章:Android动画深入分析 Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类的动画不太一样的是表现形式上有点不一样,view动画是通过对场景的不断图像交换而产生的动画效果,而帧动画就是播放一大段图片,很显然,图片多了会OOM,属性动画通过动态的改变对象的属性达到动画效果,也是api11的新特性,在低版本无法使用属性动画,但是我们依旧有一些兼容库,OK,我们还是继续来看下详细

第九章 前七章总结考试答案

前七章总结测验见附件内容

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 提供ROS接口的3D软件比较多,本章以最典型的Gazebo介绍为主,从Player/Stage/Gazebo发展而来,现在独立的机器人仿真开发环境,目前2016年最新版本Gazebo7.1配合ROS(kinetic)使用. 补充内容:http://blo

构建之法第六、七章读后感

第六章 Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的.迭代的开发过程.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员. 敏捷流程一共有4步: 第一步:弄懂需求与任务是相互依赖的关系 第二步:想要学会把一个任务从产品层级的描述逐步细化到技术实现层面,那么技术能力和交流能力尤为重要的,根据每个人的能力来分配任务以保证任务的高效完成. 第三步:个人要

CSS3秘笈:第七章

第七章  margin.padding和border 1.盒模型:四个属性: (1)padding:内容与其边框线之间的空间. (2)border:盒子周围的直线 (3)background-color:用来填充边框内部空间的,包括padding区域. (4)margin:一个标签和另一个标签之间的间隔. 2.padding和margin的区别:padding是在内容和边框之间增加空间.避免内容被硬塞在方框里面,它还包括背景区域,因此padding占用的空间也可以为空白的内容.而margin则是

再读大道之简第七章第八章

有一句话叫做,理想很丰满,现实很骨感.原来,单纯的以为,软件工程不就是码农么,就连工作也是一心趴在课编程编程,各种编程上,可是,现实中的软件工程和理想中或者说,想象中的还是有很大的差距的.就连我们心中的大企业,也并不是想象中的那样.比如IBM知道把握力量总之比创造力量来得经济.我还单纯的以为,所有的公司只是为了盈利呢,依靠完成的软件去盈利.此时不禁自嘲一番,还是太嫩了啊.所有的大公司在标准.理论.语言上的争来夺取,未必全然出于“软件实现”的考虑.对统一理论.统一工具.统一过程的企图,其最终目的是