7396|17

86

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

6410+DDR1 256MB [复制链接]

我现在用的是三星官方的BSP,里面使用的是128MB的mDDR,而我们现在要使用DDR1,由4片32M x 16的DDR1组成一个256MB的内存,先当128MB使用,为了好调试,现在遇到的问题如下:

1、在下载NK时出错,
Download BIN file information:
-----------------------------------------------------
[0]: Base Address=0x80400000  Length=0x2773fe8
-----------------------------------------------------
RAM image
ERROR: Checksum failure (expected=0x34FB31  computed=0x34FC3C)
****** Checksum failure on record 112, ABORT!!! ******

2、下载XIP.bin出错如下:
Download BIN file information:
-----------------------------------------------------
[0]: Base Address=0x80100000  Length=0x3efc528
-----------------------------------------------------
RAM image
ERROR: Checksum failure (expected=0x34FB31  computed=0x34FC30)
****** Checksum failure on record 145, ABORT!!! ******
最不可思议的是,无论我的XIP.bin 是多大,它读到的大小一律为0x3efc528,而我实际大小没这么大

估计是我的内存参数没设好,下面是我的当128MB使用时的配置:
DMC1_MEM_CFG        EQU    ((0<<30)+(0<<21)+(0<<18)+(2<<15)+(0<<14)+(1<<13)+(1<<7)+(0<<6)+(2<<3)+(2<<0))  
DMC1_MEM_CFG2        EQU    ((1<<11)+(1<<8)+(1<<6)+(0<<4)+(0<<2)+(1<<0))
DMC1_CHIP0_CFG        EQU    ((1<<16)+(0x50<<8)+(0xF8<<0))    ; BRC (Linear Address Mapping)
DMC1_CHIP1_CFG          EQU    ((1<<16)+(0x50<<8)+(0xF0<<0))
DMC1_USER_CFG        EQU    0x0

DMC_DDR_REFRESH_PRD                        EQU    (930)    ;
DMC_DDR_REFRESH_PRD_DVS                EQU    (930)                    ; HCLK can be divided by 2
DMC_DDR_CAS_LATENCY                EQU                (4)   ; 6   Set Cas Latency to 3
DMC_DDR_t_DQSS                EQU                (1)   ;  
DMC_DDR_t_MRD                        EQU                (7)   ;  
DMC_DDR_t_RAS                        EQU                         (15)   ; 100
DMC_DDR_t_RC                        EQU                (16)   ; 100                ; 10, Min 67.5ns
DMC_DDR_t_RCD                        EQU                (3)    ;30ns
DMC_DDR_t_RFC                        EQU                        (15)        ;100
DMC_DDR_t_RP                        EQU                (3)    ; 40ns
DMC_DDR_t_RRD                        EQU                (10)    ; 75ns
DMC_DDR_t_WR                        EQU                (3)    ; 60ns   Write recovery time
DMC_DDR_t_WTR                        EQU                         (10) ;  20ns     Last data in to Read command
DMC_DDR_t_XP                        EQU                         (2)                            ; 1tck + tIS
DMC_DDR_t_XSR                        EQU                         (210)    ;1522ns        ; 17, Min 120ns
DMC_DDR_t_ESR                        EQU    (DMC_DDR_t_XSR)



硬件条件: HCLK=133MB
内存芯片:三星的:K4H511638F-LC/LCC (DDR400 当 DDR266使用)


问题:1,请问我应如何解决?问题是出在哪里了?
      2,我在Eboot里进行了读写测试,没发现问题
      3,下载Eboot.bin和XIPKERNEL.bin都没有任何问题,为什么下载NK就有问题呢?是因为传大文件吗?

请高手赐教!
      

最新回复

我上面的测试程序,每次拷贝都是40MB,都还不是大数据吗?一点问题没有呀!而且USB传输也是32bit 每产生一个中断,然后搬到内存的,然后以每一个分割block为单位拷贝到80100000开始的地址的,在这个过程中进行校验,也没见得它这个过程中有多大的数据量。最多也就几MB一次的拷贝。  详情 回复 发表于 2009-11-23 13:16
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
顶呀
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没搞过,关注了
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
我还没有搞到那里我还在bootloader,.....
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
可能USB的走线有问题,要求差分.这种一般是硬件问题了.
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
EBOOT里面搜索****** Checksum failure on record 112, ABORT!!! ******
这个代码一般最小录入的大小
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
就是个通信不正常的问题,通过USB传下去的数据跟ARM实际收到的数据不对,所以就通不过校验(CHECKSUM).
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
NK通过USB传是分记录传的(RECORD),你的情况就是在某个记录传的时候出错了.你的112号记录应该不是固定的,应该是随机的,因为你的USB线不稳,所以在任何的记录下都有可能出错的.


NK的数据错了,可能NK就跑不起来,所以要求进行CHECKSUM.
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
先查查usb的问题吧
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
我现在也把重点放在USB的传输方面,
因为我在Eboot里写了个程序来测试内存,没发现有过任何问题,我写的程序放在main.c里,如下
[code] OALMSG(TRUE, (TEXT("---------------Write 40 MB TO 80100000--------.\r\n")));
pDATA = (unsigned int *)0x80100000;
memset(pDATA, 0xAA, 0X4000000);  //Write 40MB to the memory from 80100000

OALMSG(TRUE, (TEXT("---------------Read-1-------.\r\n")));
  pDATA = (unsigned char *)0x80100000;
for(i=0;i<0X4000000;i++)
{
     rDATA = *pDATA;
    if(rDATA != 0xaa)
            {
                OALMSG(TRUE, (TEXT("-------ERROR:addr=0x%x-data=0x%x------.\r\n"),pDATA,rDATA));
            }
    pDATA ++;
}

pDATA = (unsigned char *)0x84100000;

OALMSG(TRUE, (TEXT("---------------Write40 MB TO 0x84100000--------.\r\n")));
memset(pDATA, 0xBB, 0X3E00000);  //Write 10MB to the memory from 80100000
OALMSG(TRUE, (TEXT("---------------Read-2-------.\r\n")));
pDATA = (unsigned char *)0x84100000;

for(i=0;i<0X3E00000;i++)
{
     rDATA = *pDATA;
    if(rDATA != 0xbb)
            {
                OALMSG(TRUE, (TEXT("-------ERROR:addr=0x%x-data=0x%x------.\r\n"),pDATA,rDATA));
            }
    pDATA ++;
}

OALMSG(TRUE, (TEXT("-------All check OK!!!------.\r\n")));

pDATA = (unsigned char *)0x83000000;
rDATA = 0;
rDATA = *pDATA;
OALMSG(TRUE, (TEXT("-------Addr:0x83000000=0x%x------.\r\n"),rDATA));
pDATA = (unsigned char *)0x87e30000;
rDATA = 0;
rDATA = *pDATA;
OALMSG(TRUE, (TEXT("-------Addr:0x87e30000=0x%x------.\r\n"),rDATA));
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
你用开发板的不行吗,交流qq5722539
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

12
 
是开发板的BSP改过来的
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 
6410 K4H511638F-LC/LCC (DDR400 当 DDR266使用)对pcb 布线特别严,我们也失败一次,第二次就好了。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

14
 
我现在Eboot里用不同方法进行测试,读写内存里的东西都是没有问题的,但不知为什么,从USB传过来的东西就有错误产生,
下面是我模拟USB下载时的一个内存拷贝流程:USB -->8300000 -->80100000
  1.         pDATA = (unsigned char *)0x83000000;
  2.          OALMSG(TRUE, (TEXT("---------------Write40 MB TO 0x83000000--------.\r\n")));
  3.         memset(pDATA, 0xaa, 0X2800000);  //Write 10MB to the memory from 80100000
  4.         OALMSG(TRUE, (TEXT("-----------Copy data from 0x83000000 to 0x80100000-------.\r\n")));
  5.         memcpy((PVOID)0x80100000, (PVOID)pDATA, 0X2800000);
  6.         OALMSG(TRUE, (TEXT("-----------Checksum-------.\r\n")));
  7.         pDATA = (unsigned char *)0x80100000;
  8.         for(i=0;i<0X2800000;i++)
  9.         {
  10.             rDATA = *pDATA;
  11.             if(rDATA != 0XAA)
  12.                     {
  13.                        OALMSG(TRUE, (TEXT("-------ERROR:addr=0x%x-data=0x%x------.\r\n"),pDATA,rDATA));
  14.                     }
  15.              pDATA++;
  16.         }

  17.         OALMSG(TRUE, (TEXT("-----------Checksum-All-OK------.\r\n")));
复制代码


经过长时间测试,一点问题没有,而下载USB,几呼每次都有错,

请问:1、我是不是可以确定问题一定是出一USB传输了?
      2、DRAM控制器的参数设置没问题了吗?

    请做过这一块的大侠帮分析一下。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

15
 
guanzhu
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

16
 
呵呵,虽然我们用的平台不一样,但是出现的问题却类似。
前两天在我的板子上也是出现了能烧BOOT,但是烧NK却总出错。
如果BOOT也是通过USB下载的,并且能起来,基本可以说明USB和内存没有问题,我这边最后确定是BOOT的问题。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 13 楼 ok138ok 的回复:
我现在Eboot里用不同方法进行测试,读写内存里的东西都是没有问题的,但不知为什么,从USB传过来的东西就有错误产生,
下面是我模拟USB下载时的一个内存拷贝流程:USB -->8300000 -->80100000
C/C++ code    pDATA= (unsignedchar*)0x83000000;
     OALMSG(TRUE, (TEXT("---------------Write40 MB TO 0x83000000--------.\r\n")));
    memset(pDATA,0xaa,0X2800000);//Write 10MB to the memory from 80100000    OALMSG(TRUE, (TEXT("-----------Copy data from 0x83000000 to 0x80100000-------.\r\n")));
    memcpy((PVOID)0x80100000, (PVOID)pDATA,0X2800000);
    OALMSG(TRUE, (TEXT("-----------Checksum-------.\r\n")));
    pDATA= (unsignedchar*)0x80100000;for(i=0;i<0X2800000;i++)
    {
        rDATA=*pDATA;if(rDATA!=0XAA)
            {
               OALMSG(TRUE, (TEXT("-------ERROR:addr=0x%x-data=0x%x------.\r\n"),pDATA,rDATA));
            }
         pDATA++;
    }

    OALMSG(TRUE, (TEXT("-----------Checksum-All-OK------.\r\n")));

经过长时间测试,一点问题没有,而下载USB,几呼每次都有错,

请问:1、我是不是可以确定问题一定是出一USB传输了?
? ? ? 2、DRAM控制器的参数设置没问题了吗?

? ? 请做过这一块的大侠帮分析一下。


因为eboot比较小,而nk.bin很大,ddr在大数据量时出问题,同样用jtag调试也没问题。
和我第一块板碰到的问题一样,DDR布线问题。
可以降低DDR频率试下。
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

18
 
我上面的测试程序,每次拷贝都是40MB,都还不是大数据吗?一点问题没有呀!而且USB传输也是32bit 每产生一个中断,然后搬到内存的,然后以每一个分割block为单位拷贝到80100000开始的地址的,在这个过程中进行校验,也没见得它这个过程中有多大的数据量。最多也就几MB一次的拷贝。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表