xilinx vivado 烧录microblaze
0赞xilinx官方告知microblaze启动是 直接用 vivado 的associate elf 选择elf文件,但是如果你的工程文件要求在ddr中运行,你就傻了。毕竟可怜的bram,是支持不了多少功能。尤其是函数大神,一个工程连一个IO读写都要写五六个函数的大神,这点bram 是不够的。
首先建立好工程,必须加入 AXI EMC模块。这个是调用底层的flash 或者sram的接口。但是axi emc最大的问题就是官方提供的功能只合适开发板,屌丝是使用好痛苦。参数不让你随便修改,真是MMB.
看到截图的上面的bpiflash了,这个是没有 ,我自己写的模块。自己重写bpi flash读取数据。实在火大。但是需要注意一点自己生成的BPI FLASH读取数据时候,要求主要,启动SREC是单个字节读取,所以在bpi flash去读数据要自己移动字节。以下代码
case(axi_araddr[1:0] )
2'b00: axi_rdata <= {24'h0,bpi_read_out[7:0]};
2'b01: axi_rdata <= {16'h0,bpi_read_out[15:0]};
2'b10: axi_rdata <= { 8'h0,bpi_read_out[7:0] ,16'd0};
2'b11: axi_rdata <= { bpi_read_out[15:0] ,16'd0};
endcase
然后设定好emc ,系统相关的地址
最后生成bit 文件,在导出export sdk。
打开sdk,新建一个SREC的工程。 这个就是传说中启动文件。
选择完成。
修改FLASH的镜像地址。地址不是瞎几把写的。是根据你的mcs文件大小,文件大小在runs/imp/ 文件夹下的 prm 文件 上, 有告知。后面接上的。然后生成文件。注意这个地址也是你后面真正运行的elf地址写入。
对应启动工程,注意选择ld看链接表设定。不要把代码和数据放在DDR上面。
确保 这些代码都是放在BRAM中。否则会起不来。
然后编译工程。生成elf文件。
然后回到vivado 中, 左边栏选择project 在选择上面的tools ,associate elf, 选择SREC elf,
再次生成bit文件,然后生成mcs文件,烧录到bpi flash中。
好了。上面都完成了。
然后做好自己的工程,注意看自己的工程师ld链接表,必须在ddr上面执行。
生成后自己真正运行的elf编程文件。
在sdk中,选择xilinx tools,选择program flash memory,选择选择对应的elf文件。地址设定在刚才SREC的选择flash地址上
然后编程烧录就可以。
年龄32还在研究这种没前途的技术,群里什么水平!!!!