zynq无DDR使用OCM加载程序运行

一、使能DDR,但程序不用DDR

赛灵思提供的文档,按照文档进行

链接:https://yun.baidu.com/s/1_tfNnXay524i4u8RS5Rt-Q 密码:nnsa

第八步 改为注释掉FLASH大小选择,均写成128M

zynq无DDR使用OCM加载程序运行_第1张图片

就可以成功的OCM加载程序了

二、在硬件中不使能DDR

根据参考

采用的方法是在zynq block design配置时保留ddr,而在程序编写时不使用ddr,这种方法是不彻底的,因为在fsbl中会使用到ddr,如果硬件板卡中包含ddr,则运行工程没有问题,如果硬件板卡中本身没有ddr,运行必然死机。

参考:http://xinzero.com/zynq-drrless-ocm-fsbl-boot.html

测试了一下,使能DDR目前程序没有崩溃

采用VIVADO 2016.4,和起点博客所写的步骤有些出入,记录一下。

不使能DDR,建立一个标准bsp,在xparameters.h中添加DDR的地址空间定义,如下图

zynq无DDR使用OCM加载程序运行_第2张图片

新建fsbl应用程序工程,使用修改过的bsp。

在fsbl应用程序工程中需要手动修改,每个段到ram_0空间,因为ram_1空间全部留给应用程序(不然空间不够)。

在fsbl的应用程序工程中main.c中增加XPAR_PS0_DDR_0条件编译,而这个宏是不定义,也就是这里DDR初始化是不进行的,因为zynq block design中没有配置DDR,如果这里初始化必然死机。

zynq无DDR使用OCM加载程序运行_第3张图片

然后在fsbl.h中,重定义DDR_END_ADDR宏,将其指向OCM1地址空间的结尾,因为在搬移PS部分代码时会判定地址空间是否有效。

zynq无DDR使用OCM加载程序运行_第4张图片

最后在 qspi.c 注释掉FLASH大小选择,均写成128M(这一步一定要有)

zynq无DDR使用OCM加载程序运行_第5张图片

就可以成功的OCM加载程序了

 

然后和普通工程一样生成boot.bin文件,烧写flash即可正常加载。

你可能感兴趣的:(ZYNQ)