Linux驱动开发,看上去是一份很高大上的职业,虽然从事下层应用开发人员太多,但是门槛又不是非常高,而内核级开发从业人员要少得多,并且资料又较少。
有许多刚才接触到Linux驱动开发的同学会觉得十分苦恼,面对复杂的Linux内核有一种无从下手的觉得。明天就和你们分享一下,让刚才进入驱动开发的朋友少走一些弯路。
一,要晓得将来要做哪些
学习,都是有目的性的,要么是兴趣作祟linux设备驱动,要么就是刚性需求,为了找一份好的工作。在这儿先和你们谈谈做设备驱动将来可以做什么方面。
我把linux设备驱动开发工作分为两大类,一类是做BSP级的开发,另外一类是做外设驱动的开发。
BSP的开发指的是板级代码的开发,和CPU是密切相关的,比如I2C/SPIAdapter的驱动。假如使用通用的芯片,例如三星的Exynos,飞思卡尔的I.MX系列,TI的OMAP或则DaVinci系列,基本就会有现成的BSP包,这部份代码一般是芯片厂商提供和小型公司贡献。
你们可以瞧瞧linux内核源码中/arch/arm/mach-omap,内部好多代码都是摩托罗拉贡献。做BSP级的开发须要有较深的造诣,首先要非常了解CPU特点,另外要使代码有良好的扩充性和复用性,便捷后续移植。有这样需求的常常是芯片商或使用专用芯片的设备商。
外设驱动开发就相对简单一些,都是和特定的外设硬件打交道。
通过借助BSP级代码提供的API或则linux提供的更高层的具象插口来操作硬件。实际上和应用层的开发晋城小异。
比如操作I2C总线上的EEPROM,实际上的读和写操作都有早已封装好的API来完成.而开发者须要做的是了解外设的特点,通过封装好的API对外设进行操作。新入门的开发者建议从外设驱动开发入手,循序渐进。其实,一个优秀的开发者是即可以做BSP级代码的开发,也能做外设驱动的开发的。
文末有学习路线【文章福利】小编推荐自己的Linux内核技术交流群:【891587639】整理了一些个人认为比较好的学习书籍、视频资料共享在群文件上面linux查看操作系统,有须要的可以自行添加哦!!!
学习直通车:
内核资料直通车:
二,用面向对象的思想去思索
面向对象,即OO思想,你们应当十分熟悉。linux的内核其实用面向过程的C语言实现,并且一直是通过面向对象的思想去设计的。
倘若从单片机改行做linux设备驱动,会发觉和单片机的或则裸机的驱动设计有很大区别。设计linux设备驱动不单单是对硬件设备的操作,更多须要考虑的是扩充性和代码的复用。
所以就出现了platformdevice/driver,i2cdevice/driver,spidevice/driver,具象出了设备和驱动两部份,使设备细节和驱动分离。另外还出现了一些框架,提供了底层插口的封装,做开发时要习惯用OO思想去设计。其实要记住条条小路通罗马,不使用这种device/driver也可以实现设备驱动,只是不太推荐这样做。
三,从各驱动框架入手
Linux提供了各类框架(子),对底层进行封装,具象出相同操作的插口linux培训,这样可以更好的实现复用。想入门linux驱动开发,可以先从框架入手,把握API的使用,再逐步深入研究,从上到下去学习。不要把驱动开发想像的太复杂,实际和德语的完型填空差不多,框架有了,只须要自己去填写操作具体硬件的细节代码而已。
几个比较重要和常用的框架有:
给你们推荐一下驱动开发转内核高手的学习路线
全方面系统全面的讲解底层原理开发技术:
1、五大专题,共计150+个课时
2、20个实战操作模块linux设备驱动,2w+代码;
主要从
全方面系统全面的讲解底层原理开发技术:
最新Linux内核大纲
进程管理专题
显存管理专题
网路合同栈专题
设备驱动管理专题
文件系统及内核组件专题
适宜于
学习模式:
本文原创地址://lrxjmw.cn/rggbrlqdkfdt.html编辑:刘遄,审核员:暂无