Linux下设备驱动程序的开发(led流水灯的驱动)

上传人:woxinch****an2018 文档编号:38970830 上传时间:2018-05-10 格式:DOC 页数:7 大小:64.50KB
返回 下载 相关 举报
Linux下设备驱动程序的开发(led流水灯的驱动)_第1页
第1页 / 共7页
Linux下设备驱动程序的开发(led流水灯的驱动)_第2页
第2页 / 共7页
Linux下设备驱动程序的开发(led流水灯的驱动)_第3页
第3页 / 共7页
Linux下设备驱动程序的开发(led流水灯的驱动)_第4页
第4页 / 共7页
Linux下设备驱动程序的开发(led流水灯的驱动)_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Linux下设备驱动程序的开发(led流水灯的驱动)》由会员分享,可在线阅读,更多相关《Linux下设备驱动程序的开发(led流水灯的驱动)(7页珍藏版)》请在金锄头文库上搜索。

1、设备驱动程序的开发流程进行嵌入式 Linux 系统的开发,很大的工作量是为各种设备编写驱动程序。在 ARM 平台上 开发嵌入式 Linux 的设备驱动程序与在其他平台上开发是一样的。总的来说,实现一个嵌 入式 Linux 设备驱动的大致流程如下: (1)查看原理图,理解设备的工作原理 (2)定义主设备号 (3)在驱动程序中实现驱动的初始化。如果驱动程序采用模块的方式,则要实现模块初始化。(4)设计所要实现的文件操作,定义 file_operations 结构。(5)实现中断服务(中断并不是每个设备驱动所必须的) (6)编译该驱动程序到内核中,或者用 insmod 命令加载(7)测试该设备 3.

2、2 linux 下字符设备的驱动开发实例-LED 驱动 (可参考 FS2410P 实验指导手册 v2.1.2.pdf,302-313) (1)实验内容:4个 LED 灯轮流闪烁 本节要求实现在一个字符设备驱动里面实现对 GPIO 端口的操作。 在模块加载的时候跑马灯运行起来 模块卸载的时候,跑马灯停止。 FS2410P 上的4个 LED 指示灯由4个 I/O 口控制,它们分别是:GPF4GPF7,输出低电平时候, 相应的 LED 指示灯亮。 (2)LED 的原理图 FS2410P 带有4个用户可编程 I/O 方式 LED,下表为 LED 对应的 I/O 口。 表1 用户指示灯占用 CPU 资源

3、列表序号 名字 CPU 端口资源1 LED1 GPF42 LED2 GPF53 LED3 GPF6 LED4 GPF7 图1 LED 原理图 (3)LED 驱动源代码及说明 在/s3c2410下新建一个目录:gpiodrv#mkdir/s3c2410/gpiodrv #cd/s3c2410/gpiodrv 在/s3c2410/gpiodrv 目录下用 vi 编辑器编写符合上面功能的驱动源程序gpiodrv.c #cd/s3c2410/gpiodrv #vi gpiodrv.c #include #include #include #include #include #include#inclu

4、de #include #include #include#include #include #include #define IOPORT_MAJOR 220 int magic_leds_open(struct inode*inode,struct file*filp); int magic_leds_ioctl(struct inode*inode,struct file*filp,unsigned int cmd,unsignedlong arg); int magic_leds_release(struct inode*inode,struct file*filp); static

5、struct file_operations magic_leds_fops= ioctl:magic_leds_ioctl, open:magic_leds_open, release:magic_leds_release, ; #define LED1_ON()(GPFDAT void LedSet(int led) ledStatus=led; if(ledStatus else LED1_OFF(); if(ledStatus else LED2_OFF(); if(ledStatus else LED3_OFF(); if(ledStatus else LED4_OFF(); voi

6、d LedDisy(void) LedSet(0x08); udelay(0x500000); LedSet(0x04); udelay(0x500000); LedSet(0x02); udelay(0x500000);LedSet(0x01); udelay(0x500000); LedSet(0x02); udelay(0x500000); LedSet(0x04); udelay(0x500000); LedSet(0x08); udelay(0x500000); static int_init magic_leds_init(void) int result=0; printk(“m

7、agic_leds_initn“); result=register_chrdev(IOPORT_MAJOR,“gpio“, if(result #include #include #include #include#include #include int main(int argc,char*argv) int i; int fd;fd=open(“/dev/gpio“,0); if(fdnetload#./down 或是双击 down 批处理文件,选择在终端运行,可以看到内核映像下载到了开发板。 传输完后,再输入命令“nfprog”,然后回车,然后输入“2”选择第 二个区块,输入“Y”确认将文件烧写到 nandflash 中。重复操作(3) , (4) , (5) , (6) ,可看到实验结果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号