简单,要解释操作系统的概念,操作系统是用户和硬件之间的一层媒介程序。
无论是linux那就windows的或安卓、ios,它的主要功能有两点:
1、最有效管理硬件。
2、比较方便用户操作。其次,linux内核是linux系统的核心程序,主要完成任务调度、内存管理、io设备管理等等功能,主要目的是目的是应用程序需要提供一个稳定点良好的运行环境,这是一个基础。再一次,驱动程序是操作系统有效管理硬件的一个途径。应用程序是比较方便用户你操作提供给的程序,比如shell,linux中的bashshell在内kde、gnome等图形shell全是应用程序。你这个可以简单再理解为驱动程序实现方法了操作系统对硬件的比较有效管理,应用程序实现程序了操作系统更方便用户操作的目的。最后,从编程角度来看,linux内核就是三个全局函数库,应用程序通过全局函数linux能提供的api函数来实现程序操作,linux内核与驱动通信实现对硬件的快速有效管理。详细的编程细节,要自己在实践编程中亲身体会。这是一个整体的描述。
linux操作系统下,运行程序驱动的有两种方法:
支持静态打开程序驱动。将驱动程序编译程序到内核而接受的一系列配置能操作。动态运行程序驱动。是内核可以注册设备信息,进而在kernel起动后,再是从insmod指令,关联好主、次设备号,最终达到以模块的形式接受读取。
我亲身体验,我以前是做数控系统旗下的,做了有七八年,有x86的产品也有arm的产品,x86的linux低些旗下驱动的地方差不多,arm上比较比较多,存储,会显示的,usb的,各种总线的,音频的,网络的,很多地方只要你有定制需求都要改。驱动开门槛比较好高,主要会软件还得清楚些硬件知识,硬件的原理图,设备的数据手册,工作特性都要会,入门难但是否则的话入门学习了就跟其他的一样的做多了就清楚了。之前公司是linuxqt,今年提出离职了进了一家安卓开发的公司,现在还在做安卓的驱动开发,那种感觉我不是很清楚,只是因为硬件平台变了,开发完毕的内容仍是没变。驱动这一块,人也很少,要比待遇也会好一些,现在我也不知道未来会不会与此同时年龄越大,会被淘汰掉,可是linux本身的应用范围是挺广的,但以及一个成功了的开源项目,只需社会有需求,后面估计我还是会被广泛应用,不过个人就看自己的能力和精力了!