aes128模块的奇怪问题

9个员额/0个新员额
最后一篇文章
夏季20100514
离线
最后一次见到:4年4个月前
大师
加入: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(结构gapm_start_advision_cmd*cmd)
{
//广告数据

//扫描响应数据

app_env.enc_in_use=true//加密模块忙

//发送加密命令
结构gapm_use_enc_block_cmd*cmd=KE_MSG_ALLOC(gapm_use_enc_block_cmd,
TASK_GAPM、TASK_APP、,
gapm_使用_enc_block_cmd);
cmd->operation=GAPM\u USE\u ENC\u块;
memcpy(cmd->operand_1,app_env.key,16);
memcpy(cmd->operand_2,app_env.plaintext,16);

//发送消息
发送消息(cmd);

}

其次,我进行一些打印,并设置一个标志以指示加密已完成。

int gapm_use_enc_block_ind_handler(ke_msg_id_t msgid,
结构gapm使用enc块ind*参数,
ke_task_id_t dest_id,
ke_任务\u id_t src_id)
{
arch_printf(“数据加密cpl\r\n”);

app_env.enc_in_use=false//该标志用于指示加密模块现在处于空闲状态

app_adv_stop()//加密完成,停止播发以更新数据

返回(已消耗的热量);
}

最后,我检查app_env.enc_in_use标志并等待加密模块空闲,然后发送另一个加密命令

无效应用程序设置开发配置完成功能(无效)
{
ke_状态_集(任务_应用程序,应用程序可连接);

app_adv_start();

while(应用程序环境附件正在使用)//检查标志并等待加密模块空闲

app_env.enc_in_use=true//加密模块忙

//发送加密命令
结构gapm_use_enc_block_cmd*cmd=KE_MSG_ALLOC(gapm_use_enc_block_cmd,
TASK_GAPM、TASK_APP、,
gapm_使用_enc_block_cmd);
cmd->operation=GAPM\u USE\u ENC\u块;
memcpy(cmd->operand_1,app_env.key,16);
memcpy(cmd->operand_2,app_env.plaintext,16);

//发送消息
发送消息(cmd);
}

结果是加密模块无法工作,代码正在执行(app_env.enc_in_use);总是当然,同时也不打印任何内容。

但是在我对行while(app_env.enc_in_use)进行注释之后;在void app_set_dev_config_complete_func(void)中,加密模块工作正常并成功打印“数据加密cpl”。

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

夏季20100514
离线
最后一次见到:4年4个月前
大师
加入:2014-12-30 05:01
有什么建议吗?

有什么建议吗?

WT_对话框(未验证)
你好

你好

while(应用程序环境附件正在使用)//检查标志并等待加密模块空闲
请记住,整个系统是非先发制人的。一旦while循环启动,整个系统就会被while循环阻塞。

所以正在使用的app_env.enc_将不会更新。因此代码可能会以死锁告终。我认为这就是正在发生的事情。

夏季20100514
离线
最后一次见到:4年4个月前
大师
加入:2014-12-30 05:01
@对话,谢谢,但我

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

WT_对话框(未验证)
你好,这里有中断

你好,打断是先发制人的。但任务(任务应用程序、任务GAPC等)不是先发制人的。

夏季20100514
离线
最后一次见到:4年4个月前
大师
加入:2014-12-30 05:01
你解决了我的问题,谢谢

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

夏季20100514
离线
最后一次见到:4年4个月前
大师
加入:2014-12-30 05:01
你能再给我一些吗

你能给我更详细的解释一下DA14580的中断系统吗?最近,我遇到了一个奇怪的问题,即外部中断有时无法检测到。谢谢

夏季20100514
离线
最后一次见到:4年4个月前
大师
加入:2014-12-30 05:01
例如,是否有

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

MT_对话框
离线
最后一次见到:2个月3天前
工作人员
加入:2015-06-08 11:34
你好,summer20100514,

你好,summer20100514,

没有关于中断系统的特定文档,您可以就此向ARM手册提出建议。

谢谢你的对话