OpenHarmony Neptune开发板FLASH操作 记录开机次数 原创

远道可思
发布于 2021-9-2 18:50
浏览
4收藏

本文介绍如何在Neptune开发板上,使用openHarmony IoT硬件子系统的FLASH接口 记录开机次数

1、环境准备
1.1 开发环境、编译环境搭建,参考官方文档,参考链接如下:
Neptune开发板的环境搭建及使用
1.2 Neptune开发板 openharmony V1.1.0 LTS 版本获取
git clone https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot.git
2、材料准备
1、Neptune HarmonyOS物联网 IOT模组
3、相关基础知识介绍
openHarmony IoT硬件子系统提供了一些外设相关的接口,目录位于:
base/iot_hardware/peripheral/interfaces/kits
FLASH相关接口,接口头文件为iot_flash.h,其中FLASH写入数据API:

unsigned int IoTFlashWrite(unsigned int flashOffset, unsigned int size,const unsigned char *ramData, unsigned char doErase);

接口参数介绍:
flashOffset:写入数据的闪存的地址
size:写入的数据的长度
ramData指向用于将数据写入的RAM的指针
doErase:指定是否自动擦除现有数据(此参数与HI3861有关与Neptune无关,可写入随意数字)

其中FLASH读取数据API

unsigned int IoTFlashRead(unsigned int flashOffset, unsigned int size, unsigned char *ramData);

接口参数介绍:
flashOffset:读取数据的闪存的地址
size:读取的数据的长度
ramData:指向用于将数据读取的RAM的指针
4、W800 FLASH区说明
参考官方文档《WM_W800_寄存器手册_V2.1》,W800 的地址空间部分分布图如下:

OpenHarmony Neptune开发板FLASH操作 记录开机次数-鸿蒙开发者社区
W800 flash在系统中地址从 0x0800 0000 开始,可以直接对该地址空间进行读操作(W800 flash 为2M)。
flash中的内容一般用来存储代码和一些定义为const的数据,断电不丢失。
参考官方文档《WM_W800_QFLASH布局说明_V1.0》W800 的FLASH分布情况:
OpenHarmony Neptune开发板FLASH操作 记录开机次数-鸿蒙开发者社区
从图中可以看出内部FLASH的区域划分,至于本次写入FLASH的区域我选择User Area(用户参数区)来存放数据。
6.编写代码
有了以上知识,我们就可以编写代码了,关键代码如下:

#define IoT_FLASH 1
#define FLASH_ADDR  0x1F0303  //0x800 0000 +0x1F0303(这是偏移地址)
#define FLASH_BUF_SIZE 1024

static void Flash_Demo_Entry(void)
{
   uint8_t write_buf[FLASH_BUF_SIZE];
   uint8_t read_buf[FLASH_BUF_SIZE]; 
   IoTFlashRead(FLASH_ADDR,FLASH_BUF_SIZE,read_buf);
   if(strlen(read_buf)==0)
   {
      sprintf(write_buf,"%d",0);
      IoTFlashWrite(FLASH_ADDR,sizeof(write_buf),write_buf,IoT_FLASH);
   }
   else
   {
       sprintf(write_buf,"%d",atoi(read_buf)+1);
       IoTFlashWrite(FLASH_ADDR,sizeof(write_buf),write_buf,IoT_FLASH);
   }
   osDelay(10);
   IoTFlashRead(FLASH_ADDR,FLASH_BUF_SIZE,read_buf);
   osDelay(20);
   printf("Power-on times:%s",read_buf);
}

7、编译、烧录,并测试最后的完成效果。
OpenHarmony Neptune开发板FLASH操作 记录开机次数-鸿蒙开发者社区
按RST键可看到开机次数增加。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
flash_sample.rar 887B 30次下载
已于2021-9-2 18:50:02修改
4
收藏 4
回复
举报
1条回复
按时间正序
/
按时间倒序
mb609898e2cfb86
mb609898e2cfb86

简洁明了,厉害!

回复
2021-9-3 10:13:00
回复
    相关推荐