QSPI图像大小大于508KB

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
ILXT001.
离线
最后一次露面:1年1个月前
加入:2017-06-29 10:36
QSPI图像大小大于508KB

嗨对话框,
我们使用使用DA14681 BLE进行了接收的项目,具有16MB QSPI Flash来存储代码和数据。由于Suota功能(成本128KB)和内部的巨大功能,分区表中定义的默认QSPI映像大小0x7f000(508k)是不够的,我们必须使其更大。以下是我修改的代码大小从0x5d000(372kb)增加到8d000(564k):

--------------------------------------------------------------------------
Partition2(0x000000,0x01e000,nvms_firmware_part,0)
Partition2(0x01e000,0x001000,nvms_product_header_part,0)
Partition2(0x01f000,0x001000,nvms_image_header_part,0)
Partition2(0x020000,0x05d000,nvms_fw_exec_part,0)
Partition2(0x07d000,0x002000,nvms_platform_params_part,partition_flag_read_only)
partition2(0x07f000,0x001000,nvms_partition_table,partition_flag_read_only)
Partition2(0x080000,0x010000,NVMS_PARAM_PART,0)
Partition2(0x090000,0x1d2000,nvms_log_part,0)
Partition2(0x262000,0x05e000,nvms_fw_update_part,0)
Partition2(0x2C0000,0xD40000,NVMS_GENERIC_PART,0)

---------------------------------------------------------------------------
Partition2(0x000000,0x01e000,nvms_firmware_part,0)
Partition2(0x01e000,0x001000,nvms_product_header_part,0)
Partition2(0x01f000,0x001000,nvms_image_header_part,0)
Partition2(0x020000,0x08d000,nvms_fw_exec_part,0)
partition2(0x0ad000,0x002000,nvms_platform_params_part,partition_flag_read_only)
partition2(0x0af000,0x001000,nvms_partition_table,partition_flag_read_only)
// nvms_param_part必须为64kb对齐
Partition2(0x0b0000,0x010000,nvms_param_part,0)
Partition2(0x0C0000,0x1d2000,nvms_log_part,0)
Partition2(0x292000,0x08e000,nvms_fw_update_part,0)
Partition2(0x320000,0xce0000,NVMS_GENERIC_PART,0)

-------------------------------------------------------------------------------
//#define partition_table_addr(0x080000 - (flash_sector_size))
#define partition_table_addr(0x0b0000 - (flash_sector_size))

---------------------------------------新cmd_handler.c:max_image_size --------------------------------
/ *图像的最大大小* /
//#define max_image_size 0x7f000
#define max_image_size 0xaf000.

----------------------------------新DLG_SUOTA.c:suota_max_image_size --------------------------------
#define suota_max_image_size(564 * 1024)

------------------------新码_Size-------------------------------
#define code_size(564 * 1024)

通过上面的更新,它看起来像QSPI图像大小支持大于508K和设备可以正常工作。以下是我的问题:
1. DA14681本身可以使用QSPI图像尺寸大于508KB吗?
2.如果Q1的答案是正的,则其他地方需要相应地更新,以支持图像尺寸大于508k。
3.通过我的修改,我可以确认单位现在正在运行,并且QSPI分区表是在每个分区表中定义的QSPI位置,但它无法在SmartSnippets工具箱(v4.8.3.1804)中获得任何内容,这是因为它分区表地址被假定为0x7f000?

提前致谢!
蒂姆林

设备:
PM_DIALOG.
离线
最后一次露面:5小时37分钟前
职员
加入:2018-02-08 11:03
嗨Ilxt001,

嗨Ilxt001,

1)您能够使用多达64MB的QSPI闪光灯,但只有32MB将可缓存。其他32MB只能用于数据而不是固件。正如我在您发布的代码中所看到的,您对Partition2宏有一个误解。宏的第一个属性用于物理内存地址的开始,第二属性是大小。Partition2宏被定义为:Partition2(开始,大小,ID,标志)

2)Partition_Table_Addr应始终指向NVMS_PARTITION_TABLE。Flash Image位于NVMS_Firmware_Part中,此分区应至少为128KB。缓存内存中有一个错误,默认情况下,nvms_firmware_part分区的大小为0x020000(128kb)。此外,默认情况下,1μ/ partition_table.h被激活。你如何进行更改?如果将更改变为1μ/ partition_table.h,则不必进行任何其他更改。建议您制作自己的分区表并将其包含在不同的文件中,以相同的方式包含1μ/ partition_table.h。SDK提供3个不同的隔板方案(1M,2M,512K)

3)预计SmartSnippets工具箱无法使用修改获取QSPI闪存分区,因为分区表是由0x7F00物理地址中的工具配置的默认值。因此,建议不要更改分区表物理地址并更改其他分区。如果您不更改分区表物理地址,则该工具无法正常工作,您将无法看到分区。

谢谢,PM_DIALOG.

ILXT001.
离线
最后一次露面:1年1个月前
加入:2017-06-29 10:36
嗨pm_dialog,

嗨pm_dialog,
首先,感谢您的快速回复。
1)是的,我知道Partition2宏被定义为:Partition2(开始,大小,ID,标志)和我的新分区表也是相应组织的。请点击我的新分区表或其他地方有什么问题吗?谢谢。

2)nvms_partition_table位于从0xAF000开始的新分区表,Partition_table_addr定义为(0x0b0000 - (flash_sector_size))(这是计算Partition_table_addr而不是flash_partitions中的直接0xaf000的原始方法,其中flash_sector_size为0x1000,即partition_table_addr等于0xAF000。因此,partition_table_addr确实指向nvms_partition_table。

3)我们的设备具有Suota功能,因此BLE Suota Image在Suota类型分区中使用QSPI中的第一个128KB空间,即0〜128KB空间的分区设置不变。nvms_firmware_part被设置为partition2(0x000000,0x01e000,nvms_firmware_part,0)默认。

4)我们在sdk / bsp / config / 16m / suota / partition_table中添加了自己的分区表.h,这个文件将在/sdk/adapters/include/partition_table中包含在project中,抱歉我没有提到我们已经做出了这种变化。
#if定义(use_partition_table_16mb)
#include <16m / partition_table.h>
#elif定义(use_partition_table_16mb_with_suota)
#include <16m / suota / partition_table.h>

5)我希望在0x7f000〜0x7ffff的空间保持nvms_partition_table,但实际上我不能。QSPI空间0〜128KB由BLE Sutoa代码使用,我们的应用程序(固件和代码相关数据)从0x20000开始,如果nvms_partition_table位于0x7f000,则最大大小可以留给固件(0x7f000 - 0x2000 - 0x20000 = 0x5d000,372KB)。这一事实使我们没有机会,但是向后移动nvms_partition_table。虽然在SmartSnippets Toolbox中无法获得QSPI分区表信息(V4.8.3.1804),但我会看到它们在QSPI闪存0xAF000处,如Partition_Table.h中定义的。如果固件内没有其他功能问题,我觉得我对我没关系。

谢谢/蒂姆

PM_DIALOG.
离线
最后一次露面:5小时37分钟前
职员
加入:2018-02-08 11:03
嗨Ilxt001,

嗨Ilxt001,

如果您对修改的分区表有任何问题,请您告诉我吗?如果是的话,你有哪些问题?

谢谢,PM_DIALOG.