如何最大限度地提高物联网项目的效率
如何最大限度地提高物联网项目的效率?对于阅读最新微控制器数据表的开发人员来说,很容易假设 CPU 资源的有效使用,包括内存和时钟周期,充其量只是当今硬件的次要问题。对于嵌入式开发人员来说,现在可能比以往任何时候都更重要的是确保他们的软件以最高效率运行并且他们自己的时间以一种有效的方式度过。
在现代嵌入式系统上运行的软件往往来自多种来源。应用程序开发人员编写的代码通常与来自 RTOS(实时操作系统)提供商的现成软件组件相结合,而后者又可能使用最初由半导体公司提供的驱动程序代码。可以编写每段代码来优化效率,但本文将重点关注现成软件组件的效率。特别是两个组件将作为此处介绍的资源效率检查的基础:实时内核和事务文件系统。
实时内核:高效系统的核心
实时内核是当今许多嵌入式系统中运行的软件的核心。简单来说,内核就是一个调度器;为基于内核的系统编写应用程序代码的开发人员将该代码划分为任务,而内核负责调度任务。因此,内核是main()中无限循环的替代方案,在裸机嵌入式系统中常被用作主要的调度机制。
使用实时内核有很多好处,包括提高效率。选择基于内核的应用程序代码的嵌入式开发人员可以优化系统中处理器资源的使用,同时更有效地利用他们的时间。然而,并不是所有的内核都是平等的,并且仅仅决定为一个新项目采用一个内核并不能保证效率的提高。
核心可能不同以及 CPU 资源可以以不同程度的效率使用的关键领域是调度。通过提供允许任务响应事件运行的智能调度机制,内核帮助开发人员在无限循环中实现效率提升,其中任务(或函数)以固定顺序执行。基于内核的应用程序的确切效率部分取决于其调度程序的实现方式。内核的调度程序——它只是决定何时运行每个任务的一段代码——最终会产生开销,而这种开销并不会抵消从裸机系统转移所获得的好处。
内核可以通过两种方式分配多任务处理所需的基本资源:分配这些资源的责任可以留给应用程序代码,或者内核本身可以处理分配。任何内核中都不可避免地存在某些变量和数据结构,因为它们对于多任务服务的实现至关重要,因此它们完全位于内核范围内。但是对于用于记录每个任务状态的TCB(或任务控制块)等数据结构,甚至对于上下文切换时存储CPU寄存器值的栈,内核提供者可以选择内部分配或者依赖应用程序代码。
文件系统效率
大多数设备都需要存储数据和记录事件的选项,或者作为传输到云之前的临时休息场所,或者更永久地保存在设备上。为此目的设计的任何代码都是文件系统,无论是由嵌入式开发人员编写和测试,还是作为 RTOS 解决方案的一部分提供。文件系统还可以提供提高效率的选项。这些范围从简单(要保留多少内存缓冲区)到复杂(是否支持完整的 POSIX 操作)。
首先,一些 RTOS 提供类似 FAT 的文件系统。这包括使用标准媒体格式(包括文件夹和文件)执行 I/O 的代码。通常,这不是非常可定制的,并且它很少能防止电源故障期间的数据丢失。另一种选择是 Datalight 的 Reliance Edge,它使用事务点来提供电源故障安全环境。这里令人兴奋的是设计的灵活性如何提高效率。
Reliance Edge 提供存储选项的自定义。在称为“文件系统要素”的最小用例中,不使用文件夹甚至文件名。数据存储在编号的 inode 中。这些位置的数量是在编译时确定的,但大小不是预先确定的。一个“文件”可以包含比其他“文件”更多的数据,并且仅当“文件”的总大小达到阈值时媒体才满。文件也可以自由截断、读取和写入。
除了资源使用问题,多年来,效率一直是开发人员购买内核、文件系统和其他软件模块的首要考虑因素。这是因为用于证明采用此类模块的理由通常是从头开始编写等效代码将浪费时间。换句话说,应用程序开发人员的时间最有效地用于编写应用程序,而不是花费数万行基础设施代码。
如何最大限度地提高物联网项目的效率?主要是通过选择高质量的现成组件作为其项目的基础,嵌入式开发团队可以确保有效利用自己的资源以及嵌入式硬件的资源,并可以专注于编写创新的应用程序代码以提供他们的工作站站稳脚跟。更多关于物联网培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。