WS53指导资料

- hardware
  - SoC Wi-Fi、BLE和SLE Combo芯片 硬件用户指南
    - 前言
    - 封装与管脚
    - 电性能参数
    - 原理图设计建议
    - PCB设计建议
    - 热设计建议
    - 焊接工艺
    - 潮敏参数
    - 接口时序
    - 注意事项
    - 缩略语
  - 单板硬件关键器件选型指导
    - 前言
    - 关键器件选型约束
  - 射频测试 用户指南
    - 前言
    - 测试指令
    - 注意事项
- 软件资料
  - AT命令 使用指南
    - 前言
    - 指令说明
    - Wi-Fi模块AT指令
    - BLE&SLE模块AT指令
    - PLAT模块AT指令
  - BLE BQB认证测试 指导书
    - 前言
    - 蓝牙BQB认证简介
    - BQB协议认证
    - BQB 射频认证
    - WS53特性支持情况
    - 常见问题&测试命令汇总(FAQ)
  - BOOT API开发参考
    - 前言
    - 接口介绍
  - Boot移植应用 开发指南
    - 前言
    - Boot简介
    - RomBoot功能说明
    - LoaderBoot功能说明
    - FlashBoot说明
  - CJSON 开发指南
    - 前言
    - API接口说明
    - 开发指南
  - CoAP 开发指南
    - 前言
    - API接口说明
    - 开发指南
  - EFUSE 使用指南
    - 前言
    - 概述
    - 软件编程接口使用指导
    - Burntool烧写efuse_cfg.bin说明
  - FOTA 开发指南
    - 前言
    - 概述
    - 升级包制作
    - 升级包传输
    - 升级包保存
    - 升级包本地升级
    - AB面升级
    - FAQ
  - HTTP 开发指南
    - 前言
    - 开发指南
  - MQTT 开发指南
    - 前言
    - API接口描述
    - 开发指南
    - 注意事项
  - NV存储 用户指南
    - 前言
    - NV简介
    - NV编译预置
    - NV API指南
    - NV项汇总
  - SAMPLE用例 用户指南
    - 前言
    - SAMPLE简介
    - 外设SAMPLE用例
  - SDK 开发指南
    - 前言
    - 概述
    - 系统接口
  - SDK开发环境搭建 用户指南
    - 前言
    - 开发环境搭建
    - 编译
    - 新建APP
  - Syschannel 使用指南
    - 前言
    - Syschannel 简介
    - Syschannel 使用指南
    - Syschannel 编译指导
    - Syschannel 适配常见问题
  - TLS&DTLS 开发指南
    - 前言
    - API接口说明
    - 开发指南
    - 硬件适配
    - 注意事项
  - WFA认证测试指导书
    - 前言
    - WLAN WFA协议认证介绍
    - WS53 WFA认证
    - 缩略语
  - lwIP 开发指南
    - 前言
    - 概述
    - 功能特性
    - 开发指引
    - 网络安全
    - 常见问题
    - 术语
  - 产测FAQ
    - 前言
    - FAQ
    - 注意事项
    - 版本问题记录
  - 产线工装 用户指南
    - 前言
    - 测试软件准备
    - 单板测试方案
    - TX/RX测试参考
    - WLAN Facility与固件版本
    - 产线生产ESD防护要求
  - 低功耗 开发指南
    - 前言
    - 概述
    - 超深睡模式
    - 深睡模式
    - 浅睡模式
    - 常见问题
  - 单板冒烟 测试指南
    - 前言
    - 概述
    - 单板冒烟测试
  - 安全模块 使用指南
    - 前言
    - 概述
    - 错误码
    - 网络安全注意事项
  - 文件系统 使用指南
    - 前言
    - LFS简介
    - LFS编译预置
    - LFS接口API
  - 星闪认证测试 指导书
    - 前言
    - 星闪认证简介
    - 星闪协议认证
    - 星闪射频认证
    - 星闪特性支持
    - 常见问题&测试命令汇总（FAQ）
  - 特性开发说明书
    - 前言
    - 混杂模式特性说明
    - 动态国家码特性说明
    - BLE配网特性说明
    - 安全启动特性说明
    - FLASH在线解密特性说明
  - 第三方软件 移植指南
    - 前言
    - 移植指引
    - 常见问题
  - 设备驱动 开发指南
    - 前言
    - Pinctrl
    - GPIO
    - UART
    - SPI
    - QSPI
    - I2C
    - ADC
    - DMA
    - PWM
    - WDT
    - Timer
    - Systick
    - TCXO
    - SFC
    - eFuse
    - REBOOT
    - I2S
  - 软件 开发指南
    - 前言
    - 概述
    - Wi-Fi 软件开发指南
    - BLE&SLE 软件开发指南
    - 注意事项
  - 运维手册
    - 前言
    - 系统/平台模块
    - Wi-Fi模块
  - 鸿蒙XTS认证 指导书
    - 前言
    - 概述
    - 准备工作
    - 编译openharmony静态库
    - XTS版本编译和执行

### 该页内容

- 前言
- 概述
- 软件编程接口使用指导
- Burntool烧写efuse_cfg.bin说明
  - 生成efuse_cfg.bin
  - 烧录流程

# 前言

概述

本文档主要描述了WS53V100的客户预留EFUSE位域的使用方法。

产品版本

与本文档对应的产品版本如下。

产品名称 | 产品版本
--- | ---
WS53 | V100

读者对象

本文档主要适用于以下人员：

- 技术支持工程师

- 软件开发工程师

符号约定

在本文中可能出现下列标志，它们所代表的含义如下。

符号 | 说明
--- | ---
| 表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。
| 表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。
| 表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。
| 用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。 “须知”不涉及人身伤害。
| 对正文中重点信息的补充说明。 “说明”不是安全警示信息，不涉及人身、设备及环境伤害信息。

修改记录

文档版本 | 发布日期 | 修改说明
--- | --- | ---
01 | 2024-07-22 | 第一次正式版本发布。
00B01 | 2024-06-11 | 第一次临时版本发布。

# 概述

EFUSE是一种可编程的存储单元，由于其只可编程一次的特征，多用于芯片保存Chip ID、密钥或其他一次性存储数据。WS53提供了两种使用方式：通过软件驱动接口直接读写用户预留的128bit EFUSE空间；通过烧写工具操作整个2048bit空间。

# 软件编程接口使用指导

eFuse模块提供的接口及功能如下：

头文件路径: include\driver\efuse_user.h

- uapi_efuse_user_read_bit：从用户预留的eFuse空间中读取一位。

- uapi_efuse_user_read_buffer：从用户预留的eFuse空间中读取多个字节，进入提供的缓冲区。

- uapi_efuse_user_write_bit：向用户预留eFuse空间中的对应bit写1。

- uapi_efuse_user_write_buffer：从提供的缓冲区向用户预留的eFuse空间写入多个字节。

示例：

1. 按照buffer写eFuse值。

       uint8_t efuse_data[8] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};
       uint32_t byte_number = 1;
       uint16_t length = 8;
       uint32_t ret;
       // 第1Byte开始写入8个字节
       ret = uapi_efuse_user_write_buffer(byte_number, efuse_data, length);
       if (ret != 0) {
           // 异常处理
       }

2. 按照buffer读取efuse值。

       uint8_t efuse_data[8] = {0};
       uint32_t byte_number = 1;
       uint16_t length = 8;
       uint32_t ret;
       // 第1byte开始读取8个字节
       ret = uapi_efuse_user_read_buffer(byte_number, efuse_data, length);
       if (ret != 0) {
           // 异常处理
       }

3. 按照bit读取efuse值。

       uint8_t bit_pos = 1;
       uint8_t value;
       uint32_t byte_number = 1;
       uint32_t ret;
       // 读取第一个byte的bit1的值，存入value中（0 or 1）
       ret = uapi_efuse_user_read_bit(byte_number, bit_pos, &value);
       if (ret != 0) {
           // 异常处理
       }

4. 按照bit写入efuse值。

       uint8_t value;
       uint32_t byte_number = 1;
       uint32_t ret;
       // 向第一个byte的bit1写入1
       ret = uapi_efuse_user_write_bit(byte_number, bit_pos);
       if (ret != 0) {
           // 异常处理
       }

# Burntool烧写efuse_cfg.bin说明

- 生成efuse_cfg.bin

- 烧录流程

## 生成efuse_cfg.bin

1. 数据准备

   字段说明：

   burn：

   - 0：当前位域不烧写，

   - 1：当前位域烧写

   name：当前efuse位域名字

   start_bit：位域起始bit位

   bit_width：当前位域bit长度

   values：烧写值

   lock：锁定位

   示例：

   0,CHIP_ID,0,8,0x00000000,PG0：chip_id 从bit0开始，长度是8bit，不烧写。

   1,SEC_BOOT,226,8,0x00000042,PG39：SEC_BOOT从bit226开始，长度为8bit，烧写值为0x42。

2. 烧写文件生成

3. 编译loaderboot，会生成efuse_cfg.bin。

4. 编译对应的app.bin，编译成功后，会将efuse_cfg.bin自动打包到app.bin中。

## 烧录流程

准备烧写工具“BurnTool”通过BurnTool工具烧写镜像。具体步骤如下：

1. 在BurnTool界面中，单击“Option”按钮，选择“Change chip”，从“Chip List”下拉菜单中选择“WS53”，并单击“OK”即可，如图1所示。

   图 1 BurnTool更换芯片示例

2. 在BurnTool界面中，单击“COM”按钮选择PC机串口（串口选择，请参考开发板使用指南）；单击“Select file”按钮，选择各产品编译生成的固件包，并单击“OK”，如图2所示。efuse_cfg.bin为待烧录数据，烧录类型为3。

   图 2 烧录文件选择示例

3. 勾选“Auto burn”以及“Auto disconnect”选项；

   选择“Setting”→“Settings”，配置串口参数，默认配置如图3所示，baud配置为2000000，package size配置为8192。

   > 说明： Force Read Time：定时读取的时间，以毫秒为单位。勾选时为定时读取串口，不勾选时为事件触发读取串口。适用于不勾选该选项无法正常烧录的场景。

   图 3 串口设置示例

   选择目标串口号并单击“Connect”按钮（单击后“Connect”变为“Disconnect”），复位单板。自动烧录效果如图4所示。

   图 4 自动烧录示意图

   等待传输完成后结束烧写，烧写完成会出现“All images burn successfully”。烧写完成效果如图5所示。

   图 5 烧写完成示意图

   > 说明： 在速率不理想的外部状态下，若多次出现烧写镜像失败的情况，请拷贝至本地烧写