15244|46

49

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

程序无法在SDRAM中调试 [复制链接]

我在IAR环境下,用JLINK直接把程序下载到SDRAM中调试,却不能下断点,本来该跳转的指令都变成了顺序执行的,会是什么原因?


最新回复

NND,换了SDRAM,还是老样子。搞不定......  详情 回复 发表于 2010-2-6 22:33
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
SDRAM没有初始化,所以没能正确地把数据下载到RAM中去,即使画面上显示的是代码,但是实际上RAM中的数据并不是实际编译出来的BIN文件,你可以直接查看一下RAM中的数据,都是错的。
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
帮顶,没用过IAR,关注
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
veabol说的有理,不知道这个根据没有memory dump的功能,有的话LZ可以把内存中image导出来,之后和你实际的axf文件比较一下。

这样至少可以先确定SDRAM中是否加载了正确的iamge
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
MemSet
        ADR        r0, SMRDATA                ;Set memory control registers.
        LDR        r1,=BWSCON                ;BWSCON Address
        ADD        r2, r0, #52                ;End address of SMRDATA,total 13 registers
_MemSet        
        LDR        r3, [r0], #4     
        STR        r3, [r1], #4     
        CMP        r2, r0                 
        BNE        _MemSet

请教veabol,我已经在烧入NandFlash第0块的前4K代码中执行了SDRAM的初始化,为什么还会这样?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

6
 
我用的是Mini2440,SDRAM的设置参数都是照着例程写的,设置参数不会有错。而且烧入NandFlash第0块的前4K代码中是可以正常使用SDRAM的。不明白为什么直接下载进去调试就不行?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
哦,哦。
没大明白,你到底是要在SDRAM中调试运行(debug)
还是需要下载到nand看看程序执行效果?

如果是调试在SDRAM中运行的话,跟你的nand有什么关系?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 4 楼 sxweibiao 的回复:
MemSet
? ? ? ? ADR        r0, SMRDATA                ;Set memory control registers.
        LDR        r1,=BWSCON                ;BWSCON Address
        ADD        r2, r0, #52        ? ? ? ? ;End address of SMRDATA,total 13 registers
_MemSet
        LDR        r3, [r0], #4
        STR        r3, [r1], #4
        CMP        r2, r0
        BNE        _MemSet

请教veabol,我已经在烧入NandFlash第0块的前4K代码中执行了SDRAM的初始化,为什么还会这样?
你可以先确认SDRAM是否初始化成功,然后再去考虑其它的。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
回ialwaysgo:

    我想要在SDRAM中调试运行(debug),但是SDRAM的初始化工作是由NandFlash第0块前4K代码完成的。

回WolfMvp:
    我该如何确认SDRAM是否初始化成功?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
不能这样吧,使用编译器直接加载image到SDRAM中调试运行时,应该有个ini脚本配置的东东吧,我不知道你的平台是否需要,但我的MDK下开发肯定是需要的。。。就是说点击DEBUG后进入调试界面,这其中的SDRAM初始化操作是由编译器来做的。还没轮到你程序上对其操作。

必须先过这关

 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
确认SDRAM是否哦初始化成功,我觉得就是看是否加载成功,且加载完后运行程序OK。。。

这样你才用的放心,嘿嘿
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

12
 
S3C2440设置为NandFlash启动时,复位后会自动把前4K代码复制到内部SRAM并运行,SDRAM的初始化是在这部分代码中进行的。这样就可以直接把程序下载到SDRAM中运行。

 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

13
 
1. 以你这种方式,你能在IDE下单步调试SDRAM中程序吗??


2. 你这个就不叫在SDRAM中调试运行了吧,就是下载到nand中靠数据搬运来看程序执行结果的了,
   无法运行了原因就多了,其中一条是boot是否在4KB以内;搬运后的PC有没有指对?等等
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

14
 
1.这种方法之前在我自己做的一块板上是行得通的。现在我在Mini2440上试验行不通。

2.确实是在SDRAM中调试。直接下载时指定的起始地址是0x30000000,跟Nand中的程序就没有关系了。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

15
 
你如果用JTAG模式,那么NAND中4K的程序不会跑的。也就是SDRAM没有初始化。
所以如果要将程序download到RAM里面去的话,必须先对RAM进行初始化,download下去的数据才能保证是正确的。

应该有类似的初始化脚本先必须加入到设置里面去才行。类似QQ2440里面HJTAG提供的FriendlyARM2440.his
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

16
 
想确定DRAM初始化是否成功就能过IAR查看你的DRAM地址的内存数据,看看和你下进去的是否一样。
另外打开IAR后查看一下0地址的数据,看下与那4K的代码数据一致,如果是全是0、全是F之类的,或者某一串数据循环出现的话就说明你的NAND启动4K stepstone没成功。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

17
 
Veabol:0地址的数据,与那4K的代码数据是一致的。我在Nand的启动4K代码中让它从串口输出一串字符也能正常输出,初始化SDRAM的语句应该是执行过的。



现在我用另一种方法,写了一个初始化脚本文件然后再直接下载是可以的。但是那4K代码中的初始化参数和初始化脚本中的参数是一样的啊,为什么就不行?

 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

18
 
这是初始化脚本文件:

SetJTAGSpeed(30);
//Reset(0);                             // Reset target
Write32(0x53000000, 0x00000000);        // Disable the watchdog
Write32(0x4A000008, 0xFFFFFFFF);        // Disable all interrupt
Write32(0x4A00001C, 0x00007FFF);        // Disable all sub interrupt
Write32(0x4C000000, 0x00FFFFFF);        // Set PLL lock time
Write32(0x4C000014, 0x00000007);        // CLKDIVN
Write32(0x4C000008, 0x00040042);        // UPLLCON
Delay(1);
Write32(0x4C000004, 0x00061012);        // MPLLCON


Write32(0x48000000, 0x22111120);        // BWSCON
Write32(0x48000004, 0x00002F50);        // BANKCAON0
Write32(0x48000008, 0x00000700);        // BANKCAON1
Write32(0x4800000C, 0x00000700);        // BANKCAON2
Write32(0x48000010, 0x00000700);        // BANKCAON3
Write32(0x48000014, 0x00000700);        // BANKCAON4
Write32(0x48000018, 0x00007FFC);        // BANKCAON5
Write32(0x4800001C, 0x00018005);        // BANKCAON6
Write32(0x48000020, 0x00018005);        // BANKCAON7
Write32(0x48000024, 0x008E0459);        // Refresh
Write32(0x48000028, 0x00000032);        // Banksize
Write32(0x4800002C, 0x00000030);        // Mode register
Write32(0x48000030, 0x00000030);        // Mode register

SetJTAGSpeed(4000);


我在前4K代码中也做了这样的设置,为什么就不行?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 17 楼 sxweibiao 的回复:
这是初始化脚本文件:

SetJTAGSpeed(30);
//Reset(0);? ? ? ? ? ? ? ? ? ? ? ? ? ?  // Reset target
Write32(0x53000000, 0x00000000);? ? ? ? // Disable the watchdog
Write32(0x4A000008, 0xFFFFFFFF);? ? ? ? // Disable all interrupt
Write32(0x4A00001C, 0x00007FFF);? ? ? ? // Disable all sub interrupt
Write32(0x4C000000, 0x00FFFFFF);? ? ? ? // Set PLL lock time
Write32(0x4C000014, 0x00000007);? ? ? ? // CLKDIVN
Write32(0x4C000008, 0x00040042);? ? ? ? // UPLLCON
Delay(1);
Write32(0x4C000004, 0x00061012);? ? ? ? // MPLLCON


Write32(0x48000000, 0x22111120);? ? ? ? // BWSCON
Write32(0x48000004, 0x00002F50);? ? ? ? // BANKCAON0
Write32(0x48000008, 0x00000700);        // BANKCAON1
Write32(0x4800000C, 0x00000700);        // BANKCAON2
Write32(0x48000010, 0x00000700);        // BANKCAON3
Write32(0x48000014, 0x00000700);        // BANKCAON4
Write32(0x48000018, 0x00007FFC);        // BANKCAON5
Write32(0x4800001C, 0x00018005);        // BANKCAON6
Write32(0x48000020, 0x00018005);        // BANKCAON7
Write32(0x48000024, 0x008E0459);        // Refresh
Write32(0x48000028, 0x00000032);        // Banksize
Write32(0x4800002C, 0x00000030);        // Mode register
Write32(0x48000030, 0x00000030);        // Mode register

SetJTAGSpeed(4000);


我在前4K代码中也做了这样的设置,为什么就不行?
期待大犇Veabol搞定,学习学习…
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

20
 
我也碰到过,结果有两个可能,
1是,我有一次发现是这样,但发现程序根本就没有下下去。重启芯片后还是以前的程序。
2是,外部总线上挂的芯片短路或者接地了。
这是本人发现的问题,可能对你有帮助。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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