你好对话框,
我正在使用Dialog SUOTA应用程序,试图通过无线方式上传我们软件的一个新版本。我可以下载新的软件到芯片和应用程序允许我重启设备,但重启后,我的代码不运行。我已经测试了通过USB通过UART直接上传到芯片的代码,它在地址0没有ble_suota_loader工作正常。修改dg_configIMAGE_FLASH_OFFSET为0x20000后,尝试使用SUOTA应用程序上传,它不能工作。以下是我正在采取的步骤:
1. cli_programmer.exe -i 57600-115200 com3 chip_erase_qspi
2.cli_program .exe -i 57600 -s 115200 COM3 write_qspi 0x0 E:/ble_suota_loader_2Mb.img .exe
3.我构建了我的自定义软件,它将输出到软件_0.1.0_debug_qspi.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模式的用户配置文件。
*
*版权所有(c)2015-2017对话半导体。雷竞技电竞平台
*此计算机程序包含机密、专有信息
*对话框半雷竞技电竞平台导体。版权所有。
*
****************************************************************************************
* /
的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)
#万一
#定义CONFIG_LSM6DS3 (1)
#define config_mpl3115a2(1)
#定义CONFIG_PCF85263A (1)
#定义dg_configPOWER_1V8P (1)
#定义dg_configTESTMODE_MEASURE_SLEEP_CURRENT (0)
#定义dg_configI2C_ADAPTER (1)
#define dg_configbattery_adapter(1)
#定义dg_configUSE_HW_TEMPSENS (1)
#定义dg_configUSE_HW_GPIO (1)
#define dg_configuse_hw_timer2(1)
#define dg_configuse_hw_i2c(1)
#定义dg_configUSE_HW_GPADC (1)
#define 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 min(单位:0.01s)
#define dg_configbattery_replenish_gap(8)// 0.01V
///////////////
#define config_use_ble.
# undef CONFIG_USE_FTDF
#define dg_configuse_lp_clk lp_clk_rcx.
#定义dg_configEXEC_MODE MODE_IS_CACHED
#define dg_configcode_location non_volatile_is_flash.
#定义dg_configEXT_CRYSTAL_FREQ EXT_CRYSTAL_IS_16M
#define dg_configimage_setup development_mode.
#定义dg_configEMULATE_OTP_COPY (0)
#define dg_configimage_flash_offset(0x20000)
#定义dg_configSUOTA_SUPPORT (1)
#define dg_configuser_can_use_timer1(0)
#define dg_configoptimal_retram(1)
#if(dg_configoptimal_retram == 1)
#if(dg_configblack_orca_ic_rev == black_orca_ic_rev_a)
#define dg_configmem_retention_mode(0x1b)
#定义dg_configSHUFFLING_MODE (0 x0)
#别的
#定义dg_configMEM_RETENTION_MODE (0 x07)
#定义dg_configSHUFFLING_MODE (0 x0)
#万一
#万一
#define dg_configuse_wdog(1)
#define dg_configflash_connected_to(flash_connected_to_1v8)
#define dg_configflash_power_down(0)
#定义dg_configPOWER_1V8_ACTIVE (1)
#define dg_configpower_1v8_sleep(1)
#define dg_configbattery_type(battery_type_custom)
#define dg_configBATTERY_CHARGE_VOLTAGE 0xA // 4.2V
#define 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 . //设置超时时间
#define dg_configuse_soc 0.
/*取消注释以启用State-of-Charge调试或性能测试*/
/ / #定义DEBUG_SOC
#f定义(debug_soc)
#定义CONFIG_RETARGET
#万一
// #define dg_configUSE_USB
#定义dg_configUSE_USB_CHARGER 1
#定义dg_configALLOW_CHARGING_NOT_ENUM 1
#定义dg_configUSE_NOT_ENUM_CHARGING_TIMEOUT 0
// #define 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)
/ *************************************************************************************************
*外围特定配置
* /
#define dg_configflash_adapter 1.
#定义dg_configNVMS_ADAPTER 1
#define dg_confignvms_ves 1
#定义dg_configNVPARAM_ADAPTER 1
#define dg_configgpadc_adapter 1.
#define defaultBLE_ATT_DB_CONFIGURATION (0x10) //设置外部首选连接参数
#define defaultble_ppcp_interval_min(ble_conn_interval_from_ms(500))// 500 ms
#define defaulble_ppcp_interval_max(ble_conn_interval_from_ms(750))// 750 ms
#define defaultble_ppcp_slave_latency(0)// 0事件
#define defaultBLE_PPCP_SUP_TIMEOUT (BLE_SUPERVISION_TMO_FROM_MS(6000)) // 6000毫秒
#define ble_max_misses_allowed(3)
#定义BLE_MAX_DELAYS_ALLOWED (3)
/ *使用动态列表BLE事件而不是Freertos队列* /
#define ble_mgr_use_evt_list(1)
/ *
* Suota Loader配置:
* - 仅在GATT上启用Suota,将Suota_version设置为任何版本> = suota_version_1_1
*并留下upota_psm未定义。
*—SUOTA_VERSION设置为任意版本>= SUOTA_VERSION_1_2
*并定义SUOTA_PSM以匹配所需的PSM。在这里是中心设备
*可以根据其偏好使用两者中的任何一种。
* /
#定义SUOTA_VERSION SUOTA_VERSION_1_3
#define suota_psm 0x81
#定义USE_PARTITION_TABLE_2MB_WITH_SUOTA
/ *************************************************************************************************
* freertos特定配置
* /
#define os_freertos / *定义它以使用freertos * /
#如果SUOTA_PSM
#定义SUOTA_HEAP_OVERHEAD (3200)
#别的
#定义SUOTA_HEAP_OVERHEAD (0)
#万一
#如果(dg_configUSE_SOC)
#f定义(debug_soc)
的ifndef RELEASE_BUILD
/ *调试SOC不应在发布构建中使用* /
#define configtotal_heap_size(12900 + suota_heap_overhead)/ *这是freertos total堆大小* /
#别的
#error "DEBUG SOC and SUOTA over L2CAP cannot be used together in release target "(在发布目标中不能同时使用DEBUG SOC和SUOTA)
#万一
#别的
#define configtotal_heap_size(11100 + suota_heap_overhead)/ *这是freertos total堆大小* /
#万一
#别的
#define configTOTAL_HEAP_SIZE (11000 + SUOTA_HEAP_OVERHEAD) /*这是FreeRTOS总堆大小*/
#万一
/ *************************************************************************************************
* BLE设备配置
* /
#定义dg_configBLE_CENTRAL (0)
#define dg_configble_gatt_client(0)
#定义dg_configBLE_OBSERVER (0)
#define dg_configble_broadcaster(0)
#ifndef suota_psm.
#定义dg_configBLE_L2CAP_COC (0)
#万一
/*包含bsp默认值*/
# include“bsp_defaults.h”
/ *包括内存布局* /
# include“bsp_memory_layout.h”
#endif /* CUSTOM_CONFIG_QSPI_SUOTA_H_ */
/ **
\}
\}
\}
* /
嗨alarner,
要诊断该问题,我建议首次尝试根据未配置的uota构建,基于未缓解的示例(例如,PXP报告器)来尝试构建图像并执行Suota更新,请参阅它是否有效,只是为了确认您是否正确执行所有内容。如果没有,请参阅软件开发人员指南(UM-B-056)的第9章以逐步验证您的操作。
然后,要让它发生在你的自定义项目中,请参考该文档的第10.2章,它展示了一个很好的配置示例,在现有项目中启用SUOTA。希望这对你的问题有所帮助。
布罗尔,
秦金阳
对于何时遇到此问题的任何人,违规配置是#define dg_configpower_1v8p(1)
我们相信,由于某种原因,当它脱离我们的固件时,启用1V8P,它会产生一个浪涌,导致铁路倾斜并进入棕色输出模式。要解决此问题,我们将#define dg_configpower_1v8p(1)从我们的固件从我们的固件传递到引导加载程序,现在一切都似乎工作。
嗨alarner,
很高兴你识上你的问题,谢谢你的迹象。
谢谢,PM_Dialog