arm-linux 应用层调用驱动函数

2023-10-27

需要调用头文件

#include "stdio.h"

#include "unistd.h" 

 /*

unistd.h 是 C 和 C++ 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称。该头文件由 POSIX.1 标准(单一UNIX规范的基础)提出,故所有遵循该标准的操作系统和编译器均应提供该头文件(如 Unix 的所有官方版本,包括 Mac OS X、Linux 等)。

对于类 Unix 系统,unistd.h 中所定义的接口通常都是大量针对系统调用的封装(英语:wrapper functions),如 fork、pipe 以及各种 I/O 原语(read、write、close 等等)。
*/

#include "sys/types.h" //数据类型

#include "sys/stat.h"

/*

#include <sys/stat.h> 文件状态,是unix/linux系统定义文件状态所在的伪标准头文件。

*/

#include "fcntl.h"

//引用linux c头文件#include<sys/types.h>和#include<fcntl.h>头文件总结_码莎拉蒂 .的博客-CSDN博客

#include "stdlib.h"

#include "string.h"

#include "stdio.h"
#include "unistd.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
#include "stdlib.h"
#include "string.h"


#define LEDOFF 	0
#define LEDON 	1

/*
 * @description		: main主程序
 * @param - argc 	: argv数组元素个数
 * @param - argv 	: 具体参数
 * @return 			: 0 成功;其他 失败
 */
int main(int argc, char *argv[])
{
	int fd, retvalue;
	char *filename;
	unsigned char databuf[1];
	
	if(argc != 3){
		printf("Error Usage!\r\n");
		return -1;
	}

	filename = argv[1];

	/* 打开led驱动 */
	fd = open(filename, O_RDWR);
	if(fd < 0){
		printf("file %s open failed!\r\n", argv[1]);
		return -1;
	}

	databuf[0] = atoi(argv[2]);	/* 要执行的操作:打开或关闭 */

	/* 向/dev/led文件写入数据 */
	retvalue = write(fd, databuf, sizeof(databuf));
	if(retvalue < 0){
		printf("LED Control Failed!\r\n");
		close(fd);
		return -1;
	}

	retvalue = close(fd); /* 关闭文件 */
	if(retvalue < 0){
		printf("file %s close failed!\r\n", argv[1]);
		return -1;
	}
	return 0;
}

在开发板运行/ledApp /dev/gpioled 1     gpioled为驱动的名字 通过filename = argv[1]获取;

                                1位值 通过    databuf[0] = atoi(argv[2]);    /* 要执行的操作:打开或关闭 */获取

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

arm-linux 应用层调用驱动函数 的相关文章

随机推荐

  • html转xml python_xml转换(Python)_xml

    前些天用python处理xml的转换的一个小程序 用来把xml xsl转换成html 用的libxml2 所以还要先安装了libxml2模块才能使用 coding mbcs usr bin python import libxml2 lib
  • 单元测试中的驱动程序和桩程序理解

    单元测试中的驱动程序和桩程序理解 运行被测单元 为了隔离单元 根据被测单元的接口 开发相应的驱动程序和桩程序 两者有什么区别呢 驱动程序 Driver 也称驱动模块 用于模拟被测模块的上级模块 能够调用被测模块 驱模块接受测试数据 调用被测
  • js实现颜色选择器

    前言 纯js就可以实现颜色选择器 不用安装很多的插件 和配置 也不必要有jquery才能使用 只是js文件就可以了 目录 实现原理 如果要获取当前的颜色 可以获取结论的背景 或者再返回的函数里面直接写赋值 实现步骤 1 引入封装js文件 c
  • CheckStyle报错的常见问题及解决方式

    CheckStyle报错的常见问题及解决方式 声明 本文摘自百度文库 希望这篇文章提到的规范能对大家编程起到好的效果 此文不定期更新 将推出更加详尽的编程规范 1 提示 Type is missing a javadoc commentCl
  • vue v-model.number 和 type=“number“详解

    1 v model number详解 当两个input都输入非数字时 v model number和v model的值都不会转为Number类型 当两个input都输入数字时 v model number的值会转为Number类型 v mo
  • 1.Ajax基础——XMLHttpRequest、Get/Post、封装Ajax

    1 XMLHttpRequest Ajax技术核心是XMLHttpRequest对象 简称XHR 背景 在XHR出现之前 Ajax式通信必须借助hack手段来实现 大多数是使用隐藏的框架和内嵌的框架
  • 【Linux系统之虚拟化实战】PVE下KVM虚拟机的嵌套安装方法

    Linux系统之虚拟化实战 PVE下KVM虚拟机的嵌套安装方法 一 检查本地系统环境 1 环境规划 2 检查PVE宿主机系统版本 3 检查PVE虚拟机系统版本 二 开启PVE宿主机虚拟化 1 检查PVE主机嵌套虚拟化是否开启 2 PVE主机
  • vue 将public文件下的图片引入.vue文件内

    data return publicPath process env BASE URL div 11 div
  • vue实现打印功能

    vue实现打印功能 安装npm i vue print nb 在main js中引入并注册 打印 import Print from plugins print 注册 Vue use Print 3 公共的js方法 我写在plugins里面
  • python输出100以内的素数

    可以使用以下代码来输出100以内的素数 for num in range 2 101 for i in range 2 num if num i 0 break else print num 这段代码使用了一个双重循环 外层循环遍历从2到1
  • 数字信号处理 --- 周期信号的三角函数表示 一(三角函数的性质和三角波的合成)

    三角函数的性质 一系列三角函数谐波 harmonic sinusoids 是傅里叶分析的基石 我们可以用这些不同频率的谐波构建各种各样的信号 波形 谐波 harmonics 现在我们选择一个频率为f0的任意频率 arbitrary freq
  • 杂谈:更新PowerShell 7.0.0后如何激活Anaconda环境?

    Preface 日前微软更新Powershell Core的版本至7 0 0 带来了很多新的特性 也带来了很多不同之处 例如启用了新的安装位置 去掉了Core的名称以及启用了新的可执行文件名称 将powershell exe修改为pwsh
  • 网络模型——OSI模型与TCP/IP模型

    文章目录 一 OSI七层模型 二 TCP IP协议 五层体系 三 OSI 参考模型与 TCP IP 参考模型的区别 四 TCP IP 五层协议的通信方式 OSI模型与TCP IP模型 对比如下 一 OSI七层模型 各层功能 应用层 应用层位
  • nginx(三十六)健康检查

    一 ngx http upstream module 官方自带 server 1 该指令用于 指定后端服务器 的名称和 optional 参数 2 服务器的名称可以是一个 域名 一个 ip地址 端口号或 unix socket upstre
  • 中间表示- 三地址码

    使用三地址码的编译器结构 三地址码的基本思想 1 给每个中间变量和计算结果命名 没有复合表达式 2 只有最基本的控制流 没有各种控制结构 if do while for等等 只有goto call等 3 所以三地址码可以看成是抽象的指令集
  • Java(七) 句柄

    在学习什么是句柄之前我们先学习虚拟机的对对象的访问方式 一 句柄访问方式 使用句柄访问对象 会在堆中开辟一块内存作为句柄池 句柄中储存了对象实例数据 属性值结构体 的内存地址 访问类型数据的内存地址 类信息 方法类型信息 对象实例数据一般也
  • 学习人工智能技术法则

    在当前的教育体系下 人工智能领域的人才培养依然以研究生教育为主 随着近些年来人工智能领域人才缺口的增大 格物斯坦表示目前已经一小部分高校开始陆续在本科阶段开设人工智能专业 相信随着人工智能领域的发展 未来更多专业的学生将有机会接触到人工智能
  • GRE、PPTP、L2TP隧道协议

    在IPSec 和Multiprotocol Label Switching MPLS VPN出现前 GRE被用来提供Internet上的VPN功能 GRE将用户数据包封装到携带数据包中 因为支持多种协议 多播 点到点或点到多点协议 如今 G
  • 数学建模-Topsis综合评价(评价模型)

    Topsis算法核心思想是逼近理想解的排序方法 正理想解 各指标都达到各候选方案的最好值 负理想解 各指标都达到各候选方案的最差值 基于有限个评价对象与理想化目标的接近程度进行排序 在现有的对象中进行相对优劣的评价 算法步骤 1 构造决策矩
  • arm-linux 应用层调用驱动函数

    需要调用头文件 include stdio h include unistd h unistd h 是 C 和 C 程序设计语言中提供对 POSIX 操作系统 API 的访问功能的头文件的名称 该头文件由 POSIX 1 标准 单一UNIX