不知不觉已经待这小地方两年了,从一无所知,到觉得无所不知,再到觉得一无所知,起起伏伏也有不小的感慨。今天闲暇就把学
kernel驱动的所思所想记录下来。
刚毕业之时,一无所有,除了带着一点c语言根基(虽然后来发现对我帮助最大的就是c语言的编程思想),无所畏惧的就踏入了这
一行。初到公司,什么任务也没接受,先让查看高通文档,而高通文档确是无所不包,顿时有种老虎啃天,无处下口的感觉。问档也是
纯英文版本,看的也是兴趣缺缺。碌碌无为两周,开始让看代码。还是感觉看代码亲切不少,等等。这代码是什么意思,怎么这么多莫名
奇妙的名字,main在哪,我从哪里来,我要到哪里去。。。。真的,刚开始看公司项目代码,你会发现面对的第一个问题,这不是大学里
简单的代码,你所负责的东西看不到最最最原始的开头,凭你现在的知识积累,你绝对看不到项目最初的起始点。这对新人来说是很致命的,
你或许会需要两个星期还要长的时间去适应这个结果,因为他目前来说是颠覆了你以往的认知(我后面再遇到的新人问我问题永远开始都是,
师兄,这个代码的main在哪,我怎么找不到该从哪开始)。
好,首先来看新人遇到的第一个问题,main在哪,按我个人理解,不要去拘泥于main在哪,你要想的是让你的前辈告诉你一个绝对被调用
的地方,然后你以此为根据,慢慢前后打通。你可以先看这个被调用的东西因谁而起,条件是什么,谁又是因谁而起,直到,你再也看不懂了,
那么就暂停。顺一顺脉络你会发现,哦,这个是这样被调用的,这个又因为什么外在条件调用。这样看完后,你可能会思考,我调用这个的意义
是什么,然后就开始往下顺,一个函数也不要跳过去(新人很多时候看不懂的时候就会自作聪明的先看他看的懂的地方,看不懂的一律当做
没见过,也不会去管看不懂的函数什么意思),顺到你再也没法往下看了,停止。 然后再做归纳总结,对于你新学的这个东西你已经有了一个
大概的了解,切记不要把自己的想法强加给代码的释义上(你没有资格这样做,你的理解跟作者不管如何也会差的很远,何况是接触一个半生
不熟的东西,很多自以为是的人,看完一遍后会形成很强大的自我认知,这种认知别人还说服不了你,但是那种还很多时候是错的,中国人喜欢
眼见为实,自己确实看到了,只是自己理解到位不了)。
慢慢整理2-4周,会有一部分很全面的了解,当然你足够努力,或者天赋非凡,一天也可能够了。。。。接下来说第二个问题,新人在看代码
的时候会发现作者很多莫名其妙的函数,莫名其妙的变量名,经常会去思考作者为啥会去起那样的名字。其实很多时候作者起名字是很随意的,除非
非常正规的公司。当看到理解不了的变量的时候,请将其看为变量A,然后去理解上下文来看A的含义及起的作用。问题不供而破。
接下来说第三个问题,做驱动的经常会看代码,而不去写代码,这点很要命,很多人会不敢写,不会写,其实闲暇要发挥想象力,想想一些特殊的
点子放到你所看的代码。无所畏惧,方能成事,当年自己经手写出代码来了,哪怕它啰嗦,丑陋,但是只要能运行,你就是不小的进步,很快你就在自己
努力的积累下,独挡一面。