免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 870 | 回复: 0
打印 上一主题 下一主题

Linux 驱动开发学习步骤 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:44 |只看该作者 |倒序浏览
  1.首先需要对C语言编程非常熟悉,这是在Linux下编程的基本条件。
  2.会写简单的Makefile,编写一个简单的应用程序,再写一个Makefile,让它能正常编译。Makefile主要目的就是用来管理编译庞大的代码文件。
  3.了解Linux内核的目录结构,尤其要熟悉kernel目录下的driver目录组织结构,这里一般存放内核中的驱动程序。
  4.学会配置、编译Linux内核
  5.写一简单char驱动,Makefile编译通过,可以insmod, lsmod, rmmod。在驱动程序的init函数里加打印字符串, insmod后应该能够通过dmesg看到输出。
  6.写一完整char驱动, 加上read, write, ioctl等各种操作函数的驱动实现。 在ioctl里完成从用户空间向内核空间传递结构体的实现。
  7.写一block驱动,如磁盘驱动。加上read,write,ioctl,poll等各种函数实现。
  8.学习Linux系统中interrupt机制的实现,这是编写驱动中常用到的技术。
  9.学习内存管理,明白各种memory alloc的函数实现细节,这是Linux开发的基本功之一。
  10.学习锁机制的应用,如信号量、自旋锁等。锁主要用来解决很多同步和并发的问题。
  11.以上知识你都认为掌握了,接下来就看内核中实际应用的驱动代码。你会发现最基本的你已经知道了,大的框架都是一样的,无非是read,write,ioctl等函数的实现,但里面包含了很多很多细小的实现细节是之前不知道的,比如程序的设计逻辑,算法等。这时候就要考虑到很多实际的问题而不仅仅是基本功能的实现。
   推荐您看2.6.20中integrated的一个驱动 kvm,记得是在driver/lguest下,很好玩的,就是linux下的虚拟机驱动,代码不长,但功能强大。有能力的可以自己写一操作系统按照要求做成磁盘镜像加载到虚拟机中,然后客户机可以有自己的4G虚拟地址空间。
  12.最后就是坚持不断地学习与总结。看完驱动欢迎您进入Linux kernel学习中来。
  总之,根据以上的步骤学习你会有实际的提高,但还有一点是最重要的,就是要有持之以恒的学习精神,并且要有解决任何问题的信心。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP