嵌入式开发需要什么能力
要想成为一个优秀的嵌入式开发工程师,至少需要具体6种能力:
1.了解嵌入式硬件知识,包括硬件基础,构成,原理和接口技术等等。
2. 精通C语言程序设计,因为嵌入式就是靠C语言来开发应用,所以不懂C语言,一切 免谈。
3. 熟悉嵌入式系统知识,如时下比较流行的嵌入式linux系统,要熟悉它的内核代码 ,以及运行命令,使用方法等等。了解嵌入式产品研发的特点、所需要掌握的技术规范和 工作要点。
4. 拥有最基本的硬件和软件应用开发能力,比如需要明白如何进行应用开发,如何处 理好硬件和软件之间的兼容问题。
5. 具体良好的创意开发能力,这是成为优秀嵌入式开发工程师必备的条件,也是最重 要的,最有价值的。因为我们要不断的开发新的有创意的产品功能才能满足今天的消费者 的口味。所以有创意的开发能力也是最能体现一个优秀开发者能力所在。
6. 具备吃苦耐劳和不断学习的能力,作为一个嵌入式开发工程师一是要具有吃苦耐劳 的能力、毕竟软件开发是一个项目性很强的工作,再其次,优秀的工程师还需要有不断学 习的能力,软件行业的发展速度惊人,今天还引以为傲的开发技能和经验,二三年后或许 就会成为明日黄花,所以要求开发人员一定要具备不断学习接受新事物的能力。 想要成为一个优秀的嵌入式开发工程师并非一早一夕的事,也是通过长期的学习积累 得。其实,目前这种优秀的嵌入式开发工程师非常少,这也是很多企业重金寻求的人才。 就目前的嵌入式人才市场来看,更多的是初级的嵌入式开发人才,多是通过参加一定的嵌 入式培训后然后再在工作中不断的学习积累,一步步成长起来得。
嵌入式开发两条道路选择
第一条道路:硬件道路
第一步: pcb设计,一般为开发板的电路裁减和扩充,由开发板原理图为基础,画出PCB和封装库,设计自己的电路。
第二步: SOPC技术,一般为FPGA,CPLD开发,利用VHDL等硬件描述语言做专用芯片开发,写出自己的逻辑电路,基于ALTER或XILINUX的FPGA做开发。
第三步: SOC设计,分前端,后端实现,这是硬件设计的核心技术:芯片设计.能做到这步,已经不属于平凡的技术人员。
第一条道路:软件道路
第一步:bootloader的编写,修改, 通过这步熟悉ARM硬件结构,学习ARM汇编语言,阅读ARM的芯片手册,感觉就是像操作51单片机一样操作ARM芯片.这一步最好的两个参考资料就是:芯片手册和bootloader源代码。
第二步:系统移植, 驱动开发, 我只做过linux方向,所以也推荐学习嵌入式linux系统,作为标准体系,他开源而且可以获得大量学习资料.操作系统是整个计算机科学的核心,熟悉 kernel实属不易,kernel, 驱动开发的学习,没有什么捷径,只有多读代码,多写代码,熟悉系统API.. understanding linux kernel , linux device driver 都是不可多得的好书,值得一看。
第三步:应用程序的编写,各种GUI的移植,qt , minigui都被大量采用,两种思想都类似,熟悉一种就可以。
软件道路中,驱动,系统应该是最深入的部分,不是短时间可以掌握的,需要有勇气和耐心。嵌入式开发,软硬结合,因为硬件条件比PC差很多,所以肯定会遇见不少问题,因此实践的勇气更加重要.有问题就解决问题,无数次的实验,也许是解决问题的必由之路。
建议做嵌入式开发吗?
作为工作近十年的嵌入式工程师而言,如果需要买房结婚,家里没矿。那么,建议别搞嵌入式,嵌入式真心待遇不行,真的待遇不行。别看什么所谓大牛啥的,互联网软件金融算法之类开发,如果你做到那个层次,薪水是同等嵌入式的一倍或者几倍,另外,有几个做到那个层次的?还有就是,现在芯片公司把驱动甚至底层封装的越来越好了,比如海思的,厂家只需要把demo板裁剪裁剪,然后应用玩出花就好了,这样子和嵌入式已经关系不大了。最后,现在,嵌入式应用,尤其出名c的开发机会,已经被qt,c 挤占了很多。总而言之,嵌入式,尤其纯c的,薪水,工作机会越来越少,和差了。
哪怎么打破这些困扰呢?
接下来听我一一道来。
主要从
- 操作系统原理专题
- 进程管理专题
- 内存管理专题
- 网络协议栈专题
- 设备驱动专题
- 内核组件专题
- 文件系统专题
- 内核项目实战专题
- 等等。。。
由于篇幅有限,这里以图片的形式给大家展示一部分。