3.非易失性存储器存储

本节分析SDK处理非易失性存储器存储的方式。DA1469X SDK定义了一组存储分类规则,允许正确的存储处理和预算估计。对于每个存储类型,专用区域被映射在QSPI闪存中,该QSPI闪存可以通过唯一ID识别。表格1解释可用的分区ID,定义/sdk/adapters/include/partition_def.h.。确切的内存映射取决于使用的闪存模型(大小,扇区大小),并且需要在编译时指定。SDK提供了一些可以在下面找到的即可使用的分区表/ sdk / config文件夹。默认情况下,4M型号在Prodk QSPI Macronix 32-Mbit闪存中(带4 kB扇区的4 MB)启用且完美地配合。有关已使用的闪存的更多信息,请阅读其数据表

表格1 NVMS分区ID
标签ID 描述
nvms_firmware_part. 此条目在非辅助启用应用程序期间使用,以存储应用程序图像
nvms_param_part. 该条目用于在用于存储BLE相关信息(例如,目标设备的BD地址)的非拟议/辅导启用的应用程序期间。
nvms_bin_part. 此条目在用于存储二进制文件的非辅导应用程序期间使用。
nvms_log_part. 此条目在非Suota / Suota应用程序的应用程序中使用,用于记录事件或值。
nvms_generic_part. 该条目用于在启用诸如绑定数据之类的通用数据的非Suota / Suota的应用程序中使用。这是唯一标有VES(虚拟EEPROM)的区域。
nvms_platform_params_part. 此条目在非Suota / Suota的应用程序中使用,以存储特定于平台的信息。
nvms_partition_table 此条目在非Suota / Suota启用的应用程序期间使用,并包含有关使用的分区表的信息。
nvms_fw_exec_part. 此条目在Suota启用应用程序期间用于存储应用程序映像
nvms_fw_update_part. 此条目在Suota启用的应用程序中使用,并包含新的更新的固件版本。
nvms_product_header_part. 此条目在非Suota / Suota启用的应用程序期间使用,并包含有关使用的目标闪存以及各种特定于应用程序的参数的信息。
nvms_image_header_part. 在非拟议或拟议的应用程序中未使用此条目。与DA1468x SoC一起兼容性原因

分区布局显着不同于Suota启用的构建和启用非辅助构建。

3.1。创建自定义分区表

本节介绍成功创建新分区表所需的步骤。它利用默认值4M闪存模型为非型方式启用的应用程序,略微修改它。它拆分默认值nvms_bin_part.分为两个地区。为此,SDK提供了一些宏/sdk/adapters/include/flash_partitions.h.文件。

'修改4M模型分区表'

图4.修改4M模型分区表

警告

  1. 分区条目的大小应该是扇区大小的多个,4 KB.在我们的情况下(这是特定于设备的信息)。
  2. 建议不要更改默认位置nvms_partition_table。但是,如果更改位置,则应声明起始地址/sdk/adapters/include/flash_partitions.h.文件,如下图所示:#定义partition_table_addr.nvms_partition_table_start.

  1. 在目标设备和PC之间建立连接USB1.Pro Devkit的港口。
  2. 进口然后制作副本freertos_retarget.在DA1469x系列设备的SDK中找到的示例代码。

笔记

重要的是导入名为的文件夹python_scripts.执行诸如建筑物,调试,下载之类的各种操作。

  1. 在目标应用程序中,创建一个新文件夹以及项目下的标题文件/ sdk / config /文件夹。它应该如下所示:
“创建自定义分区表”

图5.创建自定义分区表

  1. 在新创建的文件中,添加以下代码来定义新分区方案:
#define nvms_product_header_part_start 0x000000.#define nvms_product_header_part_size 0x002000.#define nvms_firmware_part_start 0x002000.#define nvms_firmware_part_size 0x07e000./ * + ---------------------------------- + * /#define nvms_generic_part_start 0x0e0000.#define nvms_generic_part_size 0x020000.#define nvms_platform_params_part_start 0x100000.#define nvms_platform_params_part_size 0x0ff000.#define nvms_param_part_start 0x1ff000.#define nvms_param_part_size 0x001000./ * + ----------------2MB -------------------- + * /#define nvms_log_part_start 0x200000.#define nvms_log_part_size 0x100000.#define nvms_bin_part_start 0x300000.#define nvms_bin_part_size 0x080000.#define nvms_custom_entry_part_start 0x380000.#define nvms_custom_entry_part_size 0x07f000.#define nvms_partition_table_start 0x3ff000.#define nvms_partition_table_size 0x001000.分区nvms_product_header_part.0.分区nvms_firmware_part.0.分区nvms_generic_part.partition_flag_ves分区nvms_platform_params_part.partition_flag_read_only分区nvms_param_part.0.分区nvms_log_part.0.分区nvms_bin_part.0.分区nvms_custom_entry_part.0.分区nvms_partition_tablepartition_flag_read_only
  1. /sdk/adapters/include/partition_def.h.文件,修改nvms_partition_id_t.枚举为新定义的条目添加新ID。可能的修改如下:
/ *** \简短的NVMS分区ID* /typedef.枚举{nvms_firmware_part.=1nvms_param_part.=2nvms_bin_part.=3.nvms_log_part.=4.nvms_generic_part.=5.nvms_platform_params_part.=15.nvms_partition_table=16.nvms_fw_exec_part.=17.nvms_fw_update_part.=18.nvms_product_header_part.=19.nvms_image_header_part.=20./ **新定义的条目的新ID!* /nvms_custom_entry_part.=21.}nvms_partition_id_t.;
  1. 修改/sdk/config/partition_table.h.文件要包含用于选择新分区方案的另一个条件。它应该如下所示:
#f定义(use_partition_table_1mb_with_suota)#包括<1m / suota / partition_table.h>#elif定义(use_partition_table_4mb_with_suota)#包括<4m / suota / partition_table.h>#elif(dg_configenable_da1469x_aa_support == 1)#包括<1m / partition_table.h>#elif(use_my_custom_partition_table == 1)#包括<4m_custom_table / 4m_custom_table.h>#别的#包括<4m / partition_table.h>#万一
  1. config / custom_config_xxx.h.文件添加宏以选择新分区方案。
#define使用_my_custom_partition_table(1)
  1. 通过串行端口或JTAG接口擦除整个闪存内容。以下使用第二个选项。
    1. 运行脚本以通过JTAG删除闪存。
'闪存擦除脚本#1'

图6.选择Flash删除脚本

  1. 在显示的弹出窗口中单击是的。等待进程完成。
'闪存删除脚本#2'

图7.擦除闪光灯

警告

更改分区表时,必须删除旧的一个,以便才能考虑新的。

  1. 建立项目debug_qspi.或者Reford_QSPI.模式并将生成的图像刻录到芯片。

3.1.1。使用SmartSnippets Toolbox验证

  1. 打开SmartSnippets Toolbox的新实例并切换到QSPI分区表窗口(1)。
'配置SmartSnippet Toolbox#1'

图8.SmartSnippets Toolbox - 显示分区表区域

  1. 在里面分区表区域,点击连接(2)。显示旋转光标等待连接的设备重置。

  2. 按下按钮重启在Pro Devkit上重置设备。

  3. 等待光标停止旋转并单击(3)。

    显示所有分区条目。自定义定义的条目将显示为未知由于SmartSnippets工具箱无法识别它们的区域。

'SmartSnippets Toolbox,Partition表区域*'

图9.SmartSnippets工具箱,分区表区域

笔记

如果未显示或更新新分区表,请从主板的USB1端口插拔,然后插入USB电缆,请等待设备连接,然后再次执行步骤1 - 4。