singsuner

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner  发布于  2016-04-25 11:05:46
采纳率 0%
5个问答
18769

【求助】DDR读写数据不一致!

 
由于我的Hi3516a板子无法通过FastBoot下载程序,于是采用了离线烧写SPI Flash然后从Flash启动的方式,测试发现程序运行完start.S就会跑飞,发现是因为DDR读写数据不一致:对DDR全部512MB空间按照字节进行读写测试,发现奇数地址读写一致,而偶数地址读回的数据总是0x00,请问有人遇到过这种问题么?是DDR数据线或地址线的问题么?
我来回答
回答16个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-25 11:58:37
认可0
楼主 u-boot 移植过程中使用的 reg_info.bin是自己修改了xls文件产生的还是用的海思缺省的?

海思缺省的是1G DDR

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-04-25 15:14:23
认可0
本帖最后由 singsuner 于 2016-4-25 15:22 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=29065&ptid=11121]zhuangweiye 发表于 2016-4-25 11:58[/url]
楼主 u-boot 移植过程中使用的 reg_info.bin是自己修改了xls文件产生的还是用的海思缺省的?

海思缺省的 ...[/quote]

多谢您回复。我理解的海思的默认配置文件是使用2块16bit、512MB的DDR,一共是32bit、1GB。最初我用的是海思缺省的,使用的也是2块16bit、512MB的DDR,我运行u-boot到DDR Training时高16bit的DDR总是训练出错,于是参照“Hi3516A/Hi3516D DDR配置指导说明.pdf”将高16bit的DDR屏蔽,只使用了1块512MB的DDR,出现了上述错误。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-25 16:09:20
认可0
这里我们说的DDR的大小512MB是指 512M bytes, 而16bits/32bits 通常是指数据线的宽度
是16还是32是由硬件线路接法决定的, 当然3516A接两块16bits DDR构成32bits宽的数据线和接一块16bits DDR构成16bits宽的数据线的接法基本一样,只是一个用两片,一个用一片

但是在DDR的设置上是不一样的
DDRC_CFG_DDRMODE/DDRC_CFG_RNKVOL 寄存器的值不知道楼主修改过没有?
如果没有,原来是32bits那么表示有一半的数据将会被写到高16bits去,具体细节可以看一下硬件文档里面存储器接口一章中的地址映射一小节

另外 DDR Training时高16bit的DDR总是训练出错就很坑了, 估计是DDR的参数加上布线用海思缺省参数没法满足

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-04-25 17:28:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29085&ptid=11121]zhuangweiye 发表于 2016-4-25 16:09[/url]
这里我们说的DDR的大小512MB是指 512M bytes, 而16bits/32bits 通常是指数据线的宽度
是16还是32是由硬件 ...[/quote]

非常感谢您这么详细的回复,DDRC_CFG_DDRMODE这个寄存器我进行了修改,将数据位宽改为了16bit,您说的其他方面我确实还没有仔细了解,我会按照您的建议仔细看看文档的,等我看完之后会及时跟您反馈的,十分感谢!!

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-04-26 10:15:49
认可0
本帖最后由 singsuner 于 2016-4-26 10:27 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=29085&ptid=11121]zhuangweiye 发表于 2016-4-25 16:09[/url]
这里我们说的DDR的大小512MB是指 512M bytes, 而16bits/32bits 通常是指数据线的宽度
是16还是32是由硬件 ...[/quote]

您好,我按照您说的阅读了手册中关于DDRC地址映射的内容,我将DDRC_CFG_DDRMODE这个寄存器的数据总线位宽改为了16bit。
而DDRC_CFG_RNKVOL上面的参数都是针对单片DDR的,其中的"SDRAM 地址译码模式"在地址映射中说DDR3只支持RBC模式,应该就是“00:{Rank,Row,Ba,Col,DW}= AXI_Address;”,这个也是海思默认的配置,所以这个寄存器我没有改,不知道是否需要进行修改?
我阅读完DDRC地址映射的内容,发现没有针对4Gbit 8bank DDR在16bit模式下的地址映射关系,只有在32bit模式下的,请问您能否就这点指点迷津?
在16bit模式下,地址映射时最低bit为DW,我测试时发现当总线地址最低bit=1时,读写一个字节正确,该bit=0时,读写错误,通常为0x00,这是不是因为当该bit=0时,依然将数据写到了另外一块DDR上了?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-26 11:10:35
认可0
是的DDRC_CFG_RNKVOL是针对单片的

我对比了海思自带的两个xls,分别是3516D 16bits 512M 和 3516A 32bits 1G, 个人认为楼主的用法基本接近3516D 16bits 512M, 发现有个地方值得研究

AXI_CONFIG寄存器,
在3516D 16bits 512M 中该值为0x2000b
在3516A 32bits     1G 中该值为0x2000c

文档中 其解释为

[3:0] bank_width BANK位宽配置。
1011:2k;
1100:4k;
例如:对于32bit DDR器件,若column=10,则bank_width=(32/8) x (2^10)=4k。(个人认为这里的"32bit DDR器件"是指DDR接法而不是单片DDR)

没有16bits的例子,从海思的值1011来倒退可以认为 对于16bit DDR器件,若column=10,则bank_width=(16/8) x (2^10)=2k。

所以, 楼主可以试一下修改一下这个寄存器为0x2000b

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-04-26 12:45:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29146&ptid=11121]zhuangweiye 发表于 2016-4-26 11:10[/url]
是的DDRC_CFG_RNKVOL是针对单片的

我对比了海思自带的两个xls,分别是3516D 16bits 512M 和 3516A 32bits ...[/quote]

非常感谢您的耐心回复!!
我看了一下,您说的这个寄存器确实需要修改,而且确实需要改为您说的0x200b,我是按照“Hi3516A/Hi3516D DDR配置指导说明”这个手册修改的,修改的部分如下:
(1)mddrc_dmc1页:DDRC_CFG_DDRMODE修改为0x16,数据总线设置为16bit;
(2)mddrc_dmc2页:AXI_CONFIG修改为0x200b,设置为2k bank位宽;
(3)mddrc_phy页:DX2CTRL和DX3CTRL修改为0x3,屏蔽高 16 位的写数据。
其他的都未修改,基于的是“Hi3516A-DMEB-uboot-DDR250M-1GB-32bit-CPU600M-BUS198M.xls”,我也尝试直接使用Hi3516D的配置文件,错误是一样的。如果我每次读写4字节数据,则最低字节的数据是错误的,其它字节则正确,而读写1个字节数据,则奇数地址正确,偶数地址错误……
另外我想向您请教一下,我使用FastBoot软件无法直接烧写u-boot,在烧写阶段,DDR的配置应该还未生效吧,如果不能正常烧写,是否更可能是硬件电路的问题?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-26 15:03:30
认可0
fastboot 了解不多, 没有答案

DDR的问题看来还是比较坑, 可能还要咨询下海思

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-04-26 16:15:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29166&ptid=11121]zhuangweiye 发表于 2016-4-26 15:03[/url]
fastboot 了解不多, 没有答案

DDR的问题看来还是比较坑, 可能还要咨询下海思[/quote]

多谢您的回复!!DDR这部分确实比较复杂,加上我又是新手,就更困难了。我对比了我和海思Demo板的DDR,虽然型号不同,但参数是一样的。海思官网的电话是空号,而且邮件也不回,坑的狠啊。您用Hi3516a的时候也是修改了excel里面的参数么?我用的不是官方demo板子,是在其基础上加了一些东西,不知道是不是这部分电路对DDR产生了干扰……

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-26 16:37:07
认可0
DDR的问题具体到某个型号的DDR某种板子都可能会有不同, 这个我也了解不多

另外, 海思好像只支持签约的公司, 直接无视一众小公司(连SDK都不给)

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-04-27 09:03:31
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29176&ptid=11121]zhuangweiye 发表于 2016-4-26 16:37[/url]
DDR的问题具体到某个型号的DDR某种板子都可能会有不同, 这个我也了解不多

另外, 海思好像只支持签约的公 ...[/quote]

多谢回复,跟您学到了不少东西。
海思这是店大欺客啊,问您一下,官方的Demo板只能自己制板么?淘宝上貌似也没有卖的……

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-27 09:26:44
认可0
可以考虑买某些厂商的成品(产品), 把没接出来的接口接出来, 优点是便于软件快速开发, 缺点是没有原理图, 不过现如今都是SOC, 找个懂行的看看应该不难, 这样DDR的问题也没有了

如果硬件过硬自己制板当然最好, 但是自己搞估计没有几版是很难搞定的, 坑无处不在

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-04-27 10:27:16
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29205&ptid=11121]zhuangweiye 发表于 2016-4-27 09:26[/url]
可以考虑买某些厂商的成品(产品), 把没接出来的接口接出来, 优点是便于软件快速开发, 缺点是没有原理图, 不 ...[/quote]

看了路还很长啊,我是得看看有没有什么合适的板子先申请入一块,至少能确定软件有没有问题。再次感谢您的回复,希望以后也能跟您多交流,我这里如果有进展的话也会告诉您的,谢谢!!

781097073

0个粉丝

12

问答

0

专栏

0

资料

781097073 2016-06-22 11:43:56
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29207&ptid=11121]singsuner 发表于 2016-4-27 10:27[/url]
看了路还很长啊,我是得看看有没有什么合适的板子先申请入一块,至少能确定软件有没有问题。再次感谢您的 ...[/quote]

楼主,有没有搞出来啊,最近手上的一块板也有这样的现象。

硬件说两块板DDR设置是一样的,只是走线不同,现在uboot下用sf read读也是最高位不对

singsuner

0个粉丝

5

问答

0

专栏

0

资料

singsuner 2016-07-22 10:25:02
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=32099&ptid=11121]781097073 发表于 2016-6-22 11:43[/url]
楼主,有没有搞出来啊,最近手上的一块板也有这样的现象。

硬件说两块板DDR设置是一样的,只是走线不 ...[/quote]

不好意思,最近没有上论坛,我的问题原因最近才找到,很低级,是电路设计复制粘贴官方DEMO板子时DDR线连错了……

pengkunfan

0个粉丝

0

问答

0

专栏

0

资料

pengkunfan 2017-08-19 20:32:26
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=32099&ptid=11121]781097073 发表于 2016-6-22 11:43[/url]
楼主,有没有搞出来啊,最近手上的一块板也有这样的现象。

硬件说两块板DDR设置是一样的,只是走线不 ...[/quote]

sf read 不是毒flash的数据吗?ddr 不是 可以直接dr 0x81000000 0xff 0xf么?
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区