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)启用且完美地配合。有关已使用的闪存的更多信息,请阅读其数据表。
| 标签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.文件。
警告
- 分区条目的大小应该是扇区大小的多个,4 KB.在我们的情况下(这是特定于设备的信息)。
- 建议不要更改默认位置
nvms_partition_table。但是,如果更改位置,则应声明起始地址/sdk/adapters/include/flash_partitions.h.文件,如下图所示:#定义partition_table_addr.nvms_partition_table_start.
- 在目标设备和PC之间建立连接USB1.Pro Devkit的港口。
- 进口然后制作副本freertos_retarget.在DA1469x系列设备的SDK中找到的示例代码。
笔记
重要的是导入名为的文件夹python_scripts.执行诸如建筑物,调试,下载之类的各种操作。
- 在目标应用程序中,创建一个新文件夹以及项目下的标题文件
/ sdk / config /文件夹。它应该如下所示:
- 在新创建的文件中,添加以下代码来定义新分区方案:
#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_table那partition_flag_read_only)
- 在
/sdk/adapters/include/partition_def.h.文件,修改nvms_partition_id_t.枚举为新定义的条目添加新ID。可能的修改如下:
/ *** \简短的NVMS分区ID* /typedef.枚举{nvms_firmware_part.=1那nvms_param_part.=2那nvms_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.;
- 修改
/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>#万一
- 在
config / custom_config_xxx.h.文件添加宏以选择新分区方案。
#define使用_my_custom_partition_table(1)
- 通过串行端口或JTAG接口擦除整个闪存内容。以下使用第二个选项。
- 运行脚本以通过JTAG删除闪存。
- 在显示的弹出窗口中单击是的。等待进程完成。
警告
更改分区表时,必须删除旧的一个,以便才能考虑新的。
- 建立项目debug_qspi.或者Reford_QSPI.模式并将生成的图像刻录到芯片。
3.1.1。使用SmartSnippets Toolbox验证¶
- 打开SmartSnippets Toolbox的新实例并切换到QSPI分区表窗口(1)。
在里面分区表区域,点击连接(2)。显示旋转光标等待连接的设备重置。
按下按钮重启在Pro Devkit上重置设备。
等待光标停止旋转并单击读(3)。
显示所有分区条目。自定义定义的条目将显示为未知由于SmartSnippets工具箱无法识别它们的区域。
笔记
如果未显示或更新新分区表,请从主板的USB1端口插拔,然后插入USB电缆,请等待设备连接,然后再次执行步骤1 - 4。






