第七章 读书笔记

一个完整的linux驱动主要由内部处理和与硬件交互两部分组成。其中内部处理主要是指linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等。与硬件交互主要是指通过ioweite、ioread32等函数与硬件中的寄存器进行数据的交互。Linux驱动在不同平台的移植也是处理这两部分。如果在不同Linux内核版本之间的移植,主要是移植第1部分,如果在不同硬件平台的移植,主要是移植第二部分。

编写Led灯驱动的步骤如下:

1、 创建LED驱动设备文件:

(1)   使用cdev-init函数初始化cdev;

(2)   指定设备号;

(3)   使用cdev_add函数将字符设备添加到内核中的字符设备数组中;

(4)   使用class_creat宏创建struct class;

(5)   使用device_create函数创建设备文件;

2、  卸载Led驱动的设备文件

3、 设置寄存器和初始化led驱动

4、 控制led灯:

(1)   通过字符串控制LED

(2)   通过I/O命令控制

5、 LED驱动的模块参数

6、 测试LED驱动

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

(2)   使用NDK测试LED驱动;

(3)   使用Java测试LED驱动;

7、Led驱动移植

时间: 2024-08-10 23:21:59

第七章 读书笔记的相关文章

Android深度探索——第七章读书笔记及心得

控制发光二极管 ——第七章读书笔记及心得 通过本章的学习掌握了一个真正和硬件打交道的linux驱动程序.知道了一个完整的linux驱动只要由内部处理与硬件交互两部分组成.其中的内部处理指linux驱动的装载.卸载.与设备文件相关的动作处理以及业务逻辑.与硬件交互主要是指通过部分函数与硬件中的寄存函数进行数据交互. Linux驱动直接与硬件打交道,但是并不是linux启动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互.每一个连接linux的硬件在I/O内存中都会有映射首地址. 创建LED

第七章读书笔记《深入理解计算机系统》

第七章 读书笔记<深入理解计算机系统> 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行. 在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 7.1 编译器驱动程序 1.大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器

《深入了解计算机系统》第七章读书笔记

<深入了解计算机系统>第七章读书笔记 第一部分:链接 链接定义:链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储并执行. 第二部分:目标文件 目标文件:目标文件用以存放目标代码和由编译器或汇编器生成的相关数据的计算机文件格式称为目标文件格式. 目标文件格式有许多不同的种类.最初每种类型计算机都拥有自身独特的格式,但随着Unix和其他可移植操作系统的问世,人们定义了例如COFF和ELF这些格式,并在不同的系统上使用它们.通常,链接器的输入和输出使

软件工程 六、七章读书笔记

第六章 在第六章中主要是介绍了Scrum的方法论,在此方法的理论中,其原则主要强调了一个团队的互动互助的开发过程,重点强调了在一个项目里,一个团队是如何通过沟通产生进步,且这个沟通绝不是说有通信便可称之为“沟通”了,而是要有面对面的实时交流,虽然现在的通讯方式早已变得十分强大,但面对面的沟通仍是最有效率的交流方式,故而在此基础上又提出了一个新的团队合作活动——“每日立会”,这是在Sprint中我认为是十分有效的一个活动,将问题摆在明面上,大家互相了解各自的进度,一起解决项目中的问题,持续更新团队

JavaScript高级程序设计(第3版)第七章读书笔记

第七章 函数表达式 1. 函数声明有一个重要特征 ,函数声明提升.即在执行代码之前会先读取函数声明,意味着可以把函数声明放在调用它的语句后面. 2. 使用arguments.callee实现对函数的递归调用.但在严格模式下,不能通过脚本访问arguments.callee,但可以使用命名函数表达式来达成相同的效果. 3. 闭包是指有权访问另一个函数作用域中的变量的函数.创建闭包的常用方式,就是在一个函数内部创建另一个函数. 4. 由于闭包会携带包含它的函数的作用域,因此会比其他函数占更多的内存.

《Linux内核设计与实现》第七章读书笔记

第七章 链接 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行. 在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 7.1 编译器驱动程序 大多数编译系统提供编译驱动程序,它代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 例子: 函数mai

《现代前端技术解析》第七章读书笔记

<现代前端技术解析>是张成文写的一本书,2017年4月出版的.先看的最后一章(第七章),第七章主要讲的是未来前端技术的发展趋势及如何成为一名优秀的前端工程师. 过去几年,前端主流技术框架发展极快,在填补了原有技术框架空白和不足的同时也渐渐趋于成熟.未来前端的发展方向主要是等待下一个风口的到来,可能是VR丶人工智能或者其他.就前端应用开发方向来讲,MVVM丶Virtual DOM和同构的技术解决方案依然会延续发展一段时间,而且这段时间内前端框架技术的变化将不会像原来一样具有颠覆性.当MVVM丶V

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

创建LED驱动的设备文件 第1步:使用cdev_init函数初始化cdev 第2步:指定设备号.直接在代码指定或动态分配 第3步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第4步:使用class_create宏创建struct class 第5步:使用device_create函数创建设备文件 卸载LED驱动的设备文件 需要依次调用device_destroy.class_destroy和unregister_chrdev_region方法 void device_dest

Andriod深度探索—HAL与驱动开发 第七章 读书笔记and一点心得

创建LED驱动的设备文件 第1步:使用cdev_init函数初始化cdev 第2步:指定设备号.直接在代码指定或动态分配 第3步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第4步:使用class_create宏创建struct class 第5步:使用device_create函数创建设备文件 卸载LED驱动的设备文件 需要依次调用device_destroy.class_destroy和unregister_chrdev_region方法 void device_dest

第七章读书笔记

LED驱动实现原理是Linux驱动与本机的I/O内存进行交互,连接到主机的硬件在主机内存的映射. 编写驱动程序,先创建led驱动的设备文件: 创建LED驱动的设备文件: 1.使用cdev_init函数初始化cdev: struct cdev { Struct konject kobj; Struct module *owner; Const struct file_operation *ops; Strust list_head list; Dev_t dev; Unsigned int cou