ARM 调试除了状况 求教

lsh800501   2008-7-16 14:08 楼主
   
        Isr_Init();   
[0xebfff672]   bl       Led_Test
          
          

        i = search_params();        //hzh, don't use 100M!      
[0xebffffd7]   bl       Isr_Init
......
[0xe51f98d8]   ldr      r9,0x30102220 ; = #0x301a12b8


这个是我用Multi Ice调试2440时候的出错现场,明眼人一看就知道是C代码和汇编没有对上,为什么呢???? 为什么到这里就会对不上呢??? 请哪位前辈指点下

回复评论 (5)

无效函数调用(就是结果在后面未被引用),被编译器优化,不产生对应的汇编代码。

嗯,这个是猜的,因为没有看到源代码。
点赞  2008-7-16 15:50
有些概念性的东西还没有搞清楚

我用AXD调试,我load image,现在ram中运行的程序是什么呢? 是我load进RAM的程序,还是从nand拷贝到ram的程序呢(我用nand启动)???
我重新下载了个程序到nand 然后再调试就好了。

是不是我用load memory from file而不是load image才是将我现在程序放到ram中进行调试呢?

为什么我load memory from file会显示:
the code in the cache_clean_code_address region has been overwitten Please change the address of this area now

我该怎么改这个地址呢?
点赞  2008-7-16 17:09

4楼 xzl 

你真的有很多基本概念没搞清楚,有时候不要哪么着急调试程序,先多看些书,把基础概念搞清楚在试程序比较好!
你要先搞清楚什么是运行时的数据和程序地址空间,怎么设置?另外不知你的程序中有无重映射,有的话也把重映射理清楚!
提供你个思路,具体的东西自己看书吧,现在arm的资料这么好找
点赞  2008-7-17 00:31
看来是load时出的问题。不过load时是直接从你的PC上打开相应的bin文件的,怎么回事。这个bin download到flash无法运行吧?

程序运行可以在FALSH或者SRAM。不过flash必须是线性可寻址空间。而NAND是无法直接线性寻址的,所以必须拷贝到RAM中,然后在RAM中运行。

运行地址什么的,一般在一个CPU平台上是固定的,不是说不可以改,而是整个系统移植时,移植的人就定好了,很多有关系,牵涉到的都与之对应的定好了。你想改当然可以,不过那工作量不亚于再次移植一次。
点赞  2008-7-17 08:57
多谢2位 继续学习
点赞  2008-7-17 11:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复