QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4095|回复: 12

使用banyan调试tftp出错

[复制链接]
发表于 2005-7-17 01:44:27 | 显示全部楼层 |阅读模式
李明老师,不知道你是否使用banyan调试过tftp程序,我在使用banyan调试led灯程序时没有任何问题,但使用它来调试tftp程序时总是报
RDI Warning 00148: Can't set point错误
我尝试修改过tftp.mcg中的调试设置,但不成功,我单步执行时
b SYS_RST_HANDLER
这条指令不执行跳转,而是直接执行下一条指令,不知道为什么?
使用ads1.2自带的模拟器可以成功运行,但在串口输入时等待。

我想用banyan来调试tftp程序,该怎样做?
发表于 2005-7-18 12:02:58 | 显示全部楼层
tftp 程序的入口地址是 0 ,启动时 0 地址在 flash 中。
使用 banyan 调试 tftp 的 axf 应该会有问题的。
修改一下 入口地址到 0x8000 试试?
回复

使用道具 举报

 楼主| 发表于 2005-7-18 23:19:51 | 显示全部楼层
李明老师:
    将连接的入口地址修改为0x8000后,单步执行到sysinit.s-->InitMemory-->mov pc,r14时出错,我估计是做了memory remap后的地址更改了,但我算了一下地址应该没有更改。继续调试中,希望李老师指点。
回复

使用道具 举报

 楼主| 发表于 2005-7-18 23:22:50 | 显示全部楼层
另外,为什么要将入口地址修改为0x8000啊,我看其它的说明是为了留出一部分空间给初始化数据使用,但不知是留给了什么数据。我将入口地址修改为0x0也做了实验,但程序根本就没有运行。
回复

使用道具 举报

 楼主| 发表于 2005-7-19 00:38:08 | 显示全部楼层
李明老师:
    我现在怀疑是否wiggle jtag扳子或banyan程序有问题,由于tftp程序复杂,我重新调试了一下step-by-step 3中的引导代码,使用banyan来调试,我在按照正常步骤来编译,连接该程序后来调试它,但有时候能够正常一步步的执行,有时候就发现它跑飞了,并且跑飞的位置每次都不一样。是jtag链路的数据传输不稳定吗?

另外,我看tftp的入口地址在你的程序中设置的是0x7c0000,不明白为什么,是armlink程序在连接的时候加了几行代码来做一个跳转吗?我们知道cpu reset后的地址是0x0,它的入口地址为0x0才是啊?
在step-by-step3中的入口地址设置为0x0时,烧到板子上后能够正常运行。但使用banyan调试时入口地址必须设置为0x8000才可以正常调试,现在这个入口地址把我搞糊涂了,我不知道这个入口地址到底是干什么用的?

我查看了一下 tftp程序和step-by-step3中的代码,发现做memory remap的地址都是一样的,这就说明前面将tftp的入口地址修改为0x8000后应该是能够正确运行的,因为step-by-step3程序在banyan下有时能够正常调试。

我现在被一些未知的因素和入口地址搞糊涂了,希望李老师能够解释一下入口地址方面的东西。

期待中......
回复

使用道具 举报

发表于 2005-7-19 11:59:48 | 显示全部楼层
tftp 的代码是 zhaoic 提供的,应该是某个网上的移植版本,直接烧到 flash 里面就工作了。
我也没有细看和钻研 tftp 的实现,只是把其中我认为最主要的几个部分提取出来写了 step-by-step 3。
我觉得你的调试思路需要仔细思考一下,tftp 本身是 bootloader ,需要编译到 0 地址,而使用 wiggler +banyan 调试,是需要把调试的程序下载到板子的 SDRAM 上执行的,这里就有一些矛盾了;另外,板子启动后 bootloader 会把 SDRAM 映射到 0 地址,所以理论上启动了 bootloader  之后,再来调 tftp 的代码(设 ro-base=0 )应该也是可以的。
回复

使用道具 举报

发表于 2005-8-5 11:16:27 | 显示全部楼层
这么多人不会ads(axd)的使用是我想不到的。
回复

使用道具 举报

发表于 2005-8-5 13:15:25 | 显示全部楼层
都有一个过程,所谓闻道有先后 术业有专攻嘛  
回复

使用道具 举报

发表于 2005-8-27 21:05:55 | 显示全部楼层
我遇到一次这个错误,因为用了const来定义一个数组
回复

使用道具 举报

发表于 2006-4-16 00:52:43 | 显示全部楼层

说明:我是下载了bootloader的。
在sysinit.s中有以下内容:
InitSystem
        mov        r12, r14
        bl        InitMemory
        bl        InitStack
        bl        InitPort
        bl        InitUart
        bl        InitTimer
        bl        InitInterrupt
;        ldr        r0, =0x11000000         ;Cache Flush
;        mov        r1, #0

改为
InitSystem
        mov        r12, r14
;        bl        InitMemory
        bl        InitStack
        bl        InitPort
        bl        InitUart
        bl        InitTimer
        bl        InitInterrupt
;        ldr        r0, =0x11000000         ;Cache Flush
;        mov        r1, #0
我这样是可以,实践过!!!
回复

使用道具 举报

发表于 2006-4-27 11:09:29 | 显示全部楼层

wiggler 调试不稳定,现在wiggler 通病,需改进

wiggler 调试不稳定,这是现在wiggler 通病
wiggler 工作速度太高,线太长。

现在网上的 wiggler  设计要改进。
回复

使用道具 举报

发表于 2006-4-28 15:23:59 | 显示全部楼层
Execute|Delete all breakpoint 后就可以了。在周立功的一篇文章里看到的。在网上搜LPC2000_FAQ.pdf应该搜得到。有好些东西是教材上没有的,推荐给大家。
只是我在那样以后发现我的程序在跳到Main后不是跳到Main的第一行,而是PortInit函数中的一行。但不用Banyan而用ARMul就一切正常,搞了两个晚上还是搞不定,甚至还用了JTAG调试代理,大家都来探讨一下吧,之前都是一切正常的。我用的是44B0。
回复

使用道具 举报

发表于 2006-4-30 16:42:58 | 显示全部楼层
我想:banyan是会识CPU型号的,而ARMul是只要是ARM7就可以的。
所以你所调试的程序不是关于44B0型号,可能要改一下。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 00:28 , Processed in 0.091062 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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