OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3682|回复: 2

[XILINX] OV7725照相机实验-ddr内存地址的问题.

[复制链接]

22

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
429
金钱
429
注册时间
2016-5-23
在线时间
118 小时
发表于 2022-8-25 14:52:59 | 显示全部楼层 |阅读模式
1金钱
OV7725照相机实验 的ddr内存地址
unsigned int const frame_buffer_addr = (XPAR_PS7_DDR_0_S_AXI_BASEADDR + 0x1000000);

为什么要加上这个0x1000000,直接从XPAR_PS7_DDR_0_S_AXI_BASEADDR开始不行吗?

最佳答案

查看完整内容[请看2#楼]

XPAR_PS7_DDR_0_S_AXI_BASEADDR 是从地址空间 0x00100000 开始的,参见下图或 xparameters.h 如果 XPAR_PS7_DDR_0_S_AXI_BASEADDR - 0x01000000 之间 16MB 内存区域未被其他函数使用,是可以用的。 对于Zynq-7000,DDR主要原则是避开 0x00000000 - 0x00100000 的 1MB 地址空间,因为这段区域与 OCM 共用。具体参见 ug585-Zynq-7000-TRM.pdf 第四章第一页。 但其实 XPAR_PS7_DDR_0_S_AXI_BASEADDR 已经避开了这 1MB 的内存 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2022-8-25 14:53:00 | 显示全部楼层
XPAR_PS7_DDR_0_S_AXI_BASEADDR 是从地址空间 0x00100000 开始的,参见下图或 xparameters.h

如果 XPAR_PS7_DDR_0_S_AXI_BASEADDR - 0x01000000 之间 16MB 内存区域未被其他函数使用,是可以用的。

对于Zynq-7000,DDR主要原则是避开 0x00000000 - 0x00100000 的 1MB 地址空间,因为这段区域与 OCM 共用。具体参见 ug585-Zynq-7000-TRM.pdf 第四章第一页。

但其实 XPAR_PS7_DDR_0_S_AXI_BASEADDR 已经避开了这 1MB 的内存区域,所以从 XPAR_PS7_DDR_0_S_AXI_BASEADDR 地址开始,即可安全使用DDR。

这个问题主要是:对于裸机,DDR空间实在太大了。自己从起始地址开始,随意间隔一段区域,再使用DDR,已经成为大家的一种习惯。因为 C语言 对指针没有检测,定义一个数组万一指针溢出跑飞了;或者DMA传输的时候,传输的字节数算成了实际值的2倍,DDR数据就脏了。不如每段区域隔开些距离。


DDR1.png

DDR2.png

ug585-Zynq-7000-TRM.pdf (19.53 MB, 下载次数: 0)
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2022-8-26 00:38:34 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-4 02:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表