当前位置:网站首页>嵌入式开发的7大原罪
嵌入式开发的7大原罪
2022-07-06 12:51:00 【粤嵌教育】
每个行业都有他们的最佳实践和罪恶实践。大罪是许多人都知道的做法,但这些做法太诱人或太容易陷入其中。嵌入式开发行业有许多这样的大罪,但是有七个特别的罪似乎已经在整个行业中存在了几十年。
原罪1——不跟踪指标
未能跟踪开发指标似乎是一个小罪,但指标是嵌入式软件工程不可或缺的一部分。 指标不仅提供了一种跟踪进度和问题的方法,还提供了一种估计方法。 工程师经常被问到,“它会持续多久?” 或“要花多少钱?”。时间和成本问题应该基于经验数据,而不是与工程师当时的乐观程度有关的即兴发挥。如果没有基本的度量跟踪来确定微控制器需要多少闪存空间是极其困难的。如果没有跟踪,工程师如何知道典型的数字输入/输出或 UART 驱动程序占用了多少 RAM/ROM?
原罪2——黑客而不是设计
在过去十年左右的时间里,成为一名黑客甚至是一名创造者的概念或想法已经被社会浪漫化了。社会已经接受了这个概念,即软件工程师应该是一个流氓黑客,不需要什么设计或深谋远虑,就能在很短的时间内创造出一个革命性的“完整的”产品。事实是嵌入式软件工程不是一门黑客学科。嵌入式开发人员需要深谋远虑和设计才能真正成功。最常犯的错误之一是没有蓝图、设计或流程图的疯狂dash代码编写,它恰好在最简单的测试案例和条件下工作,并被认为值得发布,因为它是“功能性的”。实现和测试应该遵循设计和架构。
原罪3——从零开始
深入到硬件的最深层次,并通过软件在现实世界中创造一些东西,这既有趣又令人兴奋。 嵌入式软件工程师希望开发与软件相关的一切,从最底层开始,一直到应用程序代码。 做所有事情并从头开始的问题在于它既费时又昂贵,但这是第一本能,而且通常坚持从头开始。 嵌入式系统已经变得太复杂,开发时间太短,以至于普通项目无法从头开始。 应该利用供应商代码、第 3 方组件、开源和其他标准来完成工作。 既然有如此多的商业可用和经过测试的替代品,为什么还要开发自己的 RTOS?

原罪4 – 不适合工作的工具
奇怪的是,当嵌入式开发人员需要软件工具来完成他们的工作时,像lint工具这样的基本工具被拒绝,因为它们的价格只有几千美元。简单地看一下软件工具的投资回报率与工程师每年的花费相比,应该可以看出软件工具可以更快更高质量地完成工作。
原罪5——缺乏继续教育
处理器中的晶体管数量每两年翻一番。嵌入式软件工程师使用和开发的功能和技术确实在以指数速度变化。尽管行业变化迅速,但许多公司并不计划或鼓励他们的工程师参加会议或培训。缺乏继续教育的部分原因似乎是由于设计周期时间表和压力。有太多的事情要做,一家公司不能让他们的工程师或成本在几天内不工作。公司真正应该问的问题是,在没有最新开发技术和知识的情况下,他们是否有能力雇佣工程师。
原罪6——工作时间太长
当最后期限即将到来,而又没有额外的人手时,会发生什么呢?嵌入式开发人员加班加点。工作时间过长是嵌入式软件工程师的一个普遍问题。固件主宰着世界,但现在没有足够的固件工程师来生产社会需要的所有设备。更糟糕的是,社会对这些设备的需求速度越来越慢。总是有一种需要昨天完成的软件的冲动。然而工作太长时间肯定会累垮。而不是加速发货,发货只会延迟。不要陷入持续超时的陷阱。一个新鲜的头脑比一个疲惫不堪、精疲力竭的头脑工作起来要快得多,效率高得多。
原罪7——未能遵循最佳实践
MISRA-C、CERT-C和许多其他行业标准包含了可数的嵌入式开发人员的知识和智慧。经验丰富的工程师们在那里做过,不仅从他们自己的错误中学习,也从其他人的错误中学习,开发了这样的标准。然而,由于时间限制、截止日期压力或其他障碍,许多开发人员忽略了嵌入式软件的最佳实践。
结论
各行各业都存在大罪。最佳实践通常旨在帮助防止它们,或者至少鼓励正确的行为。当最后期限临近,压力增大时,陷入这七宗罪的诱惑几乎是无法抗拒的。每个嵌入式开发人员和公司都曾在某种程度上成为他们的牺牲品。真正关心的是多久一次,做什么才能回到正轨。
边栏推荐
- Infrared thermometer based on STM32 single chip microcomputer (with face detection)
- 基于深度学习的参考帧生成
- Reinforcement learning - learning notes 5 | alphago
- 强化学习-学习笔记5 | AlphaGo
- Le langage r visualise les relations entre plus de deux variables de classification (catégories), crée des plots Mosaiques en utilisant la fonction Mosaic dans le paquet VCD, et visualise les relation
- 硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
- 3D face reconstruction: from basic knowledge to recognition / reconstruction methods!
- js中,字符串和数组互转(一)——字符串转为数组的方法
- C language games - three chess
- Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
猜你喜欢

The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix

Kubernetes learning summary (20) -- what is the relationship between kubernetes and microservices and containers?

防火墙基础之外网服务器区部署和双机热备

硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件

面试官:Redis中有序集合的内部实现方式是什么?

Performance test process and plan

2022菲尔兹奖揭晓!首位韩裔许埈珥上榜,四位80后得奖,乌克兰女数学家成史上唯二获奖女性

Introduction to the use of SAP Fiori application index tool and SAP Fiori tools

强化学习-学习笔记5 | AlphaGo

Intel 48 core new Xeon run point exposure: unexpected results against AMD zen3 in 3D cache
随机推荐
基于STM32单片机设计的红外测温仪(带人脸检测)
动态切换数据源
1_ Introduction to go language
JS操作dom元素(一)——获取DOM节点的六种方式
R语言可视化两个以上的分类(类别)变量之间的关系、使用vcd包中的Mosaic函数创建马赛克图( Mosaic plots)、分别可视化两个、三个、四个分类变量的关系的马赛克图
Solution to the 38th weekly match of acwing
Data Lake (VIII): Iceberg data storage format
3D face reconstruction: from basic knowledge to recognition / reconstruction methods!
Is it safe to open an account in flush? Which securities company is good at opening an account? Low handling charges
Common English vocabulary that every programmer must master (recommended Collection)
OAI 5G NR+USRP B210安装搭建
R language visualizes the relationship between more than two classification (category) variables, uses mosaic function in VCD package to create mosaic plots, and visualizes the relationship between tw
User defined current limiting annotation
[MySQL] basic use of cursor
(work record) March 11, 2020 to March 15, 2021
愛可可AI前沿推介(7.6)
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
Laravel笔记-自定义登录中新增登录5次失败锁账户功能(提高系统安全性)
Spark SQL chasing Wife Series (initial understanding)
Intel 48 core new Xeon run point exposure: unexpected results against AMD zen3 in 3D cache