你好对话框,
我正在使用Dialog SUOTA应用程序尝试通过无线上传我们软件的新版本。我可以下载新的软件到芯片和应用程序允许我重新启动设备,但在重新启动后,我的代码不运行。我已经测试了通过UART上的USB直接上传到芯片的代码,它在地址0没有ble\u suota\u loader.img的情况下工作正常,但是在将dg\u configIMAGE\u FLASH\u OFFSET更改为0x20000并尝试使用suota应用程序上传后,它就不工作了。以下是我要采取的步骤:
1. cli_programmer.exe -i 57600-115200 com3 chip_erase_qspi
2.cli\u programmer.exe-i 57600-s 115200 COM3 write\u qspi 0x0 E:/ble\u suota\u loader\u 2Mb.img
3.我构建了我的自定义软件,它将输出到软件_0.1.0_debug_qspi.bin
4.我运行mkimage.bat software\u 0.1.0\u debug\u qspi.bin software.img
5.我把software.img上传到手机,放在Suota文件夹里。
6.我使用对话框Suota应用程序将蓝牙连接到芯片
7.我选择software.img文件并上传到芯片。它似乎工作,我按下按钮重新启动芯片。
8.芯片不再做任何广告。没有任何形式的输出。
我做错了什么会导致这种行为?我可以采取什么步骤来诊断这个问题?以下是我正在使用的配置设置:
/ **
\ AddTogroup BSP.
\ {
\addtogroup配置
\ {
\addtogroup自定义
\ {
* /
/ **
****************************************************************************************
*
* @file custom_config_qspi_suota.h.
*
*@brief-Board支持包。缓存QSPI模式的用户配置文件。
*
*版权所有(c)2015-2017对话半导体。雷竞技电竞平台
*此计算机程序包含机密、专有信息
*对话框半雷竞技电竞平台导体。版权所有。
*
****************************************************************************************
* /
#自定义配置\QSPI\SUOTA\H_
#定义自定义配置_
#包括“bsp\u definitions.h”
#ifdef调试
#定义配置重定目标
#定义配置\u重定目标\u UART HW \u UART1
#定义dg\u configTRACK\u OS\u堆(1)
#万一
#定义配置\u LSM6DS3(1)
#define config_mpl3115a2(1)
#定义配置PCF85263A(1)
#定义dg\u configPOWER\u 1V8P(1)
#定义dg\u configTESTMODE\u MEASURE\u SLEEP\u CURRENT(0)
#定义dg\ U configI2C\ U适配器(1)
#define dg_configbattery_adapter(1)
#定义dg\u configUSE\u HW\u TEMPSENS(1)
#定义dg\u configUSE\u HW\u GPIO(1)
#define dg_configuse_hw_timer2(1)
#define dg_configuse_hw_i2c(1)
#定义dg\u configUSE\u HW\u GPADC(1)
#define dg_configuse_hw_uart(1)
#定义dg\ U配置\ U适配器(1)
#定义dg\u configUSE\u USB\u枚举(1)
#define dg_configcharging_cc_timeout(360 * 60 * 100)
#定义dg\U配置充电\U CV\U超时(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.
#未定义配置\u使用\u FTDF
#define dg_configuse_lp_clk lp_clk_rcx.
#define dg\u configEXEC\u MODE\u MODE被缓存
#define dg_configcode_location non_volatile_is_flash.
#定义dg\u configEXT\u CRYSTAL\u FREQ EXT\u CRYSTAL\u IS \u 16M
#define dg_configimage_setup development_mode.
#定义dg\u configEMULATE\u OTP\u COPY(0)
#define dg_configimage_flash_offset(0x20000)
#定义dg\ U配置\支持(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\u configSHUFFLING\u模式(0x0)
#别的
#定义dg\配置内存\保留\模式(0x07)
#定义dg\u configSHUFFLING\u模式(0x0)
#万一
#万一
#define dg_configuse_wdog(1)
#define dg_configflash_connected_to(flash_connected_to_1v8)
#define dg_configflash_power_down(0)
#定义dg\u configPOWER\u 1V8\u ACTIVE(1)
#define dg_configpower_1v8_sleep(1)
#define dg_configbattery_type(battery_type_custom)
#定义dg配置电池充电电压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定义dg_配置预充电\u阈值(2462)//3.006V
#define dg_configcharging_threshold(2498)// 3.05V
#定义dg配置电池充电电流8//180mA(参见lib/sdk/bsp/system/sys\u man/sys\u charger.c:115)
#定义dg配置电池预充电电流3//45mA
#define dg_configbattery_charge_ntc 1 //禁用
#define dg\u configPRECHARGING\u TIMEOUT(60*60*100)//N x 10毫秒
#define dg_configuse_soc 0.
/*取消对以下行的注释以启用充电状态调试或性能测试*/
//#定义调试单元SOC
#f定义(debug_soc)
#定义配置重定目标
#万一
//#定义dgŠU配置使用ŠU USB 1
#定义dg\u configUSE\u USB\u充电器1
#定义dg \u configALLOW \u CHARGING \u NOT \u枚举1
#定义dg\u configUSE\u NOT\u ENUM\u CHARGING\u超时0
// #define dg_configuse_prodk(1)
#定义dg\u configUSE\u SW\u游标(1)
#define dg_configcacheable_qspi_area_len(nvms_param_part_start - memory_qspif_base)
/ *************************************************************************************************
*内存特定配置
* /
#定义dg\u configQSPI\u CACHED\u OPTIMAL\u RETRAM\u 0\u SIZE\u AE(64*1024)
#定义dg\u configQSPI\u CACHED\u RAM\u SIZE\u AE(32*1024)
#define dg_configqspi_cached_retram_0_size_ae(96 * 1024)
/ *************************************************************************************************
*外围特定配置
* /
#define dg_configflash_adapter 1.
#定义dg\ U configNVMS\ U适配器1
#define dg_confignvms_ves 1
#定义dg\ U configNVPARAM\ U适配器1
#define dg_configgpadc_adapter 1.
#define defaultBLE\u ATT\u DB\u 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事件
#定义defaultBLE_PPCP_SUP_TIMEOUT(BLE_SUPERVISION_TMO_FROM_MS(6000))//6000毫秒
#define ble_max_misses_allowed(3)
#定义允许的最大延迟(3)
/ *使用动态列表BLE事件而不是Freertos队列* /
#define ble_mgr_use_evt_list(1)
/ *
* Suota Loader配置:
* - 仅在GATT上启用Suota,将Suota_version设置为任何版本> = suota_version_1_1
*并留下upota_psm未定义。
*-要在关贸总协定和L2CAP CoC上启用SUOTA,请将SUOTA\ U VERSION设置为任意版本>=SUOTA\ U VERSION\ U 1\ U 2
*并定义SUOTA\u PSM以匹配所需的PSM。在这种情况下,中央设备
*可以根据其偏好使用两者中的任何一种。
* /
#定义SUOTA\u版本SUOTA\u版本\u 1\u 3
#define suota_psm 0x81
#用SUOTA定义使用分区表
/ *************************************************************************************************
* freertos特定配置
* /
#define os_freertos / *定义它以使用freertos * /
#如果是SUOTA\u PSM
#定义索塔堆开销(3200)
#别的
#定义SUOTA\u HEAP\u开销(0)
#万一
#如果(dg_configUSE_SOC)
#f定义(debug_soc)
#ifndef发布版本
/ *调试SOC不应在发布构建中使用* /
#define configtotal_heap_size(12900 + suota_heap_overhead)/ *这是freertos total堆大小* /
#别的
#错误“DEBUG SOC和L2CAP上的SUOTA不能一起用于发布目标”
#万一
#别的
#define configtotal_heap_size(11100 + suota_heap_overhead)/ *这是freertos total堆大小* /
#万一
#别的
#define configTOTAL\u HEAP\u SIZE(11000+SUOTA\u HEAP\u开销)/*这是FreeRTOS的总堆大小*/
#万一
/ *************************************************************************************************
*BLE设备配置
* /
#定义dg\u可配置\u中心(0)
#define dg_configble_gatt_client(0)
#定义dg可配置的观察者(0)
#define dg_configble_broadcaster(0)
#ifndef suota_psm.
#定义dg\u configable\u L2CAP\u COC(0)
#万一
/*包括bsp默认值*/
#包括“bsp\u defaults.h”
/ *包括内存布局* /
#包括“bsp\u memory\u layout.h”
#endif/*自定义配置*/
/ **
\}
\}
\}
* /
嗨alarner,
要诊断该问题,我建议首次尝试根据未配置的uota构建,基于未缓解的示例(例如,PXP报告器)来尝试构建图像并执行Suota更新,请参阅它是否有效,只是为了确认您是否正确执行所有内容。如果没有,请参阅软件开发人员指南(UM-B-056)的第9章以逐步验证您的操作。
然后,要在您的定制项目上实现这一点,请参阅同一文档的第10.2章,其中展示了在现有项目上启用SUOTA的configs的一个很好的示例。希望这对你的问题有帮助。
布罗尔,
秦金阳
对于何时遇到此问题的任何人,违规配置是#define dg_configpower_1v8p(1)
我们相信,由于某种原因,当它脱离我们的固件时,启用1V8P,它会产生一个浪涌,导致铁路倾斜并进入棕色输出模式。要解决此问题,我们将#define dg_configpower_1v8p(1)从我们的固件从我们的固件传递到引导加载程序,现在一切都似乎工作。
嗨alarner,
很高兴你识上你的问题,谢谢你的迹象。
谢谢,下午好