MyFPGA Forum
标题:
HPS_CONTROL_FPGA_LED 问题
[打印本页]
作者:
陈明
时间:
2016-9-20 18:38
标题:
HPS_CONTROL_FPGA_LED 问题
#define HW_REGS_BASE ( ALT_STM_OFST ) //STM基地址
#define HW_REGS_SPAN ( 0x04000000 ) //地址跨度
#define HW_REGS_MASK ( HW_REGS_SPAN - 1 )
virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ), MAP_SHARED, fd, HW_REGS_BASE );//将L3外设的物理地址映射为虚拟地址,
h2p_lw_led_addr=virtual_base + ( ( unsigned long )( ALT_LWFPGASLVS_OFST + DATA_PIO_0_BASE ) & ( unsigned long)( HW_REGS_MASK ) ); //计算led的地址;
*(uint32_t*)h2p_lw_led_addr=0x8555;//控制LED
问题来了,查了头文件发现ALT_STM_OFST=0xFC000000,是STM模块地址,不是L3外设物理地址,
1)STM模块是什么?
2)为什么不映射L3的物理地址oxFF400000?
作者:
matthew_wang
时间:
2016-9-21 09:33
这个问题需要对这个HPS构架深入了解,可以多研究handbook。 STM是HPS 内部的一个系统跟踪单元,是ARM中实现高级的调试跟踪用的。没有实际使用经验。
你说的从0xFF400000 这个地址叫L3的物理地址是不对的,手册上写明了 是Lightweight FPGA-to-HPS AXI bridge GPV。
我觉得你想表达的应该是LWFPGASLAVES 这个地址(0xFF200000),只映射从这个地址起始的2M空间也够你实现以上的访问LW AXI bridge功能。
例程中只是把所有的Peripheral Region 都映射到内存中了。为了写其他程序的方便而已,不用每次用个其他的外设再来映射一遍。
作者:
陈明
时间:
2016-9-21 11:05
那么HPS2FPGA被L3互联主开关掌控着,那么用HPS2FPGA这个桥访问FPGA上的gpio是不是应该将L3(NIC-301)的物理地址映射到虚拟地址,代码如下:
#define HW_REGS_BASE ( ALT_STM_OFST )
#define HW_REGS_SPAN ( 0x04000000 )
#define HW_REGS_MASK ( HW_REGS_SPAN - 1 )
#define ALT_AXI_HPS2FPGA_OFST (0xC0000000) // axi_master
#define HW_FPGA_AXI_SPAN (0x04000000) // Bridge span
#define HW_FPGA_AXI_MASK ( HW_FPGA_AXI_SPAN - 1 )
virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ), MAP_SHARED, fd, HW_REGS_BASE );
h2p_memory_addr=virtual_base + ( ( unsigned long )(ALT_AXI_HPS2FPGA_OFST+DATA_PIO_0_BASE) & ( unsigned long)( HW_REGS_MASK ) );
作者:
matthew_wang
时间:
2016-9-21 18:06
HPS2FPGA 这个bridge 不在你调用的mmap这个映射范围内,你如果需要 直接把这片区域再映射。
作者:
陈明
时间:
2016-9-21 23:36
怎么看mmp映射范围呢?
作者:
陈明
时间:
2016-9-21 23:37
怎么看mmap的映射范围呢?
作者:
matthew_wang
时间:
2016-9-22 09:15
读程序咯,把基地址和偏移搞清楚,对着handbook 学吧
作者:
陈明
时间:
2016-9-23 20:03
matthew_wang 发表于 2016-9-22 09:15
读程序咯,把基地址和偏移搞清楚,对着handbook 学吧
谢谢!我弄出来了!
欢迎光临 MyFPGA Forum (http://www.myfpga.org/discuz/)
Powered by Discuz! X3