Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4524296
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: 嵌入式

2011-04-24 11:40:04

 
1。驱动的编写,我们这里采用开发板生产商提供的LED驱动程序。
 
2。将程序添加到内核里面,LED驱动明显是字符驱动,所以将xxx.c复制到drivers/char目录下,并修改Makefile,在Makefile里添加一行
   obj-m += xxx.o
然后make modules,就可以看到在drivers/char/xxx.ko。
 
3. 将xxx.ko,拷贝至开发板上,具体目录为/lib/modules/'uname -a'
 
4. 将测试程序用交叉编译工具编译好,也拷贝至开发板,目录可以随便了。
 
5. 在开发板上建立设备文件,mknod /dev/xxxx c xxx(主设备号) 0
 
6. 加载模块,insmod xxx,注意,后缀.ko不写。或者可以用命令 insmod ./xxx.ko 《Linux Device Drivers 3》上是用后者的。
   我在这一步的时候出现了错误:
  insmod: can't read 'leds': No such file or directory
   主要问题就是我第三步没有做好,当时/lib/modules/下没有我的内核版本的目录,我就自己随便建里一个,结果就出错里,后来重新建立量以自己内核版本为文件夹名的目录,在加载就成功了。
 
7. 执行测试程序,刚刚开始,我这里也执行不来,修改权限还是不行,后来,在PC上修改里权限,在拷贝至开发板就可以运行了。
 
至此,驱动的开发流程大概就是这样了。以后我会慢慢开始深入到驱动程序的学习中去,也会将一些心得体会写出来。
阅读(2295) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~