现在正在写《跟我学嵌入式开发》这个系列的博文(注:这个系列最终成为了《专业嵌入式软件开发》一书的部分内容),或许,你是对这一话题感兴趣的人,也或许,你正想进入这个充满刺激和挑战的领域。在此,我希望与你谈一谈我对于嵌入式开发学习的一些想法或是建议。
首先一点的是,你要有充分的心里准备,你需要有一定的坚持力。嵌入式系统开发的学习需要一个过程,因为我们需要掌握的知识太多了!从熟悉开发环境(如GNU的GCC toolchain)到学会写Makefile、从阅读芯片手册到掌握处理器的指令集、从学会C语言到掌握从处理器的角度看C语言以及成为C语言的专家、从明白什么是ABI到理解软件的断点是如何实现的等等,这一切都需要时间和努力!需要时间和努力意味着什么?意味着进入这个行业的人会相对的少,掌握这一技能的人也会相对的少,而具有这一技能的人的竞争力会更强。可能有人有会问:我为什么要学嵌入式系统开发?我的回答是:通过掌握嵌入式系统开发,你能掌握计算机的体系结构,你能深入的了解你现在所在做的软件开发后面所隐藏的知识,这是一种很难得的能力。这种能力能让你在解决复杂软件问题时,更加的自信和快捷。为了这种能力,你值得去付出!
其次,嵌入式系统开发需要一定的英语阅读基本功。我们从初中开时学英语,但大学毕业后可能学得少,但一直就用得少。从我自己的经历来看,从事软件行业,或多或少的都得读英文资料,比如API的说明什么的。但做嵌入式开发,需要读更多的资料,比如处理器的手册,可以说你几乎找不到中文版。有的手册上两、三千页,但你不要被吓到,它不需要我们完全读完,我们可以循序渐进的读。读不仅仅是读,还得理解。比如,我一直记得很清楚的是,当我第一次做AMD的一块x86处理器之上的开发工作时,我在手册中读到这么一句话:The register can be changed on the fly,这句话是什么意思?后面的on the fly如何理解?还有就是:You have to build it from scratch,这又是什么意思?当然,现在的网络发达了,很多可以在网上找到,但自己的基本功一定要有,只有这样我们才能更加的游刃有余。不要说你的英语有多差!这些都是可以练出来的。告诉你我的一个秘密,我在读高二时英语考试还得“29”分(其实就是没有读过似的,考试时全猜),但我现在能用英语写、也能听和说,还得用英语和外国人argue。比起我的英语基础,你一定会比我更强!
再次,除了看嵌入式方面的书籍或是资料外(比如读我的《跟我学嵌入式开发》),你还得实践。书本上的东西看过不会让这些知识溶入到你的骨髓中,看过了可能就忘了,但一旦实践过了或是实践中碰到问题了,往往能让我们更加深入的理解和领会。同样是一本书,实践过了之后再看,发现自己碰到的很多问题上面都写得清清楚楚,只是自己在之前看时没有明白其中的真缔!对于实践,我相信很多人有这么一个困惑:没有条件!或许你正在这样想?如果,你正在做嵌入式相关的工作,你很是幸运!我也是很幸运的人,因为我从做Visual C++转到做嵌入式开发完全是因为获得了一个机会。但现在看来,大家都有机会,因为现在有很多专门买嵌入式开发板的公司,你完全可以买一块来自己学,成本也不高。对自己做一、两千元或是更少的投资,你觉得贵吗?当然,我也理解,很多做开发板卡的只是卖板卡,其提供的技术支持或是学习资料都还只是交你“鱼”而不是“渔”。但无论如何,有总比没有好,对吗?还有,买开发板,不要只看功能有多少,好像其功能越是多就越是好。其实,嵌入式系统开发,一旦你做过了、了解了其中的很多原理,任何系统都一样,开发的套路也差不多,最后简单到只是看芯片手册了(到那时你觉得嵌入式开发对你可能也就很平常了)。我认为,买开发板最为重要的是其提供的学习资料和是否能提供技术支持,最好能答疑。
最后,还要提醒你的是,嵌入式系统开发不是我们学习和努力的终点,它也只是一个技能。当你达到了一定的层次后,还得去做应用程序,到那时软件的设计能力是关键。如果,你做开发能体会到什么是设计美,那说明你的层次就比较的高了;如果,你觉得做软件开发和体力劳动差不多 ,说明你的层次还很低。但无论如何,学习、实践和思考是提升层次的唯一方法!转行?其它的行业也一样!
本文出自 “李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/183111