我正在开发 Altera Cyclone V SoC。我正在尝试从我的 SoC 直接写入 FPGA 外设,但是,hwlib 库仅包含函数 alt_write_word,据我所知,该函数在将其写入主存储器之前先写入缓存。在 NIOS II 中,内置函数 IOWR 已经配置了内存,以便 IOWR 函数直接写入 FPGA 外设。所以,我的问题是,当我在使用 SoC 时,如果 hwlib 库不提供这样的功能,我该如何直接写入 FPGA 外设?我需要配置内存类型还是什么?
问问题
59 次
1 回答
0
我假设您的应用程序如果您的应用程序是裸机,因此您没有使用 MMU (即虚拟地址),您可以尝试通过使用 volatile 限定指针指向外围设备来直接访问它们。这是一个小例子:
volatile uint32_t* registerAddress = PERIPHERAL_BASE_ADDR;
const uint32_t registerValue = *registerAddress;
如果硬件允许,也可以写入它们。
*registerAddress = 0xDEADBEEF;
外围设备的地址应排除在可缓存范围之外。如果您已经在使用具有专用总线架构的 SoC,则无需担心。否则,您可能需要在设计系统时调整可缓存范围。
于 2021-10-09T09:50:02.380 回答