嵌入式开发需要哪些技能?
要成为一名优秀的嵌入式开发工程师,至少需要具备6种特定的能力:
1、了解嵌入式硬件知识,包括硬件基础、组成、原理及接口技术等。
2、熟练掌握C语言编程,因为嵌入式应用程序都是使用C语言开发的,所以如果不懂C语言,尝试也是没有意义的。
3、熟悉嵌入式系统知识,如目前流行的嵌入式Linux系统,熟悉其内核代码、运行命令、使用方法等。了解嵌入式产品开发的特点、需要掌握的技术规范和工作要点。
4.具备最基本的软硬件应用开发能力,比如了解如何开发应用程序以及如何处理硬件和软件之间的兼容性问题。
5、良好的创意开发能力是成为一名优秀嵌入式开发工程师的必备条件,也是最重要、最可贵的。因为我们要不断开发出新颖、有创意的产品功能,来满足当今消费者的口味。所以创意开发能力也是一名优秀开发人员能力的最好体现。
6、具备吃苦耐劳和不断学习的能力。作为一名嵌入式开发工程师,一定要具备吃苦耐劳的能力,毕竟软件开发是一个非常项目化的工作。其次,优秀的工程师还需要具备不断学习的能力。软件行业的发展速度是惊人的,今天引以为豪的开发技能和经验,可能两三年后就变成昨日黄花。所以,开发人员一定要具备不断学习和接受新事物的能力。成为一名优秀的嵌入式开发工程师,不是一朝一夕的事情,也是通过长期的学习积累起来的。其实目前这样的优秀嵌入式开发工程师非常少,而这也是很多公司花重金寻找的人才。就目前的嵌入式人才市场而言,初级嵌入式开发人才比较多,大部分都是通过参加一定的嵌入式培训,然后在工作中不断学习积累,一步步成长起来的。
嵌入式开发的两种选择
第一路径:硬件路径
第一步:PCB设计,一般就是开发板的电路裁剪和扩展,根据开发板原理图,画出PCB和封装库,设计自己的电路。
第二步:SOPC技术一般针对FPGA、CPLD进行开发,利用VHDL等硬件描述语言开发专用芯片,编写自己的逻辑电路,基于ALTER或者XILINUX FPGA进行开发。
第三步:SOC设计,分为前端和后端实现,是硬件设计的核心技术:芯片设计。能做到这一步的,已经不是一般的技术人员了。
第一路径:软件路径
步骤1:编写和修改bootloader。通过这一步可以熟悉ARM硬件结构,学习ARM汇编语言,阅读ARM芯片手册。操作ARM芯片的感觉就像操作51单片机一样。这一步最好的两个参考资料是:芯片手册和bootloader源码。
第二步:系统移植、驱动开发。我只从事过Linux方向的工作,所以也推荐学习嵌入式Linux系统。作为标准系统,它是开源的,有大量的学习资料可供参考。操作系统是整个计算机科学的核心,熟悉内核并不容易。学习内核和驱动开发没有捷径,只需要多看代码,多写代码,熟悉系统API即可。《理解Linux内核》和《Linux设备驱动》都是不可多得的好书,值得一读。
第三步:应用程序的编写以及各种GUI的移植。Qt和minigui应用比较广泛。两个思路比较类似,所以只要熟悉其中一个就可以了。
软件这条路上,驱动和系统应该是最深入的部分,不是短时间就能掌握的,需要勇气和耐心。嵌入式开发是软件和硬件结合的,因为硬件条件比PC差很多,肯定会有很多问题,所以勇于实践更重要,有问题就去解决,无数次的实验可能是解决问题的唯一方法。
推荐嵌入式开发吗?
作为一个工作近十年的嵌入式工程师,如果你需要买房结婚,但是你家没有矿。那么我建议你别进嵌入式了。嵌入式里面的待遇真的不怎么样。待遇真的不怎么样。别看那些所谓的大佬,互联网软件,金融算法开发之类的,你达到那个水平,工资是同门嵌入式的一倍或者几倍。另外,有多少人能达到那个水平?另外,现在芯片公司把驱动甚至底层封装做得越来越好,比如海思,厂商只要把demo板剪裁一下,然后玩应用程序就行了,这个跟嵌入式关系不大。最后,现在嵌入式应用,特别是大名鼎鼎的C的发展机会,已经被QT,C++挤走了。总之,嵌入式,特别是纯C的工资和就业机会越来越少,越来越差。
如何突破这些困扰?
我来一一告诉你吧。
主要来自
全面系统讲解底层原理开发技术:
操作系统原理/汇编专题