在platform总线上注册设备并载入驱动控制led灯
来源:互联网 发布:opencv 嵌入式linux 编辑:程序博客网 时间:2024/05/18 00:34
开发板:龙芯1B
PC:ubuntu13.10
本程序自己定义一个设备注册到内核,然后再编写该设备驱动。最终实现开发板led灯控制,开发板led灯通过gpio口控制
/*************************************************************************> File Name: platform_test.c> Author: kid> Mail: 280197326@qq.com > Created Time: 2014年03月05日 星期三 11时17分02秒 ************************************************************************/#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/platform_device.h>#include <linux/device.h>#define SET_GPIO (*(volatile unsigned *)0xbfd010C4)#define SET_OUT (*(volatile unsigned *)0xbfd010D4)#define SET_LED (*(volatile unsigned *)0xbfd010F4)static int led_probe(struct platform_device *pdev) //驱动加载时运行此函数,设置gpio控制led灯{ SET_GPIO = (SET_GPIO | 0x000000C0); SET_OUT = (SET_OUT & ~(0x000000C0)); SET_LED = (SET_LED & ~(0x000000c0)); printk(KERN_ALERT "hello\n"); return 0;}static struct platform_device led_device = { //添加设备结构体 .name = "led", .id = 99,};static struct platform_driver led_driver = { //添加驱动结构体.driver = {.name= "led",.owner= THIS_MODULE,},.probe= led_probe,};static int __devinit led_init(void) //初始化驱动{ int ret = 0; platform_device_register(&led_device); //注册设备到内核 ret = platform_driver_register(&led_driver); //注册驱动到内核 if (ret){ printk(KERN_ERR "failed to register\n"); } return ret;}static void __devexit led_exit(void) //驱动退出{ platform_driver_unregister(&led_driver); //卸载驱动 platform_device_unregister(&led_device); //卸载设备 printk(KERN_ALERT "good bye\n");}module_init(led_init);module_exit(led_exit);MODULE_LICENSE("GPL");注意:必须要注册设备和驱动,调试过程中曾没有注册设备导致驱动初始化的时候不会执行probe函数,注册设备和驱动的顺序可以随意。但两者必须的设备名称必须匹配。
0 0
- 在platform总线上注册设备并载入驱动控制led灯
- platform设备注册的时候,去platform总线上寻找相应驱动的流程
- platform总线、设备、驱动模型之led驱动实例
- 基于platform总线的mini2440的led设备驱动例子
- Platform总线注册驱动
- 小记:platform总线注册设备和设备驱动
- 以platform总线方式注册杂项设备驱动
- platform总线、设备与驱动
- platform总线、设备与驱动
- platform总线、设备与驱动
- platform总线、设备与驱动
- Linux驱动---------platform总线设备
- 总线设备驱动模型---platform
- platform总线、设备与驱动
- pwm设备驱动--platform总线
- ok6410学习笔记(15.platform平台总线驱动模型之混杂设备驱动led)
- 总线设备模型-LED驱动
- 基于linux platform总线的LED驱动
- 面试准备(2)浅析final和static
- 笔记1
- QT Creator 添加背景图片
- COM载板设计之二:电源与复位
- cocos2d-x iphone真机测试出现闪屏现象
- 在platform总线上注册设备并载入驱动控制led灯
- 【视频处理工程】5、DirectShow的事件交互和数据流控制机制
- oracle sqlplus执行sql文件
- 推荐几款强大的开源移动开发工具
- IP Header Length (IHL)
- COM载板设计之三:I2C总线及其他信号
- MYSQL limit,offset
- SNMP4J实现SNMP TRAP
- 关于public、protected、private