跟涛哥一起学嵌入式第03集:嵌入式要从u-boot移植学起

  

大家好,我是涛哥,欢迎阅读《跟涛哥一起学嵌入式》第3集。俄罗斯仲夏夜,世界杯依旧如火如萘。球场上,夕阳下,梅西没落的身影,C罗的黯淡离场,并没有打击大家太多的热情。战火依旧,老兵不死,梅罗时代是否快要终结?然而新一代巨星冉冉升起,风起云涌。在看球的同时,学习充电也不能落下,今天我们聊聊第3个话题:学习嵌入式,一定要从u-boot移植学起吗?

  

<强>嵌入式真要从U-boot移植学起?

  

故事缘起嵌入式技术群(475504428)一位嵌入式学员遇到的问题:这位学员想在他的开发板上移植最新版本的U-boot。然而,将近半年过去了,发现还在群里问一些关于移植的一些问题,这就引发我的思考:照这样的速度,再给他几个月,能否移植成功?对于一个新手,没有辅助的一些工具,费这么大力气,去做一些跟以后的工作不太相关的技能,是否划算?当看到这种学习方式给很多新手带来的不是进步的喜悦,而是打击,甚至是转行去做其它,我觉得我们也许应该换种学习方式了,包括我在内,在上面也栽过不少坑。

  

<强>我的悲催学习经历

  

跟大家学习的经历差不多,学生时代,玩完51单片机后,我就购买了第二块开发板:某款ARM9开发板,这里就不说具体的名字了。按照流程,裸机实验做了一遍后,就开始开启了U-boot的移植生涯,在烧写U-boot时发现根本启动不起来,当时由于没有相关的调试工具,比如跟踪等,也不会相关的调试打印手段,所以只能尝试各种可能的原因一一排除,逛各种论坛,到百度翻页,发现根本解决不了问题。为此前前后后折腾了几个月,被折腾得有气无力。到最后,联系厂商的工程师,开发板寄回去后,发现是和FLASH芯片的问题,重新换了一块也不闪,系统就可以正常运行了。虽然这个问题最后得到了解决,但是前前后后也浪费了我几个月的时间,当然,有人可能会说,通过这个错误你也学到很多东西啊。是的,通过不断分析这个问题,确实增长了不少知识和技能,但是对于新手来说,如果一上来就通过问题驱动来学习,是很容易打击人的学习积极性的。大部分人可能会坚持不下去,折腾得差不多了,也就把板子扔到一边落灰,去搞互联网,Java去了,从而改变了自己的职业道路。为了这个错误,我浪费了几个月的时间,我觉得是不划算的,这几个月的宝贵时间,我可以去学习以后嵌入式开发中用到的高频技能,提高我的工作效率,而不是在这个低频技能上耗费太多的时间。

  

<强>高频技能与低频技能

  

什么是高频技能,低频技能呢?写这两个词时,特地到百度搜索了一下,发现并没有相关的词汇,姑且看作是我创造的两个新词吧(版权归我啊,用时要交税~)。顾名思义,高频技能就是我们在工作中大概率使用到的技能,低频技能,就是我们在工作中很少使用的技能。

  

早期的单片机开发,系统比较简单,从硬件设计,PCB画的图,软件开发,测试,一个工程师就可以搞的定,软硬通吃。按照今天的流行语,就叫全栈工程师。但现在不同了,嵌入式开发,尤其是上了操作系统后的嵌入式系统开发,需要的理论基础和技能储备太多太杂:从硬件,计算机系统结构,操作系统,应用层,GUI等,都要有所涉猎。同时,随着嵌入式越来越复杂,分工也越来越明确:硬件工程师,PCB工程师,BSP工程师,驱动工程师,应用工程师,测试工程师,大家以一个团队的形式共同开发维护一个嵌入式项目。

  

分工的形成,以前全栈工程师需要的软硬技能,就不需要全部学习了。当然,你也学不完,就算你学完了,有些知识你一辈子也可能用不到。分工机制下,每个人精通各自的模块,分工协作,效率最高。现在一个嵌入式SOC,几十个IP模块,你说你都掌握,有点不现实,一个音视频解码,GPS, GPU, USB都可能让你啃几年才能谈得上精通。系统越来越复杂,分工越来越明确,这就需要我们可能要换一种新的方式了。

  

对于嵌入式学习者来说,面对越来越复杂的系统,我们该如何学习,学习什么,这是一个很值得思考的问题。在思考这个问题之前,我们首先要有一个前提:人的精力是有限的,不可能掌握所有的知识和技能。如果你不认可这个前提,非得按照那种全栈工程师的模式学习,那下面就没有看的需要了。

  

该如何学习呢?我们需要对嵌入式开发,需要的技能进行重构和分解。哪些是常用的,基础的,必须掌握的,即高频技能,哪些是不常用的,即低频技能,然后再根据需要,科学地学习。这才是嵌入式2.0时代,学习嵌入式的正确姿势,适应职场技新形势新需求的学习捷径。

跟涛哥一起学嵌入式第03集:嵌入式要从u-boot移植学起