Cyclone5 SOC开发过一款产品,经验总结

之前使用Cyclone5 SOC开发过一款产品,总结了很多经验,由于篇幅限制,下面就从个人总结文献中摘取一部分共享出来:

 


14、C5 SOC的地址映射重点—与ZYNQ不同

l  着重参考官网文档CV_5V4第2章“Introduction to the Hard Processor System Address Map”
l  该芯片给每一大类都分配了一个固定的基地址:

 

                              
 
fpgaslave+peripheral总共960+64=1024MB
peripheral64MB地址为0xFC0000000xFFFFFFFF,也就是说
轻量级fpga slave2MB正处于peripheral64MB地址空间中,这点对于linux地址映射至关重要。下图也可以看出这点:
 
那么,映射方法是,先在FC000000上映射出虚拟地址,映射为大小为0400,即64MB,再利用ALTERASOC特别的方式得到linux操作设备的最终地址。代码如下:
cfg = mmap(NULL,0x04000000, PROT_READ | PROT_WRITE, MAP_SHARED, mmapfd, 0xFC000000);
h2p_lw_led_addr= cfg + ((unsigned long)(ALT_LWFPGASLVS_OFST + LED_PIO_BASE) & (unsignedlong)(HPS_Reg_Span - 1));
 
l  关于f2h_sdram接口寻址
在“SDRAM Address Space”节中说The SDRAM address space is up to 4 GB. The entire address space canbe accessed through theFPGA-to-HPS SDRAM interface from the FPGA fabric.
 
l  hps外设编址从FC000000开始,在文档有详细解说。
l  对于轻量级FPGA slave,正是我们需要使用的,寄存器、状态、led等通信要使用,与zynq不同的是:

HPS访问的地址=上表中给定的基地址+QSYS中分配的偏移地址+虚拟地址而zynq中,PS访问的地址=VIVADO中分配的基地址+虚拟地址,没有什么给定的基地址。

27、C5 SOC调试总结

(1)LINUX使用cat装载rbf文件不成功
原因之一:前次ARM死机后,rbf文件未同步到存储器中,文件系统中的文件不完整导致不能再装载。
解决办法:在将rbf传输到linux系统中后,使用sync同步一下。
 
(2)ARM先写内存,FPGA再写内存,ARM再读内存,读出来的数据不是FPGA写进去的数据
原因:虽然FPGA后写,但是由于FPGA写指令与ARM的写指令相隔时间很短,两者在内存控制器上获取的控制权是不确定的,故有可能ARM读出的数据是ARM写进去的数据。
 
(3)AXI3总线,输出的读操作地址RdAddr直接赋值常数,fpga程序能加载但不会工作,而采用这种寄存器的模式,就工作正常了。
                              
 
(4)M_AXI_RLAST,这个是L3给出来,从下面波形可以看出这个信号,不是置高后马上置低。
而是,有可能等待下一个读触发的第一个有效数据出来时才置低。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值