《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——01-05基本职能:老鸟也曾是菜鸟

简介:

本节书摘来异步社区《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》一书中的第1章,第1.1节,作者:邱毅凌,更多章节内容可以访问云栖社区“异步社区”公众号查看

01-05基本职能:老鸟也曾是菜鸟

嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜
PM:“请进!这是我们的实验室,该有的设备一应俱全,以后你应该会常常待在这里,这是示波器,如图1-17所示,在学校用过吗?那边拉了一堆线到板子上的是逻辑分析仪。”

菜鸟:“上实习课时曾经看过,但好像和你们的不一样,学校的仪器都很旧。哇!你们的还是彩色的!”

38d508dfc7ece9ab1847dc05edc37858371d915b

PM:“就是没用过啰!无妨,这很简单,以后我们会教你使用的。还有,你看一下,这是我们目前产品的电路图1,如图1-18所示。”

菜鸟:“好像很复杂,我一看这个东西就头大,密密麻麻的谁看得懂?我除了要用这些测量仪器外,也需要会看原理图?”

PM:“是啊!不然你怎么写驱动程序?”

菜鸟:“不懂!我之前用过微软的DDK写过一个USB设备的驱动程序,也没用过这些东西啊。”

PM:“应该这么说,驱动程序也是分种类与层次的。我来谈谈你在Microsoft DDK上做的驱动程序,首先已经确认硬件是OK的,再来基于微软已经成熟的驱动程序平台来开发。而嵌入式系统工程师在开发驱动程序的状况通常是从无到有的,更不好的消息是,开发初期硬件设计还没确定,我们的固件工程师通常还要协同硬件工程师一起帮硬件板子调试。在这样的状况下,你不测量信号,怎么知道LCD的Framerate(如图1-19所示)是否符合日本市场的70 Hz要求?怎么知道键盘的反应Timing是对的?怎么知道某个芯片的电源开关已经打开,并已开始运行?除此之外,有时还必须同时测量多个信号间的关系,特别是在调试的时候,如图1-20所示。

3eb5c84e110036ee5913069115dd35d53a9fe676

测量信号可以让固件工程师知道目前硬件的状况,写一堆驱动程序的目的不就是为了驱动并控制硬件吗?不会有人这么优秀或运气那么好,程序写完,一执行就OK了,如果你要调试,怎么可能自己不去测量信号?总不可能要我派个硬件工程师给你当助手吧!”

f54aaf67170dfa4e1e52cc7cec07fa7cb6008848

菜鸟:“嗯,我可以理解用示波器测量信号确实是固件工程师必备的技能之一,那原理图呢?”

PM:“你不看原理图,怎么知道要测哪里,而且我是说固件工程师必须会‘看’原理图,我可不放心让你来‘设计’原理图,电路设计是硬件工程师的工作。嵌入式系统开发工程师必须“多才多艺”的另一个原因,是为了提升自己的工作效率,项目中其他人都很忙,我们不希望软件工程师遇到了简单的硬件问题就停下来等待硬件工程师的帮忙。而且你看,那位在改驱动程序的是位硬件工程师,而那位软件工程师居然也学会了拆换芯片。

年轻人多学一点有好无坏,久而久之,你会更了解这个业界的生态,而不是只懂软件或写程序的事情,懂吗?”

菜鸟:“我很有兴趣学习新的知识,也愿意接受挑战,但还是有点怕……”

PM:“我已经说过很多次了,别担心,我们会培训你的。以下是我认为要成为一个优秀的嵌入式系统软件开发者所必须具备的基本职业技能。”

要会写程序,尤其是C语言,而且程序必须精简有效率
数据结构与算法
完全了解计算机系统的运行方式
操作系统的概念
懂得系统的整个架构,包含电源管理等
必须了解硬件设计的精神与架构,要能看得懂原理图
基本测量仪器(电表、示波器等)
笔者遇到过许多博学多闻,看起来什么都懂的高手,其中有位高手令人印象深刻。他主要的工作是设计CPU,当该CPU准备推广上市前,他会帮忙设计评估板(或实验板)的原理图2,如果有空的话,他也会自己布局评估板线路,当评估板洗回来后,他会亲自验证,焊零件也都自己来,接下来还要写程序验证。他们公司提供给客户的评估板和示例代码都出自他一人之手,而他居然还是CPU的设计者!等到实际深交之后,才讶然发现他并非信息电机本科毕业生,本身是数学系毕业,在当了一段时间的中学老师后,才“转战”到信息界。

笔者提这个例子并非鼓励你要做一个通才,其实就在某个领域内出类拔萃也很好,毕竟这是一个精细分工的世界。笔者要点出的是,知识工作者必须放开心胸,只要是对工作或者对达成任务有帮助的,软件工程师不要排斥去学硬件的知识或技能,硬件设计者亦然。笔者常常听到这样的对话。

硬件工程师:“我觉得你们会写程序好厉害,想要什么功能改一下就好,那么复杂的程序是怎么写出来的?”

软件工程师:“我觉得你们可以做出一台实体的机器才厉害,什么电阻、电容的,我一个都搞不懂,那个原理图密密麻麻比我们程序复杂多了!”

笔者会给这两位嵌入式系统开发工程师一人一句建议:

软件工程师硬起来!

硬件工程师软下去!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
2月前
|
数据库
什么是计算机软件开发领域的 verbose 代码和日志
什么是计算机软件开发领域的 verbose 代码和日志
31 0
|
3月前
|
调度
kettle开发篇-写日志
kettle开发篇-写日志
82 0
|
2月前
|
供应链 Java 测试技术
开发Java应用时如何用好Log
开发Java应用时如何用好Log
71 3
|
5月前
|
监控 Java
Springboot开发系统记录操作日志
Springboot开发系统记录操作日志
94 3
|
7月前
|
人工智能 运维 监控
在日常开发工作中,日志数据该如何利用?
在日常开发工作中,日志数据是一个宝贵的资源,它可以提供关于应用程序运行状态、错误报告、性能指标和用户行为等方面的重要信息。正确地利用和分析日志数据可以帮助开发人员更好地理解应用程序的运行情况,快速定位和解决问题,改进应用程序的性能,并为业务决策提供有力支持。尤其是在现代科技发展的背景下,日志数据作为一种重要的信息资源,对于运维工作具有极大的价值。然而,如何充分利用日志数据,并将其应用于运维和开发工作中,仍然是许多企业和运维和开发人员关注的问题。那么本文就来分享一下在日常开发中关于日志数据的利用方面的探讨。
128 1
在日常开发工作中,日志数据该如何利用?
|
9月前
|
XML SQL Java
Spring Boot + vue-element 开发个人博客项目实战教程(二十、登录日志、用户、分类管理页面开发)2
Spring Boot + vue-element 开发个人博客项目实战教程(二十、登录日志、用户、分类管理页面开发)2
68 0
|
9月前
|
前端开发 NoSQL Java
Spring Boot + vue-element 开发个人博客项目实战教程(二十、登录日志、用户、分类管理页面开发)1
Spring Boot + vue-element 开发个人博客项目实战教程(二十、登录日志、用户、分类管理页面开发)1
113 0
|
9月前
|
JSON 前端开发 NoSQL
Spring Boot + vue-element 开发个人博客项目实战教程(十九、日志中心页面接口对接)2
Spring Boot + vue-element 开发个人博客项目实战教程(十九、日志中心页面接口对接)2
53 0
Spring Boot + vue-element 开发个人博客项目实战教程(十九、日志中心页面接口对接)2
|
9月前
|
前端开发 JavaScript Java
Spring Boot + vue-element 开发个人博客项目实战教程(十九、日志中心页面接口对接)1
Spring Boot + vue-element 开发个人博客项目实战教程(十九、日志中心页面接口对接)1
129 0