Arm驱动程序设计实用教案

上传人:re****.1 文档编号:568829999 上传时间:2024-07-27 格式:PPT 页数:19 大小:775.50KB
返回 下载 相关 举报
Arm驱动程序设计实用教案_第1页
第1页 / 共19页
Arm驱动程序设计实用教案_第2页
第2页 / 共19页
Arm驱动程序设计实用教案_第3页
第3页 / 共19页
Arm驱动程序设计实用教案_第4页
第4页 / 共19页
Arm驱动程序设计实用教案_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《Arm驱动程序设计实用教案》由会员分享,可在线阅读,更多相关《Arm驱动程序设计实用教案(19页珍藏版)》请在金锄头文库上搜索。

1、硬件(ynjin)原理图第1页/共18页第一页,共19页。驱动(qdn)编写第一步:解压源码我们要编写的驱动(qdn)是对应于LED第二步:进入drivers目录cddriversLED属于字符设备cdchar进入char目录第三步:编写led-test.c驱动(qdn)源程序geditled-test.c第2页/共18页第二页,共19页。第一步、编写(binxi)驱动包括6部分1头文件2注册函数3卸载函数找一个类似的驱动(qdn)打开,编写首先把头文件全部copy4定义设备名#defineDEVICE_NAMEleds“5硬件引脚定义6模块信息#include #include #inclu

2、de #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 第3页/共18页第三页,共19页。1加入( jir)硬件引脚static unsigned long gpio_table =S3C2410_GPB5,S3C2410_GPB6,S3C2410_GPB7,S3C2410_GPB8,;static int leds_init(void)static void

3、 leds_exit(void)2编写注册(zhc)函数3编写(binxi)卸载函数4加入模块信息module_init(leds_init);module_exit(leds_exit);MODULE_LICENSE(GPL);MODULE_AUTHOR(zjl);static unsigned int gpio_cfg_table =S3C2410_GPB5_OUTP,S3C2410_GPB6_OUTP,S3C2410_GPB7_OUTP,S3C2410_GPB8_OUTP,;说明引脚功能,输出第4页/共18页第四页,共19页。static int leds_init(void)int r

4、et;ret = misc_register(&misc_leds);if(ret 4) return -EINVAL;s3c2410_gpio_setpin(gpio_tablearg,cmd);return 0;default:return -EINVAL;第8页/共18页第八页,共19页。完整(wnzhng)的驱动程序#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i

5、nclude #include #include #include #include #include #include #include #define DEVICE_NAME leds/* 用来(yn li)指定LED所用的GPIO引脚 */static unsigned long gpio_table =S3C2410_GPB5,S3C2410_GPB6,S3C2410_GPB7,S3C2410_GPB8,;/* 用来(yn li)指定GPIO引脚的功能:输出 */static unsigned int gpio_cfg_table =S3C2410_GPB5_OUTP,S3C2410_

6、GPB6_OUTP,S3C2410_GPB7_OUTP,S3C2410_GPB8_OUTP,;第9页/共18页第九页,共19页。static struct file_operations dev_leds_fops = .owner = THIS_MODULE,.open = leds_open,.ioctl = leds_ioctl,;static struct miscdevice misc_leds = .minor = MISC_DYNAMIC_MINOR,.name = DEVICE_NAME,.fops = &dev_leds_fops,;static int leds_init(

7、void)int ret;ret = misc_register(&misc_leds);if(ret 4) return -EINVAL;s3c2410_gpio_setpin(gpio_tablearg,cmd);return 0;default:return -EINVAL;第10页/共18页第十页,共19页。第二步、修改(xigi)配置文件Kconfiggedit Kconfig,添加(tin ji)驱动选项第11页/共18页第十一页,共19页。第三步、修改(xigi)MakefilegeditMakefile添加(tinji)名字(mng zi)与.c文件名一致第12页/共18页第十

8、二页,共19页。第四步、makemenuconfig退到根目录执行(zhxng)makemenuconfigDevice drivers Character devices找到你新添加(tin ji)的设备第13页/共18页第十三页,共19页。选择(xunz)三种空白不选*内核(nih)选择M作为模块选择第14页/共18页第十四页,共19页。第五步编译(biny)执行makezImage下载新的内核(nih)文件驱动制作完成第15页/共18页第十五页,共19页。下一步(yb)、编写应用程序#include #include #include #include int main(int argc

9、,char *arg )int fd;fd=open(/dev/leds,0);if(fd 0) printf(TQ2440 leds open failed!n); ioctl(fd,1,0);ioctl(fd,0,1);ioctl(fd,1,2);ioctl(fd,1,3); close(fd);return 0;调用(dioyng)驱动第16页/共18页第十六页,共19页。调试(diosh),运行第一步,下载zImage第二步,运行(ynxng)应用程序效果很好!第17页/共18页第十七页,共19页。感谢您的观赏(gunshng)!第18页/共18页第十八页,共19页。内容(nirng)总结硬件(yn jin)原理图。cd char进入char目录。#define DEVICE_NAME leds“。static int leds_init(void)。static int leds_init(void)。if(ret 0)。if(ret 0)。.owner = THIS_MODULE,。printk(TQ2440 leds opend。static int leds_ioctl(。感谢您的观赏第十九页,共19页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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