Re: Remote Serial Protocol -- reply to '?' when target running
Gareth McMullin <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAL8qUbravGiVaMO-kD9VHAa7j+riLoS7aKhi+3MweFqDhdJ6ag@mail.gmail.com> |
On Wed, Aug 10, 2016 at 5:33 AM, Michael Eager <[email protected]> wrote: > > When gdb connects to a remote target, it asks about > features, and then sends a '?' packet, asking why the > target is stopped. When the target connection is through > a JTAG pod, the pod may be able to respond to the feature > request, but not be able to determine what the current state of > the target is, likely because it is not stopped. What should a > JTAG pod reply in this case? > > The GDB Remote Protocol doc doesn't seem to be entirely consistent. > > The description for '?' is > Indicate the reason the target halted. The reply is the > same as for step and continue. > > The description for Stop Reply Packet says the following: > The ‘C’, ‘c’, ‘S’, ‘s’, ‘vCont’, ‘vAttach’, ‘vRun’, ‘vStopped’, > and ‘?’ packets can receive any of the below as a reply. Except > for ‘?’ and ‘vStopped’, that reply is only returned when the > target halts. > > This suggests that the target can reply to '?' even if it is not > stopped, which seems to contradict the description for '?'. But > none of the listed replies seem to be appropriate. None of the > replies look like "Don't bother me, I'm busy". > > How should the JTAG pod respond? What do most do in this situation? I can't comment on others, but the Black Magic debug project that I maintain [1] implements the extended-remote prototcol, and initially responds to '?' with 'W00' indicating the target exited (there is no attached target). The user initiates a scan for connected targets with 'monitor jtag_scan' from GDB, and then uses the GDB 'attach' command to connect, sending the 'vAttach' packet. This interrupts the target and the reply comes back as 'T05'. [1] https://github.com/blacksphere/blackmagic