一、申请设备号
1、静态申请设备号
2、动态申请设备界号
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
dev_t devno;
int major = 0;
int minor = 0;
struct file_operations fops = {
};
int init_hello_module(void)
{
printk("init_hello_module\n");
major= register_chrdev(0, "fs4412-led", &fops);
devno= MKDEV(major,minor);
return0;
}
void exit_hello_module(void)
{
printk("exit_hello_module\n");
unregister_chrdev(major,"fs4412-led");
}
二、生成设备节点
1、手动挂载设备节点
sudo mknod /dev/ledc 188 0
2、自动挂载设备节点
三、初始化cdev
四、编写应用程序app.c
/*************************************************************************
@Author: wanghao
@Created Time : Tue 26 Jun 2018 06:26:39 PM PDT
@File Name: test.c
@Description:
************************************************************************/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
intfd = 0;
printf("leddevice test!\n");
fd= open("/dev/auto-led",O_RDWR);
if(fd< 0)
{
perror("openfail!");
returnfd;
}
close(fd);
return0;
}
Makefile增加一条:
gccapp.c -o app
挂载设备后,运行.app结果: