学习嵌入式软件的历程

时间:2021-01-19 19:11:21
          要说我的嵌入式历程,还要从去年11月份开始,因为在研究生开了一门接口技术课程,再加上本科学习了51系列单片机的基本原理,所以想找一份这方面的兼职历练自己。到了周末,我就跑人才招聘会投简历去。由于工作经验的匮乏,很少合适的岗位选择。跑了几次,得到了一个面试,应聘单片机硬件方面的吧,人家问我,懂不懂ProtelARM啊,当时我连protel是什么都不知道,面试效果就不是很好,所以第二天我就受到了一个电话,拒了我。回到学校,了解了一下相关的信息,觉得自己还是把arm好好学学,觉得把arm搞懂了,工作还是相对好找。我就花了一个多月把arm好好学了一翻。大概也就放寒假了。 寒假回来,我同学实验室买了一块arm9 s3c2410开发板,我就在那里看到他们把wince操作系统烧进去。整个过程在当时对于我来说,感觉很神奇,很有深度(大家不要笑,我的专业是机械电子,很少牵涉到这方面的东西)。我那是想啊,要是我能把这整个过程的软件实现搞通,那是一件多么令人愉悦的事情啊。这样想着,我自己也就买了一块开发板,因为自己课题搞的不是这方面,只有自己掏钱了。买来了,由于质量的问题,跑了几次才搞到一块好的。到此时,也就4月份了。开始把wince按照说明书烧进去。然后,开始也就有点迷茫啊,不知道从和下手。我就看s3c2410的说明书啊,希望能从中找到答案。找了一些资料,也算对s3c2410有了一些了解了,同时也学习了一下ads。这样4月份也就过去了。而到5月份课题进入一个非常时刻,也就没法兼顾那块开发板的学习了。直到6月份,我才有时间想想自己应该从那方面下手,学习嵌入式。想来想去,发现学习linux还是很有前景,再加上linux内核的开源,所以选择了学习linux内核。首先实现内核的编译和烧录,这个做好了,就买了几本书了解嵌入式相关的知识。因为以前对这方面没什么了解,对硬件也没有什么了解,所以,我花了很多时间来了解嵌入式和硬件方面的了解,也学了protel。有了一个基本的了解后,我就想我自己到底应该选择做那方面呢?硬件我以前从来没有做过,没有基础。而做软件,由于课题就是一个纯软件的。在软件方面还是有点基础,我自己在这方面本来也就很有兴趣。所以,我选择了做嵌入式软件作为我的目标,有了这个目标,也就有了方向。我到图书馆找到了linux内核方面的书,首先我选择了毛德操的linux内核的情景分析,觉得还不错。我就开始学习,开始看这本书,发现特别的难,很多东西都不知道。想找个人问,周边也没有谁了解这方面的东西。所以,硬着头皮,看完第一遍,很多地方都不怎么懂。在网上看贴子,都说刚开始都这样的。然后,还找了一些相关的书籍,进行了一些研究,对linux内核情景分析是一个补充。然后,我就把linux24内核代码打印出来,对着书看了一遍,但对于代码还是没有很好的了解,只不过是很粗略的看了一遍。看完之后,更感觉到自己对内核的了解很浅。所以,我想还是要从开头好好研究研究。 针对vivibootloader的实现过程,我进行了分析之后,有了一个很深的理解。对他整个实现的过程有一个很清晰的认识。然后再对i86的启动过程也进行了分析,知道了i86启动需要做什么了。到现在才有了学到东西的感觉。然后,对内核的研究也就告一段落了,开始想看看驱动是怎样开发的,到图书馆找到了linux内核驱动开发这本书,对字符驱动的编写进行了简单的实现,但就是没有针对某个硬件进行驱动的编写。 到了这个时候,就11月份了,也就要忙着找工作了。那里有招聘会,我就往那里跑。这段时间除了找工作,就是忙于学论文。这样也就拖到12月份了。到12月份笔试,面试开始多了起来,我投的都是嵌入式软件方面的工作。刚开始,我笔试都通不过。为什么呢?虽然我编过程序不少,但以前都不求甚解,只要能实现就可以,还有我也不是科班出身,对一些这个领域的基本知识不是很了解,所以郁闷啊!那只有饿补了。有空就跑到图书馆看书。大概到12底,笔试差不多问题就不大了。也参加了几次面试,也就问你做了什么项目啊,你简历上的东西啊。我在简历上自然把熟悉linux内核作为重点,第一次别人让我谈谈linux内核,我却不知道怎么讲!原因主要是我这段时间根本没有对linux内核的东西有过什么总结和学习,还有感觉就是linux内核这么大,从何而讲呢?卡住了。 经过这次,我赶快把以前的东西拿出来复习。后面也有面试,但人家问我很细节方面的东西,我又不是很清楚了。面试也就失败了。 经过这几次面试,发现自己对以前学过的东西进行很好的总结。也没有对linux内核细节方面的东西有过研究。所以,我现在就是想把linux内核很系统,深入对研究一遍。并对代码有一个更深的了解。为此,我打算花一个月的时间好好学学。 在这一年多的过程中,我花费了我很大的热情在嵌入式方面的学习,说句实话,并没有达到我预期的目标。但这也有一些是主观的客观的原因,我不是科班出身,以前对操作系统也不了解,嵌入式的门阶也高,还有就是我周边没有一个嵌入式学习的环境,没有人进行指导。 在这些时间里,我也得到很多的收获。我确定了我自己的初期职业方向,也更加坚定了我在这个方向的发展。可能我现在出去,并没有什么优势可言,但我非常相信自己的能力,过了几年之后,我一定在这方面有一个很好的发展。但同时还是需要更多人的帮助和指导。在linux内核的学习方面我也很迷茫,我不知道我到底要花多长时间才能掌握linux内核,而要到什么程度才算真正掌握了linux内核。