(图片来源网络,侵删)
作为嵌入式开发人员,在网上搜索“嵌入式软件定义”、“什么是嵌入式软件?”或者嵌入式软件的定义,你会发现许多文章陈述了如下内容: “嵌入式软件是计算机软件,用于控制通常不被认为是计算机的机器或设备,通常称为嵌入式系统它通常专用于运行它的特定硬件,并且有时间和内存限制” “嵌入式软件是一种嵌入在硬件或非PC设备中的软件它是专门为运行它的特定硬件编写的,由于设备的计算能力有限,通常会受到处理和内存的限制” 这些定义模糊地抓住了嵌入式软件的概念,但是它们没有告诉我们它是什么! 什么是嵌入式软件? 嵌入式软件是设计和构建为运行在专门的、应用特定的硬件上的代码,该硬件通过各种形式的输入、处理、输出和存储来管理数据嵌入式软件通常是确定性的,有软、硬实时调度期限 对嵌入式开发人员来说,上述定义更接近嵌入式软件和固件专家用来描述嵌入式软件的定义请注意,定义的第一部分类似于一般定义: 嵌入式软件是设计和构建为在专门的、特定于应用的硬件上运行的代码 然而,定义中的关键差异出现在这句话的第二部分: "通过各种形式的输入、处理、输出和存储来管理数据." 两个基本原则可以区分成功和不成功的设计通过明确讨论数据,这两个原则在上面的嵌入式软件定义中得到了强调让我们快速探讨一下这两个原则 原则1——数据决定设计 第一个原则是“数据决定设计”嵌入式软件开发人员经常被硬件、事件、状态和其他干扰所困扰 每个嵌入式软件设计的核心都是数据数据才是嵌入式软件真正的意义所在甚至可以更进一步说,嵌入式系统就是关于数据的每个系统都有输入,这些输入经过处理后产生期望的输出这些输入和输出通常以某种易失性或非易失性的方式存储如果嵌入式开发人员遵循这些数据,设计将会到位 原则2——没有硬件(只有数据) 直接源于我们嵌入式软件定义的第二个原则是,没有硬件,只有数据现在可能会认为这是没有意义的然而,我们定义中的第一句话指出: 嵌入式软件是设计和构建为在专门的、特定于应用的硬件上运行的代码 这里说,它是为硬件设计的!用这种方式来表达这个定义,因为大多数嵌入式软件设计师还没有准备好放弃这个定义现代成功的嵌入式软件开发专家编写的软件是独立于硬件的对硬件进行抽象,以消除硬件依赖性并将硬件从应用程序代码中分离出来 硬件只是作为检索、输出和存储数据的路径因此,LED应用不应直接访问GPIO线路相反,LED应用程序应该获取表示LED的数据对象然后,对数据进行处理,并在适当的时间传递给特定于硬件的例程,这些例程知道如何将LED对象映射到硬件并将其设置为正确的状态 仅仅根据数据来设计和构建嵌入式软件是一个非常现代的概念,团队应该充分利用这个概念 嵌入式软件定义结论 嵌入式软件是为确定性运行而设计和构建的代码,通常具有实时截止期,通过各种形式的输入、处理、输出和存储来管理数据 我们在今天的帖子中已经看到,通常用来描述嵌入式软件的定义是不恰当的这些定义没有触及嵌入式系统的核心,也没有触及我们在设计它们时应该关注的问题然而,我们已经成功地澄清了事实,并为嵌入式软件提供了几个现代定义我们还定义了几个原则,嵌入式开发人员可以用来改进自己的嵌入式软件设计
0 评论