设为首页 加入收藏

TOP

Linux-2.6驱动程序分层分离概念(二)
2019-09-01 23:08:27 】 浏览:52
Tags:Linux-2.6 驱动程序 分层 分离 概念
;
77 pin = res->start; 78 79 /* 注册字符设备驱动程序 */ 80 81 printk("led_probe, found led\n"); 82 83 major = register_chrdev(0, "myled", &led_fops); 84 85 cls = class_create(THIS_MODULE, "myled"); 86 87 class_device_create(cls, NULL, MKDEV(major, 0), NULL, "led"); /* /dev/led */ 88 89 return 0; 90 } 91 92 static int led_remove(struct platform_device *pdev) 93 { 94 /* 卸载字符设备驱动程序 */ 95 /* iounmap */ 96 printk("led_remove, remove led\n"); 97 98 class_device_destroy(cls, MKDEV(major, 0)); 99 class_destroy(cls); 100 unregister_chrdev(major, "myled"); 101 iounmap(gpio_con); 102 103 return 0; 104 } 105 106 107 struct platform_driver led_drv = { 108 .probe = led_probe, 109 .remove = led_remove, 110 .driver = { 111 .name = "myled", 112 } 113 }; 114 115 116 static int led_drv_init(void) 117 { 118 platform_driver_register(&led_drv); 119 return 0; 120 } 121 122 static void led_drv_exit(void) 123 { 124 platform_driver_unregister(&led_drv); 125 } 126 127 module_init(led_drv_init); 128 module_exit(led_drv_exit); 129 130 MODULE_LICENSE("GPL"); led_drv.c
 1 #include <sys/types.h>
 2 #include <sys/stat.h>
 3 #include <fcntl.h>
 4 #include <stdio.h>
 5 
 6 /* led_test on
 7  * led_test off
 8  */
 9 int main(int argc, char **argv)
10 {
11     int fd;
12     int val = 1;
13     fd = open("/dev/led", O_RDWR);
14     if (fd < 0)
15     {
16         printf("can't open!\n");
17     }
18     if (argc != 2)
19     {
20         printf("Usage :\n");
21         printf("%s <on|off>\n", argv[0]);
22         return 0;
23     }
24 
25     if (strcmp(argv[1], "on") == 0)
26     {
27         val  = 1;
28     }
29     else
30     {
31         val = 0;
32     }
33     
34     write(fd, &val, 4);
35     return 0;
36 }
led_test.c

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Deepin15.8系统下安装QorIQ Linux.. 下一篇helpera64开发板下制作ubuntu roo..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目