ZYNQ - 无DDR固化程序(代码运行在OCM上)
创始人
2024-02-03 02:16:58
0

写在前面

ZYNQ固化时,正常情况下都需要DDR参与,但是有时硬件设计时,可能将DDR去掉或设计出错,这将导致ZYNQ无法正常固化,之前有写过一个使用静态链接库进行无DDR固化的文章,当时那个是压缩了FSBL的相关代码只保留FLASH模式下的功能,对于其他模式可能无法正常使用,本文将无DDR固化的情况进一步进行介绍,讲解如何修改FSBL实现ZYNQ的程序固化,给出一个demo进行演示测试。

适用范围

不论是之前提到的静态链接库的版本还是本文版本(暂且叫做运行在OCM版本)。都只适合PS端的轻量级代码,PL端无特殊要求,但是PL PS交互部分如果需要太多驱动可能也会超出片上RAM的空间。本工程根本思想就是将fsbl分配到较大的com0上,其余应用工程分配到ocm1上。

建立工程

建立一个Block design,添加zynq核,然后勾选,FLASH和UART部分。

ZYNQ配置界面

这里为了验证PL端功能正常启动,添加了一个逻辑常数用于驱动LED灯。

连接界面

创建HDL顶层,生成output products,因为涉及到PL端部分,所以需要综合导出生成bitstream,不要忘记加管脚约束。

操作步骤

当运行生成bitstream后,导出硬件,并且包含bit流文件。

image-20221119212406684

准备好硬件平台后就可以进行SDK的FSBL代码的修改了。

SDK代码修改

新建应用工程建一个helloworld工程,打开lscript.ld文件将helloworld的代码段映射区对应到ps7_ram_1,保存编译。

helloworld工程的lscript.ld文件

新建应用工程建一个fsbl工程,打开lscript.ld文件将helloworld的代码段映射区对应到ps7_ram_0,保存编译。

fsbl工程的lscript.ld文件

打开fsbl代码的fsbl_debug.h文件,增加FSBL_DEBUG_INFO的宏定义方便进行查看fsbl的调试信息。

增加FSBL_DEBUG_INFO

打开main.c文件,找到main函数,定位到296行附近,在这里可以看到因为缺少ddr的部分,该部分代码将不会正常执行,将会跳转到下面的代码中。

定位代码

代码以下两行代码执行后FSBL 状态打印输出0XA008,在fsbl.h文件中对应DDR missing 的状态。

实际执行代码

因此要想使得代码正常运行就要将正常存在ddr时的代码正常运行,仅删除和DDR强有关的部分(影响编译和运行的),然后将代码运行地址设置到OCM上。

所以,取消对296行的定义改成如下内容。

修改内容

此时如果使用当前版本的fsbl的可执行文件可以正常进行烧写固化了。但是可能此时还是无法正常启动,下面步骤用于演示并定位具体问题。

选中helloworld工程创建镜像工程。

创建镜像

BootLoader选中刚刚修改好的fsbl.elf。

BootLoader选择

打开开发板,选择jtag模式下烧写,选择创建好的镜像和刚刚的fsbl的elf文件。

烧写配置

正在烧写…

烧写

烧写完成后关掉开发板,切换到flash模式下打开串口观察应用程序能否正常启动。在我的开发板FPGA done的指示灯和PL端的LED等都只是闪烁了一下,不能正常启动。

此时还在flash模式下去尝试在线烧写。从调试信息可见,FLASH正常启动,启动初始化后存在失败,单步调试后发现main函数的在570行的LoadBootImage()运行后就会存在上述问题。

定位问题代码

定位到image_mover.c的436行,发现此处的DDR_END_ADDR的默认定义是0X00,无法正常执行下面的程序。

修改定位

所以这里修改DDR_END_ADDR为片上rom的结束地址。

修改宏定义

再次重复操作,完成镜像生成后,jtag模式烧写,flash模式启动,观察打印调试信息。从调试信息中可以看到,PS端正常启动,此时挂在PL端的LED灯也能正常点亮。

打印信息

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...