ackyee 发表于 2022-3-2 09:36:23

ZYNQ 可以无DDR 启动吗? 网上的方法试了个遍 都没成功

如题, 工程BLOCK DESIGN 阶段没有使能DDR

网上的方式基本上都试验过了 大部分都是在FSBL 中修改DDR 地址,并且把DDR 初始化部分去掉,然后把FSBL工作的堆栈定义到RAM0    基本上是一步一步操作, 但是下载到ZYNQ的QSPI 里面就是不工作   {:dizzy:}

wye11083 发表于 2022-3-2 11:16:23

你jtag能跑通?还有,pl部分初始化bit代码貌似必须得放ddr,所以你得屏蔽掉fpga初始化部分才有可能当纯arm跑。。

ackyee 发表于 2022-3-2 11:26:07

wye11083 发表于 2022-3-2 11:16
你jtag能跑通?还有,pl部分初始化bit代码貌似必须得放ddr,所以你得屏蔽掉fpga初始化部分才有可能当纯arm ...
(引用自2楼)

JTAG 可以跑通, 网上的方法是用OCM 来替代DDR 实现 芯片的启动和初始化   ram0来存放 FSBL   RAM1来存放应用APP的data

暂时还没成功    能固化进去 但是启动后 完全没工作,而且芯片固化后,开机JTAG 反而不认识芯片了,除非JTAG TEST模式下启动

现在在还原整个代码,先确保证有DDR状态下可以固化

后面进度 会放上来

wye11083 发表于 2022-3-2 11:39:52

ackyee 发表于 2022-3-2 11:26
JTAG 可以跑通, 网上的方法是用OCM 来替代DDR 实现 芯片的启动和初始化   ram0来存放 FSBL   RAM1来存放 ...
(引用自3楼)

fsbl也可以打uart输出。

licheng0620 发表于 2022-3-2 12:20:40

ackyee 发表于 2022-3-2 11:26
JTAG 可以跑通, 网上的方法是用OCM 来替代DDR 实现 芯片的启动和初始化   ram0来存放 FSBL   RAM1来存放 ...
(引用自3楼)

lz可以分享下工程吗?谢谢

hugohehuan 发表于 2022-3-2 12:42:33

我问过FAE,至少7020是可以的,但是原厂没有公开的方法。

ackyee 发表于 2022-3-2 12:50:09

licheng0620 发表于 2022-3-2 12:20
lz可以分享下工程吗?谢谢
(引用自5楼)

暂时没有成功的工程, 等成功后再上传

ackyee 发表于 2022-3-2 12:51:04

hugohehuan 发表于 2022-3-2 12:42
我问过FAE,至少7020是可以的,但是原厂没有公开的方法。
(引用自6楼)

7020可以的话7010应该也是可以的 ,感觉网上好多教程都是贴着DDR再测试,根本都没拆掉DDR过
我直接拆了DDR进行调试的,没有固化 直接用JTAG 都是可以工作的,一固化 就崩

myiccdream 发表于 2022-3-2 12:57:44

ackyee 发表于 2022-3-2 12:51
7020可以的话7010应该也是可以的 ,感觉网上好多教程都是贴着DDR再测试,根本都没拆掉DDR过
我直接拆了 ...
(引用自8楼)

ZYNQ 自带一个DDR的memtest案例。 那个案例就是跑在内部的OCM。 如果那个案例你固化不了,那就基本没可能了

ackyee 发表于 2022-3-2 13:08:34

myiccdream 发表于 2022-3-2 12:57
ZYNQ 自带一个DDR的memtest案例。 那个案例就是跑在内部的OCM。 如果那个案例你固化不了,那就基本没可能 ...
(引用自9楼)

光跑官方DEMO肯定不行的FSBL 默认都是需要DDR 才能工作, 必须要改底层 才能 绕过DDR   

myiccdream 发表于 2022-3-2 14:16:34

ackyee 发表于 2022-3-2 13:08
光跑官方DEMO肯定不行的FSBL 默认都是需要DDR 才能工作, 必须要改底层 才能 绕过DDR    ...
(引用自10楼)

Memtest 不需要DDR 。这个例程本身就是用来测试DDR 是否正确的。 我跑过这个例程。DDR是坏的都能跑

浮生莫若闲 发表于 2022-3-2 14:49:32

我觉得理论上肯定是可以的

ackyee 发表于 2022-3-2 15:37:10

最新情况   按照网上教程   初始化的时候使能 DDR然后在PS 代码里把DDR部分都注释掉,固化后,PS部分可以启动, PL 部分要单独JTAG 下载 ,尚未完全成功

ackyee 发表于 2022-3-2 15:51:47

wye11083 发表于 2022-3-2 11:39
fsbl也可以打uart输出。
(引用自4楼)

我这边 下午改结合了网上的两个网站 内容 竟然成功了 不可思议

回头我整理下过程

浮生莫若闲 发表于 2022-3-2 17:08:43

https://blog.csdn.net/zhaoxinfan/article/details/100999822

dellric 发表于 2022-3-2 21:56:26

莫非你为了节约成本准备把DDR干掉?

ackyee 发表于 2022-3-2 23:53:27

本帖最后由 ackyee 于 2022-3-2 23:59 编辑

dellric 发表于 2022-3-2 21:56
莫非你为了节约成本准备把DDR干掉?
(引用自16楼)

确实是的,芯片大涨价,现在换了zynq重新开发,打算把成本往死里干了,哈哈
趁现在还在移植阶段,就试着把ddr去掉,否则后面做完了,再来重新去ddr就没激情去做了

不光节约成本,还能省出一大块pcb空间出来,可以放更多的器件了,还有ddr过孔都可以加大一号,现在按8x16孔,bga也少贴一块,这加起来不是很赞么

主要现在arm核工作负担不大,都是拿来当单片机跑的,pl部分负责了大部分的算法

ackyee 发表于 2022-3-3 00:53:49

浮生莫若闲 发表于 2022-3-2 17:08
https://blog.csdn.net/zhaoxinfan/article/details/100999822
(引用自15楼)

我今天的成功的方法好像没有这么复杂 只是简单的屏蔽了一些 位置然后重新定义了地址然后把FSBL 跑在RAM0   APP跑在RAM1 就成功了

ackyee 发表于 2022-3-3 11:03:45

本帖最后由 ackyee 于 2022-3-3 11:11 编辑

wye11083 发表于 2022-3-2 11:39
fsbl也可以打uart输出。
(引用自4楼)

RAM0 有192k 空间 给 FSBL 用完了
RAM1 有64K 空间 给APP跑, 如果程序小没问题, 如果程序中涉及存储UI 图片, 那还得把 变量丢 FLASH   然后发现就是个大工程了{:mad:}


如果只是简单的 APP还好 其实只要定义完程序编译后的地址就可以了

如果代码比较大   那得参考以下 链接(这种情况下 国内写的教程网站都不用看了)

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842377/Zynq-7000+AP+SoC+Boot+-+Booting+and+Running+Without+External+Memory+Tech+Tip

wye11083 发表于 2022-3-3 11:55:22

本帖最后由 wye11083 于 2022-3-3 11:56 编辑

ackyee 发表于 2022-3-3 11:03
RAM0 有192k 空间 给 FSBL 用完了
RAM1 有64K 空间 给APP跑, 如果程序小没问题, 如果程序中涉及存储UI ...
(引用自19楼)

Z7本来就不是给你无DDR用的{:sweat:} {:sweat:} 无DDR请用STM32系列。。Z7的寄存器初始化非常难配置,各种外设占了不少比例。

其实最关键的是你没有DDR的话,PL。。。貌似都没法加载了。你看看是DMA启动还是怎么启动的。如果是CPU一行一行去配置PL,那么你可以改成读一段SPI配一点PL。

ackyee 发表于 2022-3-3 12:45:08

本帖最后由 ackyee 于 2022-3-3 12:47 编辑

wye11083 发表于 2022-3-3 11:55
Z7本来就不是给你无DDR用的无DDR请用STM32系列。。Z7的寄存器初始化非常难配置,各 ...
(引用自20楼)

我觉得我这边的问题出现在ZYNQ 所有的PS 代码都是预加载的,连CODE区都加载到内存了,      不是像 单片机那样 CODE区可以存放在FLASH
早上和YANG 沟通了下,他说可以调用内部的L2 ,这里有512K的资源,    我觉得难度超过了我的能力了, 还是先用DDR继续做项目的 ,回头再研究的

对了 PS区代码 如果简单的 ,可以控制在64K以内的,   完全可以做到无DDR启动, 连PL 都可以部分都可以加载成功,这部分我已经成功了

我参考这个网站,和他不一样的 是我在BLOCK DESIGN阶段 禁用了DDR没有问题
http://xinzero.com/zynq-drrless-ocm-fsbl-boot.html

ackyee 发表于 2022-3-17 13:07:39

浮生莫若闲 发表于 2022-3-2 17:08
https://blog.csdn.net/zhaoxinfan/article/details/100999822
(引用自15楼)

这个方式你试过么?

ackyee 发表于 2022-3-21 14:12:53

本帖最后由 ackyee 于 2022-3-21 14:17 编辑

wye11083 发表于 2022-3-3 11:55
Z7本来就不是给你无DDR用的无DDR请用STM32系列。。Z7的寄存器初始化非常难配置,各 ...
(引用自20楼)

wiki 上那个xilinx 官方的帖子验证通过 , 确实可以, 程序 从 FLASHXIP 直接启动而不是加载到RAM里再启动,并且 调用L2 的512K缓存    整体运行效率挺高的,功耗也从 PS的1.2W 直接降到 PS部分 0.5W了,芯片温度下降10度

测试了下 删除了DDR部分的电源 芯片, 和拆掉DDR部分电路    都可以工作


缺点:不能在线调试   所有的代码必须下载到FLASH 才能运行,   过程很是复杂,踩了一星期的坑

优点 :可以省BOM省空间省功耗省一颗电源芯片   更方便布局布线了,过孔也能打大一号的了{:lol:}   
页: [1]
查看完整版本: ZYNQ 可以无DDR 启动吗? 网上的方法试了个遍 都没成功