SUOTA启动时出现硬故障

5个职位/ 0个新职位
最后发表
JBaczuk
离线
最后看到:2年3个星期前
加入:2014-12-31 23:41
SUOTA启动时出现硬故障

我已经将SPOTAR配置文件添加到我的定制项目中,并确保广告数据包含在SUOTA应用程序中检测到的设备的正确值。当从EEPROM启动时,试图通过SUOTA上传新固件会使我的设备崩溃。我尝试在Keil中进行调试,将通常存储在Bank 1中的图像上传到eeprom中,当我试图从SUOTA应用程序向我的设备发送新固件时,它崩溃了,出现了以下一行硬故障:spota_state。status_ind_func (SPOTAR_START);我不确定从这里到哪里去调试。

整个函数在这里:

空白app_spotar_start(空白)

/ / app_force_active_mode ();

spota_state。status_ind_func (SPOTAR_START);

如果(SPOTAR_IS_FOR_PATCH (spota_state。mem_dev))

spotar_send_status_update_req ((uint8_t) SPOTAR_SRV_STARTED);

其他的

spotar_send_status_update_req ((uint8_t) SPOTAR_IMG_STARTED);

/ /初始化索引
spota_state。spota_pd_idx = 0;
spota_state。suota_block_idx = 0;
spota_state。suota_img_idx = 0;
spota_state。new_patch_len = 0;
spota_state。crc_clac = 0;
spota_state。crc_clac = 0;

除此之外,该设备似乎还能正常工作。我所有的其他服务和外围设备都能正常工作。

设备:
MT_dialog
离线
最后看到:7个月5天前
工作人员
加入:2015-06-08 34
嗨JBaczuk,

嗨JBaczuk,

似乎当在spotar指示期间访问该处理程序的回调函数时,它会导致一个无效的指针值,您可以检查在结构体的指针中传递的值是否确实是SPOTAR_START事件发生时您想要调用的函数的指针。您是否在app_init_func()中调用app_spotar_init(),以便使用app_spotar_status初始化回调指针?

由于MT_dialog

JBaczuk
离线
最后看到:2年3个星期前
加入:2014-12-31 23:41
我没有调用app_spotar

我没有调用app_spotar_init(),我如何做这个?它正在寻找一个指向函数的指针,但是我应该传递什么函数指针以及如何传递?

MT_dialog
离线
最后看到:7个月5天前
工作人员
加入:2015-06-08 34
嗨JBaczuk,

嗨JBaczuk,

在app_init_func()函数中调用app_spotar_init()函数,并在初始化时将回调函数作为参数传递。通常这个函数应该在app_init_func()中调用,因为您已经定义了BLE_SPOTA_RECEIVER,因为您已经启用了SUOTA服务。默认的app_spotar_status()函数在580/581中不做任何事情,但在583芯片中它启用了内部flash。确保在项目中实现了app_spotar_status()。请看一下SUOTA在临近记者项目中的实施情况。

由于MT_dialog

JBaczuk
离线
最后看到:2年3个星期前
加入:2014-12-31 23:41
谢谢你那似乎已经

谢谢,似乎已经解决了。我添加了函数app_spotar_status(const uint8_t spotar_event){…}to the app_project_proj.c file and then inside my app_init_func(void) function I added: app_spotar_init(app_spotar_status);