| SEGGER RTT Console |
| ================== |
| |
| Objective |
| --------- |
| |
| Sometimes you dont have UART on your board, or you want to use it for |
| something else while still having newt logs/shell capability. With |
| `SEGGER's RTT <https://www.segger.com/jlink-rtt.html>`__ capability you |
| can swap UART for RTT, which is a very high-speed memory-mapped I/O. |
| |
| .. contents:: |
| :local: |
| :depth: 2 |
| |
| Hardware needed |
| ~~~~~~~~~~~~~~~ |
| |
| You'll need a SEGGER J-Link programmer in order to use this advanced |
| functionality. You might have an external J-Link programmer you're |
| already using, or maybe your board has a dedicated J-Link onboard as |
| some development kits do. Another possibilty is J-Link OB firmware |
| available for some devices like the micro:bit. |
| |
| Setup the target |
| ~~~~~~~~~~~~~~~~ |
| |
| We'll assume you have an existing project with some kind of |
| console/shell like :doc:`Blinky with console and shell <../blinky/blinky_console>` |
| that we're switching over to RTT from UART. |
| |
| **Note:** We have tested RTT with J-Link version V6.14h. We recommend |
| that you upgrade your J-Link if you have an earlier version of J-Link |
| installed. Earlier versions of J-Link use the BUFFER\_SIZE\_DOWN value |
| defined in hw/drivers/rtt/include/rtt/SEGGER\_RTT\_Conf.h for the |
| maximum number of input characters. If an input line exceeds the |
| BUFFER\_SIZE\_DOWN number of characters, RTT ignores the extra |
| characters. The default value is 16 characters. For example, this limit |
| causes shell commands with more than 16 characters of input to fail. You |
| may set the Mynewt ``RTT_BUFFER_SIZE_DOWN`` syscfg setting in your |
| target to increase this value if you do not upgrade your J-Link version. |
| |
| We can disable uart and enable rtt with the newt target command: |
| |
| .. code-block:: console |
| |
| newt target amend nrf52_blinky syscfg=CONSOLE_UART=0 |
| newt target amend nrf52_blinky syscfg=CONSOLE_RTT=1 |
| |
| Run the target executables |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Now 'run' the newt target as you'll need an active debugger process to |
| attach to: |
| |
| .. code-block:: console |
| |
| $ newt run nrf52_blinky 0 |
| App image succesfully generated: ~/Downloads/myapp1/bin/targets/nrf52_blinky/app/apps/blinky/blinky.img |
| Loading app image into slot 1 |
| [~Downloads/myapp1/repos/apache-mynewt-core/hw/bsp/nrf52-thingy/nrf52-thingy_debug.sh ~/Downloads/myapp1/repos/apache-mynewt-core/hw/bsp/nrf52-thingy ~/Downloads/myapp1/bin/targets/nrf52_blinky/app/apps/blinky/blinky] |
| Debugging ~/Downloads/myapp1/bin/targets/nrf52_blinky/app/apps/blinky/blinky.elf |
| GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150604-cvs |
| Copyright (C) 2014 Free Software Foundation, Inc. |
| License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> |
| This is free software: you are free to change and redistribute it. |
| There is NO WARRANTY, to the extent permitted by law. Type "show copying" |
| and "show warranty" for details. |
| This GDB was configured as "--host=x86_64-apple-darwin10 --target=arm-none-eabi". |
| Type "show configuration" for configuration details. |
| For bug reporting instructions, please see: |
| <http://www.gnu.org/software/gdb/bugs/>. |
| Find the GDB manual and other documentation resources online at: |
| <http://www.gnu.org/software/gdb/documentation/>. |
| For help, type "help". |
| Type "apropos word" to search for commands related to "word"... |
| Reading symbols from ~/Downloads/myapp1/bin/targets/nrf52_blinky/app/apps/blinky/blinky.elf...done. |
| 0x000000d8 in ?? () |
| Resetting target |
| 0x000000dc in ?? () |
| (gdb) |
| |
| Connect to console |
| ~~~~~~~~~~~~~~~~~~ |
| |
| In a seperate terminal window ``telnet localhost 19021`` and when you |
| continue your gdb session you should see your output. If you're not |
| familiar with telnet, when you're ready to exit you may by using the |
| hotkey ctrl+] then typing quit |
| |
| .. code-block:: console |
| |
| $ telnet localhost 19021 |
| Trying ::1... |
| telnet: connect to address ::1: Connection refused |
| Trying fe80::1... |
| telnet: connect to address fe80::1: Connection refused |
| Trying 127.0.0.1... |
| Connected to localhost. |
| Escape character is '^]'. |
| SEGGER J-Link V6.14e - Real time terminal output |
| SEGGER J-Link EDU V8.0, SN=268006294 |
| Process: JLinkGDBServer |
| |
| Then you can interact with the device: |
| |
| .. code-block:: console |
| |
| stat |
| stat |
| 000262 Must specify a statistic name to dump, possible names are: |
| 000262 stat |
| 000262 compat> |