主题 : 我这个调试不知道为什么,processor ARM7TDMI raised cause:Undefined instruction 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 14220
精华: 0
发帖: 39
金钱: 215 两
威望: 43 点
贡献值: 0 点
综合积分: 78 分
注册时间: 2010-02-04
最后登录: 2018-02-08
楼主  发表于: 2010-06-21 21:20

 我这个调试不知道为什么,processor ARM7TDMI raised cause:Undefined instruction

怎么回事啊,真是郁闷

用的关盘自带的程序也不行
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
贡献值: 0 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
1楼  发表于: 2010-06-21 23:58
处理器目标应该设置为ARM920t,而不是ARM7TDMI。
级别: 新手上路
UID: 22983
精华: 0
发帖: 16
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-06-10
最后登录: 2010-08-09
2楼  发表于: 2010-06-22 11:20

 回 1楼(ofourme) 的帖子

我是那么设置的

感觉不知道是板子有问题还是什么,
今天在去调试,又可以调试啦
隔一会在调试,又不行啦,真是郁闷
级别: 新手上路
UID: 22983
精华: 0
发帖: 16
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2010-06-10
最后登录: 2010-08-09
3楼  发表于: 2010-06-22 11:34

 回 2楼(jiayou) 的帖子

我的感觉是每次DEBUG前要是给板子复位就可以调试,进入到C
要是不DEBUG前不复位,就会进入反汇编里面,真是超级郁闷
都没信心了
级别: 新手上路
UID: 27859
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2010-09-01
最后登录: 2015-03-20
4楼  发表于: 2010-09-06 11:15
我的问题一样啊,目标处理器的确设置的是ARM920T,但每次调试的时候就出现这个报错.
道可道,非常道!
级别: 新手上路
UID: 17950
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2010-04-03
最后登录: 2013-01-18
5楼  发表于: 2010-10-01 17:29
你填的RO是0x30000000
是没初始化内存
要把映像文件加载到SDRAM中,除了要正确设置好映像文件的RO段基地址外(对于一个加载时域和运行时域相同的映像文件来说,RO段基地址实际上就是该映像文件在存储空间的起始地址),更关键的是要对SDRAM进行初始化。因为在上电时,SDRAM是没有被初始化的,所谓初始化SDRAM,就是要设置处理器的SDRAM空间以及读写SDRAM的时序参数,因而SDRAM在初始化之前是不能进行读写操作的。



启动AXD时自动初始化SDRAM:将初始化SDRAM的命令序列保存为一个name.txt文本文件(代码如下),然后在AXD的主窗口下选择菜单Options->Configure Interface...,在Session File一页中选择“Run Configuration Script”,将该name.txt文本文件作为一个脚本加进来,确定。这样以后每次启动AXD时,就会自动运行该脚本来完成对SDRAM的初始化。






用ADS+Jlink调试裸机代码遇到的错误提示及解决办法

困扰我的问题是:

在设置ADS的编译环境的时候要设置RO Base 如果这一项填0x00000000,表示把裸机程序烧写到Nand Flash 的0地址处,这样会把原先的系统给擦除掉。
实例可以参 http://v.youku.com/v_show/id_XMTQ5ODc5ODA4.html

如果这一项填0x30000000的话,对应的ouput选项中Image entry point 也要是0x300000000,表示把裸机程序烧写到SDRAM中运行,掉电后就没有了,而此时原先的系统还在(友善之臂的手册4.1章节教的方法就是烧写到SDRAM中运行的)。
烧写到Nand Flash的0x00000000是不会有错误提示的。而烧写到SDRAM就出现以下提示,或者即使没出现也不能在AXD调试窗口进行下载,运行(包括单步运行)。

我总共遇到的提示:
1、software interrupt (SWI) 0xffffff occured in ARM mode @ address 0x2FAE0000

2、processor ARM79_0 raised an exception
   Cause:Undefined instruction

3、无法添加C:\Documents and Settings\第四空间\default-1-2-0-0.ses



1、
在ADS执行make后,点击debug按钮,
提示:不能添加C:\Documents and Settings\第四空间\default-1-2-0-0.ses
原因:是有中文名。我原来的账户名是第四空间。后来改了可这个文件还是存在。
所以,我把default-1-2-0-0.ses文件放到Documents and Settings目录下了。后来,关掉当前AXD,重新点击ADS下debug按钮的时候弹出个对话框,选择好这个文件即可。(这个是针对我而言的,如果您的计算机帐户不是中文应该不会出现这个问题)


2、
在AXD点击运行后,
提示: software interrupt (SWI) 0xffffff occured in ARM mode @ address 0x2FAE0000  (这个解决的办法主要参考网上的方案)
原因:是没有初始化SDRAM

方法:
ADS 项目属性设置:
-ro-base = 0x30000000
entry 0x30000000
Init Section: 2440init.o Init
AXD下需要加载一个SDRAM初始化文件。(在1提示解决的前提下)

AXD下-->Option->Config Interface->session file->run configuration script.

编辑一个初始化文件保存为.txt文件(名字不取中文即可,我也没试过取中文得不得),
写好后存放到Jlink-V8的安装目录JLinkARM_V408k下(路径中最好也不要有中文),文本内容如下:

Setmem 0x53000000 0x00000000 32
Setmem 0x4A000008 0xFFFFFFFF 32
Setmem 0x4A00001C 0x000007FF 32
Setmem 0x53000000 0x00000000 32
Setmem 0x56000050 0x000055AA 32
Setmem 0x4C000014 0x00000007 32
Setmem 0x4C000000 0x00FFFFFF 32
Setmem 0x4C000004 0x00061012 32
Setmem 0x4C000008 0x00040042 32
Setmem 0x48000000 0x22111120 32
Setmem 0x48000004 0x00002F50 32
Setmem 0x48000008 0x00000700 32
Setmem 0x4800000C 0x00000700 32
Setmem 0x48000010 0x00000700 32
Setmem 0x48000014 0x00000700 32
Setmem 0x48000018 0x0007FFFC 32
Setmem 0x4800001C 0x00018005 32
Setmem 0x48000020 0x00018005 32
Setmem 0x48000024 0x008E0459 32
Setmem 0x48000028 0x00000032 32
Setmem 0x4800002C 0x00000030 32
Setmem 0x48000030 0x00000030 32


编写存放好该文本后按上述方法添加即可。到此我困惑的问题也得到了解决。
在此要感谢给我帮助的朋友和帖子。希望我的这个总结能帮到你的忙。

要注意的是如果这次配置好了,有一次使用的文件的路径中有中文,那么下一次就得冲洗加载这些文件。
所以工程不要放在有中文的目录下。