搜索
bottom↓
回复: 17

实在不行了,Keil MDK究竟如何才能运行在RAM中调试,步骤详细,希望解决后作为例子

[复制链接]

出0入0汤圆

发表于 2008-2-19 20:43:02 | 显示全部楼层 |阅读模式
1.新建工程,选择的我的44b0,自动添加启动代码,加入主程序main.c
#include <S3C44B0X.H>
main()
{
while(1);
}

2.设置Options for Target 'target1'
target页
设置 on-chip IROM1 :0x0C000000 size 0x2000 startup 打勾
on-chip IRAM1 0x0c002000 size 0x2000
debug页
使用 h-jtag ,载入ram.ini,内容如下

FUNC void Setup (void) {
    PC = 0x0c000000;
}
Setup();                                // Setup for Download
LOAD ex4.axf INCREMENTAL        // Download
g, main

3.设置2.设置Options for Target 'S3C44B0X.s'
第二页 设置 RAM_MODE

4.编译
Build target 'Target 1'
assembling S3C44B0X.s...
S3C44B0X.s(919): warning: A1786W: This instruction using SP is deprecated in ARMv7
compiling main.c...
linking...
Program Size: Code=476 RO-data=16 RW-data=0 ZI-data=1160  
FromELF: creating hex file...
"ex4.axf" - 0 Error(s), 1 Warning(s).

5.Start Debug
就这样不动了
1
所有工程文件(文件大小:48K)

实在不行,软件仿真可以运行,没有加载ram.ini,运行从0x0开始,加载ram.ini用h-jtag就不行,我真想换回ADS了。
软件仿真旁边的setting会无法找到Darms.dll,也不知道怎么回事,搜索下是差MSVCR71.DLL,添加后仍然不行

顺便问下ads可以使用u-link吗,谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2008-2-19 21:04:27 | 显示全部楼层
我直接用的是KEIL MDK + ulink,很稳定。要在RAM中运行必须要加载初始化文件,是不是你的初始化文件有问题?!
ADS好像不能用Ulink。压根就没想用ADS,自带的编辑器太垃圾,最好自己外挂一个。

出0入0汤圆

 楼主| 发表于 2008-2-19 21:20:53 | 显示全部楼层
楼上你所说的初始化文件应该是指的这里面ram.ini,吧。官方所给的文件说,先去掉Load Application at start,在脚本中改变pc指向ram,然后运行,可事实程序并没有0x0c000000的ram当中,还在0x0开始的flash当中,这也是软件仿真时能够运行的原因,软件仿真我没有加载脚本。
附上官方的说明:RealView MDK 下ARM 程序在RAM 中调试的方法.pdf(文件大小:228K)

出0入0汤圆

发表于 2008-2-19 21:47:02 | 显示全部楼层
ADS不能用ULINK,用调试代理。

出0入0汤圆

 楼主| 发表于 2008-2-19 22:21:40 | 显示全部楼层
我手工载入ads生成的axf文件,他就不是从0x0开始,问题应该就是文件存放地址没设置对,可就是不知道怎么设置

还是提示*** Error: 'C:\Keil\ARM\BIN\TARMS.DLL' not found
软件仿真时*** Error: 'C:\Keil\ARM\BIN\DARMS.DLL' not found

出0入0汤圆

发表于 2008-2-20 14:27:33 | 显示全部楼层
如果要在外部RAM调试,就得把处理器的总线先配置好。在外部RAM运行在编译时就该设置好程序的加载时域地址,否则会出错。你所说的RAM.INT内部有没有包含对目标处理器44BOX内部总线的初始化代码?不然调试器加载代码时也会出错,类似于某些地址写不进去数据。
另外,你的分散加载文件里面的加载时域和运行时域地址设置有没有问题?

出0入0汤圆

发表于 2008-2-20 14:30:45 | 显示全部楼层
FUNC void Setup (void) {

    _WDWORD(); // 《-----------通过向总线配置寄存器写值可以对处理器的总线初始化,可以添加试一下。
                    //  详细的你再看看uv3的帮助文档。  

    PC = 0x0c000000;
}
Setup();                                // Setup for Download
LOAD ex4.axf INCREMENTAL        // Download
g, main

出0入0汤圆

 楼主| 发表于 2008-2-20 20:15:45 | 显示全部楼层
发现前面linker的Ro,Rw base 没有设置,现在运行成功了一次,重新来就运行到0x0c000000后就跑飞了,但是程序确实还在这里,可能就是楼上 liyang 说的总线没配置好。继续测试。

出0入0汤圆

发表于 2008-3-7 15:11:48 | 显示全部楼层
有没有测试成功?我现在也遇到这个问题了,不晓得怎么解决!

出0入0汤圆

发表于 2008-3-11 14:01:02 | 显示全部楼层
顶一下.我也是出现这样的问题.

出0入0汤圆

发表于 2008-3-12 11:41:13 | 显示全部楼层
我的ULINK也是在KEIL中不能用,感觉自带的BOOT 有问题,一时也没有找到个可以用的BOOT文件,因而一直没有用。一直用并口的JTAG来调试,笔记本很不方便,谁有这个KEIL的S3C44B0的BOOT啊?

出0入0汤圆

发表于 2008-3-12 15:30:16 | 显示全部楼层
你的SDRAM没有驱动起来!!!
SDRAM不象SRAM,是需要正确的驱动起来,然后才能正确的读写.
不然程序下进去等于没有下!!

先要用.INI文件把SDRAM驱动起来,然后再下载,再改PC=0X0C000000!!

出0入0汤圆

发表于 2008-4-14 13:53:32 | 显示全部楼层
ls的,请教一下如何把外部的SRAM驱动?

出0入0汤圆

发表于 2008-4-17 15:16:50 | 显示全部楼层
keil MDK带有44B0的例子,在INI文件里面配置SDRAM

出0入0汤圆

发表于 2008-4-18 08:31:59 | 显示全部楼层
keil MDK不支持44b0 仿真,还是用ads吧

出0入0汤圆

发表于 2008-9-4 10:04:19 | 显示全部楼层
楼上说的不对  支持

出0入0汤圆

发表于 2010-10-25 14:59:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-8-27 19:18:52 | 显示全部楼层
MARK.学习一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 23:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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