在计算机里面都有Windows操作系统,然后再安装各种各样的应用软件,那么我们在生活中随处可见从电子设备产品就不可能把计算机的操作系统安装进去,但是又要实现各种复制的计算和控制,怎么办呢?因此,就需要给它设计一套小小的可以嵌在里面的脑系统,这个大脑有多聪明,就要看它的软件了。这个嵌在里面的脑系统就是一个嵌入式计算机系统,那么我们可以这样定义:隐藏在一些更大的系统中,管理控制这些系统,并带有微处理器的专用软硬件系统称为嵌入式计算机系统,通常称为嵌入式系统。嵌入式系统是运行在嵌入式芯片中的,很多人学习嵌入式软件都是从51单片机开始,流水灯基本是每一个嵌入式软件工程师的第一堂必修课,这几年随着芯片技术的发展,很多学校都已经从STM32开始教学了,玩的也都是更高级的机器人、无人机之类的了。
三、嵌入式软件如何开发
嵌入式软件也是由程序员开发的,网上到处都是各种互联网公司的程序猿和程序媛的介绍,甚至看多了各种科幻电影,大家对程序员的印象是这样的:
图片来源网络,侵删
要么是这样的:
图片来源网络,侵删
实际上搞嵌入式软件开发的程序员,我们也叫嵌入式软件工程师,根据其岗位特性,基本上以产品为中心,按照开发流程开展工作,根据不同公司的岗位设计,嵌入式软件工程师也会有不同的细分工作内容。一般相对规范的公司,嵌入式软件开发都会按照目前行业内成熟的V流程模式进行开发:
三、嵌入式软件工程师知识技能
前面介绍了嵌入式软件和相应的开发流程,那么成为一名嵌入式软件工程师需要什么技能要求呢?话说隔行如隔山,各行各业都有个中的特点,但是万变不离其宗,任何一项工作的开展都是个人基础技能和相关能力的综合表现。从我个人的经验来说,对于嵌入式软件工程师技能要求可以参考下面的维度模型:
嵌入式软件主要以C语言为主,因此需要具备一定C语言编程能力,相信很多人在大学里都学过谭浩强的《C 程序设计》;
嵌入式软件是运行在嵌入式芯片中,主要目的是为了实现对各种信号的采集,通过相关的软件算法,最终达到对外围设备控制的目的。因此,需要具备一定的自动控制原理基础知识,了解常用的控制方式和控制策略;
嵌入式软件最终目的是为了实现对硬件和外围设备的控制,嵌入式软件工程师就需要具备相应的硬件 基础知识,能够看懂硬件图纸,了解基础的元器件工作原理,熟悉STM、NXP、英飞凌、瑞萨等单片 机知识;
嵌入式软件工程师需要能够使用软件开发IDE进行程序的编写和调试,然后在硬件上验证软件功能是 否符合设计要求,这是一个软硬件结合的过程。因此,软件开发时需要根据选用的芯片平台,能够熟练使用如Keil、CodeWarrior、IAR、Tasking等IDE;软件调试时需要用电示波器、万用表等硬件测试工具;软件测试时需要用到QAC、Tessy等相应的静态和动态测试软件工具;为保证软件开发的追溯和过程管控,就需要用到SVN和Git等版本管控工具。此外,随着技术的发展,目前很多应用算法类的嵌入式软件都已经使用基于模型的开发方法,就需要熟悉Matlab和Simulink相关软件的使用;
嵌入式软件虽然没有Windows这么高深,但是其实现的功能也是非常复杂的,因此,在嵌入式软件开发时也需要对软件架构进行设计,确保运行的效率,在一些复杂的产品还需要用到嵌入式操作系统,常见的如Ucos、FreeRTOS等,在汽车行业则需要用到行业内通用的AutoSAR;
为了保证嵌入式软件的可靠性,如前面介绍一般采用V流程开发模式,嵌入式软件工程师需要熟悉相应的开发流程,掌握每一个环节需要开展的工作内容和相应的输出交付,确保最终释放的软件不存在BUG;
在当今社会英语是每一个工程师的基础技能,前面介绍的所有技能要求的大部分资料可能都是英文,而中文经过5000年的发展,含义是博大精深,有时候你虽然看到有一些中文翻译资料,本来想偷个懒取个巧,最后却被带沟里了,因此建议还是老老实实去阅读原版英文资料;
如果你已经具备了前面介绍的这些技能,那么恭喜你已经知道如何去开发嵌入式软件了。但是,八仙过海各显神通,都还是需要落实到对应的产品去,需要把你具备的技能和产品功能的需求相结合,开发出产品使用的嵌入式软件。
日常生活中,大家看到很多电子设备,一眼看起来都很简单,但里面都运行了复杂的嵌入式软件。来吧,欢迎你成为一名嵌入式软件工程师,后面我们也会详细介绍相关的知识,让我们一起去探索嵌入式软件的神奇宇宙!
想获取更多及时资讯,可以关注我的微信公众号,第一时间收到文章推送!
免责声明
:本文素材部分来源于网络,版权归原作者所有,如有涉及侵权,请与我联系删除
上个星期,去深圳一家搞ARM开发的公司面试,HR叫我做了一份卷子,里面都是C编程,心中暗喜,因为这些题基本上都在程序员面试宝典里见过。后来回到学校,在网上搜索,原来这些题都是嵌入式工程师的经典面试题目,很多网站上都可以找得到。现把他贴出来,附上网上的答案,跟大家分享,因为这些题实在太经典了。
预处理器(Preprocessor)
1 . 用预处理指令#define 声明一个常数,用以...
计算机嵌入式逐渐被大家认可,然而
嵌入式软件工程师
到底是什么?做一个好的
嵌入式软件工程师
又需要具备哪些能力呢?今天尚观教育小编跟大家聊一聊。
1.
嵌入式软件工程师
是什么?
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对...
1.
嵌入式软件工程师
是什么? 嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。而
嵌入式软件工程师
就是编写嵌入式系统的工程师。
2.
嵌入式软件工程师
需具备哪些能力? a.较重要的是C语言...
作为一个AI,我无法进行价值判断,但我可以给您提供一些信息来帮助您做出决策。
嵌入式软件工程师
是一个相对专业化的领域,需要掌握一定的硬件知识和编程技能。在当今科技的快速发展下,嵌入式软件已经成为了很多领域的核心技术之一,例如智能家居、智能交通、机器人、医疗设备等等。因此,
嵌入式软件工程师
的就业前景是非常广阔的。
然而,
嵌入式软件工程师
的工作也是比较复杂和有挑战性的。他们需要处理各种各样的问题,例如硬件和软件的交互、功耗控制、实时性等等。因此,
嵌入式软件工程师
需要具备较强的学习能力和解决问题的能力。此外,也需要投入较多的时间和精力来学习新技术和跟进行业发展。
总而言之,
嵌入式软件工程师
的职业发展前景广阔,但也需要付出一定的努力和时间来学习和成长。如果您对这个领域感兴趣并且愿意不断学习和挑战自己,那么成为一名
嵌入式软件工程师
是值得一试的。