很多对嵌入式开发感兴趣,想从事这个嵌入式开发的朋友,都会有疑问,学嵌入式要哪些基础,要学习哪里东西。学完能做什么?
又因为嵌入式包含单片机开发,linux开发,这里就以单片机为参考,和大家一起交流说明下。
首先学单片机的职业发展方向:
单片机硬件工程师
工作内容:从事单片机软件开发,外围器件驱动,主要使用C语言。代码调试。
单片机软件工程师
工作内容:单片机外围器件的选型,原理图设计,PCB设计,样机焊接与调试。主要使用EDA软件如AD/protel99/pads等 。
学单片机软件开发的基础:
1 ,C语言,这个是最根本的基础知识,当前单片机的开发主要是还是在用c语言,很多人就问,在学校学的汇编,要学精通吗?我只想说,现在必须用汇编写代码的单片机会越来越少,所以你仔细品一品。
在开发环境权利,Keil或者IAR编译环境都可以编写代码,但用的多的还主要是keil,同时开发环境的搭建和使用也是需要掌握的。
包括新建工程的步骤,如何设置工程中.h.c 文件的调用关系和文件框架。实际上单片机工程文件不可能很简单,好的工程文件框架对于编写代码和梳理有很大的作用。
2,基本的模拟电路的知识点要理解,高低电平对应的0101的概念。电压电流电阻常规的概念要明白,简单的LED驱动电路,按键电路等简单的电路得明白,模拟电路一点不会,在编程过程中会很抓瞎。
3,单片机基本概念掌握,最简单的单片机最小系统要了解,单片机正常工作所需要的
学完单片机能做什么产品。
学单片机硬件开发的基础。
1,硬件开发,必须掌握模拟电路,这个是硬件开发的根本基础知识,硬件开发工程师职业发展好不好,首先得看这个掌握的程度如何。三极管NPN/PNP放大分析。几种运算放大器的运用,同相比较器。差分放大电路等经典电路要掌握在胸。
2, EDA软件要掌握,硬件工程师的必备软件工具,常用pads/DXP/protel99/AD,设计原理图和PCB图的必须工具。
3,常见工具要会用,电烙铁焊接一些贴片的器件要能轻松自如,万用表,示波器都是在调试硬件电路板时候必须用到的工具。
总结
单片机的基础课程其实不多,但每一门学精确要花费大量的时间,以及项目实际经验总结才能成为大牛。
什么是嵌入式系统?
嵌入式系统是一个计算机系统,在一个较大的机械或电气系统中具有专用功能,通常具有实时计算约束,作为一个完整的设备的一部分被嵌入,通常包括硬件和机械部件。嵌入式系统控制着今天常用的许多设备, 98%的微处理器都是作为嵌入式系统的组件制造的。
典型的嵌入式计算机与通用相对应的计算机属性的例子是低功耗,小尺寸,稳定的操作范围和低单位成本。这是以有限的处理资源为代价的,这使得编程和交互更加困难。然而,通过在硬件之上构建智能机制,利用可能存在的传感器和嵌入式单元网络的存在,既可以优化管理单元和网络级别的可用资源,又可以提供增强的功能,远远超越那些可用。例如,可以设计智能技术来管理嵌入式系统的功耗。 数字信号处理器(DSP)是一种常见的标准专用处理器。
由于嵌入式系统专用于特定任务,设计工程师可以对其进行优化,以减少产品的尺寸和成本,并提高可靠性和性能。一些嵌入式系统是大规模生产的,受益于规模经济。
嵌入式系统的范围从便携式设备(如数字手表和MP3播放器)到大型固定安装(如交通信号灯,工厂控制器以及复杂系统,如混合动力车辆,MRI和航空电子设备)。复杂性从单个微控制器芯片的低端到具有多个单元的高端设备,外围设备和网络安装在大型机箱或机箱内。
了解更多硅谷前沿深度讯息请看 硅发布 微信公众号
嵌入式编程有什么推荐的书籍?
从事嵌入式开发多年对于嵌入式的学习简单分享点经验,首先嵌入式学习热度在当前编程环境下还是热点的存在,虽然专门针对前嵌入式的培训热度没有十年前那么火热,但在实际的应用场景中还是非常多,嵌入式的产品已经遍布周围的生活中,像常见的手机,电视,机顶盒等等都是嵌入式产品的典型,所以嵌入式开发程序员市场前景还是非常的广泛,虽然嵌入式的程序员在市场上绝对数量没有应用级别的编程语言多,但是在绝对的数量也不在少数,特别是在一线城市之外的对于嵌入式的工程师需求量还是非常的巨大。
该如何进行嵌入式的学习?
首先嵌入式的学习紧密和硬件联系在一起,起码的计算机基本常识还是要多了解一些,计算机的组成原理等基础还是要掌握的,嵌入式的编程主要面对的利用软件控制硬件,所以懂点硬件相关的知识是必然的,但不要走入一个误区是不是不懂得硬件就做不了软件的开发了,所以也没有必要在学习嵌入式之前使劲啃硬件的知识,毕竟软件的开发还是以软件为主,如果学习的硬件正好是软件控制的设备,这样子在实际的编程中会显得轻松许多。
嵌入式的软件的编程最基础的编程语言C语言和C++,这两种编程语言属于嵌入式必备的基础语言,早期的嵌入式开发主要是以C语言为主,毕竟当时的硬件环境相对配置比较差,所以搭配C++语言来讲是一种奢侈的存在,但是随着硬件的不断的增强C++对于嵌入式板子的性能的影响已经非常小了,现在甚至很多嵌入式设备已经标配是安卓系统了,所以运行C++已经是很轻松的事情了,所以学习嵌入式的基本编程语言就是这两种语言了。
对于这两种语言的学习思路还是存在很大的差异,C语言是属于老套的标准的面向过程的开发语言,也是嵌入式开发驱动必备的编程语言,像涉及到linux内核的编程语言都属于C语言来完成,在某些必备的编程语言中C语言还是必备语言的存在。C++编程语言涉及到的编程框架相对比较多了,学习的难度也会增加许多所以不建议直接学习C++作为嵌入式的编程语言,还是建议在具备一定的C语言的基础上再去学习C++,这样还会显得轻松一些,这门编程语言的学习也是需要长期的积累,很可能在学习几个月之后都没有太大的感觉出来,这些都是学习过程中必经之路。
嵌入式的学习过程可能没有应用级别的开发那么灵活,本身在设计过程中还是以尊重硬件的属性为主,所以对于资源的考虑之类的操作也会多一些,所以和通用的应用编程还是存在很大的区别,而且嵌入式相关框架的设计难度也是非常大,像典型的安卓内核以及谷歌浏览器内核都属于嵌入式框架设计中的一种,对于框架的学习也是必要的,但也需要循序渐进的学习,绝对不是一日之功,常见嵌入式书籍主要以C语言和C++基本功为主的书籍,在嵌入式系统学习过程中多看有关linux的书籍,这三类的书籍看完了之后才算是掌握一些嵌入式的基础,至于晋级之类的书籍还是要看项目实际推进过程中使用的相关知识再做出选择,不要觉得一股脑的看完很多书就能一下子掌握很多,还是要讲求循序渐进的过程,欲速则不达,希望能帮到你。