: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 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 CMake ``flash`` target with the argument ``OPENSDA_FW=daplink`` to build your Zephyr application, invoke the pyOCD flash tool and program your Zephyr application to flash. Some boards set the argument by default, so it is not always necessary to set explicitly. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :gen-args: -DOPENSDA_FW=daplink :goals: flash Debugging ========= Use the CMake ``debug`` target with the argument ``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. Some boards set the argument by default, so it is not always necessary to set explicitly. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :gen-args: -DOPENSDA_FW=daplink :goals: debug .. _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 ======== Use the CMake ``flash`` target with the argument ``OPENSDA_FW=jlink`` to build your Zephyr application, invoke the J-Link Commander, and program your Zephyr application to flash. Some boards set the argument by default, so it is not always necessary to set explicitly. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :gen-args: -DOPENSDA_FW=jlink :goals: flash Debugging ========= Use the CMake ``debug`` target with the argument ``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. Some boards set the argument by default, so it is not always necessary to set explicitly. .. zephyr-app-commands:: :zephyr-app: samples/hello_world :gen-args: -DOPENSDA_FW=jlink :goals: debug 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