上传后SUOTA不工作

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
alarner
离线
最后看到:1个月4个星期前
加入:2017-05-27 02:11
上传后SUOTA不工作

你好,对话框,
我正在使用Dialog SUOTA应用程序来尝试通过广播上传我们的软件的新版本。我可以将新软件下载到芯片上,应用程序允许我重新启动设备,但重新启动后,我的代码就不能运行了。我已经测试了代码,通过UART通过USB直接上载到芯片,它在地址0没有ble_suota_loader工作良好。img,但在将dg_configIMAGE_FLASH_OFFSET更改为0x20000并尝试使用SUOTA应用程序上传后,它无法工作。以下是我正在采取的步骤:

1.COM3 chip_erase_qspi .exe -i 57600 -s 115200 COM3 chip_erase_qspi .exe
2.cli_programer .exe -i 57600 -s 115200 COM3 write_qspi 0x0 E:/ble_suota_loader_2Mb.img .exe
3.我构建了我的定制软件,并将其输出到software_0.1.0_debug_qspi.bin
4.执行mkimage.bat software_0.1.0_debug_qspi.bin software.img命令
5.我上传软件。img到我的手机,并把它放在Suota文件夹。
6.我使用Dialog SUOTA应用程序通过蓝牙连接到芯片上
7.我选择软件。Img文件上传到芯片上。我按下按钮重新启动芯片。
8.芯片不再做任何广告。没有任何输出。

我做错了什么会导致这种行为?我可以采取什么步骤来诊断这个问题?下面是我正在使用的配置设置:


/**
\ addtogroup BSP
\ {
\ addtogroup配置
\ {
\ addtogroup定制
\ {
*/

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

* @file custom_config_qspi_suota.h

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

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

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

的ifndef CUSTOM_CONFIG_QSPI_SUOTA_H_
#定义CUSTOM_CONFIG_QSPI_SUOTA_H_

# include“bsp_definitions.h”

# ifdef调试
#定义CONFIG_RETARGET
#定义CONFIG_RETARGET_UART HW_UART1

#定义dg_configTRACK_OS_HEAP (1)
# endif

#定义CONFIG_LSM6DS3 (1)
#定义CONFIG_MPL3115A2 (1)
#定义CONFIG_PCF85263A (1)
#定义dg_configPOWER_1V8P (1)
#定义dg_configTESTMODE_MEASURE_SLEEP_CURRENT (0)
#定义dg_configI2C_ADAPTER (1)
#定义dg_configBATTERY_ADAPTER (1)
#定义dg_configUSE_HW_TEMPSENS (1)
#定义dg_configUSE_HW_GPIO (1)
#定义dg_configUSE_HW_TIMER2 (1)
#定义dg_configUSE_HW_I2C (1)
#定义dg_configUSE_HW_GPADC (1)
#定义dg_configUSE_HW_UART (1)
#定义dg_configUART_ADAPTER (1)
#定义dg_configUSE_USB_ENUMERATION (1)
#define dg_configCHARGING_CC_TIMEOUT (360 * 60 * 100)
#define dg_configCHARGING_CV_TIMEOUT (720 * 60 * 100)
#define dg_configUSB_CHARGER_POLLING_INTERVAL(60 * 100) // 1分钟(单位:0.01s)
#define dg_configBATTERY_REPLENISH_GAP(8) //配置电池

//////////////

#定义CONFIG_USE_BLE
# undef CONFIG_USE_FTDF

#定义dg_configUSE_LP_CLK LP_CLK_RCX
#定义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 (3440)
#define dg_configBATTERY_LOW_LEVEL (2496) // 3V
#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 8 // 180mA(见lib/sdk/bsp/system/sys_man/sys_charger.c:115)
#define dg_configBATTERY_PRECHARGE_CURRENT 3 // 45mA
#define dg_configBATTERY_CHARGE_NTC 1 //禁用
#define dg_configPRECHARGING_TIMEOUT (60 * 60 * 100) // N x 10msec . // dg_configPRECHARGING_TIMEOUT (60 * 60 * 100

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

//定义dg_configUSE_USB
#定义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 1
#定义dg_configNVPARAM_ADAPTER 1
#定义dg_configGPADC_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_2MB_WITH_SUOTA

/*************************************************************************************************\
* 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_ */

/**
\}
\}
\}
*/

设备:
Qinjiny_Dialog
离线
最后看到:1个月2天前
工作人员
加入:2016-11-01 05:47
嗨Alarner,

嗨Alarner,

要诊断这个问题,我建议首先尝试构建映像并基于未接触过的示例(例如。pxp报告)使用预先配置的SUOTA构建,看看它是否工作,只是为了确保你做的一切都正确。如果没有,请参考软件开发者指南(UM-B-056)第9章逐步验证您的操作。

然后,要使它在您的自定义项目上发生,请参考同一文档的第10.2章,其中展示了一个在现有项目上启用SUOTA的配置示例。希望这对你的问题有所帮助。

BR,

Qinjin杨

alarner
离线
最后看到:1个月4个星期前
加入:2017-05-27 02:11
对于其他任何人来说

对于遇到这个问题的其他任何人,讨厌的配置是#define dg_configPOWER_1V8P (1)

我们相信,由于某些原因,当它切换到我们的固件启动时,启用1V8P,它会产生一个波动,导致轨道下降,进入电力耗尽模式。为了解决这个问题,我们将#define dg_configPOWER_1V8P(1)配置从固件移动到引导加载程序,现在一切似乎都工作了。

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

嗨alarner,

很高兴你把问题解决了,谢谢你的提示。

谢谢,PM_Dialog