【北京迅为】iTOP-4412全能版使用手册-第五十五章 字符类GPIOS

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、陀螺仪、CAN总线、RS485总线、500万摄像头等模块,稳定运行Android 4.0.3/Android 4.4操作,系统通用Linux-3.0.15+Qt操作系统(QT支持5.7版本),Ubuntu版本:12.04,接口智能分配 方便好用。


第五十五章 字符类GPIOS

本期实验是对前面知识的一个小结,将字符类驱动的框架和 GPIO 操作函数的结合,就可以完成一个字符类 GPIO 驱动。

配套视频

“视频 22_字符类 GPIOS”

实验操作:

在视频教程中只做了简单的演示,因为所有的知识点在前面都已经介绍过了。

将“21_字符驱动”中的文件“char_driver.c”改为“char_driver_leds.c”,因为char_driver_leds.c 文件中的代码有点长了,所以将宏定义和结构体定义放到头文件“char_driver_leds.h”中,如下图所示。

然后添加 GPIO 操作的头文件,以及自定义的头文件,如下图所示。 

 

将两个 gpio 定义为数组,如下图所示。 

 

如下图所示,自定义一个 GPIO 初始化函数 gpio_init。 

 

在驱动入口的函数中,创建设备节点成功之后再调用 GPIO 初始化函数,如下图所示。 

 

然后在驱动的出口函数中添加释放 GPIO 的代码,如下图所示。 

 

 然后在 ioctl 中添加 io 操作的代码,如下图所示。

 

如下图所示,修改一下 Makefie 文件。 

 

编写一个简单的应用“invoke_char_gpios.c”,如下图所示。 

 

修改完成之后,在 Ubuntu 系统下使用命令“mkdir char_driver_leds”新建文件夹“char_driver_leds”,然后将修改好的驱动文件“char_driver_leds.c”、头文件“char_driver_leds.h”、Makefile 文件以及应用文件“invoke_char_gpios.c”拷贝到文件夹“char_driver_leds”中,如下图所示。 

 

使用编译命令“make”编译驱动,如下图所示。 

 

使用命令“arm-none-linux-gnueabi-gcc -o invoke_char_gpios invoke_char_gpios.c - static”编译应用程序“invoke_char_gpios”,如下图所示。 

将生成的驱动模块“char_driver_leds.ko”以及应用“invoke_char_gpios”拷贝到 U 盘。

启动开发板,将 U 盘插入开发板,使用命令“mount /dev/sda1 /mnt/udisk/”加载 U 盘,如下图所示。

 

 使用命令“insmod /mnt/udisk/char_driver_leds.ko”加载驱动模块,如下图所示。  

 

使用命令“./mnt/udisk/invoke_char_gpios 0 1”,运行应用。参数 1 为命令,参数 2 为 GPIO 编号,如下图所示。 

 

运行如上图所示命令之后,可以看到小灯会灭一个。

另外如果大家想将两个设备节点定义为不同的操作,那么就需要额外的定义“file_operations”。

然后,在如下图所示的代码处,分别对设备定义不同的“file_operations”即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34828.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW算法执行时间评估与Windows硬件支持

在设计和实现复杂系统时,准确估算算法的执行时间是关键步骤,尤其在实时性要求较高的应用中。这一评估有助于确定是否需要依赖硬件加速来满足性能需求。首先需要对算法进行时间复杂度分析并进行实验测试,了解其在Windows系统中的运行表现。根据…

D614 PHP+MYSQL +失物招领系统网站的设计与现 源代码 配置 文档

失物招领系统 1.摘要2. 系统开发的背景和意义3.功能结构图4.界面展示5.源码获取 1.摘要 随着互联网的迅速发展,人们的生产生活方式逐渐发生改变,传统的失物招领也可以通过网络处理。本网站是基PHP技术的一款综合性较强的西南民族大学PHP失物招领系统。 …

【Java】Switch语句、循环语句(for、while、do...while)

Switch语句:针对某个表达式的值进行判断,从而决定执行哪一段代码 语法格式: switch(表达式){ case 目标值1: 执行语句1 break; case 目标值2: …

中建海龙:科技创新引领建筑业革新,铸就行业影响力

在建筑业这个古老而又充满活力的行业中,中建海龙科技有限公司(以下简称“中建海龙”)凭借其卓越的科技实力和一系列荣誉奖项,正逐步确立其在建筑工业化领域的领导地位,并对整个行业产生了深远影响。 中建海龙自成立以来…

【认证法规】安全隔离变压器

文章目录 定义反激电源变压器 定义 安全隔离变压器(safety isolating transformer),通过至少相当于双重绝缘或加强绝缘的绝缘使输入绕组与输出绕组在电气上分开的变压器。这种变压器是为以安全特低电压向配电电路、电器或其它设备供电而设计…

引领素养教育行业,猿辅导素养课斩获“2024影响力教育品牌”奖项

近日,由教育界网、校长邦联合主办,鲸媒体、职教共创会协办的“第9届榜样教育年度盛典”评奖结果揭晓。据了解,此次评选共有近500家企业提交参评资料进行奖项角逐,历经教育界权威专家、资深教育从业者以及专业评审团队的多轮严格筛…

内网穿透 natapp安装与使用

前言 NATAPP是一款基于ngrok的内网穿透工具。以下是对NATAPP的详细概述: 基本概念 定义:内网穿透(NAT穿透)是一种技术,它允许具有特定源IP地址和端口号的数据包能够绕过NAT设备,从而被正确地路由到内网主机…

TiDB如何保证数据一致性

1. 分布式事务协议 TiDB 采用了类似 Google Percolator 的分布式事务协议来处理分布式事务。这个协议基于两阶段提交(2PC)的思想,但进行了优化和改进,以适应分布式环境的特殊需求。在 TiDB 中,当一个事务需要跨多个节…

高中数学:导数-在研究函数中的应用

文章目录 一、函数单调性解题步骤图像特征与导数值的关系 二、函数的极值与最大最小值1、函数的极值极值点的求法2、函数的最大最小值最大最小值求法函数大致图像的画法 一、函数单调性 例题 解题步骤 例题 图像特征与导数值的关系 二、函数的极值与最大最小值 1、函数的极…

OceanBase数据库使用 INSERT 语句违反唯一约束冲突解决办法及两者差异分析

当在OceanBase数据库上创建带有唯一性约束的表,在向表中插入唯一性约束的冲突的数据时会提示因违反唯一性约束报错,OceanBase在其官网上提供了两种解决策略,但其官网并未详细说明两种策略的差异,于是早上对两种策略进行一些测试&a…

【人工智能的深度分析与最新发展趋势】

人工智能的深度分析与最新发展趋势 引言 人工智能(AI)是现代科技的重要组成部分,它涉及模拟人类智能的算法和技术。随着计算能力的提升和数据量的激增,AI的应用正在迅速渗透到各个行业。本文将深入分析人工智能的概念、技术、应…

Spring Boot + MySQL 多线程查询与联表查询性能对比分析

Spring Boot MySQL: 多线程查询与联表查询性能对比分析 背景 在现代 Web 应用开发中,数据库性能是影响系统响应时间和用户体验的关键因素之一。随着业务需求的不断增长,单表查询和联表查询的效率问题日益凸显。特别是在 Spring Boot 项目中&#xff0…

Navicat 连接 SQL Server 详尽指南

Navicat 是一款功能强大的数据库管理工具,它提供了直观的图形界面,使用户能够轻松地管理和操作各种类型的数据库,包括 SQL Server。本文将详尽介绍如何使用 Navicat 连接到 SQL Server 数据库,包括安装设置、连接配置、常见问题排…

【多模型能力测试记录】ArgoDB分布式分析型数据库与图数据库StellarDB联合查询

前言 随着数据量的爆炸性增长和业务需求的日益复杂化,传统的单一模型数据库已经难以满足复杂多变的业务需求。尽管当前针对不同的数据类型,例如关系型数据、文档数据、图数据和时序数据业内提供了多种数据库以应对存储及处理需求,但是在实际…

Ansible自动化运维

1 ansible介绍和架构 1.1 什么是ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible…

玩FPGA不乏味

玩FPGA不乏味 Hello,大家好,之前给大家分享了大约一百多个关于FPGA的开源项目,涉及PCIe、网络、RISC-V、视频编码等等,这次给大家带来的是不枯燥的娱乐项目,主要偏向老的游戏内核使用FPGA进行硬解,涉及的内…

工商业光伏系统踏勘、设计、施工全流程讲解

随着全球能源结构的转型和环保意识的提升,光伏发电作为一种清洁、可再生的能源形式,正越来越受到工商业领域的青睐。商场、学校、医院、各类工厂等地,安装光伏发电系统不仅能降低运营成本,还可以为企业树立良好的环保形象。 一、前…

mongo开启慢日志及常用命令行操作、数据备份

mongo开启慢日志及常用命令行操作、数据备份 1.常用命令行操作2.mongo备份3.通过命令临时开启慢日志记录4.通过修改配置开启慢日志记录 1.常用命令行操作 连接命令行 格式:mongo -u用户名 -p密码 --host 主机地址 --port 端口号 库名; 如:连…

Vue跨标签通讯(本地存储)(踩坑)

我司有一个需求【用户指引】 需求是根标签有一个用户指引总开关,可以控制页面所有的用户指引是否在页面进入后初始是否默认打开,但是有些页面会新开标签这就设计到跨标签通讯了 我采取的方案是本地存储 重点:首先本地存储在页面是同源(即域名协议端口三…

Scrapy解析JSON响应v

在 Scrapy 中解析 JSON 响应非常常见,特别是当目标网站的 API 返回 JSON 数据时。Scrapy 提供了一些工具和方法来轻松处理 JSON 响应。 1、问题背景 Scrapy中如何解析JSON响应? 有一只爬虫(点击查看源代码),它可以完美地完成常规的HTML页面…