Network problem when using jtag debugger on EP8260

Wolfgang Denk wd at denx.de
Sat Nov 22 02:51:15 EST 2003


Dear Jeff,

in message <3FBD6775.C471A57B at ghs.com> you wrote:
>
> using a COP JTAG debugger.  I am encountering a behavior where when I halt
> the kernel, and resume, the kernel's ability to access the network seems to
> be disturbed.  I am wondering if anyone has seen something like this before.

Yes, we have seen this before. It is kind of a know problem.

> My primary goal is to fix Case 1.  I do not want to lose network access
> when I halt the kernel when it is idle.  Case 2 gives me hope that this
> is possible, because this is a case where I can halt the Linux kernel
> without disturbing the network access.
>
> The JTAG debugger I am using is a Green Hills Probe.  I have also tried
> with
> an Agilent E5900B Emulation Probe and seen similar behavior.

We use the BDI2000, and see the same. This is independed of the brand
of JTAG debugger used.

> Some questions:
> - Has anyone seen this before?  If so, is there a known remedy or
> workaround?  (For example, is there a kernel patch?  Is there a way to
> recover from this slowed network state?)  If not, does anyone have
> a theory to explain why I am seeing this behavior?

Yes, we have seen this.

Here is the theory:

When the debugger halts the CPU, it does NOT stop the  CPM.  Actually
ther  eis no way to stop the CPM. So if you have set up your ethernet
driver and provided it with a list of  buffer  descriptors,  the  CPM
will  continue to receive packets from the net and stuff theminto the
avialiable buffers. But when the CPU is stopped (in debug mode), than
the  coherence  between  cache  and  external  memory  is  no  longer
maintained.  The CPM during that time continues to work as programmed
and uses it's BDs sequentially, but the cache does not  get  updated.
When  the  CPU resumes operation, the cache contents is incorrect and
this is the cause of the driver problem.

We implemented a workaround once, but I don;t think we checked it  in
into  our  source  tree  because  it  involves  a certail performance
overhead (although it was quite useful during debugging).

If you're interested I think I can dig it out again.

> - Does this occur on the BDI2000 debugger?  I don't have access to one

Yes, it does.

> those, but I hear that is the best JTAG debugger for Linux.  If anyone can

Yes, it is :-)

But this is a problem of the CPU/CPM, not of the debugger.

> - Is there any reason to think that the scenario I described in Case 1,
> halting the target while at the shell prompt, is something that users
> typically don't do (and hence, I shouldn't worry about it)?

The easiest way to avoid the problem is to use  a  separated  network
for  the target - if only the target itself accesses the net (for NFS
root operation) all traffic will stop when you stop  the  CPU  -  but
make  sure there are no broadcast packets on it (i.e. don't work in a
windoze environment).


Best regards,

Wolfgang Denk

--
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
A witty saying proves nothing, but saying  something  pointless  gets
people's attention.

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list