linxu驱动入门基础课一(GPIO控制LED灯)基于RK3568

虽然GPIO控制LED 是最简单的linux驱动,但是是初学者入门必须跨过的门槛,里面很多基础知识点,有GPIO的控制原理,字符设备驱动,设备树,gpio和pinctrl子系统,内核模块原理等等,这些知识点非常重要,都是linux驱动入门的基础。

下面我们就可以一步步来写一个GPIO控制LED的驱动。

在RK3568平台上从零开始编写LED驱动,可以按照以下步骤进行:

1.原理图

linxu驱动入门基础课一(GPIO控制LED灯)基于RK3568_第1张图片

linxu驱动入门基础课一(GPIO控制LED灯)基于RK3568_第2张图片

led灯利用I2C3_SDA_MO引脚即GPIO1_A0

LED灯正极接GPIO1_A0,GPIO1_A0高电平点亮LED灯,低电平熄灭LED灯。

2.编写驱动代码

  • 创建一个新的驱动文件在kernel/drivers/char/下面,led_gpio.c
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

char kbuf[1] ;
dev_t devno;
int major = 0;
int led_gpio;

int gpio_led_open(struct inode *inode, struct file *file)/* 对应的是应用程序的open*/
{
	printk("gpio led open !\\n");
	return 0;
}
int gpio_led_release(struct inode *inode, struct file *file) /* 对应的是应用程序的close*/
{
	printk("gpio led close !\\n");
	return 0;
}

ssize_t gpio_led_write(struct file *file, const char __user *buf,size_t size,lo

你可能感兴趣的:(RK35X8,RK3568,linux驱动,GPIO,LED,设备树,pinctrl)