gpt4 book ai didi

c - 安全地直接写入内存地址

转载 作者:行者123 更新时间:2023-11-30 14:41:18 26 4
gpt4 key购买 nike

我正在向一个已知地址的寄存器写入数据。

volatile uint32_t *my_address =
(volatile uint32_t *)MY_ADDRESS;

*my_address = 0x1234;

写入内存最安全的方式是什么?我读过它应该放在宏后面和/或者我应该检查指针是否不为空。

谢谢

最佳答案

如果您想安全地写入/读取内存映射,您可以使用专门为此目的而设计的现有代码段,例如 ARM 的 mmio.h头文件。

与示例中的代码等效的结果代码将是:

#include<mmio.h>
// ...
mmio_write_32(MY_ADDRESS, 0x1234);

因为 header 中包含的函数是静态内联的,所以不会因调用子例程而导致性能损失 - 代码只会插入到程序中被调用的位置。

由于此头文件已被广泛使用,因此您可以通过使用它来合理地不必担心寄存器读/写操作。

因为它是根据 BSD 3-Clause 获得许可的,您可以在您的商业和宠物项目中自由使用它。

关于c - 安全地直接写入内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55052026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com