描述:
要在辅助 SLR 中启用对 Sysmon 寄存器空间的访问,须在 CIPS 和 NOC GUI 执行多个步骤。
解决方案:
CIPS
在每个 SLR 中,确保选中“PMC to NoC”
![](https://cdn.eetrend.com/files/2023-04/wen_zhang_/100570528-300644-cips-1.jpg)
![](https://cdn.eetrend.com/files/2023-04/wen_zhang_/100570528-300645-cips-2.jpg)
NoC
添加其他主接口和时钟:
![](https://cdn.eetrend.com/files/2023-04/wen_zhang_/100570528-300646-noc-1.jpg)
在“Connectivity”选项卡上,确保 PS APU 已连接到所有 Master AXI PS_PMC:
![](https://cdn.eetrend.com/files/2023-04/wen_zhang_/100570528-300647-noc-2.jpg)
连接 BD 中的 AXI 接口:
![](https://cdn.eetrend.com/files/2023-04/wen_zhang_/100570528-300648-lianjiebdzhongdeaxijiekou.jpg)
在“Address Editor”中分配地址:
![](https://cdn.eetrend.com/files/2023-04/wen_zhang_/100570528-300649-zaiaddresseditorzhongfenpeidizhi.jpg)
生成 PDI 并导出 XSA。
在 xparameters.h 中将显示 SLR 地址。
在 APU 上运行代码
本答复记录随附了可在 APU 上运行的代码示例。
while(1)
{
for( i=0; i< SLR_COUNT; i++)
{
ReadReg32(slr_address_base[i], SYSMON_DEVICE_TEMP_MAX_ADDR, &temp_max_list[i]);
ReadReg32(slr_address_base[i], SYSMON_DEVICE_TEMP_MIN_ADDR, &temp_min_list[i]);
}
max = find_extreme(temp_max_list, MAXIMUM);
min = find_extreme(temp_min_list, MINIMUM);
WriteReg32(MASTER_ROOT_SYSMON_BASE, SYSMON_AUX_DEVICE_TEMP_MAX, max);
WriteReg32(MASTER_ROOT_SYSMON_BASE, SYSMON_AUX_DEVICE_TEMP_MIN, min);
usleep(WAIT_DELAY_IN_USEC);
};
文章来源:AMD Xilinx开发者社区