The article is released under license CC BY-NC-ND 4.0
IoT Boot Camp系列课程是由TorchIoTBootCamp团队发起,广大IoT领域的爱好者共同参与的项目。旨在高效率、高质量地传播IoT领域的相关知识,以促进物与物,人与人,人与信息的连接。
点击这里,观看博主更多有趣视频教程
点击这里,学习更多知识
1. 简介
1.1. 实验内容
Zigbee快速入门——新兵训练营培训的实验环节将涵盖以下四个部分。我们通过这四个部分来向大家逐步展示,如何从零开始构建一个Zigbee应用。
本文档中的实验是“Zigbee快速入门——新兵训练营”系列中的第四部分。
- 第一部分,由Light构建网络,并使用install code将Switch加入到这个网络。
- 第二部分,在设备上使用API发送,接收和处理On-Off命令。
- 第三部分,在Switch端用一个周期事件来执行自定义代码,在我们的实验中是控制LED闪烁。
- 第四部分,在Switch端使用非易失性存储器来存储自定义数据。
1.2. 目的
本实验演示了EmberZNet Stack上非易失性数据存储的基本用法。此外,本文档中还包含了一些有关NVM, Token的基本知识,以帮助所有人更好地理解该实验。
你将学习
- 通过本实验课程,您将学习非易失性数据存储的基础知识,Silicon Labs提供的数据存储方案,以及如何使用Tokens来访问非易失性数据存储对象。
你需要做
- 在本实验中,我们需要解决的一个问题是,在没有EEPROM的EFR32MG12平台上,如何在系统掉电或复位时来保存当前灯的开/关状态。在本实验中,我们提供了使用Tokens来实现此目的的解决方案。
- 而且,您还需要检索制造商在生产过程中所烧录的制造字符串。
下图说明了该实验的基本流程。
2. 非易失性存储器的基础知识
2.1. 什么是非易失性存储?
非易失性存储器(NVM)是指当设备掉电后,所存储的数据不会消失的存储器。它通常是指半导体存储芯片中的存储器,包括NAND闪存和固态硬盘(SSD)之类的闪存存储,以及EPROM(可擦除可编程ROM)和EEPROM(电可擦除可编程ROM)之类的ROM芯片。
在Silicon Labs的微处理器和无线射频芯片上,其内部都没有包含EEPROM,NVM的功能是通过闪存来实现的。
2.2. 为什么在EmberZNet PRO中需要非易失性存储?
通常,EmberZNet协议栈和应用程序需要存储一些数据对象,这些对象在电源掉电之后仍需要保留。其中一部分数据是制造数据,只能写入一次,它由生产商在生产过程中写入。另一部分数据,在产品的整个生命周期内都会被频繁地写入和读取,这被称为动态数据。
2.3. Silicon Labs如何实现非易失性数据存储?
总体而言,Silicon Labs为闪存中的非易失性数据存储提供3种不同的实现方案。并且还提供Tokens机制,用于从非易失性数据存储中存储和检索数据。
Persistent Store (PS Store)
PS Store仅可用于除EFR32 2系列以外的所有的蓝牙设备。PS Store的大小为2048字节,并使用两个闪存页进行存储。蓝牙协议栈和应用程序都可以在该区域中存储数据。
由于本文档重点介绍EmberZNet PRO,因此在本文档中我们不会过多介绍PS Store。
SimEEv1和SimEEv2
SimEEv1(模拟EEPROM版本1)或SimEEv2(模拟EEPROM版本2)与EmberZNet PRO,Silicon Labs Thread,Silicon Labs Connect在EM35x和EFR32系列1平台上配合使用。SimEEv1使用两个虚拟页,每个虚拟页包含两个闪存页,而SimEEv2使用三个虚拟页,其中每个虚拟页包含6个闪存页。
NVM3
第三代非易失性存储器(NVM3)数据存储是SimEEv1 / v2和PS Store的替代产品,旨在与EFR32上运行的EmberZNet,Silicon Labs Thread,Connect和Bluetooth应用程序,以及EFM32上运行的MCU应用程序一起使用。
由于NVM3具有更高的可配置性,可以更好地平衡Tokens容量与所需的闪存,并且与DMP(动态多协议)应用程序兼容,因此推荐在EFR32上进行开发时,使用该方案。
在本实验中,我们将使用NVM3进行数据存储。
Token
Token的机制使应用程序可以将定义的数据类型存储在非易失性存储中,并且SimEEv1 / v2和NVM3都可以在Token机制下运行。
Token有两个部分:Token标识和Token数据。Token标识是用于存储和检索Token数据的唯一标识符。通过使用Token标识,应用程序无需知道数据在非易失性存储中的确切位置即可进行检索。
下图说明了Token与非易失性数据存储机制之间的关系。Silicon Labs提供了三种不同的Dynamic Tokens实现:SimEEv1(模拟EEPROM版本1),SimEEv2(模拟EEPROM版本2)和NVM3(第三代非易失性存储)。
3. 使用Token API访问NVM3对象
在EFR32上进行开发时,我们推荐使用NVM3进行数据存储,因此以下部分将介绍如何使用Token API访问NVM3对象。
3.1. Token类型:Dynamic Tokens和Manufacturing Tokens
根据Token的使用方式,可以将其区分为Dynamic Tokens或Manufacturing Tokens。