AES128模块上的奇怪问题

9帖/ 0新
最后一篇
summer20100514
离线
最后一次露面:4年9月前
格鲁鲁
加入:情节中字05:01
AES128模块上的奇怪问题

我工作的项目DA14580_DIALOG_BEACONS_3.40.2,并在必要时,我需要做一些加密工作。该AES128模块运作良好,但我昨天发现了一个奇怪的问题。我做了一些操作如下。

我使用的是扩展的睡眠模式。

首先,我在app_adv_func发送gapm_use_enc_block_cmd():

空隙app_adv_func(结构gapm_start_advertise_cmd * CMD)
{
//广告数据

//扫描响应数据

app_env.enc_in_use = TRUE; //加密moudule忙

//发送加密命令
结构gapm_use_enc_block_cmd * CMD = KE_MSG_ALLOC(GAPM_USE_ENC_BLOCK_CMD,
TASK_GAPM,TASK_APP,
gapm_use_enc_block_cmd);
CMD->操作= GAPM_USE_ENC_BLOCK;
的memcpy(CMD-> operand_1,app_env.key,16);
的memcpy(CMD-> operand_2,app_env.plaintext,16);

//发送消息
ke_msg_send(CMD);

}

其次,我做了一些印刷并设置一个标志来表示加密完成。

INT gapm_use_enc_block_ind_handler(ke_msg_id_t MSGID,
结构gapm_use_enc_block_ind * PARAM,
ke_task_id_t DEST_ID,
ke_task_id_t src_id)
{
arch_printf( “数据加密CPL \ r \ n”);

app_env.enc_in_use = FALSE; //使用标志以指示加密moudule现在处于空闲状态

app_adv_stop(); //加密完成后,停止广告来更新数据

回报(KE_MSG_CONSUMED);
}

最后,我检查app_env.enc_in_use标志,并等待加密模块空闲,然后再派加密CMD

空隙app_set_dev_config_complete_func(无效)
{
ke_state_set(TASK_APP,APP_CONNECTABLE);

app_adv_start();

而(app_env.enc_in_use);用于加密moudule空闲//检查标志,并等待

app_env.enc_in_use = TRUE; //加密moudule忙

//发送加密命令
结构gapm_use_enc_block_cmd * CMD = KE_MSG_ALLOC(GAPM_USE_ENC_BLOCK_CMD,
TASK_GAPM,TASK_APP,
gapm_use_enc_block_cmd);
CMD->操作= GAPM_USE_ENC_BLOCK;
的memcpy(CMD-> operand_1,app_env.key,16);
的memcpy(CMD-> operand_2,app_env.plaintext,16);

//发送消息
ke_msg_send(CMD);
}

其结果是加密模块将不起作用,并且所述代码在执行时(app_env.enc_in_use);每时每刻。与此同时,当然,打印什么。

但经过我的评论的线,而(app_env.enc_in_use);在虚空app_set_dev_config_complete_func(无效),在encrytion模块运作良好,并打印“数据加密CPL”成功。

正如你所看到的,我需要一些初始化程序后做两个加密操作。

summer20100514
离线
最后一次露面:4年9月前
格鲁鲁
加入:情节中字05:01
有什么建议?

有什么建议?

WT_Dialog(未验证)
你好,

你好,

而(app_env.enc_in_use);用于加密moudule空闲//检查标志,并等待
请记住,整个系统是非抢占。一旦while循环开始,整个系统由这个while循环受阻。

所以app_env.enc_in_use不会得到更新。因此,代码可以在僵局中结束。我认为这是发生了什么。

summer20100514
离线
最后一次露面:4年9月前
格鲁鲁
加入:情节中字05:01
@WT_Dialog,谢谢你,但我

@WT_Dialog,谢谢你,但我仍然有一个问题。这是真的,中断(由定时器,外部管脚信号等)中的系统都是非抢占要么?

WT_Dialog(未验证)
您好,该中断

您好,中断被抢占。但任务(TASK_APP,TASK_GAPC等)不抢占。

summer20100514
离线
最后一次露面:4年9月前
格鲁鲁
加入:情节中字05:01
你解决我的问题,谢谢

你解决我的问题,谢谢。

summer20100514
离线
最后一次露面:4年9月前
格鲁鲁
加入:情节中字05:01
您能给我更多

您能给我说说DA14580的中断系统的详细说明?最近我遇到了外部中断一段时间没有检测到一次一个奇怪的问题。谢谢。

summer20100514
离线
最后一次露面:4年9月前
格鲁鲁
加入:情节中字05:01
例如,是否有任何

例如,是否有任何副作用使用GLOBAL_INT_DISABLE()和GLOBAL_INT_RESTORE()对?

mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨summer20100514,

嗨summer20100514,

有用于中断系统没有特定的文档,你可以指点ARM手册此。

谢谢mt_dialog.