AES128模块上的奇怪问题

9个帖子/ 0新
最后一篇
SUMMER20100514.
离线
最后一次露面:4年9月前
格鲁鲁
加入:2014-12-30 05:01
AES128模块上的奇怪问题

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

我正在使用扩展的睡眠模式。

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

void app_adv_func(struct gapm_start_advertise_cmd * cmd)
{
//广告数据

//扫描响应数据

app_env.enc_in_USE = true; //加密moudule忙

//发送加密命令
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->操作数_1,app_env.key,16);
memcpy(cmd->操作数_2,app_env.plaintext,16);

//发送消息
ke_msg_send(cmd);

}

第二个我做了一些打印并设置一个标志以指示加密完成。

int gapm_use_enc_block_ind_handler(ke_msg_id_t msgid,
struct 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(); //加密完成,停止广告更新数据

return(ke_msg_consumed);
}

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

void app_set_dev_config_complete_func(void)
{
ke_state_set(task_app,app_connectable);

app_adv_start();

while(app_env.enc_in_USE); //检查标志并等待加密Moudule空闲

app_env.enc_in_USE = true; //加密moudule忙

//发送加密命令
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->操作数_1,app_env.key,16);
memcpy(cmd->操作数_2,app_env.plaintext,16);

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

结果是加密模块将无法正常运行,并且代码正在执行(app_env.enc_in_USE);每时每刻。同时,当然,没有什么。

但是在我发表评论之后(app_env.enc_in_USE);在void app_set_dev_config_complete_func(void)中,加密模块运行良好并成功打印“数据加密CPL”。

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

SUMMER20100514.
离线
最后一次露面:4年9月前
格鲁鲁
加入:2014-12-30 05:01
有什么建议?

有什么建议?

wt_dialog(未经验证)
你好,

你好,

while(app_env.enc_in_USE); //检查标志并等待加密Moudule空闲
请记住整个系统是非先发制人的。一旦循环开始,整个系统就会通过循环阻止。

所以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 11:34
嗨Summer20100514,

嗨Summer20100514,

中断系统没有特别的文档,您可以为此建议ARM手册。

谢谢mt_dialog.