在嵌入式行业现在工作四年了,先后干过几个方向,运气比较好,我在几个方向待过的公司在业内细分方向上差不多是top级的。
公司对嵌入式人才的需求其实还是很大的,但是真正能被选中的候选人并不多。公司招嵌入式工程师基本都是15k起步,当然需要有几年经验。
很多想法要落地,最后的支点基本都是嵌入式,嵌入式包罗万象,现在其实嵌入式岗位设置已经比较专业化了,搞嵌入式的公司一般都会有软硬件工程师,搞系统的,搞应用的,搞算法的等等,并不需要一人包打天下,一般情况下也很难一人包打天下,当然,稚晖大神那样的除外。
///插播一条:本人在今年年初录制了一套还比较完整的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哈~打开我的头像黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛,口令“林老师”///
万物互联的基础就是嵌入式,小到智能手表,大到智能汽车,能落地的支撑之一就是嵌入式。
嵌入式说实话和cs相比天花板并不高,待遇可能也比不上cs,但是岗位确实也不少,我在二线城市,一年20左右,虽然不算太高,但是工作也好找,压力不算太大,也能看到上升的希望,前段时间投简历,连续面试了一周,一天面试三四家,搞嵌入式的公司确实不少,待遇也还行,找对方向,静下心好好干,嵌入式这几年有上升的趋势,行业大势是你的上限,但是努力就决定了你的下限。
如何理解嵌入式?我们做的哪些工作可以理解为嵌入式的工作?
嵌入式即嵌入式系统,IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统;国内普遍认同的嵌入式系统定义是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统;从应用对象上加以定义来说,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。嵌入式系统作为装置或设备的一部分,它是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。
嵌入式系统发展:分为四个阶段
3.嵌入式系统的组成
1.嵌入式微处理器
在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。也就是我们所说的单片机,其中操作系统和应用程序都可以固化在ROM中。
嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU(例如51单片机)许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。这里可以理解为STM32单片机和51单片机的不同。
嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构;
冯诺依曼体系结构:也称普林斯顿结构,是一种将程序指令存储器和数据存储器 合并在一起 的存储器结构。取指令和取操作数都在同一总线上,通过分时复用的方式进行;缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。由于程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。RISC计算机在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,从而提高了执行效率并使CPU硬件结构设计变得更为简单。嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。据不完全统计,全世界嵌入式微处理器已经超过1000多种,**体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。**但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的。
///插播一条:本人在今年年初录制了一套还比较完整的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哈~打开我的头像黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛,口令“林老师”///
嵌入式系统的存储器包含Cache、主存和辅助存储器。
Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是一段时间微处理器使用最多的程序代码和数据。在需要进行数据读取操作时,微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的数据传输速率。Cache的主要目标就是:减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈,使处理速度更快,实时性更强。在嵌入式系统中Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去。
主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部,其容量为256KB~1GB,根据具体的应用而定,一般片内存储器容量小,速度快,片外存储器容量大。常用作主存的存储器有:ROM类:NOR Flash、EPROM和PROM等。RAM类:SRAM、DRAM和SDRAM等。其中NOR Flash 凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。
辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多,用来长期保存用户的信息。嵌入式系统中常用的外存有:硬盘、NAND Flash、CF卡、MMC和SD卡等。
嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。
每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。
嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。
硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。
该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。
BSP具有以下两个特点:
2.操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的设备驱动。
由实时多任务操作系统(Real-timeOperation System , RTOS)、文件系统、图形用户界面接口(Graphic User Interface , GUI)、网络系统及通用组件模块组成