你好,对话框,
我正在使用Dialog SUOTA应用程序,试图通过无线方式上传我们软件的一个新版本。我可以下载新的软件到芯片和应用程序允许我重启设备,但重启后,我的代码不运行。我已经测试了通过USB通过UART直接上传到芯片的代码,它在地址0没有ble_suota_loader工作正常。修改dg_configIMAGE_FLASH_OFFSET为0x20000后,尝试使用SUOTA应用程序上传,它不能工作。以下是我正在采取的步骤:
1.cli_program .exe -i 57600 -s 115200 COM3 chip_erase_qspi .exe
2.cli_program .exe -i 57600 -s 115200 COM3 write_qspi 0x0 E:/ble_suota_loader_2Mb.img .exe
3.我构建了我的定制软件,它的输出到software_0.1.0 _debug_qspii .bin
4.运行mkimage.bat software_0.1.0_debug_qspi.bin software.img
5.我上传软件。img到我的手机,并把它放在Suota文件夹。
6.我通过蓝牙使用对话SUOTA应用程序连接到芯片
7.我选择软件。Img文件,上传到芯片上。它似乎工作,我按下按钮重启芯片。
8.芯片不再宣传任何东西。没有任何类型的输出。
我做错了什么会导致这种行为?我能采取什么步骤来诊断这个问题吗?下面是我正在使用的配置设置:
/ * *
\ addtogroup BSP
\ {
\ addtogroup配置
\ {
\ addtogroup定制
\ {
*/
/ * *
****************************************************************************************
*
* @file custom_config_qspi_suota.h
*
* @brief董事会支持包。缓存QSPI模式的用户配置文件。
*
Copyright (C) 2015-2017 Di雷竞技电竞平台alog Semiconductor。
*此计算机程序包含机密、专有信息
对话半导体雷竞技电竞平台的*。保留所有权利。
*
****************************************************************************************
*/
的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.01秒)
#define dg_configbattery_replace(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_ream == 1) / /输入参数
#if (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
#定义dg_configBATTERY_TYPE_CUSTOM_ADC_VOLTAGE (3440)
#define dg_configBATTERY_LOW_LEVEL (2496) // 3V
#define dg_configPRECHARGING_THRESHOLD (2462) // 3.006V .设置阈值
#define dg_configCHARGING_THRESHOLD (2498) // 3.05V
#define dg_configBATTERY_CHARGE_CURRENT 8 // 180mA(见lib/sdk/bsp/system/sys_man/sys_charger.c:115)
#define dg_configBATTERY_PRECHARGE_CURRENT 3 // 45mA .定义dg_configBATTERY_PRECHARGE_CURRENT 3 // 45mA
#define dg_configBATTERY_CHARGE_NTC 1 //禁用
#define dg_configPRECHARGING_TIMEOUT (60 * 60 * 100) // N x 10msec . //设置超时时间
#定义dg_configUSE_SOC 0
/*取消注释以启用State-of-Charge调试或性能测试*/
/ / #定义DEBUG_SOC
#如果定义(DEBUG_SOC)
#定义CONFIG_RETARGET
# endif
// #define 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)
#define 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)
/*************************************************************************************************\
*外设特定配置
*/
#定义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) //设置外部首选连接参数
#define defaultBLE_PPCP_INTERVAL_MIN (BLE_CONN_INTERVAL_FROM_MS(500)) //设置间隔时间
#define defaultBLE_PPCP_INTERVAL_MAX (BLE_CONN_INTERVAL_FROM_MS(750)) //设置间隔时间
#define defaultBLE_PPCP_SLAVE_LATENCY (0) // 0 events
#define defaultBLE_PPCP_SUP_TIMEOUT (BLE_SUPERVISION_TMO_FROM_MS(6000)) // 6000毫秒
#定义BLE_MAX_MISSES_ALLOWED (3)
#定义BLE_MAX_DELAYS_ALLOWED (3)
/*使用动态列表的BLE事件,而不是FreeRTOS队列*/
#定义BLE_MGR_USE_EVT_LIST (1)
/*
* SUOTA加载器配置:
* - SUOTA_VERSION设置为任意版本>= SUOTA_VERSION_1_1
*并保留SUOTA_PSM未定义。
*—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 and SUOTA over L2CAP cannot be used together in release target "(在发布目标中不能同时使用DEBUG SOC和SUOTA)
# 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_ */
/ * *
\}
\}
\}
*/
嗨Alarner,
要诊断这个问题,我建议首先尝试构建映像并基于未触及的示例执行SUOTA更新(例如。pxp reporter)使用预先配置的SUOTA构建,看看它是否工作,只是为了确保你做的一切都正确。如果没有,请参考软件开发人员指南(UM-B-056)第9章,逐步验证您的操作。
然后,要让它发生在你的自定义项目中,请参考该文档的第10.2章,它展示了一个很好的配置示例,在现有项目中启用SUOTA。希望这对你的问题有所帮助。
BR,
Qinjin杨
对于任何遇到这个问题的人来说,错误的配置是#define dg_configPOWER_1V8P (1)
我们认为,出于某种原因,当它将启动移交给我们的固件,启用1V8P,它会产生一个激增,导致轨道下降,进入断电模式。为了解决这个问题,我们将#define dg_configPOWER_1V8P(1)配置从我们的固件移动到引导加载程序,现在一切似乎都工作了。
嗨alarner,
很高兴你解决了你的问题,谢谢你的提示。
谢谢,PM_Dialog