blob: 8dac27131792408d7227f4b04325d85a8d11ef75 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SEGGER RTT Console &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../genindex.html"/>
<link rel="search" title="Search" href="../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../index.html"/>
<link rel="up" title="Tooling" href="tooling.html"/>
<link rel="next" title="SEGGER SystemView" href="segger_sysview.html"/>
<link rel="prev" title="Tooling" href="tooling.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../_static/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li class="important">
<a href="/quick-start/">Quick Start</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../tutorials.html">Tutorials</a> /
<a href="tooling.html">Tooling</a> /
SEGGER RTT Console
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-documentation/edit/master/docs/tutorials/tooling/segger_rtt.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</option>
<option value="/v1_11_0" >
Version: 1.11.0
</option>
<option value="/v1_10_0" >
Version: 1.10.0
</option>
<option value="/v1_9_0" >
Version: 1.9.0
</option>
<option value="/v1_8_0" >
Version: 1.8.0
</option>
<option value="/v1_7_0" >
Version: 1.7.0
</option>
<option value="/v1_6_0" selected="selected" >
Version: 1.6.0
</option>
<option value="/v1_5_0" >
Version: 1.5.0
</option>
<option value="/v1_4_0" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../concepts.html">Concepts</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../tutorials.html">Tutorials</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../blinky/blinky.html">Project Blinky</a></li>
<li class="toctree-l2"><a class="reference internal" href="../repo/add_repos.html">Working with repositories</a></li>
<li class="toctree-l2"><a class="reference internal" href="../slinky/project-slinky.html">Project Slinky for Remote Comms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ble/ble.html">Bluetooth Low Energy</a></li>
<li class="toctree-l2"><a class="reference internal" href="../lora/lorawanapp.html">LoRa</a></li>
<li class="toctree-l2"><a class="reference internal" href="../os_fundamentals/os_fundamentals.html">OS Fundamentals</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devmgmt/devmgmt.html">Remote Device Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sensors/sensors.html">Sensors</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="tooling.html">Tooling</a><ul class="current">
<li class="toctree-l3 current"><a class="current reference internal" href="#">Segger RTT</a></li>
<li class="toctree-l3"><a class="reference internal" href="segger_sysview.html">Segger Sysview</a></li>
<li class="toctree-l3"><a class="reference internal" href="error_diagnostics.html">Error Diagnostics</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../other/other.html">Other</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../os/os_user_guide.html">OS User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.6.0 is not the most recent version of the
Apache Mynewt documentation. Click <a href="/latest">here</a> to
read the latest version.
</p>
</div>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="segger-rtt-console">
<h1>SEGGER RTT Console<a class="headerlink" href="#segger-rtt-console" title="Permalink to this headline"></a></h1>
<div class="section" id="objective">
<h2>Objective<a class="headerlink" href="#objective" title="Permalink to this headline"></a></h2>
<p>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
<a class="reference external" href="https://www.segger.com/jlink-rtt.html">SEGGER’s RTT</a> capability you
can swap UART for RTT, which is a very high-speed memory-mapped I/O.</p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#hardware-needed" id="id1">Hardware needed</a></p></li>
<li><p><a class="reference internal" href="#setup-the-target" id="id2">Setup the target</a></p></li>
<li><p><a class="reference internal" href="#run-the-target-executables" id="id3">Run the target executables</a></p></li>
<li><p><a class="reference internal" href="#connect-to-console" id="id4">Connect to console</a></p></li>
</ul>
</div>
<div class="section" id="hardware-needed">
<h3><a class="toc-backref" href="#id1">Hardware needed</a><a class="headerlink" href="#hardware-needed" title="Permalink to this headline"></a></h3>
<p>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.</p>
</div>
<div class="section" id="setup-the-target">
<h3><a class="toc-backref" href="#id2">Setup the target</a><a class="headerlink" href="#setup-the-target" title="Permalink to this headline"></a></h3>
<p>We’ll assume you have an existing project with some kind of
console/shell like <a class="reference internal" href="../blinky/blinky_console.html"><span class="doc">Blinky with console and shell</span></a>
that we’re switching over to RTT from UART.</p>
<p><strong>Note:</strong> 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 <code class="docutils literal notranslate"><span class="pre">RTT_BUFFER_SIZE_DOWN</span></code> syscfg setting in your
target to increase this value if you do not upgrade your J-Link version.</p>
<p>We can disable uart and enable rtt with the newt target command:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">newt target amend nrf52_blinky syscfg=CONSOLE_UART=0</span>
<span class="go">newt target amend nrf52_blinky syscfg=CONSOLE_RTT=1</span>
</pre></div>
</div>
</div>
<div class="section" id="run-the-target-executables">
<h3><a class="toc-backref" href="#id3">Run the target executables</a><a class="headerlink" href="#run-the-target-executables" title="Permalink to this headline"></a></h3>
<p>Now ‘run’ the newt target as you’ll need an active debugger process to
attach to:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>newt<span class="w"> </span>run<span class="w"> </span>nrf52_blinky<span class="w"> </span><span class="m">0</span>
<span class="go">App image succesfully generated: ~/Downloads/myapp1/bin/targets/nrf52_blinky/app/apps/blinky/blinky.img</span>
<span class="go">Loading app image into slot 1</span>
<span class="go">[~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]</span>
<span class="go">Debugging ~/Downloads/myapp1/bin/targets/nrf52_blinky/app/apps/blinky/blinky.elf</span>
<span class="go">GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150604-cvs</span>
<span class="go">Copyright (C) 2014 Free Software Foundation, Inc.</span>
<span class="go">License GPLv3+: GNU GPL version 3 or later &lt;http://gnu.org/licenses/gpl.html&gt;</span>
<span class="go">This is free software: you are free to change and redistribute it.</span>
<span class="go">There is NO WARRANTY, to the extent permitted by law. Type &quot;show copying&quot;</span>
<span class="go">and &quot;show warranty&quot; for details.</span>
<span class="go">This GDB was configured as &quot;--host=x86_64-apple-darwin10 --target=arm-none-eabi&quot;.</span>
<span class="go">Type &quot;show configuration&quot; for configuration details.</span>
<span class="go">For bug reporting instructions, please see:</span>
<span class="go">&lt;http://www.gnu.org/software/gdb/bugs/&gt;.</span>
<span class="go">Find the GDB manual and other documentation resources online at:</span>
<span class="go">&lt;http://www.gnu.org/software/gdb/documentation/&gt;.</span>
<span class="go">For help, type &quot;help&quot;.</span>
<span class="go">Type &quot;apropos word&quot; to search for commands related to &quot;word&quot;...</span>
<span class="go">Reading symbols from ~/Downloads/myapp1/bin/targets/nrf52_blinky/app/apps/blinky/blinky.elf...done.</span>
<span class="go">0x000000d8 in ?? ()</span>
<span class="go">Resetting target</span>
<span class="go">0x000000dc in ?? ()</span>
<span class="gp gp-VirtualEnv">(gdb)</span>
</pre></div>
</div>
</div>
<div class="section" id="connect-to-console">
<h3><a class="toc-backref" href="#id4">Connect to console</a><a class="headerlink" href="#connect-to-console" title="Permalink to this headline"></a></h3>
<p>In a seperate terminal window <code class="docutils literal notranslate"><span class="pre">telnet</span> <span class="pre">localhost</span> <span class="pre">19021</span></code> 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</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>telnet<span class="w"> </span>localhost<span class="w"> </span><span class="m">19021</span>
<span class="go">Trying ::1...</span>
<span class="go">telnet: connect to address ::1: Connection refused</span>
<span class="go">Trying fe80::1...</span>
<span class="go">telnet: connect to address fe80::1: Connection refused</span>
<span class="go">Trying 127.0.0.1...</span>
<span class="go">Connected to localhost.</span>
<span class="go">Escape character is &#39;^]&#39;.</span>
<span class="go">SEGGER J-Link V6.14e - Real time terminal output</span>
<span class="go">SEGGER J-Link EDU V8.0, SN=268006294</span>
<span class="go">Process: JLinkGDBServer</span>
</pre></div>
</div>
<p>Then you can interact with the device:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">stat</span>
<span class="go">stat</span>
<span class="go">000262 Must specify a statistic name to dump, possible names are:</span>
<span class="go">000262 stat</span>
<span class="go">000262 compat&gt;</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="segger_sysview.html" class="btn btn-neutral float-right" title="SEGGER SystemView" accesskey="n">Next: SEGGER SystemView <span class="fa fa-arrow-circle-right"></span></a>
<a href="tooling.html" class="btn btn-neutral" title="Tooling" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Tooling</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<img src="../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either
registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
</small>
<a href="">
<img src="../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../_static/js/main.js"></script>
</body>
</html>