mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 03:45:50 +08:00
docs/guides/lwl: move lwl's README.txt to lwl.rst
This PR moves the lwl's READEME.txt file to Documentation/guides/lwl.rst Signed-off-by: Luchian Mihai <luchiann.mihai@gmail.com>
This commit is contained in:
@@ -61,4 +61,5 @@ Guides
|
|||||||
rust.rst
|
rust.rst
|
||||||
optee.rst
|
optee.rst
|
||||||
qemu_tips.rst
|
qemu_tips.rst
|
||||||
|
lwl.rst
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
|
=============================
|
||||||
Console over Lightweight Link
|
Console over Lightweight Link
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
LWL is a Lightweight bidirectional communication between target and debug host
|
LWL is a Lightweight bidirectional communication between target and debug host
|
||||||
without any need for additional hardware.
|
without any need for additional hardware.
|
||||||
|
|
||||||
It works with openOCD and other debuggers that are capable of reading and
|
It works with openOCD and other debuggers that are capable of reading and
|
||||||
writing memory while the target is running...it should run with JLink
|
writing memory while the target is running...it should run with JLink
|
||||||
for example, if you've got the SDK and modify this file accordingly.
|
for example, if you've got the SDK and modify this file accordingly.
|
||||||
|
|
||||||
Principle of operation is simple; An 'upword' of 32 bits communicates
|
Principle of operation is simple; An `'upword'` of 32 bits communicates
|
||||||
from the target to the host, a 'downword' of the same size runs in the
|
from the target to the host, a `'downword'` of the same size runs in the
|
||||||
opposite direction. These two words can be in any memory that is
|
opposite direction. These two words can be in any memory that is
|
||||||
read/write access for both the target and the debug host. A simple ping
|
read/write access for both the target and the debug host. A simple ping
|
||||||
pong handshake protocol over these words allows up/down link communication.
|
pong handshake protocol over these words allows up/down link communication.
|
||||||
@@ -25,7 +26,8 @@ upwordaddr if you want to work with fixed locations.
|
|||||||
Bit configuration
|
Bit configuration
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
Downword (Host to target);
|
Downword (Host to target)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
A D U VV XXX O2 O1 O0
|
A D U VV XXX O2 O1 O0
|
||||||
|
|
||||||
@@ -38,7 +40,8 @@ O2 23-16 8 - Octet 2
|
|||||||
O1 15-08 8 - Octet 1
|
O1 15-08 8 - Octet 1
|
||||||
O0 07-00 8 - Octet 0
|
O0 07-00 8 - Octet 0
|
||||||
|
|
||||||
Upword (Target to Host);
|
Upword (Target to Host)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
A 31 1 - Service Active (Set by device)
|
A 31 1 - Service Active (Set by device)
|
||||||
D 30 1 - Downsense ack (Toggled to acknowledge receipt of downlink data)
|
D 30 1 - Downsense ack (Toggled to acknowledge receipt of downlink data)
|
||||||
@@ -61,55 +64,55 @@ In the first terminal execute the openocd command to connect to the board.
|
|||||||
Assuming that you already flashed to firmware (nuttx.bin) with the LWL
|
Assuming that you already flashed to firmware (nuttx.bin) with the LWL
|
||||||
console support. For stm32f4discovery board I use this command:
|
console support. For stm32f4discovery board I use this command:
|
||||||
|
|
||||||
------------------------------------------
|
.. code-block:: console
|
||||||
$ sudo openocd -f board/stm32f4discovery.cfg
|
|
||||||
Open On-Chip Debugger v0.10.0-esp32-20200526-6-g4c41a632 (2020-06-23-10:12)
|
|
||||||
Licensed under GNU GPL v2
|
|
||||||
For bug reports, read
|
|
||||||
http://openocd.org/doc/doxygen/bugs.html
|
|
||||||
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
|
|
||||||
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
|
|
||||||
|
|
||||||
Info : Listening on port 6666 for tcl connections
|
$ sudo openocd -f board/stm32f4discovery.cfg
|
||||||
Info : Listening on port 4444 for telnet connections
|
Open On-Chip Debugger v0.10.0-esp32-20200526-6-g4c41a632 (2020-06-23-10:12)
|
||||||
Info : clock speed 2000 kHz
|
Licensed under GNU GPL v2
|
||||||
Info : STLINK V2J17S0 (API v2) VID:PID 0483:3748
|
For bug reports, read
|
||||||
Info : Target voltage: 3.216252
|
http://openocd.org/doc/doxygen/bugs.html
|
||||||
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
|
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
|
||||||
Info : Listening on port 3333 for gdb connections
|
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
|
||||||
Info : accepting 'tcl' connection on tcp/6666
|
|
||||||
invalid command name "ocd_mdw"
|
Info : Listening on port 6666 for tcl connections
|
||||||
0x20000000: 000000ff
|
Info : Listening on port 4444 for telnet connections
|
||||||
|
Info : clock speed 2000 kHz
|
||||||
|
Info : STLINK V2J17S0 (API v2) VID:PID 0483:3748
|
||||||
|
Info : Target voltage: 3.216252
|
||||||
|
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
|
||||||
|
Info : Listening on port 3333 for gdb connections
|
||||||
|
Info : accepting 'tcl' connection on tcp/6666
|
||||||
|
invalid command name "ocd_mdw"
|
||||||
|
0x20000000: 000000ff
|
||||||
|
|
||||||
0x20000000: 000000ff
|
0x20000000: 000000ff
|
||||||
|
|
||||||
|
0x20000004: 7216a318
|
||||||
|
|
||||||
|
0x2000000c: 994b5b1b
|
||||||
|
|
||||||
|
0x2000000c: 994b5b1b
|
||||||
|
|
||||||
|
0x2000000c: 994b5b1b
|
||||||
|
|
||||||
0x20000004: 7216a318
|
...
|
||||||
|
|
||||||
0x2000000c: 994b5b1b
|
|
||||||
|
|
||||||
0x2000000c: 994b5b1b
|
|
||||||
|
|
||||||
0x2000000c: 994b5b1b
|
|
||||||
...
|
|
||||||
|
|
||||||
The "0x2000000c:..." will repeat all the time.
|
|
||||||
|
|
||||||
Now in another terminal execute:
|
Now in another terminal execute:
|
||||||
|
|
||||||
------------------------------------------
|
.. code-block:: console
|
||||||
$ ./ocdconsole.py
|
|
||||||
==Link Activated
|
|
||||||
|
|
||||||
nsh>
|
$ ./ocdconsole.py
|
||||||
nsh> help
|
==Link Activated
|
||||||
help usage: help [-v] [<cmd>]
|
|
||||||
|
nsh>
|
||||||
|
nsh> help
|
||||||
|
help usage: help [-v] [<cmd>]
|
||||||
|
|
||||||
|
? echo exit hexdump ls mh sleep xd
|
||||||
|
cat exec help kill mb mw usleep
|
||||||
|
nsh>
|
||||||
|
|
||||||
? echo exit hexdump ls mh sleep xd
|
This code is designed to be `'hardy'` and will survive a shutdown and
|
||||||
cat exec help kill mb mw usleep
|
|
||||||
nsh>
|
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
This code is designed to be 'hardy' and will survive a shutdown and
|
|
||||||
restart of the openocd process. When your target application
|
restart of the openocd process. When your target application
|
||||||
changes then the location of the upword and downword may change,
|
changes then the location of the upword and downword may change,
|
||||||
so they are re-searched for again. To speed up the start process
|
so they are re-searched for again. To speed up the start process
|
||||||
@@ -124,4 +127,4 @@ better performance it could use interrupts to detect when the memory
|
|||||||
position was modified to read the data.
|
position was modified to read the data.
|
||||||
|
|
||||||
It also will avoid using busy waiting inside the driver, look at
|
It also will avoid using busy waiting inside the driver, look at
|
||||||
nuttx/arch/arm/src/common/arm_lwl_console.c for more information.
|
``nuttx/arch/arm/src/common/arm_lwl_console.c`` for more information.
|
||||||
Reference in New Issue
Block a user