在Suota启动功能期间硬盘

5个帖子/ 0新
最后一篇
jbaczuk.
离线
最后一次露面:6个月前1年
加入:2014-12-31 23:41
在Suota启动功能期间硬盘

我已经将Spotar配置文件添加到我的自定义项目中,并确保广告数据包含在Suota应用程序中检测到的设备的正确值。从EEPROM引导时,尝试通过Suota上传新固件崩溃我的设备。我通过上传通常存储在EEPROM的Bank 1中的图像以及从Suota应用程序发送新的固件到我的设备时,我尝试了在keil中进行调试,它将在此行的硬盘崩溃:spota_state.status_ind_func(Spotar_Start);我不确定从这里去哪里调试。

整个函数在这里:

void app_spotar_start(void)
{
// app_force_active_mode();

spota_state.status_ind_func(spotar_start);

if(spotar_is_for_patch(spota_state.mem_dev))
{
spotar_send_status_update_req((uint8_t)spotar_srv_start);
}
别的
{
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.
离线
最后一次露面:1周21小时前
职员
加入:2015-06-08 11:34
嗨jbaczuk,

嗨jbaczuk,

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

谢谢mt_dialog.

jbaczuk.
离线
最后一次露面:6个月前1年
加入:2014-12-31 23:41
我没有调用app_spotar

我没有调用app_spotar_init(),我该怎么做?它正在寻找一个指向函数的指针,但我应该通过哪些函数指针以及如何?

mt_dialog.
离线
最后一次露面:1周21小时前
职员
加入:2015-06-08 11:34
嗨jbaczuk,

嗨jbaczuk,

app_init_func()函数中调用app_spotar_init()函数,回调函数作为初始化的参数传递。通常,应该在app_init_func()中调用此函数,因为您已定义BLE_SPOTA_RECEIVER,因为您已启用SUOTA服务。默认app_spotar_status()函数在580/581中没有做任何事情,但在583芯片中,它可以实现内部闪光灯。确保App_spotar_status()在您的项目中实现。请查看Proximity Reporter项目中的Suota实施。

谢谢mt_dialog.

jbaczuk.
离线
最后一次露面:6个月前1年
加入:2014-12-31 23:41
谢谢你似乎有

谢谢你似乎已经解决了它。我将函数app_spotar_status(const uint8_t spotar_event){...}添加到a​​pp_project_proj.c文件中,然后在我的app_init_func(void)函数里面我添加:app_spotar_init(app_spotar_status);