FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/lldbg/README @ 958:4bbe1db8efbe
c139-lldbg: dump command added
| author | Mychaela Falconia <falcon@ivan.Harhan.ORG> | 
|---|---|
| date | Wed, 04 Nov 2015 20:52:26 +0000 | 
| parents | f5affe83ba2d | 
| children | 
| rev | line source | 
|---|---|
| 
865
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
1 The hack implemented in this directory is a poor girl's substitute for JTAG, | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
2 concocted for the purpose of debugging hard crashes in the firmware. The | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
3 intended usage is that the developer seeking to troubleshoot perplexing | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
4 misbehavior in the firmware inserts a call to lldbg_entry() as a form of | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
5 breakpoint at the earliest place in the main fw where it is seen that something | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
6 has gone astray, and when the thread of code execution hits this lldbg_entry() | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
7 function, the regular Nucleus environment gets completely frozen. Lldbg entry | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
8 code saves all registers and the return address (LR) on whatever stack it is | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
9 was called on, then disables all interrupts and switches to its own stack which | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
10 is not used by any other part of the fw. | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
11 | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
12 This lldbg code is linked together with the main fw when feature lldbg is | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
13 enabled in build.conf, but it stands as its own separate body. All functions | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
14 and variables within lldbg are prefixed with lldbg_ to avoid any clashes, and | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
15 once this lldbg code gains control, it does everything on its own without making | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
16 use of *any* part of the regular fw. The code that forms lldbg is based on | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
17 FreeCalypso target-utils (loadagent) and is fully independent of the regular fw. | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
18 | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
19 Lldbg uses its own UART input and output code as well: the entry code waits for | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
20 any previous output (presumably RVTMUX) to go out, then sends out an STX-wrapped | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
21 message to make the lldbg entry visible in rvtdump/rvinterf, preceded by 3 STX | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
22 characters to terminate any RVTMUX packet in progress. From this point onward | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
23 all further communication is done in an ASCII terminal fashion: upon seeing the | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
24 lldbg entry message, the user needs to kill rvtdump/rvinterf and switch to | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
25 fc-serterm. All lldbg code runs with interrupts disabled, thus UART input and | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
26 output are polled. | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
27 | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
28 Once in lldbg mode, the user (developer) can execute various memory dump | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
29 commands to see the frozen state of the fw upon lldbg entry, and hopefully | 
| 
 
f5affe83ba2d
lldbg hack (poor girl's substitute for JTAG) implemented
 
Space Falcon <falcon@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
30 figure out what went wrong earlier. | 
