:orphan:

.. _nxp_opensda:

NXP OpenSDA
###########

Overview
********

`OpenSDA`_ is a serial and debug adapter that is built into several NXP
evaluation boards. It provides a bridge between your computer (or other USB
host) and the embedded target processor, which can be used for debugging, flash
programming, and serial communication, all over a simple USB cable.

The OpenSDA hardware features a Kinetis K2x microcontroller with an integrated
USB controller. On the software side, it implements a mass storage device
bootloader which offers a quick and easy way to load OpenSDA applications such
as flash programmers, run-control debug interfaces, serial to USB converters,
and more.

Zephyr supports the following debug tools through OpenSDA:

* :ref:`nxp_opensda_pyocd`
* :ref:`nxp_opensda_jlink`

.. _nxp_opensda_firmware:

Program the Firmware
====================

Once you've selected which debug tool you wish to use, you need to program the
associated OpenSDA firmware application to the OpenSDA adapter.

Put the OpenSDA adapter into bootloader mode by holding the reset button while
you power on the board. After you power on the board, release the reset button
and a USB mass storage device called **BOOTLOADER** or **MAINTENANCE** will
enumerate. Copy the OpenSDA firmware application binary to the USB mass storage
device. Power cycle the board, this time without holding the reset button.


.. _nxp_opensda_pyocd:

pyOCD
*****

pyOCD is an Open Source python 2.7 based library for programming and debugging
ARM Cortex-M microcontrollers using CMSIS-DAP.

Host Tools and Firmware
=======================

Follow the instructions in `pyOCD Installation`_ to install the pyOCD flash
tool and GDB server for your host computer.

Select your board in `OpenSDA`_ and download the latest DAPLink firmware
application binary. :ref:`nxp_opensda_firmware` with this application.

Flashing
========

Use the ``make flash`` build target with ``OPENSDA_FW=daplink`` to build your
Zephyr application, invoke the pyOCD flash tool and program your Zephyr
application to flash.

  .. code-block:: console

     $ make OPENSDA_FW=daplink flash
     Using /home/maureen/zephyr/boards/arm/frdm_k64f/frdm_k64f_defconfig as base
     Merging /home/maureen/zephyr/tests/include/test.config
     Merging prj.conf
     #
     # configuration written to .config
     #
     make[1]: Entering directory '/home/maureen/zephyr'
     make[2]: Entering directory '/home/maureen/zephyr/samples/hello_world/outdir/frdm_k64f'
       GEN     ./Makefile
     scripts/kconfig/conf --silentoldconfig Kconfig
       Using /home/maureen/zephyr as source for kernel
       GEN     ./Makefile
       CHK     include/generated/version.h
       UPD     include/generated/version.h
       DTC     dts/arm/frdm_k64f.dts_compiled
       CHK     include/generated/generated_dts_board.h
       UPD     include/generated/generated_dts_board.h
       CHK     misc/generated/configs.c
       UPD     misc/generated/configs.c
       CHK     include/generated/offsets.h
       UPD     include/generated/offsets.h
       CC      lib/libc/minimal/source/stdlib/strtol.o

     <snip>

       CC      kernel/work_q.o
       AR      kernel/lib.a
       CC      src/main.o
       LD      src/built-in.o
       AR      libzephyr.a
       LINK    zephyr.lnk
       IRQ     isr_tables.c
       CC      isr_tables.o
       LINK    zephyr.elf
       BIN     zephyr.bin
     Flashing frdm_k64f
     Flashing Target Device
     INFO:root:DAP SWD MODE initialised
     INFO:root:K64F not in secure state
     INFO:root:ROM table #0 @ 0xe00ff000 cidr=b105100d pidr=4000bb4c4
     INFO:root:[0]<e000e000:SCS-M4 cidr=b105e00d, pidr=4000bb00c, class=14>
     WARNING:root:Invalid coresight component, cidr=0x0
     INFO:root:[1]<e0001000: cidr=0, pidr=0, component invalid>
     INFO:root:[2]<e0002000:FPB cidr=b105e00d, pidr=4002bb003, class=14>
     WARNING:root:Invalid coresight component, cidr=0x1010101
     INFO:root:[3]<e0000000: cidr=1010101, pidr=101010101010101, component invalid>
     WARNING:root:Invalid coresight component, cidr=0x0
     INFO:root:[4]<e0040000: cidr=0, pidr=0, component invalid>
     INFO:root:[5]<e0041000:ETM-M4 cidr=b105900d, pidr=4000bb925, class=9, devtype=13, devid=0>
     INFO:root:[6]<e0042000:ETB cidr=b105900d, pidr=4003bb907, class=9, devtype=21, devid=0>
     INFO:root:[7]<e0043000:CSTF cidr=b105900d, pidr=4001bb908, class=9, devtype=12, devid=28>
     INFO:root:CPU core is Cortex-M4
     INFO:root:FPU present
     INFO:root:6 hardware breakpoints, 4 literal comparators
     INFO:root:4 hardware watchpoints
     [====================] 100%
     INFO:root:Programmed 12288 bytes (3 pages) at 10.57 kB/s
     make[2]: Leaving directory '/home/maureen/zephyr/samples/hello_world/outdir/frdm_k64f'
     make[1]: Leaving directory '/home/maureen/zephyr'


Debugging
=========

Use the ``make debug`` build target with ``OPENSDA_FW=daplink`` to build your
Zephyr application, invoke the pyOCD GDB server, attach a GDB client, and
program your Zephyr application to flash. It will leave you at a gdb prompt.

  .. code-block:: console

     $ make OPENSDA_FW=daplink debug
     Using /home/maureen/zephyr/boards/arm/frdm_k64f/frdm_k64f_defconfig as base
     Merging /home/maureen/zephyr/tests/include/test.config
     Merging prj.conf
     #
     # configuration written to .config
     #
     make[1]: Entering directory '/home/maureen/zephyr'
     make[2]: Entering directory '/home/maureen/zephyr/samples/hello_world/outdir/frdm_k64f'
       GEN     ./Makefile
     scripts/kconfig/conf --silentoldconfig Kconfig
       Using /home/maureen/zephyr as source for kernel
       GEN     ./Makefile
       CHK     include/generated/version.h
       UPD     include/generated/version.h
       DTC     dts/arm/frdm_k64f.dts_compiled
       CHK     include/generated/generated_dts_board.h
       UPD     include/generated/generated_dts_board.h
       CHK     misc/generated/configs.c
       UPD     misc/generated/configs.c
       CHK     include/generated/offsets.h
       UPD     include/generated/offsets.h
       CC      lib/libc/minimal/source/stdlib/strtol.o

     <snip>

       CC      kernel/work_q.o
       AR      kernel/lib.a
       CC      src/main.o
       LD      src/built-in.o
       AR      libzephyr.a
       LINK    zephyr.lnk
       IRQ     isr_tables.c
       CC      isr_tables.o
       LINK    zephyr.elf
       BIN     zephyr.bin
     pyOCD GDB server running on port 3333
     GNU gdb (GDB) 7.11.0.20160511-git
     Copyright (C) 2016 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-pokysdk-linux --target=arm-zephyr-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 /home/maureen/zephyr/samples/hello_world/outdir/frdm_k64f/zephyr.elf...done.
     INFO:root:DAP SWD MODE initialised
     INFO:root:K64F not in secure state
     INFO:root:ROM table #0 @ 0xe00ff000 cidr=b105100d pidr=4000bb4c4
     INFO:root:[0]<e000e000:SCS-M4 cidr=b105e00d, pidr=4000bb00c, class=14>
     WARNING:root:Invalid coresight component, cidr=0x0
     INFO:root:[1]<e0001000: cidr=0, pidr=0, component invalid>
     INFO:root:[2]<e0002000:FPB cidr=b105e00d, pidr=4002bb003, class=14>
     WARNING:root:Invalid coresight component, cidr=0x1010101
     INFO:root:[3]<e0000000: cidr=1010101, pidr=101010101010101, component invalid>
     WARNING:root:Invalid coresight component, cidr=0x0
     INFO:root:[4]<e0040000: cidr=0, pidr=0, component invalid>
     INFO:root:[5]<e0041000:ETM-M4 cidr=b105900d, pidr=4000bb925, class=9, devtype=13, devid=0>
     INFO:root:[6]<e0042000:ETB cidr=b105900d, pidr=4003bb907, class=9, devtype=21, devid=0>
     INFO:root:[7]<e0043000:CSTF cidr=b105900d, pidr=4001bb908, class=9, devtype=12, devid=28>
     INFO:root:CPU core is Cortex-M4
     INFO:root:FPU present
     INFO:root:6 hardware breakpoints, 4 literal comparators
     INFO:root:4 hardware watchpoints
     INFO:root:Telnet: server started on port 4444
     INFO:root:GDB server started at port:3333
     Remote debugging using :3333
     INFO:root:One client connected!
     k_cpu_idle () at /home/maureen/zephyr/arch/arm/core/cpu_idle.S:135
     135		bx lr
     Loading section text, size 0x233e lma 0x0
     Loading section devconfig, size 0xa8 lma 0x2340
     Loading section rodata, size 0x5d4 lma 0x23e8
     Loading section datas, size 0x14 lma 0x29bc
     Loading section initlevel, size 0xa8 lma 0x29d0
     [====================] 100%
     INFO:root:Programmed 45056 bytes (3 pages) at 38.21 kB/s
     Start address 0x1b64, load size 10870
     Transfer rate: 9 KB/sec, 1207 bytes/write.
     (gdb)


.. _nxp_opensda_jlink:

Segger J-Link
*************

Segger offers firmware running on the OpenSDA platform which makes OpenSDA
compatible to J-Link Lite, allowing users to take advantage of most J-Link
features like the ultra fast flash download and debugging speed or the
free-to-use GDB Server, by using a low-cost OpenSDA platform for developing on
evaluation boards.

Host Tools and Firmware
=======================

Download and install the `Segger J-Link Software and Documentation Pack`_ to
get the J-Link GDB server for your host computer.

Select your board in `OpenSDA`_ and download the Segger J-Link firmware
application binary. :ref:`nxp_opensda_firmware` with this application.

Flashing
========

The Segger J-Link firmware does not support command line flashing, therefore
the ``make flash`` build target is not supported.

Debugging
=========

Use the ``make debug`` build target with ``OPENSDA_FW=jlink`` to build your
Zephyr application, invoke the J-Link GDB server, attach a GDB client, and
program your Zephyr application to flash. It will leave you at a gdb prompt.

  .. code-block:: console

     $ make OPENSDA_FW=jlink debug
     Using /home/maureen/zephyr/boards/arm/frdm_k64f/frdm_k64f_defconfig as base
     Merging /home/maureen/zephyr/tests/include/test.config
     Merging prj.conf
     #
     # configuration written to .config
     #
     make[1]: Entering directory '/home/maureen/zephyr'
     make[2]: Entering directory '/home/maureen/zephyr/samples/hello_world/outdir/frdm_k64f'
       GEN     ./Makefile
     scripts/kconfig/conf --silentoldconfig Kconfig
       Using /home/maureen/zephyr as source for kernel
       GEN     ./Makefile
       CHK     include/generated/version.h
       UPD     include/generated/version.h
       DTC     dts/arm/frdm_k64f.dts_compiled
       CHK     include/generated/generated_dts_board.h
       UPD     include/generated/generated_dts_board.h
       CHK     misc/generated/configs.c
       UPD     misc/generated/configs.c
       CHK     include/generated/offsets.h
       UPD     include/generated/offsets.h
       CC      lib/libc/minimal/source/stdlib/strtol.o

     <snip>

       CC      kernel/work_q.o
       AR      kernel/lib.a
       CC      src/main.o
       LD      src/built-in.o
       AR      libzephyr.a
       LINK    zephyr.lnk
       IRQ     isr_tables.c
       CC      isr_tables.o
       LINK    zephyr.elf
       BIN     zephyr.bin
     JLink GDB server running on port 2331
     SEGGER J-Link GDB Server V6.14b Command Line Version

     JLinkARM.dll V6.14b (DLL compiled Mar  9 2017 08:48:20)

     -----GDB Server start settings-----
     GDBInit file:                  none
     GDB Server Listening port:     2331
     SWO raw output listening port: 2332
     Terminal I/O port:             2333
     Accept remote connection:      yes
     Generate logfile:              off
     Verify download:               off
     Init regs on start:            off
     Silent mode:                   off
     Single run mode:               on
     Target connection timeout:     0 ms
     ------J-Link related settings------
     J-Link Host interface:         USB
     J-Link script:                 none
     J-Link settings file:          none
     ------Target related settings------
     Target device:                 MK64FN1M0xxx12
     Target interface:              SWD
     Target interface speed:        1000kHz
     Target endian:                 little

     Connecting to J-Link...
     GNU gdb (GDB) 7.11.0.20160511-git
     Copyright (C) 2016 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-pokysdk-linux --target=arm-zephyr-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 /home/maureen/zephyr/samples/hello_world/outdir/frdm_k64f/zephyr.elf...done.
     J-Link is connected.
     Firmware: J-Link OpenSDA 2 compiled Feb 28 2017 19:27:57
     Hardware: V1.00
     S/N: 621000000
     Checking target voltage...
     Target voltage: 3.30 V
     Listening on TCP/IP port 2331
     Connecting to target...Connected to target
     Waiting for GDB connection...Remote debugging using :2331
     Connected to 127.0.0.1
     Reading all registers
     Read 4 bytes @ address 0x00001A04 (Data = 0xBF004770)
     Read 2 bytes @ address 0x000019FC (Data = 0x4040)
     Read 2 bytes @ address 0x000019FE (Data = 0xF380)
     Read 2 bytes @ address 0x00001A00 (Data = 0x8811)
     Read 2 bytes @ address 0x00001A02 (Data = 0xBF30)
     k_cpu_idle () at /home/maureen/zephyr/arch/arm/core/cpu_idle.S:135
     135		bx lr
     Halting target CPU...
     ...Target halted (PC = 0x00001A04)
     Loading section text, size 0x233e lma 0x0
     Downloading 4096 bytes @ address 0x00000000
     Downloading 4096 bytes @ address 0x00001000
     Downloading 830 bytes @ address 0x00002000
     Loading section devconfig, size 0xa8 lma 0x2340
     Downloading 168 bytes @ address 0x00002340
     Loading section rodata, size 0x5d4 lma 0x23e8
     Downloading 1492 bytes @ address 0x000023E8
     Loading section datas, size 0x14 lma 0x29bc
     Downloading 20 bytes @ address 0x000029BC
     Loading section initlevel, size 0xa8 lma 0x29d0
     Downloading 168 bytes @ address 0x000029D0
     Start address 0x1b64, load size 10870
     Writing register (PC = 0x641b0000)
     Transfer rate: 5307 KB/sec, 1552 bytes/write.
     Read 4 bytes @ address 0x00001B64 (Data = 0xF3802010)
     Resetting target
     Resetting target
     (gdb)


Console
=======

If you configured your Zephyr application to use a UART console (most boards
enable this by default), open a serial terminal (minicom, putty, etc.) with the
following settings:

   - Speed: 115200
   - Data: 8 bits
   - Parity: None
   - Stop bits: 1

If you configured your Zephyr application to use `Segger RTT`_ console instead,
open telnet:

  .. code-block:: console

     $ telnet localhost 19021
     Trying 127.0.0.1...
     Connected to localhost.
     Escape character is '^]'.
     SEGGER J-Link V6.14b - Real time terminal output
     J-Link OpenSDA 2 compiled Feb 28 2017 19:27:57 V1.0, SN=621000000
     Process: JLinkGDBServer


.. _OpenSDA:
   http://www.nxp.com/opensda

.. _Segger J-Link OpenSDA:
   https://www.segger.com/opensda.html

.. _Segger J-Link Software and Documentation Pack:
   https://www.segger.com/downloads/jlink

.. _Segger RTT:
    https://www.segger.com/jlink-rtt.html

.. _pyOCD Installation:
   https://github.com/mbedmicro/pyOCD#installation
