Microblaze程序固化流程

Source

问题描述:

    论坛经常有人问关于microblaze程序固化在SPI FLASH中的问题,虽然网上有很多的关于SDK程序固化的教程,但是其实没有说清楚xilinx FPGA不同型号的SDK程序固化其实是有不一样的地方的,今天我们就来详细说一说关于SDK程序固化的一些细节问题。

相关介绍:

   之前我也有点搞不懂为什么网上的教程那么多,但是实际试验下来发现能用的几乎没有几个,我在这里整理了一些资料,和大家分享一下:

 

  1. 【Arty-A7入门连载】Vivado中为Arty A7创建MicroBlaze嵌入式系统硬件工程    http://digilent.com.cn/community/197.html
  2. 【JokerのKintex7325】SDK程序从QSPI启动。https://blog.csdn.net/natty715/article/details/104084681

  3.   How To Store Your SDK Project in SPI Flash      https://reference.digilentinc.com/learn/programmable-logic/tutorials/htsspisf/start?_ga=2.189178594.87643803.1594185081-1026760797.1592460060

具体步骤:

     因为我的板子就是Arty-A7  所以我就以此为例介绍具体流程

需要注意的是:《Vivado中为Arty A7创建MicroBlaze嵌入式系统硬件工程》这个教程中有一张图是错的,就是那个Mig个时钟连接的图,正确的连接图应该是图上面的连接   sys_clk 是DDR3的时钟所以应该 连接到166.667MHz   clk_ref是告知系统时钟所以连接到200MHz。

在添加完成上述设置之后要添加SPI FLASH  IP:

添加完成双击

点击自动连线完成设计,生成bitstream,导出:SDK相关的文件

打开SDK

我这里用的是Vitis,流程是一样的,打开Vitis,创建板子,然后注意修改一个文件:

设置完成点击OK ,此时

 

创建相关工程,按照上述参考资料二完成后续操作就没有问题了。

 

答疑解惑:

1.  zynq的SDK程序固化和MicroBlaze的固化是不一样的,准确的说是有ARM核的FPAG和没有ARM核的FPGA使用MicroBlaze软核固化方法不一样,网上有的例子适用于在Zynq平台下构建MicroBlaze然后固化的方式,在K7 A7上面这中方法是不可行的。所以基本上必须要用 BootLoader这个代码 将应用程序的代码放在flash上,再从flash读到DDR中运行。

2. 在软核设计过程中,一定要注意相关时钟的选择,有的时候时钟的连接很重要,不同的时钟虽然软件都能跑,但是内部参数设置还是存在一定的隐患。

3. 关于vitis和SDK使用基本上大同小异,没有特别需要大改的地方,用习惯了就好。

4.有很多人的出错往往都是只看教程,忽略了自己板子和教程板子的器件差异导致不成功。

 

后续:

MicroBlaze  SDK从flash加载还有一个加速版本,那就是大神的操作了,我就不做过多的赘述,具体参见:

【JokerのKintex7325】SDK程序从QSPI启动过慢分析。https://blog.csdn.net/natty715/article/details/104241415

大神就是大神,解决问题直击根本,亲测有效。