如何更改条目。将NVMS_GENERIC_PART的值标记为零(不使用VES。ad_nvms_direct_……)。

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
8个职位/ 0个新职位
最后发表
rlaxogjs90
离线
最后看到:1年5个月前
加入:2017-04-04 10:04
如何更改条目。将NVMS_GENERIC_PART的值标记为零(不使用VES。ad_nvms_direct_……)。

相关问题
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。

你好,我有一个问题与nvms适配器,并不能解决它。

我使用了proximity_reporter示例,使用了带有8m位DA14680芯片的suota。(SDK ver1.0.12.1078)
“并且尝试使用NVMS_GENERIC_PART而不使用VES。”
我阅读了闪存适配器手册,试图改变分区,但得到了相同的结果。NVMS_GENERIC_PART - >条目。国旗:2(大)

下面是我在custom_config_qspi_suota.h中的项目定义。

#定义dg_configFLASH_ADAPTER 1
#定义dg_configNVMS_ADAPTER 1
#定义dg_configNVMS_VES 0
#定义dg_configNVPARAM_ADAPTER 1

我删除了所有partition_table.h文件,除了my_partition_table.h文件,以防万一。

下面是my_partition_table.h文件。
分区2(0x000000, 0x01E000, NVMS_FIRMWARE_PART, 0)
分区2(0x01E000, 0x001000, NVMS_PRODUCT_HEADER_PART, 0)
分区2(0x01F000, 0x001000, NVMS_IMAGE_HEADER_PART, 0)
分区2(0x020000, 0x050000, NVMS_FW_EXEC_PART, 0)
分区2(0x070000, 0x00D000, NVMS_LOG_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)
分区2(0x090000, 0x051000, NVMS_FW_UPDATE_PART, 0)
PARTITION2(0x0E1000, 0x01F000, NVMS_GENERIC_PART, 0)

我在ad_nvms_init()中打印了一些日志以进行一些检查。
空白ad_nvms_init (void) {
.....
{做
Ad_flash_read (flash_addr, (uint8_t *) &entry, sizeof(partition_entry_t));
如果条目。type != 0xFF &&条目。输入!= 0 &&条目。magic == PARTITION_ENTRY_MAGIC &&
条目。valid == 0xFF) {
printf("条目。类型:% d,条目。国旗:% d \ r \ n”条目。类型,entry.flags);
如果条目。标志= = 2){
条目。旗帜= 0;

add_partition_entry(入口);

flash_addr + =运算符(partition_entry_t);
}(条目。类型! = 0 xff);
#如果CONFIG_PARTITION_TABLE_CREATE
if (partitions == NULL) {
printf (" ad_nvms_init > > init_default_partitions \ r \ n”);
init_default_partitions ();
其他}{
Printf ("ad_nvms_init >> partis2: %d\r\n",分区);

# endif
.....

在执行"erase_qspi_jtag_win"然后"suota_initial_flash_jtag_win"之后,我得到了这个日志。
条目。类型:1、条目。国旗:0
条目。类型:19岁的条目。国旗:0
条目。类型:20岁的条目。国旗:0
条目。类型:17岁的条目。国旗:0
条目。类型:4项。国旗:0
条目。类型:15日条目。国旗:1
条目。类型:16日条目。国旗:1
条目。类型:2项。国旗:0
条目。类型:18岁的条目。国旗:0
条目。类型:5项。国旗:2<- expected to be entry.flag: 0(where entry.type: 5 is NVMS_GENERIC_PART)

我检查了整个flash被擦除执行erase_qspi_jtag_win smartsnippets工具箱。
但总是得到相同的日志,看起来有一个分区信息留在闪存。
当然,也不会调用init_default_partitions()函数,因为变量“partitions”不是NULL。

此外,我没有调用ad_nvms_init()函数。它似乎是由BLE NVPARAM适配器调用的。

因此,在总结。我想使用NVMS_GENERIC_PART而不是使用VES(”条目。国旗= 0”)。
如果可能的话,我希望将整个NVMS_GENERIC_PART更改为我自己的分区。比如,NVMS_MY_CUSTOM_PART。(实际上,我试图更改分区名称和标志值。但失败了。没有错过执行“erase_qspi_jtag_win”)
但是如果不可能,那么也许我应该将NVMS_GENERIC_PART扇区大小更改为0x01000,并将其余扇区使用为NVMS_MY_CUSTOM_PART。

还有其他办法解决这个问题吗?

谢谢你!

设备:
PM_Dialog
离线
最后看到:2天23小时前
工作人员
加入:2018-02-08 11:03
嗨rlaxogjs90,

嗨rlaxogjs90,

感谢你创建了一个新的论坛帖子。SDK将NVMS_GENERIC_PART分区作为VES分区处理。原因是这个分区用于写入不断重新加载的数据,因此这种机制增加了flash的生命周期。不过,您可以绕过这个分区并添加您自己的分区,而不需要使用VES。由于您使用的是NVMS_GENERIC_PART名称,因此分区应该配置为VES。您能按照您在上一篇帖子中所描述的步骤来添加您的自定义分区吗?然后请上传带有NVMS_MY_CUSTOM_PAR分区的分区表。

谢谢,PM_Dialog

rlaxogjs90
离线
最后看到:1年5个月前
加入:2017-04-04 10:04
嗨PM_Dialog。你的意思是

嗨PM_Dialog。你的意思是我应该修改my_partition_table.h文件的PARTITION NAME吗?

如果是对的,我只是按照我以前做过的程序,没有任何改变。

my_partition_table.h
分区2(0x000000, 0x01E000, NVMS_FIRMWARE_PART, 0)
分区2(0x01E000, 0x001000, NVMS_PRODUCT_HEADER_PART, 0)
分区2(0x01F000, 0x001000, NVMS_IMAGE_HEADER_PART, 0)
分区2(0x020000, 0x050000, NVMS_FW_EXEC_PART, 0)
分区2(0x070000, 0x00D000, NVMS_LOG_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)
分区2(0x090000, 0x051000, NVMS_FW_UPDATE_PART, 0)
PARTITION2(0x0E1000, 0x01F000, NVMS_USER_PARAM_PART, 0) <-添加自定义分区表名。

partition_def.h
typedef enum {
NVMS_FIRMWARE_PART = 1,
NVMS_PARAM_PART = 2,
NVMS_BIN_PART = 3,
NVMS_LOG_PART = 4,
//NVMS_GENERIC_PART = 5, <-阻止这行只是以防万一。
NVMS_USER_PARAM_PART = 6,
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,

} nvms_partition_id_t;

并遵循以下程序。
project -> clean, build DA14681-01-Release_QSPI_SUOTA,执行erase_qspi_jtag_win,执行suota_initial_flash_jtag_win。

结果,我得到了和以前一样的日志。可以找到NVMS_GENERIC_PART(entry。type: 5)而不是NVMS_USER_PARAM_PART(entry。类型:6)。

日志
条目。类型:1、条目。国旗:0
条目。类型:19岁的条目。国旗:0
条目。类型:20岁的条目。国旗:0
条目。类型:17岁的条目。国旗:0
条目。类型:4项。国旗:0
条目。类型:15日条目。国旗:1
条目。类型:16日条目。国旗:1
条目。类型:2项。国旗:0
条目。类型:18岁的条目。国旗:0
条目。类型:5项。国旗:2

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

我也试过这个。通过SmartSnippets工具箱读取分区表,并导出NVMS_PARTITION_TABLE数据。
更改导出的文件(条目)。类型:5项。国旗:2to entry.type: 5, entry.flag: 0) and then save.
(地址:0x7F090, EA 05 FF "02" E1 00 1F 00改为EA 05 FF "00" E1 00 1F 00)
擦除NVMS_PARTITION_TABLE部分,然后刻存更改后的导出文件。

通过这个过程,一切似乎都没问题,但是通过运行suota_initial_flash_jtag_win,条目。类型:5返回entry。国旗:2。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

任何更多的建议吗?

谢谢您的快速回复!

PM_Dialog
离线
最后看到:2天23小时前
工作人员
加入:2018-02-08 11:03
嗨rlaxogjs90,

嗨rlaxogjs90,

您能否按照3.1.1使用的SmartSnippets工具箱进行验证的步骤进行操作Flash适配器概念(HTML)教程中为了添加一个自定义分区表?请尝试一下,然后告诉我。

谢谢,PM_Dialog

rlaxogjs90
离线
最后看到:1年5个月前
加入:2017-04-04 10:04
嗨PM_Dialog。

嗨PM_Dialog。

因为我的开发工具包很短,使用我的自定义板是遵循教程的唯一方法(使用jtag接口)。
我按照教程使用了proximity_reporter suota示例,但是添加或更改分区表失败了。
好吧,我的程序和教程的区别是suota/非suota的例子和devkit/自定义板。

这对使用NVMS有什么问题吗?

谢谢你!

PM_Dialog
离线
最后看到:2天23小时前
工作人员
加入:2018-02-08 11:03
嗨laxogjs90,

嗨laxogjs90,

本教程演示了非suota应用程序的分区。亚博国际官网平台网址你能把你在项目中使用的所有配置发给我吗?

谢谢,PM_Dialog

rlaxogjs90
离线
最后看到:1年5个月前
加入:2017-04-04 10:04
嗨PM_Dialog。

嗨PM_Dialog。

我将粘贴custom_config_qspi_suota.h文件。

谢谢你!

/**
****************************************************************************************

* @file custom_config_qspi_suota.h

* @brief板支持包。缓存QSPI模式的用户配置文件。

*版权所有(C) 2015 Dialog yabo国际娱乐Semiconductor。
*本计算机程序包括机密、专有信息
对话半导体yabo国际娱乐的*。保留所有权利。

****************************************************************************************
*/

的ifndef CUSTOM_CONFIG_QSPI_SUOTA_H_
#定义CUSTOM_CONFIG_QSPI_SUOTA_H_

# include“bsp_definitions.h”

#定义CONFIG_USE_BLE
# undef CONFIG_USE_FTDF
#定义CONFIG_RETARGET

#定义dg_configUSE_LP_CLK LP_CLK_RCX / / LP_CLK_32768
#定义dg_configEXEC_MODE MODE_IS_CACHED
#定义dg_configCODE_LOCATION NON_VOLATILE_IS_FLASH
#定义dg_configEXT_CRYSTAL_FREQ EXT_CRYSTAL_IS_16M

#定义dg_configIMAGE_SETUP DEVELOPMENT_MODE
#定义dg_configEMULATE_OTP_COPY (0)

#定义dg_configIMAGE_FLASH_OFFSET (0 x20000)
#定义dg_configSUOTA_SUPPORT (1)

#定义dg_configUSER_CAN_USE_TIMER1 (0)

#定义dg_configOPTIMAL_RETRAM (1)

#if (dg_configOPTIMAL_RETRAM == 1) / /设置路径
# dg_configBLACK_ORCA_IC_REV == BLACK_ORCA_IC_REV_A
#定义dg_configMEM_RETENTION_MODE (0 x1b)
#定义dg_configSHUFFLING_MODE (0 x0)
其他#
#定义dg_configMEM_RETENTION_MODE (0 x07)
#定义dg_configSHUFFLING_MODE (0 x0)
# endif
# endif

#定义dg_configUSE_WDOG (1)

#定义dg_configFLASH_CONNECTED_TO (FLASH_CONNECTED_TO_1V8)
#定义dg_configFLASH_POWER_DOWN (0)

#定义dg_configPOWER_1V8_ACTIVE (1)
#定义dg_configPOWER_1V8_SLEEP (1)

#定义dg_configBATTERY_TYPE (BATTERY_TYPE_CUSTOM)
#define dg_configBATTERY_CHARGE_VOLTAGE 0xA // 4.2V . define dg_configBATTERY_CHARGE_VOLTAGE
#定义dg_configBATTERY_TYPE_CUSTOM_ADC_VOLTAGE (3475) / / (3439)
//定义dg_configBATTERY_LOW_LEVEL (2457) //
#define dg_configPRECHARGING_THRESHOLD (2462) // 3.006V . define dg_configPRECHARGING_THRESHOLD (2462) //
#define dg_configCHARGING_THRESHOLD (2498) // 3.05V . define dg_configCHARGING_THRESHOLD (2498) //
#define dg_configBATTERY_CHARGE_CURRENT 13 // 60mA
#define dg_configBATTERY_PRECHARGE_CURRENT 29 // 2.1mA
#define dg_configBATTERY_CHARGE_NTC 1 //禁用
#define dg_configPRECHARGING_TIMEOUT (30 * 60 * 100) // N x 10msec . // dg_configPRECHARGING_TIMEOUT (30 * 60 * 100

#定义dg_configUSE_SOC 1
/*取消注释下面的行,以启用状态控制调试或性能测试*/
/ / #定义DEBUG_SOC
#如果定义(DEBUG_SOC)
#定义CONFIG_RETARGET
# endif

#定义dg_configUSE_USB 1
#定义dg_configUSE_USB_CHARGER 1
#定义dg_configALLOW_CHARGING_NOT_ENUM 1
#定义dg_configUSE_NOT_ENUM_CHARGING_TIMEOUT 0

#定义dg_configUSE_ProDK (1)

#定义dg_configUSE_SW_CURSOR (1)

定义dg_configCACHEABLE_QSPI_AREA_LEN (NVMS_PARAM_PART_start - MEMORY_QSPIF_BASE)

/*************************************************************************************************\
*内存配置
*/
#define dg_configQSPI_CACHED_OPTIMAL_RETRAM_0_SIZE_AE (64 * 1024)
#define dg_configQSPI_CACHED_RAM_SIZE_AE (32 * 1024)
#define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE (96 * 1024) #define dg_configQSPI_CACHED_RETRAM_0_SIZE_AE

/*************************************************************************************************\
*外围设备的具体配置
*/
#定义dg_configFLASH_ADAPTER 1
#定义dg_configNVMS_ADAPTER 1
#定义dg_configNVMS_VES 0
#定义dg_configNVPARAM_ADAPTER 1

/ / # define dg_configDISABLE_BACKGROUND_FLASH_OPS 1

#定义dg_configGPADC_ADAPTER 1

#定义dg_configUSE_HW_I2C 1
#定义dg_configUSE_HW_QUAD 1
#定义dg_configUSE_HW_SPI 1
#定义dg_configUSE_HW_TIMER0 1
#定义dg_configUSE_HW_TIMER2 1

#定义dg_configI2C_ADAPTER 1
#定义dg_configSPI_ADAPTER 1

#define defaultBLE_ATT_DB_CONFIGURATION (0x10) // with "外围首选连接参数"
#define defaultBLE_PPCP_INTERVAL_MIN (BLE_CONN_INTERVAL_FROM_MS(500)) //默认值
#define defaultBLE_PPCP_INTERVAL_MAX (BLE_CONN_INTERVAL_FROM_MS(750)) // 750毫秒
#define defaultBLE_PPCP_SLAVE_LATENCY(0) // 0事件
#define defaultBLE_PPCP_SUP_TIMEOUT (BLE_SUPERVISION_TMO_FROM_MS(6000)) //

#定义BLE_MAX_MISSES_ALLOWED (3)
#定义BLE_MAX_DELAYS_ALLOWED (3)

/*为BLE事件使用动态列表代替FreeRTOS队列*/
#定义BLE_MGR_USE_EVT_LIST (1)

/*
* SUOTA加载器配置:
* -只支持GATT的SUOTA,设置SUOTA_VERSION为任意版本>= SUOTA_VERSION_1_1
*且未定义SUOTA_PSM。
*—通过GATT和L2CAP CoC开启SUOTA功能,设置“SUOTA_VERSION”为任意版本>= SUOTA_VERSION_1_2
*并定义SUOTA_PSM以匹配所需的PSM。在这里是中心设备
*可以根据自己的喜好使用两者中的任何一个。
*/
#定义SUOTA_VERSION SUOTA_VERSION_1_3
#定义x81 SUOTA_PSM 0

/ / #定义USE_PARTITION_TABLE_1MB_WITH_SUOTA
#定义USE_MY_PARTITION_TABLE

/*************************************************************************************************\
* FreeRTOS的配置
*/
#define OS_FREERTOS /*使用FreeRTOS */

#如果SUOTA_PSM
#定义SUOTA_HEAP_OVERHEAD (3200)
其他#
#定义SUOTA_HEAP_OVERHEAD (0)
# endif

#如果(dg_configUSE_SOC)
#如果定义(DEBUG_SOC)
的ifndef RELEASE_BUILD
/* DEBUG SOC不应该在发布版本中使用*/
#define configTOTAL_HEAP_SIZE (12900 + SUOTA_HEAP_OVERHEAD) /*这是FreeRTOS的总堆大小*/
其他#
#error "DEBUG SOC和SUOTA over L2CAP不能在发布目标中一起使用"
# endif
其他#
#define configTOTAL_HEAP_SIZE (11100 + SUOTA_HEAP_OVERHEAD) /*这是FreeRTOS的总堆大小*/
# endif
其他#
#define configTOTAL_HEAP_SIZE (11000 + SUOTA_HEAP_OVERHEAD) /*这是FreeRTOS的总堆大小*/
# endif

/*************************************************************************************************\
* BLE设备配置
*/
#定义dg_configBLE_CENTRAL (0)
#定义dg_configBLE_GATT_CLIENT (0)
#定义dg_configBLE_OBSERVER (0)
#定义dg_configBLE_BROADCASTER (0)
的ifndef SUOTA_PSM
#定义dg_configBLE_L2CAP_COC (0)
# endif

/*包含bsp的默认值*/
# include“bsp_defaults.h”
/*包含内存布局*/
# include“bsp_memory_layout.h”
#endif /* CUSTOM_CONFIG_QSPI_SUOTA_H_ */

PM_Dialog
离线
最后看到:2天23小时前
工作人员
加入:2018-02-08 11:03
嗨rlaxogjs90。

嗨rlaxogjs90。

感谢您提供的配置。让我查一下,我会尽快给你答复。

谢谢,

PM_Dialog