打印
[ZLG-ARM]

怪事。

[复制链接]
1618|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
toluoxin|  楼主 | 2007-9-7 17:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调试时发现,存入数据的目标地址发生偏移四字节。
下例中,将R2中数据存入R1=OX400030E8目标地址中,对应代码为
STR R2,[R1]
执行后数据竟然在OX400030EC中,这是为何?我用的是周公的EASYJTAG。

相关帖子

沙发
zlgARM| | 2007-9-8 15:03 | 只看该作者

toluoxin

您好:
  我们做实验并没有出现以下的情况,您可以用我们提供的简单程序试验一下。

     实验代码如下:

    AREA    Examplel,CODE,READONLY
    ENTRY
    CODE32
START    
    MOV     R1,    #0
    MOV     R2,    #0
        
LOOP    LDR     R1,    =0x400030E8
    LDR     R2,     =0xBE000000
    STR     R2,    [R1]
    
    END

使用特权

评论回复
板凳
toluoxin|  楼主 | 2007-9-10 18:26 | 只看该作者

按照您给出的建议代码调试出现同样问题!

使用特权

评论回复
地板
toluoxin|  楼主 | 2007-9-10 18:39 | 只看该作者

??

EASYJTAG已经使用近两年了,编写的程序操作片内RAM运行都正常所以就没有关心过RAM实际存取状况。近段时间由于需要观察RAM内容,打开观察窗口就发现该问题。回顾以前写的程序都能正常运行,怀疑是观察窗口显示的错误?与EASYJTAG有关吗?

使用特权

评论回复
5
zlgARM| | 2007-9-11 09:18 | 只看该作者

toluoxin

您好:
  AXD可能有问题,请直接用变量读取一下。

使用特权

评论回复
6
toluoxin|  楼主 | 2007-9-11 17:32 | 只看该作者

??

今天又研究了一下。使用了LPC2104的板子同时选中LPC2104芯片进行调试,能正常存取。而选用LPC2119的板子选中LPC2119芯片就出现上述情况!如图。

使用特权

评论回复
7
toluoxin|  楼主 | 2007-9-11 17:40 | 只看该作者

??

可以确定与AXD无关,您说EASYJTAG驱动程序有关吗?

使用特权

评论回复
8
五月天| | 2007-9-12 13:27 | 只看该作者

我的看法

这个问题,可能和在RAM中存储数据,记得好像ARM(还是LPC系列的ARM)在写数据的时候,最后一个写入的数据是要写两次才能保存在RAM中的,也就是说最后一个数据如果只写了一次那么它是不会写入内存中,估计和这个有关;但是无论怎么样,这是不会影响程序的正常操作,只是它的机制和我们的常规认识不同而已

使用特权

评论回复
9
toluoxin|  楼主 | 2007-9-12 19:17 | 只看该作者

??

首先谢谢您关注!我今天又测试了一下,测试程序中分别对0X40003000,0X40003004,0X40003008,0X400030C0写入了数据11111111,22222222,33333333,44444444作为标记。然后再读回上述地址,结果完全吻合。然而RAM观察窗口的数据确发生了4字节的偏移!该测试程序是对LPC2119调试,EASYJTAG驱动程序从V1.04 V1.05 V1.06都如此!

使用特权

评论回复
10
toluoxin|  楼主 | 2007-9-15 17:19 | 只看该作者

??

不知同行们有无遇见此怪事?

使用特权

评论回复
11
realrots| | 2007-9-23 09:45 | 只看该作者

这个现象一直都存在,偏移4个字节

使用特权

评论回复
12
fengwei12| | 2007-10-6 15:44 | 只看该作者

我也遇到过

我也遇到过,不过再用变量读出来是正确的,对程序正常操作没影响  

使用特权

评论回复
13
computer00| | 2007-10-6 15:49 | 只看该作者

那可能就是调试器的bug了。

使用特权

评论回复
14
nj1tony| | 2007-10-8 19:08 | 只看该作者

几乎可以确定是easyjtag的问题

几乎可以确定是easyjtag的问题,用其他的jtag试试,比如hjtag

使用特权

评论回复
15
toluoxin|  楼主 | 2007-10-10 17:42 | 只看该作者

??

现在调试时在关心的部位做一个断点,然后将内存中的数据读入寄存器中观察。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

79

帖子

1

粉丝