Vlastní obsluha gdb paketů. Nejpodstatnější část celého programu. Vše se děje v přerušení od USB, jen pokud target rozběhneme, pak se dotazujeme, zda ještě běží v main() metodou Polling(). To se zamyká třídou Locker. Parsování paketů pomocí sscanf() je hodně podobné jako v black magic, tato funkce (jakož i jiné knihovní funkce) byla trochu zjednodušena a přidána do vlastní knihovny libprobe. Ono je to s knihovnami sporné. Pokud použiju systémovou, pak může jakékoli vylepšení a jiná změna způsobit fatální chybu. Po těchto negativních zkušenostech je to vyřešeno takto. A docela to i šetří místo ve flash.
#include <gdbserver.h>
|
| GdbServer () |
| Konstruktor.
|
|
void | Fini (void) |
| pro kompatibilitu s PC pro ladění
|
|
void | Scan (void) |
| Scan - po příkazu "monitor scan". ...
|
|
void | Polling (void) |
| Zde se zjišťuje, zda target běží.
|
|
uint32_t | Up (char *data, uint32_t len) |
| Vlastní parser paketů je zde.
|
|
void | gdb_putpacket_f (const char *fmt,...) |
| Odpověď zpět do gdb (formátovaná)
|
|
void | gdb_out (const char *buf) |
| Odpověď zpět do gdb (neformátovaná)
|
|
| BaseLayer () |
|
virtual uint32_t | Down (char *data, uint32_t len) |
|
virtual BaseLayer & | operator+= (BaseLayer &bl) |
|
BaseLayer * | getDown (void) const |
|
bool GdbServer::probe |
( |
Target * |
n | ) |
|
|
protected |
- Parametry
-
n | new target. If failed, n is delete, else n used as target. |
void GdbServer::Scan |
( |
void |
| ) |
|
Tohle vyjmeme ze třídy - jen to by se mohlo měnit po přidání dalšího targetu.
Dokumentace pro tuto třídu byla generována z následujících souborů: