A couple of docs were created in previous PRs with board support information common to a few boards. Move these to a new section for "Board Support Tools". (I debated about hiding them completely but decided it would still be useful to have these tool docs appear in the table of contents, just not embedded with the supported boards docs.) Moved these board tools docs over to the doc/ folder and out of boards/ and removed these pages from the navigation index. JIRA: ZEP-2285 Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
424 lines
16 KiB
ReStructuredText
424 lines
16 KiB
ReStructuredText
: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 to build your Zephyr application, invoke
|
|
the pyOCD flash tool and program your Zephyr application to flash.
|
|
|
|
.. code-block:: console
|
|
|
|
$ make FLASH_SCRIPT=pyocd.sh flash
|
|
Using /home/maureen/zephyr/boards/arm/frdm_k64f/frdm_k64f_defconfig as base
|
|
Merging /home/maureen/zephyr/tests/include/test.config
|
|
Merging /home/maureen/zephyr/kernel/configs/kernel.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 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 DEBUG_SCRIPT=pyocd.sh debug
|
|
Using /home/maureen/zephyr/boards/arm/frdm_k64f/frdm_k64f_defconfig as base
|
|
Merging /home/maureen/zephyr/tests/include/test.config
|
|
Merging /home/maureen/zephyr/kernel/configs/kernel.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 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 DEBUG_SCRIPT=jlink.sh debug
|
|
Using /home/maureen/zephyr/boards/arm/frdm_k64f/frdm_k64f_defconfig as base
|
|
Merging /home/maureen/zephyr/tests/include/test.config
|
|
Merging /home/maureen/zephyr/kernel/configs/kernel.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
|