求助各位大神!!!FPGA控制CFI型FLASH。

2020-02-27 21:18发布

5月份买了黑金4代开发板,跟着做了些教程,感觉很好。前一段时间,自己做了个板子,但是在调试中,遇见了一些问题,请这里的高手们能给予赐教!!!
      我自己做的板子,FPGA用的是EP3C5E144C8N,FLASH用的是AM29LV320DB,软件用的是 Quartus II 11.0sp1 (32-bit)和Nios II 11.0sp1 Software Build Tools for Eclipse。
     关于FLASH的操作,我参考的是黑金的教程。
     部分程序代码如下:
     alt_flash_fd* fd;
      fd = alt_flash_open_dev("/dev/flash");      //我的工程里,在system.h中,flash 的name就是"/dev/flash"
      UART_TX(fd);                                              //UART_TX是个8位的串口发送函数,参考的是特权的。这个函数已经验证过了,是没有问题的。
     
      结果发现,串口发出来的值是0,也就是说,FLASH没有被打开。我这块的硬件电路也是参考的黑金,好像也没有什么特殊的,也选择了8位模式,其他引脚都和FPGA连接,除了几个空脚和电源啊,其实就是抄袭黑金的。
    再次把程序整到黑金的开发板上,UART_TX(fd);以后,是个非零的值,但是,好像有一定的随机性,但至少不为零,我就认为flash打开了(对FLASH没有后续操作了)。但是,这样也存在问题,那就是并不是每次运行程序,flash都能被打开,成功的概率50%。
    然后,我将程序进行了修改:
     alt_flash_fd* fd;
      fd = alt_flash_open_dev("/dev/flash");
      while(fd==0)
      {
        fd = alt_flash_open_dev("/dev/flash");
        UART_TX(fd);
      }
      用串口助手来检测,要么,串口助手的接收区什么都没有(应该是flash被打开了),要么,串口助手的接收区一直在刷00,(flash一直都打不开);
    最后,我得出了这个结论,flash如果不能被打开,那么必须重新运行整个程序,这样或许才可以打开FLASH。
    这里面,我的问题有2个:
    (1)为什么在我的板子上,flash一次都打不开,而在黑金开发板上,至少还能打开。(再次说明,硬件电路几乎是一样的)
    (2)即便是在黑金开发板上运行,怎么才能100%打开FLASH设备。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。