+ -
当前位置:首页 → 问答吧 → 关於linux driver

关於linux driver

时间:2005-12-27

来源:互联网

各位先进

小弟背景,是数位ic design

不过,老师叫我研究,FPGA嵌入式系统 使用Excalibur EPXA1

可是后来发现,要写linux driver

因为,我们是先用verilog完成数位硬体,然后在fpga板上实现

再来,就是针对硬体写driver了

不过,小弟c语言,很破,看了一本"Linux device drive 2/e" O'REILLY出版的

里面有好多好深的c语言,不晓得要从那边小手

不知有没有先进在研究linux driver 撰写?

说一下经验吧

作者: iknowfish   发布时间: 2005-12-27

基本上, 那一本Linux Device Driver就可以让您学到很多东西了. 但您如果真的想要学会如何在Linux撰写驱动程式的话, 强烈建议务必要有OS一定程度的观念.

还有务必了解Linux Device Driver几个entry point, 譬如: init, open, read, write这几个基本的routine (当然还有很多routine, 书上有提及), 每一routine各司其职, 需了解每一个routine该做那些事情, 有了这些观念, Linux Device Driver较容易上手.

如果有时间的话, 不妨可把那本书的每一范例搞懂且跑过, 可让您对Linux Device Driver有更一步了解且会有一定程度的提升, 这点真的很重要喔!!XD

像小弟开始学的时候, OS观念并不是很好, 就这样跌跌撞撞学Linux Device Driver, 起初不知如何著手, 也是因为有跑书本里的范例, 觉得那里不清楚, 就想办法搞懂, 渐渐地就对Linux Device Driver有观念, 也觉得蛮有趣的. 加油囉~~~学Driver并不难, 唯有恒心就会有收获喔!!XD....

作者: adrian   发布时间: 2005-12-27

iknowfish 写:各位先进

小弟背景,是数位ic design

不过,老师叫我研究,FPGA嵌入式系统 使用Excalibur EPXA1

可是后来发现,要写linux driver

因为,我们是先用verilog完成数位硬体,然后在fpga板上实现

再来,就是针对硬体写driver了

不过,小弟c语言,很破,看了一本"Linux device drive 2/e" O'REILLY出版的

里面有好多好深的c语言,不晓得要从那边小手

不知有没有先进在研究linux driver 撰写?

说一下经验吧


首先2/e是写2.4版的,如果你用2.6 kernel请看3/e,说道下手喔,还是照书的进度。但是一般会先玩char device,他有一个scull范例,你先把程式码看懂再来看其他的,因为char device是最简单的。他那个范例也是整本最简单的。

然而他的C并不是深奥,他有讲他是用C来实现物间导向,所以看起来很"难看"。又用了很多gcc-ext的语法,可能不是一般C的读本有办法教你的。有些老师会在你看这个之前先让你C读过一次。C如果真的不行,只好卡关,没有弄熟的话,因为根本无法前进。我也正在看,也是一个头两个大,共勉之。

作者: pokkys   发布时间: 2005-12-28

嗯嗯,我os是装red hat9所以kernel是2.4

作者: temlin   发布时间: 2005-12-28

请问各位,你们看linux driver,是为了,以后自已作的硬体去写吗?

譬如,小弟我,是为了以后帮实验室同学写Video硬体去写driver

不知,各位是如何?

作者: aprotoss   发布时间: 2005-12-28

小弟也正在苦读linux device drivers.2e
所以手边/包包中随时有一本c/c++.linux kernel...参考资料
虽然修过rtes.用过uclinux.玩过一点driver...
还是有点吃力
请问楼上几位大大.因小弟是2.6版
欧莱理有出.3e吗
另请教.小弟心中的疑惑
玩driver要不要买块板子ㄋ
谢谢

作者: iknowfish   发布时间: 2005-12-30

adrian 写:基本上, 那一本Linux Device Driver就可以让您学到很多东西了. 但您如果真的想要学会如何在Linux撰写驱动程式的话, 强烈建议务必要有OS一定程度的观念.


如果要写2.6的Driver,可以去找LDD 3/e来看。如果要补强OS的基本工,可以再把Linux Kernel Development 2/e找来看,就可以相辅相成了。

作者: guest   发布时间: 2005-12-30

LDD 2/e for 2.4 kernel 有中文版...
LDD 3/e for 2.6 kernel 没中文版...

若无法立即购买(二本都不便宜)...
可以参考:
http://www.tldp.org/LDP/lkmpg/2.4/html/
http://www.tldp.org/LDP/lkmpg/2.6/html/

(看网址就知道版本的差别了!)

不过还是建议可以买一下,比较方便,
再者,要学LDD,多少也要了解OS运作,
及Linux kernel基本观念!
才能事半功倍,不然光是个oops..就搞死人了! orz...

小弟也正在学,大家一起加油^^

p.s
小弟认为不见得一定要有板子,
不过有板子,更能接近实务,做起来也真实些...
但真的要好的开发板,都不便宜...(少说十张小朋友是跑不掉的...)
而且,还要考虑OS porting的问题!
这就又是个大问题了!

作者: guest   发布时间: 2005-12-30

请问各位大大
也是作linux device driver的研究吗?

你们指导老师没提供板子吗?

我们老板是提供一块Excalibur EPXA1 是altera的板子

而且,他们还提供一个OS耶,download还蛮简单的

不用自已porting OS

小弟认为,即然要作driver,就先暂时不管porting os的事,因为那也会花很多时间

小弟还有半年时间,因为国科会的追星计画后期就要我写driver了>.<

作者: guest   发布时间: 1970-01-01

你是否拜读过O'Reilly的Linux Device Drivers这本书,好像有点观念但还是有实作上的困难?
Linux Driver程式进入点在那里?
Linux Driver要如何跟上层的应用程式沟通?
Kernel内有那些实际的Driver 程式码可以参考?
在Linux多工环境下, Driver被同时存取时,要如何处理?针对Asynchronous、中断、DMA等I/O方式,Linux Driver又要如何撰写?

可以参考免费艾鍗的Linux Device Driver线上教学影片http://www.powercam.cc/home.php?user=ittraining&f=slide&v=list&fid=5580

更多Linux Device Driver教学http://www.ittraining.com.tw/etd/course/embedded_driver.html?ref=76

作者: guest   发布时间: 2011-03-15