微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

障碍 - 如何确保对寄存器的写操作已完成?

如何解决障碍 - 如何确保对寄存器的写操作已完成?

我需要初始化一个中断控制器 (GICv3),ARM。为此,我需要设置一些寄存器,但只能在初始化寄存器 CTLR 之后。在进行其他写入操作之前,我必须确保 CTLR 寄存器已完全写入。

为此,我找到了 arm memory barriers。为了保证行为,我想操作如下:

/* write CTLR
* isb()
* dmb();
* writing the other registers */

我不是这个领域的专家,我不确定正确理解障碍:isbdmb 的组合是否可以保证预期的行为?

解决方法

不,仅仅保证它是不够的。 障碍并不意味着接收设备(在本例中为 GICv3)实际上已收到命令并且您的寄存器写入已完成。 您需要手动检查它(例如,here)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。