我正在写一个地址已知的寄存器。
volatile uint32_t *my_address =
(volatile uint32_t *)MY_ADDRESS;
*my_address = 0x1234;
写内存最安全的方法是什么?我已经读过它应该放在宏后面和/或我应该检查指针是否不为空。
谢谢
答案 0 :(得分:1)
如果您想安全地写入/读取内存映射,则可以使用为此目的而设计的已有代码段,例如ARM的mmio.h头文件。
与示例中的代码等效的代码将是:
#include<mmio.h>
// ...
mmio_write_32(MY_ADDRESS, 0x1234);
由于头文件中包含的函数是静态内联的,因此不会因调用子例程而导致性能下降-代码将仅插入在程序中被调用的位置。
由于该头文件已被广泛使用,因此您可以合理地使用它来避免担心寄存器的读/写操作。
并且由于它是根据BSD 3-Clause获得许可的,因此您可以在商业和宠物项目中自由使用它。