当前位置:网站首页 > Go语言开发 > 正文

linux内核驱动开发常用知识(linux 内核驱动)



Linux驱动开发,看起来是一份很高大上的职业,毕竟从事上层应用开发人员太多,而且门槛又不是特别高,而内核级开发从业人员要少得多,而且资料又较少。

有许多刚刚接触到Linux驱动开发的同学会感觉非常困惑,面对复杂的Linux内核有一种无从下手的感觉。今天就和大家分享一下,让刚刚步入驱动开发的同学少走一些弯路。

学习,都是有目的性的,要么是兴趣使然,要么就是刚性需求,为了找一份好的工作。在这里先和大家聊聊做设备驱动将来可以做哪些方面。

我把linux设备驱动开发工作分为两大类,一类是做BSP级的开发,另外一类是做外设驱动的开发。

BSP的开发指的是板级代码的开发,和CPU是密切相关的,例如I2C/SPI Adapter的驱动。如果使用通用的芯片,比如三星的Exynos,飞思卡尔的I.MX系列,TI的OMAP或者DaVinci系列,基本都会有现成的BSP包,这部分代码通常是芯片厂商提供和大型公司贡献。

大家可以看看linux内核源码中/arch/arm/mach-omap,内部很多代码都是诺基亚贡献。做BSP级的开发需要有较深的功底,首先要十分了解CPU特性,另外要使代码有良好的扩展性和复用性,方便后续移植。有这样需求的往往是芯片商或使用专用芯片的设备商。

外设驱动开发就相对简单一些,都是和特定的外设硬件打交道。

通过利用BSP级代码提供的API或者linux提供的更高层的抽象接口来操作硬件。实际上和应用层的开发大同小异。

例如操作I2C总线上的EEPROM,实际上的读和写操作都有已经封装好的API来完成.而开发者需要做的是了解外设的特性,通过封装好的API对外设进行操作。新入门的开发者建议从外设驱动开发入手,循序渐进。当然,一个优秀的开发者是即可以做BSP级代码的开发,也能做外设驱动的开发的。

面向对象,即OO思想,大家应该非常熟悉。linux的内核虽然用面向过程的C语言实现,但是仍然是通过面向对象的思想去设计的。

如果从单片机转行做linux设备驱动,会发现和单片机的或者裸机的驱动设计有很大区别。设计linux设备驱动不单单是对硬件设备的操作,更多需要考虑的是扩展性和代码的复用。

所以就出现了platform device/driver,i2c device/driver,spi device/driver,抽象出了设备和驱动两部分,使设备细节和驱动分离。另外还出现了一些框架,提供了底层接口的封装,做开发时要习惯用OO思想去设计。当然要记住条条大路通罗马,不使用这些device/driver也可以实现设备驱动,只是不太推荐这样做。

【文章福利】小编推荐自己的Linux内核技术交流群:【】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)     

Linux提供了各种框架(子系统),对底层进行封装,抽象出相同操作的接口,这样可以更好的实现复用。想入门linux驱动开发,可以先从框架入手,掌握API的使用,再逐渐深入研究,从上到下去学习。不要把驱动开发想象的太复杂,实际和英语的完型填空差不多,框架有了,只需要自己去填写操作具体硬件的细节代码而已。

几个比较重要和常用的框架有:

给大家推荐一下驱动开发转内核大神的学习路线

全方面系统全面的讲解底层原理开发技术:

1、五大专题,共计150+个课时

2、20个实战操作模块,2w+代码;

主要从

全方面系统全面的讲解底层原理开发技术:

进程管理专题

内存管理专题

网络协议栈专题

设备驱动管理专题

文件系统及内核组件专题

项目实战

适合于

等等

到此这篇linux内核驱动开发常用知识(linux 内核驱动)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • linux内核驱动开发 vscode(linux内核驱动开发工程师)2025-11-08 14:27:05
  • 颜色代码怎么用(c语言颜色代码怎么用)2025-11-08 14:27:05
  • goa电路维修视频(电工电路维修视频)2025-11-08 14:27:05
  • exe程序反编译教程(exe反编译成c语言)2025-11-08 14:27:05
  • aurocean怎么读(aurogon怎么读)2025-11-08 14:27:05
  • 嵌入式驱动开发面试题(嵌入式驱动开发前景如何)2025-11-08 14:27:05
  • linux驱动开发工资(linux驱动开发怎么样)2025-11-08 14:27:05
  • windows驱动开发 串口(win10 串口驱动)2025-11-08 14:27:05
  • windows驱动开发工程师(win10驱动开发)2025-11-08 14:27:05
  • linux 微信小程序开发工具(微信开发工具linux版)2025-11-08 14:27:05
  • 全屏图片