Subject: Debugging of embedded target applications

From: "Siders, Keith" <[email-masked]>
Date: Tue, 7 May 2002 17:05:36 -0500

I am using x86 Linux for host development to a MIPS Linux embedded target. I
finally have a hardware debugger for my target board that works, but I have
to get large application files downloaded in a timely fashion. The debugger
must download to the target via JTAG, therefore downloads have lots of bits
of overhead, i.e. downloads are slow. Is there anything like a gdb server
that can I run on the target to connect to a remote client via ethernet? I
don't really want to have to compile a complete gdb tool to run on my target
board to do this. I don't have the luxury of a lot of memory on this board,
and no swap space (flash-based system, no hdd). The real catch is I would
like to be able to resolve the symbols of the application so the debugger
can be used to set hardware breakpoints, and provide source-level debugging
of the application. Or am I going about this totally bassackwards?

Keith

---

From: Daniel Jacobowitz <[email-masked]>
Date: Tue, 7 May 2002 18:15:12 -0400

> of the application. Or am I going about this totally bassackwards?

There is an appropriate program.  In fact, you even got the name right:
it's called "gdbserver", and is included with the GDB distribution.

I recommend you get GDB 5.2, released last week; the gdbserver included
in that version is far superior for GNU/Linux targets to any previous
release.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

---

From: Geoffrey Espin <[email-masked]>
Date: Tue, 7 May 2002 15:33:51 -0700

> that can I run on the target to connect to a remote client via ethernet? I

If you have a Linux Ethernet driver working, then most people
boot and mount with an NFS root disk.  Then you just cross-compile
additional apps and tools and adding to your NFS disk.  Presumably
including gdb (not tried it).  Then just debug "normally" -- with
the CLI.  The JTAG hardware debugger is not used (or maybe just
to initially bootstrap the kernel and trap certain exceptions).

RH7.1 fs at: ftp://ftp.linux.sgi.com/pub/linux/mips/mipsel-linux/root/
And see: http://www.linux.sgi.com/downloads.html

Once your basic apps are complete, then you can think about
creating a JFFS2 partition (after the MTD flash driver's debuggged)
and using that for standalone bootup.

Actually, my first approach was to flash the linux kernel with
just a cramfs'd busybox and then NFS mount my home directory from
a startup script.

To save (a lot of) space in applications checkout uclibc.org.
Shared libs support with uclibc is real close for MIPS, but for
now use static linking.

Geoff
-- 
Geoffrey Espin
[email-masked]
--

---

From: Geoffrey Espin <[email-masked]>
Date: Tue, 7 May 2002 15:44:27 -0700

> in that version is far superior for GNU/Linux targets to any previous

Does work it for kernel type debugging over *Ethernet*?
I see some docs saying "TCP/IP" connection... but does that
mean a special kind of network driver?  Or a gdbstub/agent
outside the kernel in a special monitor?

Geoff
-- 
Geoffrey Espin
[email-masked]
--

---

From: Daniel Jacobowitz <[email-masked]>
Date: Tue, 7 May 2002 21:43:14 -0400

> outside the kernel in a special monitor?

What do you mean by kernel type debugging?  It's not a kernel stub.  It
can debug user programs over TCP/IP or a serial line.

---

From: Geoffrey Espin <[email-masked]>
Date: Tue, 7 May 2002 19:25:23 -0700

> can debug user programs over TCP/IP or a serial line.

In traditional embedded RTOS land, "system-level debugging".
In the olden days one had to have BDM/JTAG hardware assist
to step thru truly arbitary bits of code, like interrupt handlers,
scheduler.

The original question was about using using a hardware debugger.
Clearly using gdb/gdbserver is for apps only, AFAIK.  Does one
bother with a h/w debugger for apps?  Using kgdb with some kind
of remote debug-agent would be a "system level debugger", a s/w
solution to a traditional hardware only debug aid.  At this time
kind of pointless, as its painful to setup and JTAG debuggers
are so cheap (for mainline CPUs).

Geoff
-- 
Geoffrey Espin
[email-masked]
--

---

From: Daniel Jacobowitz <[email-masked]>
Date: Tue, 7 May 2002 22:32:36 -0400

> bother with a h/w debugger for apps?  Using kgdb with some kind

Actually, yes, you can.  I believe at least the Abatron BDI can do
this.  Could be wrong, though.

> are so cheap (for mainline CPUs).

Depends on your platform.

---

From: Jun Sun <[email-masked]>
Date: Wed, 08 May 2002 11:16:22 -0700

> this.  Could be wrong, though.

I have used kgdb over JTAG.

Jun