annotate gsm-fw/lldbg/README @ 992:a7b0b426f9ca

target-utils: boot ROM UART autodetection revamped The new implementation should work with both the familiar Calypso C035 boot ROM version found in our regular targets as well as the older Calypso F741979B version found on the vintage D-Sample board.
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Wed, 30 Dec 2015 21:28:41 +0000
parents f5affe83ba2d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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.