aes128模块上的一个奇怪的问题

9个员额/ 0个新员额
最后发表
summer20100514
离线
最后看到:4年9个月前
大师
加入:2014-12-30 05:01
aes128模块上的一个奇怪的问题

我正在从事DA14580_DIALOG_BEACONS_3.40.2项目,需要时我需要做一些加密工作。aes128模块工作正常,但是昨天我发现了一个奇怪的问题。我做一些如下的操作。

我用的是延长睡眠模式。

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

Void app_adv_func(struct gapm_start_advertise_cmd *cmd)

/ /广告数据

//扫描响应数据

app_env。Enc_in_use = true;//加密模块繁忙

/ /发送加密命令
struct 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。关键,16);
memcpy (cmd - > operand_2 app_env。明文,16);

//发送消息
ke_msg_send (cmd);

其次,我进行一些打印并设置一个标志来表明加密已经完成。

int gapm_use_enc_block_ind_handler (ke_msg_id_t是否,
struct gapm_use_enc_block_ind *参数,
ke_task_id_t dest_id,
ke_task_id_t src_id)

cpl arch_printf(“数据加密\ r \ n”);

app_env。Enc_in_use = false;//该标志用于指示加密模块现在是空闲的

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 ();

While (app_env.enc_in_use);//检查标记并等待加密模块空闲

app_env。Enc_in_use = true;//加密模块繁忙

/ /发送加密命令
struct 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。关键,16);
memcpy (cmd - > operand_2 app_env。明文,16);

//发送消息
ke_msg_send (cmd);

结果是加密模块不能工作,代码正在执行while(app_env.enc_in_use);所有的时间。与此同时,当然,不要打印任何东西。

但是在我注释了一行while(app_env.enc_in_use);在void app_set_dev_config_complete_func(void)中,加密模块工作正常,并成功打印"data encryption cpl"。

如您所见,在某个初始化过程之后,我需要执行两个加密操作。

summer20100514
离线
最后看到:4年9个月前
大师
加入:2014-12-30 05:01
有什么建议吗?

有什么建议吗?

WT_Dialog(未验证)
你好,

你好,

While (app_env.enc_in_use);//检查标记并等待加密模块空闲
请记住,整个系统是不可抢占的。一旦while循环开始,整个系统就会被这个while循环阻塞。

因此app_env。Enc_in_use将不会得到更新。所以代码可能会死锁。我认为这就是正在发生的事情。

summer20100514
离线
最后看到:4年9个月前
大师
加入:2014-12-30 05:01
@WT_Dialog,谢谢,但是我

@WT_Dialog,谢谢你,但我还有一个问题。系统中的中断(由定时器、外部引脚信号等引起)是否也没有抢占性?

WT_Dialog(未验证)
嗨,打扰一下

嗨,打扰是抢先的。但是任务(TASK_APP, TASK_GAPC等)不是抢占的。

summer20100514
离线
最后看到:4年9个月前
大师
加入:2014-12-30 05:01
你解决了我的问题,谢谢

你解决了我的问题,谢谢。

summer20100514
离线
最后看到:4年9个月前
大师
加入:2014-12-30 05:01
你能再给我一些吗

关于DA14580的中断系统,你能给我更详细的解释一下吗?最近我遇到了一个很奇怪的问题,就是偶尔没有检测到外部中断。谢谢。

summer20100514
离线
最后看到:4年9个月前
大师
加入:2014-12-30 05:01
例如,有没有

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

MT_dialog
离线
最后看到:6个月2个星期前
工作人员
加入:2015-06-08 34
嗨summer20100514,

嗨summer20100514,

对于中断系统没有特别的文档,你可以参考ARM的手册。

由于MT_dialog