云计算时代,谁服务了我,而我又服务了谁?

渲染系列--图像渲染过程

  返回  

嵌入式的日常工作内容是什么?

2021/7/21 8:49:44 浏览:

如果不是在创业公司的话,其实很多嵌入式公司的岗位分工的颗粒度还是很细的。基本上都是各司其职。答主多年的嵌入式开发经历,经历过技术支持(TSE)、嵌入式产品模块开发(MDE)、项目组长(PL)、项目经理(PM)等诸多角色。那么就借题主问题的宝地,回忆一下答主个人的嵌入式各个角色工作。希望能够帮助题主和对嵌入式开发工作感兴趣的朋友,揭开嵌入式开发的神秘面纱。

Part One:技术支持的日常工作

答主刚毕业便加入了华为公司,定岗嵌入式驱动开发工程师。入组之后,当时的驱动产品已经基本成熟,所以答主被安排跟着师傅从熟悉平台,对外技术支持为主。当年刚毕业,看着海量的成熟产品代码,心里的确慌得一笔。不过好在跟着师傅,也是一步一步挺了过来,为后面的进阶打下了坚实的理论和技能基础。

为技术支持,其实日常的工作比较有规律。对于技术支持来说,主要有以下几大块工作穿插在日常的工作活动中。

  1. 熟悉产品代码。因为每个人不可能完全参与产品的全部模块代码的设计和开发,再老的技术支持都需要利用不解答问题的时间空余,对各种常用的,个人又不熟悉的模块代码进行走读和学习。以便在后面遇到对应模块问题的时候能够快速定位和解决。
  2. 解答用户随时随地拨入的电话中提到的任何技术问题。可以说,24小时待命是很多技术支持的基本要求。技术支持大部分的时间,都是在处理和解决客户的技术问题和新的技术需求。
  3. 开发一部分用于提高维护和支持效率的功能单元。很多时候,产品的代码都是用于完成具体应用功能的,很多时候并没有考虑到技术支持人员的需要。所以在可能和必要的情况下,技术支持会自己开发一部分用于提高定位效率的代码并通过DEBUG版本模式加入到产品代码中。比如答主根据需要,自己开发了Init初始化打点功能,Lastword临终遗言等功能,对定位问题非常有帮助。
  4. 对于紧急问题,参加各类问题分析会议。答主当时的项目组,主要为华为无线设备提供产品组件功能,所以对于紧急的局点问题定位,忽略时差的紧急开会是常有的事情。毕竟华为一向倡导“以客户为中心”。

说实话,答主到现在都特别感谢第一份技术支持的工作。虽然在很多开发人员看来,技术支持很low,但是正是通过技术支持的岗位锻炼,才有了答主突飞猛进的编码能力和技术积累。

Part Two: 模块设计师的日常工作

随着技能的提高和项目的历练,答主开始进阶到模块设计师的岗位。对于模块设计师来说,其实就是大家口中常说的嵌入式产品开发工程师。每天的日常工作,也并不是大家理解的天天coding。除了编码之外,模块的需求对接,设计文档的编写,UT/IT/ST测试用例的编写和自测,代码检视等等很多工作,都是每个模块设计师的日常工作。

具体的日常工作如何安排上述的各类工作,需要根据每个公司的嵌入式产品开发流程而定。比如当年的华为使用的是标准的IPD流程,分为TR1-TR5开发节点管理,对软件版本和测试版本有着非常严格的管理,记得答主当时还兼任开发项目的CMO,任何代码的入库只能从答主这一个口进入。

比如在TR1-TR2阶段,主要就是产品的需求分析,需要和SE反复核对产品需求,功能点。并编写对应的模块概要设计和详细设计,并通过组内讨论方式,确定最后的产品功能点。

进入到TR3-TR5阶段,就是我们认为的编码,开发,测试,代码检视环节。这里面不同的公司又采用不同的开发流程,比如当年答主所在华为的项目组比较喜欢瀑布开发;而后来去的Broadcom等外企更倾向于敏捷开发。

Part Three: 开发组长的日常工作

在项目过程中,因为公司和项目组团队的扩大。很多人会因为某些特点被选择进入到基层管理团队。当年答主因为在技术支持工作中除了技术上得到了锻炼,沟通能力也有了大幅提高。所以当项目团队项目增多,人员剧增的情况下,开始被任命带领某个项目组(SE + MDE + TE + QA)进行项目的日常管理和进度跟踪。

​​​​​​​

用一句话来概括PL的工作,其实就是:协调资源,满足组内开发任何需要。每天的例会日程安排,与周边团队的资源沟通,进度管控,项目汇报等等。说的更加直白一点,就是一个项目的管家。既要照顾好每个成员,又要协调好一切资源,保证项目的保质保量完成。

1、cc++语言,这是计算机行业的必修课,必须找扎实实学好,可以安装 turbo c编译器为开发环境,联系C语言编程; 安装vc++6.0学习C++编程。

2、操作系统,先在电脑上安装一个vmware work station,然后在vmware work station里安装一个linux(redhat 企业版)虚拟机。学习一下操作系统的基本原理,熟悉linux环境下的开发环境,然后你就可以照着《自己动手写操作系统》写个操作系统试试。

3、计算机组成原理,熟悉计算机的基本原理,看看一个计算机的基本组成及软件在里面是如何跑的。

4、《unix/linux编程实践教程》可以说是linux编程的必修课,很不错的一本书,初学嵌入式的朋友可以看看。

5、单片机,其实就是一台电脑,像现在的汽车控制、led控制、屏幕亮光程度控制,它都可以实现,自己买块开发板弄一下,你能学到很多的别人学不到的。

6、arm,现在流行的微机,说白了就是32位的单片机,还可以跑操作系统哦,自己想办法移植一个操作系统上去吧

7、硬件编程语言(FPGA),芯片到底是怎么做成的,学习这门课,你就知道了

8、模拟电路&数字电路,硬件的基础,如果可以的话,学习下protel ,自己做个硬件pcb板试试。

计算机这行都是偏向于实践的课程,所以要注重动手能力,学习嵌入式这基本课程的时候,你可以按照这样的顺序来学习:

1:C语言、计算机组成原理、

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号