DDR3和FLASH 基于ARTY A7的MicroBlaze系统搭建与应用
说明
一般芯片是用内部存储,但是内部存储空间是有限的。
所以在嵌入式开发过程中,需要用到外部设备DDR3。
QSPI FLASH是为了将程序固化,固化之后每次都可以上电后对程序进行烧写。
实验过程
本实验所用软件为vivado 19.2版本和vitis软件
搭建microblaze
(1)建立工程,打开bd设计
(2)确定系统的时钟
确定时钟信号,复位信号,复位管脚
输出时钟确定,166.167Mhz,200Mhz,50Mhz
复位低电平有效
(3)添加DDR3的ip核
系统时钟(开发的用户手册)166.167Mhz
参考时钟(mig ip核的用户手册)200Mhz
由分配器提供时钟
(4)添加microblaze软核
(5)添加QSPI FLASH IP核
flash的输入时钟为50Mhz
(6)run block automation
32kb,16kb
时钟连接,ui_clk(时钟连接很重要,一定要熟悉每个时钟端口)
(7)添加LED,uart,swtich
波特率:115200
(8)run connection automation
(9)create hdl wrapper 创建封装文件
(10)生成bit流文件(注意硬件文件的导出路径)
打开vitis
(1)新建工程,导入硬件说明文件,其他next,连接开发板
(2)可查看硬件的存储空间,已经是DDR3(mig)了
(3)查看BSP,修改flash为5,这是由板卡上的flash决定的
(4)多了个out of data,即是需要更新了,进行编译
(5)新建工程,作为flash烧录的启动器
此处需要修改硬件平台
(6)编译之后生成一个.elf文件
(7)运行一下应hello,world应用工程
(8)打开串口,run as 运行我们的工程
(9)结果显示,可知工程无误
flash烧写(重点)
(1)目的:每次上电后,开发版自动从flash读取bootloader,之后bootloader加载我们的应用工程,烧写到开发版上运行
(2)首先blconfig这里需要设置flash中的应用工程烧写的偏移量
官方偏移量0x00c00000,编译一下
(3)可以看到其存储空间在local memory中,并不是在DDR3上
(4)已经自动绑定了elf文件,generate,生成download.bit文件
目标:将download.bit文件烧写到flash中
(5)烧写到flash中(时间比较长)
注意:文件为download.bit文件,偏移量为0x00,
flash类型会自动识别,提醒我们的
(6)选择直接烧写flash
(7)bit流文件和之前的一致,偏移量和flash一致
要勾选,将elf文件转变为SREC文件
点击program,固化完成
验证
串口部分,说明已经将程序固化到flash上了
细节注意
(1)时钟的分配
DDR3:166.667MHZ,200MHz
QSPI :50MHz
Microblaze:DDR3的ui clk时钟