软件|嵌入式开发:专家使用的秘密嵌入式软件定义

【软件|嵌入式开发:专家使用的秘密嵌入式软件定义】软件|嵌入式开发:专家使用的秘密嵌入式软件定义

作为嵌入式开发人员 , 在网上搜索“嵌入式软件定义”、“什么是嵌入式软件?”或者嵌入式软件的定义 , 你会发现许多文章陈述了如下内容:

“嵌入式软件是计算机软件 , 用于控制通常不被认为是计算机的机器或设备 , 通常称为嵌入式系统 。 它通常专用于运行它的特定硬件 , 并且有时间和内存限制 。 ”
“嵌入式软件是一种嵌入在硬件或非PC设备中的软件 。 它是专门为运行它的特定硬件编写的 , 由于设备的计算能力有限 , 通常会受到处理和内存的限制 。 ”
这些定义模糊地抓住了嵌入式软件的概念 , 但是它们没有告诉我们它是什么!
什么是嵌入式软件?
嵌入式软件是设计和构建为运行在专门的、应用特定的硬件上的代码 , 该硬件通过各种形式的输入、处理、输出和存储来管理数据 。 嵌入式软件通常是确定性的 , 有软、硬实时调度期限 。
对嵌入式开发人员来说 , 上述定义更接近嵌入式软件和固件专家用来描述嵌入式软件的定义 。 请注意 , 定义的第一部分类似于一般定义:
嵌入式软件是设计和构建为在专门的、特定于应用的硬件上运行的代码
然而 , 定义中的关键差异出现在这句话的第二部分:
\"通过各种形式的输入、处理、输出和存储来管理数据.\"
两个基本原则可以区分成功和不成功的设计 。 通过明确讨论数据 , 这两个原则在上面的嵌入式软件定义中得到了强调 。 让我们快速探讨一下这两个原则 。
原则1——数据决定设计
第一个原则是“数据决定设计” 。 嵌入式软件开发人员经常被硬件、事件、状态和其他干扰所困扰 。
每个嵌入式软件设计的核心都是数据 。 数据才是嵌入式软件真正的意义所在 。 甚至可以更进一步说 , 嵌入式系统就是关于数据的 。 每个系统都有输入 , 这些输入经过处理后产生期望的输出 。 这些输入和输出通常以某种易失性或非易失性的方式存储 。 如果嵌入式开发人员遵循这些数据 , 设计将会到位 。

原则2——没有硬件(只有数据)
直接源于我们嵌入式软件定义的第二个原则是 , 没有硬件 , 只有数据 。 现在可能会认为这是没有意义的 。 然而 , 我们定义中的第一句话指出:
嵌入式软件是设计和构建为在专门的、特定于应用的硬件上运行的代码 。
这里说 , 它是为硬件设计的!用这种方式来表达这个定义 , 因为大多数嵌入式软件设计师还没有准备好放弃这个定义 。 现代成功的嵌入式软件开发专家编写的软件是独立于硬件的 。 对硬件进行抽象 , 以消除硬件依赖性并将硬件从应用程序代码中分离出来 。
硬件只是作为检索、输出和存储数据的路径 。 因此 , LED应用不应直接访问GPIO线路 。 相反 , LED应用程序应该获取表示LED的数据对象 。 然后 , 对数据进行处理 , 并在适当的时间传递给特定于硬件的例程 , 这些例程知道如何将LED对象映射到硬件并将其设置为正确的状态 。
仅仅根据数据来设计和构建嵌入式软件是一个非常现代的概念 , 团队应该充分利用这个概念 。
嵌入式软件定义结论
嵌入式软件是为确定性运行而设计和构建的代码 , 通常具有实时截止期 , 通过各种形式的输入、处理、输出和存储来管理数据 。
我们在今天的帖子中已经看到 , 通常用来描述嵌入式软件的定义是不恰当的 。 这些定义没有触及嵌入式系统的核心 , 也没有触及我们在设计它们时应该关注的问题 。 然而 , 我们已经成功地澄清了事实 , 并为嵌入式软件提供了几个现代定义 。 我们还定义了几个原则 , 嵌入式开发人员可以用来改进自己的嵌入式软件设计 。