系统 RAM 用于微码存储和数据

发布时间:2022-06-10 阅读量:1366 来源: 我爱方案网整理 发布人: Aurora

DMA 功能,用于将数据直接从通信接口传输到系统 RAM


直接访问所有外设和寄存器


通过 PMU 在中断触发和域上电(例如定时器、GPIO)后立即执行


SNC 到主处理器通知,以及反向通知


SNC 与所有通信接口(SPI、I2C 和 UART)位于相同的电源域,SNC 还可以控制其他电源域。它执行驻留在系统 RAM 中的微码,其中 SNC 具有直接内存连接;以系统时钟速度运行;并且可以生成中断以通知 PMU 所有操作都已完成,从而可以关闭整个系统的电源。


传感器节点控制器框图


图 3. 传感器节点控制器框图


使用此类专用硬件执行传感器和外设数据操作的架构的主要优点是: 


主 CPU 睡眠时间更长,从而可以节省功耗


节省 MIPS,因为 CPU 不必访问慢速外设或执行简单的数据操作 


不过它有一些缺点。SNC 编程模型的非常简单的指令集仅允许基本操作。另外,编程 SNC 需要使用汇编语言。最后,由于 SNC 是一个非常简单的模块,调试会变得复杂。


节省功耗和 MIPS


我们已经进行了一系列测量,证明了使用 SNC 可以实现的功耗和 MIPS 节省。这些测量是在 Dialog 的基于 ARM Cortex-M33 的 DA1469x SoC 上进行的,并比较了只使用主 CPU 和在 SNC 支持下执行的相同任务。 第一组测量集中在访问通常用于传感器读数的慢速外设(如 I2C 和 SPI)时节省的功耗 /MIPS。第二组测量着眼于使用 DA1469x 中包含的蓝牙低功耗(BLE)通信模块的实际应用案例。 


与 CPU(CM33)相比,SNC 执行事务所需的时间要短很多,如表 2 所示。由于 CPU 可能需要执行忙等待,因此节省了时间相当于节省了 MIPS。

 

SNC写/读8bit数据所需的时间以及CPU相应所需的时间


表2:SNC写/读8bit数据所需的时间以及CPU相应所需的时间


对现实生活中的使用案例,我们比较了每隔 1500 毫秒(表 3)和 500 毫秒(表 4)进行广播时所消耗的功率,同时使用 SPI 每 100 毫秒读取加速计传感器一次。


每 1500 毫秒进行广播时的能耗,使用 SPI 每 100 毫秒进行一次传感器读取


表 3:每 1500 毫秒进行广播时的能耗,使用 SPI 每 100 毫秒进行一次传感器读取

 

每 500 毫秒进行广播时的能耗,使用 SPI 每 100 毫秒进行一次传感器读取


表 4:每 500 毫秒进行广播时的能耗,使用 SPI 每 100 毫秒进行一次传感器读取

 

在复杂的应用中,如果需要访问多个传感器,考虑到缓存未命中和任务切换等问题,对 MCU 的占用会更大。


降低编程复杂度


上面提到过,使用集成的传感器节点控制器时面临的最大挑战之一,是确保基础系统功能的编程、调试和充分利用与采用通用 MCU 的方案一样简单。挑战的主要方面有:


提供对开发人员友好的抽象编程,以有效控制驱动与连接的传感器 / 外设的通信接口,以及与主 CPU 通信相对应的基本功能。


利用 10 指令汇编式编程,并提供更高级别的编程结构,以简化和加速软件开发。


支持完整的系统整体调试 - 而不是单独调试每个 CPU 内核,因为可能无法检测到当内核并行运行时的系统行为错误。


为了解决这些挑战,我们需要一个完整、易于使用的编程框架。它必须包括抽象和程序,将并发操作系统任务的范例扩展到在 SNC 上执行的相应(并行)处理。我们已经为 Dialog DA1469x 解决方案开发了这样的编程框架(图 4)。它具有以下特点:


简化的 SNC 微码开发


o 通过定义基于 SeNIS 的类 C 编程语言,可以同时支持汇编和类 C 编程。


用于编程的“混合”编码模型


o 在相同的源和头文件中同时包含针对 SNC 和主处理器情境(context)的代码开发 - 使用了一个 C 预处理器来定义基于 SeNIS 的语言结构,方便开发人员。


与驱动主处理器通信接口、交换 SNC 通知、和操作系统资源相关的基础机制和功能的抽象,作为一组完整且易于使用的 API 程序 / 类 C 函数。


SNC 编程框架


图 4. SNC 编程框架


SNC 编程模型的特征可归纳如下:


DA1469x 应用包括由 OS 任务和 SNC 微码并行执行的进程。


SNC 适配器向 DA1469x 系统注册或注销 SNC 微码,从而创建一列 SNC 微码,每个微码由特定 PMU 事件触发。


SNC 适配器采用特殊的 SNC 微码,根据相应的微码列表实现注册的 SNC 微码执行的调度,并通过其低级驱动器控制 SNC 硬件模块。


定义了一组基于 SeNIS 的结构预处理器宏,从而生成一组汇编和类 C 语言结构用于 SNC 微码开发。


提供一组低级驱动器 SNC 微码,可用于驱动 SPI、I2C 等通信外设。 


为操作系统任务和 SNC 微码提供了一种机制,进行交换:


o 通知


o 数据(即:SNC 队列)


除了上述实现轻松编程 SNC 函数的结构之外,还提供以下内容以支持调试:


使用 SNC 断点和逐步调试区域来调试 SNC 微码的机制。


SNC 仿真器,而不是 SNC 硬件模块,用于改进和简化 SNC 微码调试过程。


本文介绍了一种新的架构,可最大限度地降低集成了多个传感器和外设的便携式系统的功耗。该架构使用复杂的硬件状态机来卸载主处理器上的一些重复性任务,例如传感器 / 外设轮询和读取。与其他架构相比,这种新架构在功耗和 MIPS 优化方面具有很大的优势,不过会使编程模型变的更复杂。因此,我们还介绍了一种对开发人员友好的编程框架来克服该问题。

 

 


相关资讯
时钟芯片的作用:统筹时钟生成与同步!

在任何数字电子系统中,时钟信号都扮演着“心脏起搏器”的角色。

RTC晶振PCB设计的核心要点

RTC晶振与普通32.768kHz晶振的PCB设计要点基本一致,其核心均在于通过优化布线以降低杂散电容、确保频率精度,并依托合理的布局规划最大限度屏蔽来自板上其他信号源的电磁干扰。

不同应用场景中的晶振分类知识合集1

按晶振的功能和实现技术的不同,分为温度补偿晶振(TCXO)、压控晶振(VCXO)、恒温晶振(OCXO)。

晶振分频原理:数字电路的周期性计数实现频率转换!

为了在性能与功耗之间取得最佳平衡,需要根据具体应用场景,对基准时钟进行相应的分频、倍频或转换处理,从而为各模块提供适宜的时钟信号。此时,分频技术就成为连接晶振基准频率与系统需求的关键,通过数字电路将晶振原始频率按固定比例降低,输出符合要求的低频时钟信号。

RTC时钟芯片的电路工作原理与解析

RTC芯片是一种专门用于精准计时、掉电续时的专用集成电路,其核心功能是提供精准、稳定的时间信息(包括秒、分、时、日、月、周、年),并能在主电源断电后依靠备用电池继续保持计时,从而确保时间持续不间断。