第7章实验心得

第7章主要写了控制发光二级管

7.1 主要介绍了LED驱动的实现原理

Linux 内核提供了多个与1/0 内存交互的函数,如ioread16 、ioread32 、iowrite16 、iowrite32 等。Linux 内核的内存管理模块负责同步I/0 内存与硬件中的数据。

每一个连接Linux 的硬件在ν0 内存中都会有映射首地址。在使用ioread32 、ioread32 等函数读写I/0内存时需要指定这些首地址。开发板上的LED 也有其映射首地址。

7.2  主要介绍了编写LED驱动

1.创建LED驱动的设备文件步骤如下:

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

第2 步:指定设备号

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

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

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

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

卸载 Linux 驱动的设备文件稍微简单-些,需要依次调用 device_destroy 、 class_destroy 和unreg ister_chrdev_region 方法

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

在控制LED 亮、灭之前必须要了解如何设置寄存器。 ARM 处理器有多个寄存器,通过设置不同寄存器的值。可以设置LED 引脚的状态、打开或禁止上拉(pull-up)电路以及控制LED 的亮和灭。

4 控制LED

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

1.通过字符串控制LED

2.通过l/0 命令控制LED

5 LED驱动的模块参数

为Linux 驱动指定一个模块参数需要使用module_param Cname, type, perm)宏。其中name 表示参数名, type 表示参数类型, perm 表示读/写权限。module_param 支持的参数类型包括byte 、short、ushort C无符号short〕、int、uint (无符号int〕、long 、ulong C 无符号long )、charp (字符指针〉、boo) 和invbool (布尔的反)。

6 LED驱动的完整代码(这就不往出写了)

7.3 主要介绍了测试LED驱动

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

LED 驱动有两种与设备文件交互的方式: 直接写入字符串数据和νo 控制命令.直接向设备文件写入数据可以使用命令行方式来完成,也吁以通过write 函数来完成。但I/O控制命令只能通过iocll 函数发出。为了以后测试方便,本节编写了一个通用的发送I/O 命令的程序。

2  使用NDK测试LED驱动

3  使用Java测试LED驱动

7.4  LED驱动的移植

以LED驱动为例

LED 驱动是通过设置GPMDAT 寄存器来控制LED 的亮灭的。GPMDAT寄存器的低4 位分别控制4 个LED . 0 表示打开LED, 1 表示关闭LED. 这是在OK64 1 0 开发板上的设置。如果要将LED 驱动移植到另外基于S3C6410 的开发版上,而这个目标开发板上恰好与OK6410开发板的GPMDA1、寄存器的低4 位表示的含义相反,也就是说, 1 表示打开LED ,。表示关闭LED,那么LED 驱动的代码就要做相应的改变。首先要改变的就是leds_init 函数。在LED 驱动装载后,会用OxE 设置4 个LED 的默认状态. 而在新的开发板上,就要将OxE 变成Oxl。

时间: 2024-11-12 23:17:26

第7章实验心得的相关文章

第一章实验心得

第一章讲述Android开发环境的搭建,如何使用Eclipse建立一个Android工程,以及对Android应用程序的目录结构及其组件的讲解. 安卓移植在很大程度上是Linux内核移植主要就是移植驱动程序. 怎样学习Linux驱动开发呢,由于Linux的内核版本更新较快,每一次内核的变化就意味着Linux驱动的变化,所以学习Linux驱动开发需要一个真正的操作系统来搭建Linux驱动的开发环境,并且在该系统下测试Linux驱动.还有GUN C 也是学习Linux驱动的一个必须掌握的技术. An

第六章实验心得

本章主要写了第一个Linux驱动程序:统计单词个数 6.1主要介绍了Linux驱动 介绍了Linux 驱动的工作方式和访问方式 6.2 主要介绍编写Linux驱动程序的步骤 第1 步:建立Linu x 驱动骨架(装载和卸载Linu x 驱动) 第2 步:注册和注销设备文件 第3 步:指定与驱动相关的信息 第4 步:指定回调函数 第5 步:编写业务逻辑 第6 步:编写Makefile 文件 第7 步:编译Linux 驱动程序 第8 步:安装和卸载Linu x 驱动 6.3主要介绍了Linux驱动:

composer Ratchet 实验心得

简介 Composer是PHP中用来管理依赖关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件. 依赖管理管理 Composer不是一个包(package)管理者,当然,它处理就是包(package)和库(libraries),你可以这样认为Composer就是一个项目的基石,将包(package)放在一个目录下面(例如 vendor),默认的他不会安装任何全局的东西,他只是一个管理工具. 这个创意来自于node的npm和ru

第七章 实验传统的兴起

第七章 实验传统的兴起 近代科学的三大传统 数理传统(希腊理性传统的再现) 孤立化.原子化.碎片化分析 实验传统 博物学传统 科学革命导致的两大主题 世界图景的机械化 自然的数学化与分析化 实验传统的三个来源 数理分析传统 炼金术传统 培根传统(新博物学传统) 7.1数理传统和炼金术传统 数理传统 数理传统的两种实验传统 演示实验 思想实验 思想实验:在内心中设想出潜在的实验条件,其结果可以根据以前的日常经验可靠的预见到.--托马斯-库恩 如伽利略的重物轻物同时落地的思想实验 帕斯卡的大气压实验

linux第四章实验报告

Linux第四章 用户和文件权限管理 实验环境 公司的linux主机即将提供给技术部作为开发服务器使用,根据部门内项目组的构成情况,首先需要建立相应的组账号.用户账号,并作为目录设置权限,还需要设置一个共用的数据存储目录,便于同事之间的数据交换. 需求描述 1.建立用户目录 创建目录/tech/benet和/tech/accp,分别用于存放各项目组中用户账号的宿主文件夹.例如,kylin用户的宿主目录应位于/tech/benet/kylin. 2.添加组账户 为两个项目组添加组账号benet,a

《构建之法》第三章学习心得

这周我学习了<构建之法>第三章,讲述了软件工程师的成长.软件系统的绝大部分模块都是由个人开发或维护的.在软件工程的术语中,这些单个的成员叫做Individ-ual Contributor(IC).IC在团队中的流程是怎么样的呢?以开发人员为例,流程如下. 1.通过交流.实验.快速原型等方法,理解问题.需求或任务 2.提出多种解决办法并估计工作量 3.其中包括寻找以前的解决方案,因为很多工作是重复性的 与相关角色交流解决问题的提案,决定一个可行的方案 执行,把想法变成实际中能工作的代码,同时验证

201671010105 2016-2017-2《Java程序设计》第一、第二章学习心得

我们大一的时候学习的是C语言程序设计,C语言是面向程序的,而老师也说过我们后面会学习一种面向对象的程序设计语言--Java程序设计,而在二年级开学第一周,我们第一次真正意义上接触到了它. 令人意外的是和往常老师讲学生听不同,这一周我们对Java程序设计第一.第二章的学习完全是自主的,通过一周对Java第一.第二章的学习,心得体会如下: 第一章 Java程序设计概述 1.通过对第一章的学习,对Java有了比较深入的了解,Java和C一样,是一种语言,但它又不止是一种语言,它是一个完整的程序设计平台

Arduino与xbee模块点灯实验心得

1.硬件:Seeeduino Stalker v3.0俩块,xbeeS1俩块,led一个,导线,电源,面包板 软件:XCTU,Arduino1.8.2 2.xbee模块配置:恢复出场设置后 主机xbee的    DH:1234,MY:5678 从机xbee的    DH:5678,  MY:1234 (API为disabled,也就是AP模式(默认出厂设置),API模式以前用过,后来做过一个关于节点发现的实验后,就不好使了) 3.主机程序: int button_open =4;//开灯按钮连在

201771010124 王海珍 《实验六 继承定义与使用》第六章实验总结

第一部分:理论知识学习部分 第五章 第五章学习内容主要分为七个模块,分别为: 1.类.超类和子类: a. 类继承的格式: class 新类名extends已有类名. b. 已有类称为:超类(superclass).基类(base class) 或父类(parent  class) 新类称作:子类(subclass).派生类(derived  class)或孩子类(child class) c.super是一个指示编译器调用超类方法的特有关键字,它不是一个对象的引用,不能将super赋给另一个对象