无根之木不活,无基之楼不立,无论是学习那个领域知识,基础是重中之重。

针对学习linux驱动,我们来仔细说说:

个人觉得C语言和数据结构就是重中之重!Linux系统最优秀的地方就在于内核。无论是进程调度,显存管理,还是数据的组织方式,而这种算法的基础就是一个高效而精简的数据结构,黑红树也好linux i2c 驱动,内核数组也好,看不懂C语言,搞不清数据结构,基本上谈不上做驱动。基础不扎实不要谈下层建筑,资源不全面就不要谈合作,很简单的道理。

假定楼主的C语言和数据结构都是勉强过关的(分得清表针函数函数表针,就能熟练自定义数组并进行增删改查等数组或树的算法重组)。我们来谈下一个阶段,让我们对类Unix系统的基本操作有一个基本的了解,打开文件,切换路经,修改个密码,填个用户哪些的。
接出来我们来谈驱动,做驱动就得有做驱动的样子,不晓得楼主之前玩过裸板51或则AVR没有,假如没有,尽早搞通,资源好多,跟随人家把电平配一遍,来个矩阵按键,组个跑马灯linux i2c 驱动,有成就感的同时也打下了硬件基础,用处大大滴。

基于操作系统的驱动,即必须了解内核对驱动程序的管理方式,如何界定一个具体的设备,是字符型?块设备?还是别的哪些linux中文乱码,或则从总线的角度来界定一个设备,i2c也好,USB也罢,还是数据地址控制那么一个三总线方式,都是有必要把握的东西。
上升到应用,任何一个实践项目中很难会有一个板子让你从零开始写驱动,百分之九十九是用来改,这就是一个熟练的过程,做到一定多的东西,都会下意识地认为,这个地方可能会有问题,我须要留心一下。

总结一下linux伊甸园论坛,驱动工程师虽然也是一种硬件翻译型工程师,其任务就是弄懂指南上的表格,之后彰显在代码上面。客观地说,我们这个行业门槛较高,队友较少,不过等到真正入门以后,那个成就感是无与伦比的。
