嵌入式Linux驱动学习之引导篇——为何要选择嵌入式Linux驱动这个方向?

      酝酿了几分钟,依旧不知道如何开篇(这多是工科男的一个通病吧)。索性随意起来,想到哪写到哪,这样也许思惟能变得更加活跃呢。程序员

      先交代一下背景,本人目前是国内某普通一本高校的一名大三学生,读的专业是电气工程及其自动化。转程序猿也是目前大多数跨专业就业学生的首选,毕竟薪资福利摆在那里,博主天然也是这股潮流中的一员。我也不知道当初在填报志愿的时候为何要选择这个专业,多是以为这个专业的名字比较高大上吧。虽然在填报志愿的时候有稍微了解过这个专业,可是毕竟没有真正去体验过,因此并无对这个专业有清醒的认识。电气工程这个专业属于强电(直接理解为高压就好),摆正心态认真学下去能学的好(数学基础要打好)。这个专业虽然是工科里比较注重实践与理论相结合的专业,但因为其专业的特殊性,很难找到实践的机会(场地与设备都不太容许)。每学期基本上都有实验课,可是基本上都是验证性实验,且这些实验室基本都不对学生开放(只能是实验课去摸摸,毕竟设备都挺贵的)。顺其天然,我大一大二基本上都是在搞自动化方向的东西,毕竟成本低,易入门,并且作出来东西后颇有成就感(这点最关键),因此基本上就是按照如今大多数大学生同样开始从单片机入门了。转折点是大二暑假,当时参加了全国大学生电子设计大赛,我发现周围的同窗都好强,动手能力和学习能力都超乎个人想象,这时候惊呼:原来周围的同窗都这么努力呀!莫名感到压力倍增...在长达1个月的集中训练中,我也发现其中存在的一些问题(或者对我来讲的疑惑):架构

      1. 代码的创造能力不足:虽然周围同窗都有很强的自学和动手能力(好比调通一个四轴小飞行器或者倒立摆),可是真正须要本身创造的代码并很少,基本上就是搬运其余人的代码。这样可以快速实现做品的功能,可是也存在一些隐患。例如:对MCU各类接口的运行机制并非很清楚,而STM32的库函数的普遍使用更是加深了这种隐患。万丈高楼平地起,没有打好地基外表再华丽也只是危楼。并且不少大公司在招应届毕业生时也更注重基础知识的考核。函数

      2. 过于浮躁:这也是现代人的一个通病,基本上搬来的代码能用就行,也不去考虑是否可以进一步去优化,没有进行深刻思考和实时总结。这样之后在遇到相同的问题时又须要从新来过,实际上是最没有效率的作法。学习

      3. 同质化严重:这里说的同质化并非做品的同质化(做品虽然有时也相似...),而是能力的同质化。感受具有这方面能力的人实在太多,谁没有在大学的时候玩过几年单片机?名校学生的能力会比你差?找工做在招聘网上这些单片机开发的职位的薪资也比较低,由于太多人会了,能力至关的状况下公司确定选择省钱的方案咯。优化

      以上就是我大学期间的一些思想变化,它也逐渐让我清醒的认识本身,我想转嵌入式Linux驱动开发的决心俞增强烈。由于这些问题可以在嵌入式Linux驱动开发的学习过程当中迎刃而解,毕竟环环相扣,若囫囵吞枣则步履维艰。啰嗦了这么久,终于要转入正题了。语言功底太差,各位请见谅(手动捂脸)。。。spa

      有人说嵌入式是一个坑,是一个无底洞。其实他们说的也没错,由于嵌入式涉及的知识太普遍了,须要花不少的时间去学习一些新的东西,并且还不必定可以马上有成效,这也让不少想踏入嵌入式大门的初学者停下了脚步。然而,嵌入式的门槛当然较高,可是若学有所成,获得的薪资和发展空间也是纯单片机开发所不能及的。那来讲说我为何要选择嵌入式Linux驱动这个方向吧。设计

      1. 具有必定理论与实践基础:咱们的选择是会受环境因素影响的,自己专业就是电类专业,天然对硬件知识的接受能力比较强,加之在大学期间也常常捣鼓单片机,对各类硬件接口的基本原理仍是比较熟悉的。相对于零基础的初学者,咱们依然有一些明显的优点。
接口

      2. 驱动方向的人才相对紧缺:比起纯IT方向的程序猿,往嵌入式Linux驱动开发方向走的人就少不少了,这也致使驱动方向的人才相对紧缺。固然这其中也与开发难度大、学习周期长、涉及范围广、成本高等因素有关。这也就造成了待遇较高的局面。何况最近发生的“美国限制向中兴出口芯片案”迫使我国加快芯片的自主研发,虽然芯片的研发还任重而道远,但已是基本趋势,到那时嵌入式驱动工程师需求就更加大了。开发

      3. 发展空间比较大和选择多:嵌入式产品多种多样,复杂多变,感受只要与智能电子相关的产品都能叫嵌入式产品,这也就在必定程度上拓宽了嵌入式驱动方向的发展空间。同时,选择也变得相对较多。能够和志同道合的朋友一块儿创业,或者进入公司工做,总而言之,本身能力越强选择越多。同时,若想转IT上层业务软件方向相对比较容易,至少比上层业务转驱动方向容易不少。博客

      4. 总体架构稳定:嵌入式驱动方向虽然入门难,可是总体架构比较稳定,并不会像IT上层软件同样须要根据客户需求不断更改本身的实施方案甚至彻底推翻,可能就有更多的时间来提高本身的技术能力。

      接下来我还会分享一些本身学习嵌入式Linux驱动方向的学习笔记和心得体会,尽请期待。。。

      因为本人也是初学者,也有不少知识须要补充,可能有哪里说的不对望各位大佬指教,共同进步!! !写博客的初衷是想本身巩固一下所学知识,而且作一些知识输出分享给你们,何乐而不为呢!

      很喜欢下面的一段话:

    “对于优秀的程序员,其最优秀的品质是可以心平气和地学习与思考问题,透析代码背后的架构、原理和设计思想。没有思想的代码是垃圾代码,没有思想的程序员,只是在完成低水平重复建设的体力活。不少程序员从不过问本身写的代码最后在机器里面是怎么跑的,不少事情莫名其妙地发生了,不少bug莫名其妙地消失了......他们永远都在得过且过。”