linux字符设备驱动创建多个设备(一主设备号多个次设备号)完整示例,开发板领航者7010

一、项目描述

(1)使用领航者7010开发板,实现一个字符设备驱动创建 2个设备,去控制ps_led0 和 ps_led1,实现一套驱动程序,控制俩个设备

(2)说明代码都是验证过的没有问题,可直接拿去使用,可直接用于领航者7010开发板

二、设备树示例

	tasson_leds{
		compatible = "tasson,tasson_leds";					/* 这个是必须 */

		// led-gpio = <&gpio0 7 GPIO_ACTIVE_HIGH>;			/* 这个是必须有 */
		// default-state = "on";

		gpio-led0{
			label = "ps_led0";
			status = "okay";
			default-state = "on";
			led-gpio = <&gpio0 7 GPIO_ACTIVE_HIGH>;		/*在第8、第9行定义了宏*/
		};

		gpio-led1{
			label = "ps_led1";
			status = "okay";
			default-state = "on";
			led-gpio = <&gpio0 8 GPIO_ACTIVE_HIGH>;		/*在第8、第9行定义了宏*/
		};

	};

三、测试demo示例

/***************************************************************
 文件名 		: ledApp.c
 作者			: 刘川
 版本			: V1.0
 描述			: LED驱动测试源文件
 其他			: 无
 使用方法		 : ./ledApp /dev/myled0 0 关闭LED
			  	  ./ledApp /dev/myled0 1 打开LED  
				  ./ledApp /dev/myled1 0 关闭LED
			  	  ./ledApp /dev/myled1 1 打开LED     
 日志			: 初版V1.0 2021/2/21 刘川创建
 ***************************************************************/

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


/*
 * @description		: main主程序
 * @param - argc	: argv数组元素个数
 * @param - argv	: 具体参数
 * @return			: 0 成功;其他 失败
 */
int main(int argc, char *argv[])
{
	int fd, ret;
	unsigned char buf[1];

	if(3 != argc) {
		printf("Usage:\n"
		"\t./ledApp /dev/myled 1		@ close LED\n"
		"\t./ledApp /dev/myled 0		@ open LED\n"
		);
		return -1;
	}

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

	/* 将字符串转换为int型数据 */
	buf[0] = atoi(argv[2]);

	/* 向驱动写入数据 */
	ret = write(fd, buf, sizeof(buf));
	if(0 > ret){
		printf("LED Control Failed!\r\n");
		close(fd);
		return -1;
	}

	/* 关闭设备 */
	close(fd);

	return 0;
}

四、驱动完整代码

/***************************************************************

 文件名    : leddriver.c

 作者      : 刘川

 版本      : V1.0

 描述      : platform总线编程示例(一个主设备号二个次设备)

 其他      : 无

 日志 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值