给狗蛋的建议:迷途知返,方得始终;要取真经,细品此经。:细狗
(PS:这里贴图排版什么的很不方便细狗,如果想看完整的,请看文章最后的链接,很多干货)
前言
烧纸钱 烧金元宝 烧寒衣 烧纸扎 代办视频
加师父微信 免费查看度亡视频 wangzijinci
“老师,你这码农大说堂咋还没开课呢,我都快憋出病了,有很多问题请教啊?狗蛋急不可耐的问道老王细狗。”
“哎呀,狗蛋啊,这几天老王招聘去了,事情太多了,耽误了细狗。话说你有什么问题呢?”
“哎,老师,甭提了,这几天开始学习驱动和内核的东东,发现简直是个无底洞啊,写驱动发现要懂内核,看内核发现要看操作系统,看操作系统又发现要看计算机组成原理,硬件方面要看懂原理图、器件特性、datasheet,又得学模电数电细狗。狗蛋我完全懵逼的不能再懵逼了。这尼玛的要看到猴年马月啊?”
听了狗蛋的发问细狗,老王也突然想到了这几天,职场加油站也有很多朋友经常问老王类似的问题诸如:“51转嵌入式到底要学什么?”“嵌入式有哪些发展方向?” “这么多砖头厚的书籍该怎么读,何时能读完?” “学驱动我还需要详细学习操作系统,编译原理吗?” “知识太多,不知道学什么,学习动力不足等等问题?”
老王这才反省自己,只顾分享老司机的技巧经验了,确实疏忽了未入职场和初入职场的嵌粉,我们的课堂还有像狗蛋和二丫这样的迷茫者,老王说过一定要让他们尽快成长为老司机的,决不能落下每一位立志在职场加油站加油的码农朋友们细狗。
说来也巧,老王这几天也是由于和一起出去招聘,耽误了这几天的码农大说堂的课,从这几年来老王的招聘经验来看,确实有很多的体会和感慨细狗。所以也就借狗蛋这个话题针对性的聊一聊大家普遍纠结和焦虑的几个问题吧。
“看来这节课可以聊点轻松的了,哈嘿哈嘿,这几天把狗蛋我憋屈久了,话说学这个嵌入式驱动学习还真是个苦逼活呀细狗。。。”
“OK,那今天码农说堂就来聊聊嵌入式驱动学习的那点事儿吧细狗。”
01
嵌入式行业发展
伴随着国家产业链的发展,嵌入式系统已经从传统的通信、消费电子转战到了物联网、工业4.0、人工智能、机器识别等领域,今天的嵌入式可谓是无处不再细狗。
从2016年日本软银同意斥资243亿英镑(约合人民币2155亿元)收购英国芯片设计ARM就可窥见一斑,嵌入式将会有更大的应用和更广阔的发展空间细狗。这样一个巨大而又有潜力的大蛋糕市场,同时使得全球IT巨头纷纷进军嵌入式市场,国家政策也对嵌入式软件行业实行“增值税优惠”的政策倾斜。话说有这么多国际巨头,IT企业来推进行业的发展,嵌入式行业的发展犹如洪水猛兽般,我等嵌入式码农不愁大环境的问题啊。
“恩恩,老师,看来狗蛋我还是很有眼光啊,还好在学校就选定了嵌入式方向啊细狗。啧啧,还是我神机妙算啊。”
02
人才需求
由于产业的飞速发展,带动了人才的需求,很多都表示急缺嵌入式开发方面的人才,尤其是资深的攻城狮细狗。巨大的人才缺口,表明了在嵌入式技术高速发展的今天,专业的嵌入式开发人才已成为整个行业发展的一个瓶颈,相对应用开发,嵌入式驱动开发薪资往往比其高一大截,原因就是嵌入式的入门门槛高,学习的知识体系很庞大,要成长为一个资深的嵌入式驱动工程师,个人需要花费很大的时间和精力。
目前对嵌入式系统设计人才需求较大的行业有消费电子、通信设备、工业控制等等,具体需求请见下图细狗。
“老王细狗,光给我们这些小白说嵌入式这个行业好,那个人才需求旺,我们小白还没入职场,谁知道呢?”
“我*……%**,狗蛋就你事儿多细狗。好吧,为了让大家信服点,我们来看点实际的数据。”
下面是摩尔精英5.16号推荐的嵌入式方面的最新职位,大家可以参考下细狗。
在这里老王不评说嵌入式这个行业怎么怎样,毕竟不同的行业方向,没有一个绝对的对比参照度,如果硬要做比较,我想这个结论大家自己去网上做下对比,心里有数就行细狗。否则老王又要招到人身攻击了。
所以,everybody,关于行业方向,就业前景的问题我们解决了,剩下的就是你的能力问题了细狗。饭是有了,就看你有没有那两把刷子吃上这香喷喷的白米饭咯。
03
嵌入式驱动的学习要领
由于嵌入式系统学习的知识体系很庞大,涉及到Linux的应用,系统编程,驱动开发,内核编程,计算机组成原理,汇编等等细狗。所以在这浩瀚的知识体系里面,我们一定要有一个学习路线和主旨,否则很容易迷失方向,夭折在迷惑彷徨中。那么我们学习嵌入式到底要掌握哪些内容呢?我想老王说了不算,还是直接上道具:
这个是魅族科技的某个职位:
下面是联想上海研究院:
所以企业给了我们最准确的答案,这里我们重点还是需要关注驱动和内核细狗。
1)先易后难细狗,循序渐进
较之于抽象的事物,我们往往更容易接受实际看得见摸得着的东西细狗。这样的东西往往简单易学。所以我们在学嵌入式linux驱动前,最好先简单安装和使用linux操作系统,然后会使用一些简单的命令,了解系统启动,分区,文件系统,挂载等大致的概念。会使用vi,gcc,gdb,shell,来编译和调试一个简单的C程序,有了一些实际的感性认识后,我们就可以开始我们的驱动之旅。那有嵌粉会问,应用开发呢?老王想说只要会简单的linux下的C开发(当然C基础肯定是需要牢固掌握),咋们就可以直奔驱动大门了,但是《UNIX环境高级编程》这本经典的书籍是要随时收藏查阅的。
2)工欲善其事必先利其器
在驱动开始之前,我们肯定是要搞一块开发板,你可以不选择培训,但是开发板是必须的,否则一味的理论学习而不动手实践,老王觉得都是耍流氓细狗。码农这行的经验就贵在在实操中发现并总结经验。不信你试试即使你看了无数遍的第一个内核编程实践例子:模块加载打印Hello World。相信你自认为都能倒背如流了,然而真正当你去在板子上实操的时候,发现哪哪都是漏洞百出。
3)驱动之旅
然后 ,然后我们真的可以开始很开森的拿起驱动开发者人手一本的LDD了(linux设备驱动(第三版)),虽然现在我们的内核已经演进到v4.10版本了,而LDD还是2.6的版本,但这一点也不妨碍我们进入linux驱动殿堂细狗。
在读LDD的时候,建议第一遍我们先走马观花的全部浏览一遍,不求看懂,大概了解linux驱动的框架,驱动是做什么的,该如何写驱动,了解驱动会涉及到哪些知识体系(这也是老王历来读砖头书籍的习惯)细狗。然后我们就可以开始细致的进行驱动学习并实操,仍然建议先看ldd前四章,那些例子可以在你的开发板或者电脑上编译,执行看看,多看多练多思考。后面的章节在结合自己后面深入的情况而定。
好了,也许大家该说这下改进入内核了吧细狗。是的,不过在您继续之前,老王还是想请您问自己一个问题:我在强迫学习内核吗?我很希望你的回答不是。但是往往实际情况是有很多同事朋友是因为觉得内核很高深而强迫自己喜欢的。强迫自己去喜欢一个人是多么痛苦的事情。所以,或许针对这个问题最让人愉悦的回答就是:“老实说,我有很强的学习热情,我需要学习更多的知识来为我服务,为我解决问题!”
4)内核之旅
“待到山花烂漫时,还是经典在微笑细狗。”
OK,那我们真的可以开始内核之旅了,让我们来看看内核世界的那些经典神作吧细狗。
有关内核的书籍可以用汗牛充栋来形容,不过只有几本经典的神作经住了考验细狗。
《Linux内核设计与实现》
LKD,从入门开始,介绍了诸如进程管理、系统调用、中断、内核同步、内存管理、时间机制、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是新人学习内核首要必读的书籍细狗。读此书,内核知识体系了然于胸。
《深入理解Linux内核》
简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多细狗。这两本书,一本提纲挈领,一本全面深入。
《深入理解Linux虚拟内存管理》
这是一本介绍Linux虚拟内存管理机制的书细狗。如果你希望深入的研究一下Linux的内存管理子系统,仔细的研读这本书无疑是最好的选择。
在阅读学习上面书籍的时候,还是建议尝试第一遍走马观花查阅所有的内容细狗。然后再次细度第二遍,结合实际的内核驱动代码来阅读,如果可以的话在开发板上实操,调试以及观察结果(当然在这个过程中你需要逐渐在实践中掌握内核的移植,裁剪等知识)。然后反复的学习理论,实践,遇到问题再理论,然后再实践解决,这样不断的融会贯通,勤于思考,相信只要你坚持,你的技能会得到飞速的发展。
5) 进阶驱动内核
具备了驱动和内核的基本知识后,我们就可以深入学习更多的驱动模型和开发调试更多的外设,诸如camera、touchpad、lcd、codec、bt/wifi等,而这些驱动又会涉及到更多的内核子系统如v4l2、input、fb、alsa等,足以促使你遨游在内核的征途中,让你进阶老司机细狗。
随着你实践的深入和接触的问题越广越深,诸如码农朋友们问的计算机组成原理,编译原理,汇编这些书要不要看,看的话要看到什么程度的问题,在你的知识体系扩大,见解认知度深入后,我想你自然而然就会明白什么时候该看了细狗。例如在成为老司机后,在实际工作中,你开始遇到对内核的一些性能优化、死机重启、任务调度调整的案子(看到前面那个魅族科技的招聘要求点了吗?)这个时候就需要你有更加深厚的内功。需要你深入了解计算机原理,汇编,编译原理,ARM体系结构等知识。也只有这个时候带着问题,想要战胜问题的你,才会真正的全身心投入到当初大学认为是垃圾课的这个理论学习中去。这往往也是最高效的学习方法——问题驱动。所以老王不建议在一开始就仔细深入学习计算机组成,编译等抽象的知识,那样往往会把你拦在学习内核的殿堂外。好了,相信随着你的不断深入学习和实践,老王觉得你真的已经可以达到老司机的水平了。
后面在就是多分析内核代码,经典的开源代码,多动手敲代码,多思考,多做笔记,记住永远不要相信自己的记忆力细狗。然后再次结合实际问题反复阅读曾经错过的那些好书:数据结构,计算机组成原理,操作系统,编译原理,微机原理,数电模电。
再次总结下那些经典的神作:
C语言:
《C程序设计语言(第2版•新版)》
《C陷阱与缺陷》
linux应用开发:
《UNIX环境高级编程》
《UNIX网络编程》
Shell:
《Linux命令行与Shell脚本编程大全(第2版)》
《linux与unix shell编程指南》
驱动:
《linux设备驱动(第三版)》
内核:
《Linux内核设计与实现》
《深入理解LINUX内核(第3版)》
《深入理解Linux虚拟内存管理》
基础书籍:
《数据结构与算法分析:C语言描述》
《深入理解计算机系统》
《操作系统:精髓与设计原理(原书第6版)》
《编译原理(第2版)》
类似砖头这种著作,不是每个人都能坚持下去的,毕竟这种专业性的书籍往往抽象晦涩难懂,看不懂的时候又缺乏指导,若没有探索和执着的勇气,多半就是束之高阁了细狗。但是尼采不是有句话么?
在你立足处深挖下去细狗,
就会有泉水涌出细狗!
别管蒙昧者们叫嚷:
“下边永远是地狱细狗!”
只要我们努力坚持并辅以学习技巧,相信大家都会有下面这位兔哥的机遇哟细狗。
04
职业规划
在初入职场前一定要确定自己的职业发展方向,详细制定专业知识的学习计划,并注意及时调整,后续再制定中长期职业规划细狗。好的开始是成功的一半是不无道理的。
在初入职场选择的时候就需要尽量按照自己既定的目标和规划来准备细狗。否则如果由于各种原因懵懵懂懂的进入到一个和自己职业规划不相FU合的,那么你的职场生涯就可能偏离你的航向,后期如果你要修正那将付出惨痛的代价(老王看到太多这样的例子)。进入职场你才会真切的感受到惜时如命。否则如果在2,3年后离职跳槽时,你的同学将瞬间碾压你。
05
初入职场的工作经验
很多职场新人都谈到了工作经验的问题,貌似如果招聘不给机会,我们就没办法获得工作经验,或者没有老司机带,很难进步细狗。其实并不一定。现在网络这么开放,很多资料在网上都是可以找到的,只是看你具备不具备足够的信息收集与处理能力,而这个信息的收集和处理过程也能极大的提升你的职业学习能力。我们要善于把别人的东西经过自己的消化、吸收然后果转化为自己的成果。简单的事情重复做,重复的事情认真做,经过量变,才会有质变。话说老王当年也是零基础,为了进入驱动的,就是翻遍了网上老司机的项目经验与技能,然后融汇贯通为自己的技能,再辅以面经技巧,顺利打通任督二脉进入驱动的大门。所以只要我们掌握了这种善于把别人的成果吸收转换为自己的能力,就相当于练就了武林绝学—吸星大法。以后各种大神,老司机的秘籍我们还不是手到擒来?别人三年功力,你只需要1,2年,话说站在巨人的肩膀上那肯定是有道理的。我想2,3年后被碾压对象应该换你的同学了不是?
好了,一不小心发觉就码了这么多字,老王担心码农朋友们一开始看到这么多字就没有勇气看下去了,很想删除一部分内容,但是发觉哪里好像都不好删除,都是老王的深切体会和感受细狗。算了,权当考验大家把,如果你能看到这里,说明你已经深得真传要领了,后面就是用这些秘籍去披荆斩棘,挑战自己的人生巅峰吧。
“好了,狗蛋,难得你坚持到最后,不知道这节课是否解决了你的疑问?不过不管解决没解决,老王都要下课了,因为,因为到饭点拉,哇咔咔细狗。”
迎关注老王微信公众号:“嵌入式职场加油站” 查看更多精彩文章细狗。技术交流答疑Q群:262047367。
希望能够在一些技术点上为大家抛砖引玉,答疑解惑细狗。你们的关注将是激励我坚持创作和分享更多干货技能的源动力。更多技术干货经验技巧会第一时间发布在公众号上,欢迎查阅!
代烧服务——代烧金元宝——代烧纸钱
加师父微信 查看代办视频 微信:wangzijinci
本文链接:https://fuzhoufashi.com/index.php/post/30103.html
转载声明:本站发布文章及版权归原作者所有,若有文章涉及到您的权益及版权,还麻烦及时联系我们,我们将及时删除,谢谢配合。 特别提醒:如文章中有涉及到祭祀风俗、民间习俗等,皆为民间一种美好寓意,请科学看待,切勿封建迷信!