嵌入式软件工程指的是开发嵌入式软件的工作。
主要职责:
1、开相关产品的嵌入式软件(主要包括操作系统的移植,驱动程序的开发等);
2、按照研发流程要求,完成软件的详细设计,代码实现,单元测试,集成测试;
3、对开发的软件质量和进度负责。 所需技能: 1、熟练掌握C/C++,或精通C#客户端开发,有与C++混合编程经验; 2、熟悉Linux程序开发,Socket网络编程; 3、精通多进程,多线程,网络编程,熟悉常用数据结构与算法,windows api;
嵌入式只是软件的一个分支, 软件工程只是软件专业的一门课;软件可以包括 游戏 ,系统,网页,嵌入式等等 ;嵌入式和游戏门槛高,系统和网页门槛低;软件工程和嵌入式都是计算机专业 大学需要学习的课程。打个比方,你去学土木专业,嵌入式只是造平房,网页是造楼房,软件工程只是一个工地上的锤子。至于嵌入式到底是什么东西 比如空调里的芯片,电饭煲里的芯片,车载系统,就是没有CPU的一些智能东西。
软件工程嵌入式培养相当于做的是嵌入式上层软件开发的,主要是网页,案桌,iso应用开发等等,是比较热门的方向,当然难度也比较大,软件工程的话就是做应用软件,主要是C++,java等等,做网站,服务器,简单来说,一个是专业性比较强,一个是知识面比较广,如果是工作的话,软件工程嵌入式培养比较好,如果是考研的话,软件工程比较好。
嵌入式软件工程师前景十分良好。嵌入式领域较新,发展非常快。同时,很多软硬件技术出现的时间都不太长,嵌入式软件工程师专业人才稀缺,岗位需求很大,同时因为供不应求的市场关系,嵌入式工程师的岗位薪资也不断增加。
嵌入式领域较新,发展非常快,很多软硬件技术出现的时间都不太长(如ARM处理器、嵌入式操作系统、LINUX操作系统),大多数人没有条件接触或进入嵌入式行业,更谈不上能有机会接受专业人士的指导。因此,踏进这个行业的难度比较大,嵌入式人才稀缺,身价自然也水涨船高。
嵌入式软件工程师职称一直是软件行业中备受关注的职称之一。作为一门高度专业的领域,嵌入式软件工程师的工作涉及到嵌入式系统的设计、开发和优化等方面。这个领域需要工程师具备扎实的编程技能、良好的团队合作精神以及对硬件的深入了解。
想要成为一名合格的嵌入式软件工程师,需要具备以下基本要求:
嵌入式软件工程师通常需要承担以下职责:
随着物联网、人工智能等技术的快速发展,嵌入式软件工程师的需求也在不断增长。未来,嵌入式软件工程师将有着广阔的发展前景,可以从事的领域包括但不限于智能家居、智能交通、医疗设备等。
成为一名优秀的嵌入式软件工程师需要不懈的努力和持续的学习。只有不断提升自身的技能和能力,才能在这个竞争激烈的领域中脱颖而出。希望通过本文的介绍,能够帮助大家更好地了解嵌入式软件工程师这一职称,并为未来的职业发展做好充分的准备。
其实越是刚毕业,越应该找大公司锻炼,等有经验了再到小公司,优先不是考虑工资。工作不同于学习,是做事,而往往多数小公司的做事流程规范性欠佳
嵌入式的开发领域非常宽阔,上到飞机大炮,下到智能马桶都存在着嵌入式的技术名词,那么将嵌入式工程师软件开发进行细分的话,实际上大多数公司都是做应用层业务需求;比如做人脸识别打卡机的,做GPS导航的,做云终端设备的公司等。
这类的公司,除非已经是非常大规模的,正常是几十号研发在运作。人脸打卡,人脸识别模块是核心,但是硬件和软件是买的,公司可能制作c++,QT实现上班打卡业务的工作使用场景,数据传输,导出导入等相关编程。
GPS导航的,GPS模块,核心驱动,Linux,WinCE的,都不需要此公司的开发者去做开发。
云终端的,核心接入协议可能是买思杰的方案,也有可能买Vmware的方案,再不行的就搞个山寨的spice协议,rdp协议这些免费开源的。
以上几个产品,核心模块,买之,接口使用之,大多国外技术。硬件方案,要么开发板生搬硬套要么外包给硬件厂商。
那这些公司的开发做什么呢?
如果产品UI是的是[QT], 那就写大量的[C++ ]代码,各种好的软件框架,各种多线程,多进程配合。
如果UI是GTK,那就写大量的C代码,各种结构体来模拟面向对象的开发思想,当然也可以学习内核开发者写的牛x框架,比如学习输入子系统,设备驱动模型啊,binder驱动模型啊,将内核的编程思想灵活运用到应用层编程,写出稳定,拓展性极强的框架就是很牛的人物啦。
真正涉及到Linux底层开发的偏少,如果一个人真正深入掌握[linux内核]的进程管理,时间管理,内存管理,文件管理,各种驱动框架等,能在各种硬件平台做一个实时操作系统的,还懂裸机,写点启动代码来引导自己的操作系统,那就是大牛中的大牛。
回归到刚进入嵌入式世界探索的孩子们,其实你们目前的水平去分析uboot,分析linux内核源码,是一件很egg疼的事情。
调用接口来实现多线程,来处理进程通信,来写socket编程都是难事,甚至还在纠结指针传参,纠结指针数组和数组指针,怎么能去看uboot,linux内核源码呢?
或许连C和指针,C程序设计都没懂多少。而在那里高谈大论。不管怎么样,只要我们基础扎实了。才能进一步探究[Linux内核]框架。
普通二本,即将进入大三,也就是说还有一年左右的时间就要秋招了,就从这个角度出发,该做什么才可以迅速达到好一点的公司的要求。
首先先确定要要不要考研,要考研的话最多考虑去实习两三个月,然后就要开始做好考研准备了,找工作的事情可以等到春招时再准备。
如果不考研,那么要迅速学会点可以拿的出手的专业技能,目前你只有c语言和模电数电的知识,而且模电数电的知识绝大可能学得很一般甚至忘得也差不多了,但没有关系,对于嵌入式软件工程师来说的话,不需要非常多的模电数电的知识,简单的电路连接图(原理图)会看就行了,至少哪个引脚和哪个引脚相接了能看得懂吧。这么说来公司看得上的就只有你的c语言了,显然不够的。
目前个人觉得最好的方式就是赶紧用半年的时间学C51单片机或者STM32,网上的中文教程一堆,随便买个开发板学习就好了。问题又来了,视频资料一堆要学到怎么样的程度呢,其实很简单,主要学习的部分有:LED的控制,中断和简单的定时器,串口以及pwm就足够了,如果还有点时间把ADC采集电压和iic也学一下就可以了,然后再简历上直接就写“熟悉单片机”,代码写得不熟没有关系,关键是这些东西是什么,做什么用的,可以驱动什么设备你能说得出口就行了,面试官不会让你现场写这类代码的。
那面试官会问什么呢?其实面试官问的问题一般也不难,难的他自己也是一知半解的,所以也不会问难的。总体上只会问三类问题:1.你做了啥项目 2. 写点简单的纯c语言代码吧 3. 你在校期间做了哪些事情呀。大概就这些了。难不难?不难。项目可以直接做个小玩意比如个智能小风扇或者避障小车(淘宝也有现成的卖,价格也不贵)。c语言代码刷几道字符串处理的和一两道排序题(比如冒泡排序和选择排序)就ok了。在校做的事情能编多少就编多少。ok,基本都解决了。
那数据结构和算法要不要学呢,如果你想去一线大厂比如华为,中兴等等,那肯定是要学的,但你这学历估计是轮不上的了(我们实话实话,少点扯淡),当然要是你项目经历nb,那还有点戏。真要谈上数据结构和算法,那得去牛客网和leetcode网磨练一段时间才行,链表题,队列题、字符串分割合并题肯定是要熟练的,然后动态规划,二叉树什么的也尽可能要会手撕代码。因此,如果不是去大公司的话不需要花太多时间学这些东西,有时间多做做c语言的选择题和填空题牢固下c语言基础就行了。
那想多学点技术怎么办,那就等你进了公司才去慢慢学吧,到那时你可以问导师问老同事,他们会手把手的教你,然后再多实操项目,多解决几个bug。勤奋点学习的话,待个3-5年就可以逆袭上大一些的公司了,或者也可以直接在本公司当个小组长或者主管,那时该懂的知识都会懂的了。
嵌入式的话,一般对员工能力要求会严格一些,现在在求职市场上,嵌入式比其他软件研发的职位会少很多,但是待遇一点都不低,在大厂,比如华为,年薪百万很正常,前提是你能力过硬
软件工程嵌入式培养相当于做的是嵌入式上层软件开发的,主要是网页,案桌,iso应用开发等等,是比较热门的方向,当然难度也比较大。
软件工程的话就是做应用软件,主要是C++,java等等,做网站,服务器,简单来说,一个是专业性比较强,一个是知识面比较广。
如果是工作的话,软件工程嵌入式培养比较好,如果是考研的话,软件工程比较好。我朋友就是报班在创客经过系统性培训学习了这个,现在出来工作后混的还算不错。