免费注册 查看新帖 |

Chinaunix

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

[驱动] 怎样学习linux驱动 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-02 15:02 |只看该作者 |正序浏览
大家好,我现在在一家嵌入式公司做GUI,想向驱动方向转,现在自己在下面学觉得很迷茫,不知道一时该从哪下手,现在在看宋宝华的《Linux设备驱动开发详解》,看的稀里糊涂的,请大家给点建议,应该怎么学,
越具体越好,谢谢了~

论坛徽章:
0
27 [报告]
发表于 2012-11-22 10:20 |只看该作者
回复 22# sclinux


    嵌入式只是一门技术,不能说是行业

论坛徽章:
0
26 [报告]
发表于 2012-11-20 19:29 |只看该作者
有个疑问,必须要买开发板吗?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
25 [报告]
发表于 2012-10-27 23:22 |只看该作者
回复 22# sclinux


    这行业工资不高,门槛不低,创业更艰难, 因为 资本门槛要求高,还比不过搞java 服务器的
工资高, 入门门槛相对低,当然高级人才 竞争也激烈

论坛徽章:
0
24 [报告]
发表于 2012-10-27 14:53 |只看该作者
新嵌嵌入式有linux驱动系列视频http://www.linuxgtk.com

论坛徽章:
0
23 [报告]
发表于 2012-04-19 14:06 |只看该作者
上一些权威网站找一些学习资料自己先学着实在不行就找个地方报个班学习吧:wink:

论坛徽章:
0
22 [报告]
发表于 2012-04-13 12:33 |只看该作者
我也好像进入嵌入式驱动行业

论坛徽章:
7
IT运维版块每日发帖之星
日期:2016-05-27 06:20:00IT运维版块每日发帖之星
日期:2016-06-09 06:20:00操作系统版块每日发帖之星
日期:2016-06-12 06:20:00程序设计版块每日发帖之星
日期:2016-06-12 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00IT运维版块每日发帖之星
日期:2016-06-17 06:20:002015-2016NBA季后赛纪念章
日期:2016-06-28 17:42:27
21 [报告]
发表于 2011-05-07 19:43 |只看该作者
我正在学习,我QQ在下面,今后多多交流

论坛徽章:
0
20 [报告]
发表于 2011-05-07 05:45 |只看该作者
谢谢大家了,一起加油啊

论坛徽章:
0
19 [报告]
发表于 2011-03-25 19:52 |只看该作者
大家好,我现在在一家嵌入式公司做GUI,想向驱动方向转,现在自己在下面学觉得很迷茫,不知道一时该从哪下手 ...
g1e2g3123 发表于 2011-01-02 15:02



个人觉得宋宝华那本书,算是国内少见的,能把问题说得清楚的,但是的确是对于完全的新手,可能觉得说的又有点抽象了。
但是仍然是本不错的学习资料和参考资料。
对于学驱动,写某个设备的驱动,我的感觉是,基本步骤是,了解对应设备的硬件的特性,然后了解到设备所对应的软件协议,然后再了解对应软件平台的架构,然后才只要要实现哪些代码,具体这些代码是做实现了什么功能,最后才搞清楚,除了软件框架之外,你作为驱动开发者,要实现哪些代码,一般都是一些函数接口之类的具体细节硬件操作的部分。

拿我了解的Linux下的Nand flash为例,首先你要去搞懂nand flash的硬件的基本知识,然后有了这些基本知识,才知道要实现数据的读写等操作,软件要发送什么命令以及如何发送等等,接着,要了解Linux的关于nand flash的软件架构MTD的作用和已经实现了哪些通用的操作,最后才能看懂,除了架构中帮你实现了的通用操作部分,你去写驱动,自己要实现哪些底层的细节操作所对应的代码。

总结下就是:
1.了解硬件知识和工作机制
2.了解软件平台(常见的是Linux下的驱动所相关的架构,或者Windows的驱动编程机制)
3.最后你要搞懂你要做哪些工作,实现哪些函数和对应的功能。
4.一般来说,驱动的调试,往往会比你单纯写完了驱动所需要的工作,更加耗精力。

最后才是经过驱动调试,得到一个合格的驱动。
此时,你也才会更加了解相关的硬件以及软件。


对于你如何学驱动:
最好找一个简单的纯软件的例子,这点,宋宝华的书里面就有例子,或者inux下驱动编程的经典书LDD,最新版本是第三版,所以被叫做LDD3,具体去这里下载:
Linux Device Drivers 3rd Edition 中文版+英文版 CHM+PDF
http://bbs2.chinaunix.net/thread-1950198-1-1.html
按照宋宝华的书里面的例子,自己一点点实践,是个不错的学习办法。

等熟悉Linux下面驱动编程的基本框架后,再找一个开发板或者自己选某个硬件,比如nand flash,网卡,usb等等,以去按照最开始说的,先了解硬件知识,再了解Linux下面的软件框架,最后才是去看自己写驱动的话,需要实现哪些部分。这部分,就要靠长期的时间和实践积累了。

总的来说,我的感觉是,你本来只是想要学习某个硬件的驱动,结果发现,在此之前,你要了解的东西,比你所要实现的那点代码来说,要多的太多了,而且不仅仅是要软件框架,还要硬件实现的机制。
而硬件知识方面,很多都要设计看懂基本的时序图,引脚等内容,所以,不是一两句就能说得清楚的。要慢慢积累。

够详细了吧?呵呵。还有疑问,一起讨论。
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP