doc: Update emsk board debug and flash section

Due to support updated from 2.2 to 2.3, a debug script is provided
for emsk, so developer can directly debug the zephyr application
using commands such as follows.
+ make BOARD=em_starterkit debug

Signed-off-by: Huaqi Fang <huaqi.fang@synopsys.com>
This commit is contained in:
Huaqi Fang 2017-05-17 05:54:11 -04:00 committed by ruuddw
commit ed7d122982

View file

@ -25,6 +25,8 @@ https://www.embarc.org.
See also this URL for details about the board:
https://www.synopsys.com/dw/ipdir.php?ds=arc_em_starter_kit
The lastest version of EM Starter Kit is 2.3, developer can upgrade from
2.0/2.1/2.2 to 2.3 using latest firmware.
The default configuration for EM Starter Kit boards can be found in
:file:`boards/arc/em_starterkit/em_starterkit_defconfig`.
@ -38,6 +40,11 @@ access to 128KB DRAM with i-cache and d-cache. The configuration file for EM7D
is found in :file:`arch/arc/soc/em7d/Kconfig.defconfig` and EM11D is found in
:file:`arch/arc/soc/em11d/Kconfig.defconfig`.
.. note::
EM7D has secureshield feature, which is not supported in Zephyr currently.
Hardware
********
Board Layout
@ -174,123 +181,56 @@ Parity: None
Stopbits: 1
========= =====
Using the latest version of Zephyr SDK(>=0.9), you can debug and flash
EM Starterkit directly.
Boot up the SOC by pressing the "C" button. Be sure the digilent cable
is attached from your host to the EM Starter Kit board.
Debugging
==========
Before you can debug, you will need to download and install the
Synopsys versions of ARC GNU tools. Unfortunately the Zephyr-SDK versions
of openocd and gdb have some functionality limitations and don't yet
work well with the ARC EM Starter Kit.
The Synopsys tools are found on GITHUB here:
https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2016.03
For Linux, you will need:
* arc_gnu_2016.03_ide_linux_install.tar.gz
* arc_gnu_2016.03_prebuilt_elf32_be_linux_install.tar.gz
You can untar these into any directory. Suggestion: /usr/local/arc. Follow the
instructions for how to set up to use these tools. You will need your path
changed to refer to the bin directories for these so that these cross
development tools can be found.
It is also useful to create a bash script to launch openocd, since if you are
like me, you will find it hard to remember the arguments. Here is the one I use,
placed in a file called ocd.
Build and debug the application with the following commands:
.. code-block:: console
#!/bin/bash
openocd -c 'gdb_port 3333' -s $ARCGNU_IDE/share/openocd/scripts -f board/snps_em_sk_v2.2.cfg
#where the environment variable ARCGNU_IDE refers to the install dir of the
#openocd IDE
This command to openocd uses port 3333 with gdb client, and provides the board
cfg file for the ARC EM Starter Kit.
I have also found it useful to have a script, named debug.sh, to provide all the
arguments to gdb:
.. code-block:: console
#!/bin/bash
arc-elf32-gdb \
-ex "target remote :3333" \
-ex "load" \
-ex "break __memory_error" \
-ex "break _SysFatalErrorHandler" \
-ex "set remotetimeout 2000" \
outdir/em_starterkit/zephyr.elf
The target remote and load will attach to openocd and load the elf file into
memory. You can also set breakpoints on CPU exception handlers, or fatal
error handlers.
Now to use these two scripts is easy. Boot up the SOC by pressing the "C" button.
Be sure the digilent cable is attached from your host to the EM Starter Kit
board.
In any terminal window, invoke the "ocd" script first. It should establish
contact with the board and output many messages. For example:
.. code-block:: console
Open On-Chip Debugger 0.9.0-dev-g90a4ff5 (2016-05-04-15:37)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
adapter speed: 5000 kHz
Info : clock speed 5000 kHz
Info : JTAG tap: arc-em.cpu tap/device found: 0x200044b1 (mfg: 0x258, part: 0x0004, ver: 0x2)
Info : JTAG tap: arc-em.cpu tap/device found: 0x200044b1 (mfg: 0x258, part: 0x0004, ver: 0x2)
target state: halted
target state: halted
In a second console window, navigate to the directory for your sample application,
and invoke the debug.sh script:
.. code-block:: console
GNU gdb (ARCompact/ARCv2 ISA elf32 toolchain 2016.03) 7.10
Copyright (C) 2015 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-unknown-linux-gnu --target=arc-elf32".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/issues>.
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 outdir/zephyr.elf...done.
Remote debugging using :3333
0x000077b4 in ?? ()
Loading section text, size 0x3714 lma 0x0
Loading section devconfig, size 0x78 lma 0x3714
Loading section gpio_compat, size 0x20 lma 0x378c
Loading section rodata, size 0x244 lma 0x37ac
Loading section datas, size 0x714 lma 0x80000000
Loading section initlevel, size 0x78 lma 0x80000714
Loading section _k_task_list, size 0x58 lma 0x8000078c
Loading section _k_task_ptr, size 0x8 lma 0x800007e4
Loading section _k_event_list, size 0x10 lma 0x800007ec
Start address 0x36f4, load size 16876
Transfer rate: 122 KB/sec, 1406 bytes/write.
Breakpoint 1 at 0x3264: file /home/johndoe/repository/zephyr/arch/arc/core/fault_s.S, line 81.
Breakpoint 2 at 0x3628: file /home/johndoe/repository/zephyr/arch/arc/core/sys_fatal_error_handler.c, line 73.
(gdb)
$ cd <my app>
$ make BOARD=em_starterkit debug
At this point you can do your normal debug session. Set breakpoints and then
'c' to continue into the program.
Launch the debug server on the emsk:
.. code-block:: console
$ make BOARD=em_starterkit debugserver
Connect to the debug server at the emsk from a second console:
.. code-block:: console
$ cd <my app>
$ $ZEPHYR_SDK_INSTALL_DIR/sysroots/x86_64-pokysdk-linux/usr/bin/arc-zephyr-elf/arc-zephyr-elf-gdb outdir/em_starterkit/zephyr.elf
(gdb) target remote localhost:3333
(gdb) load
(gdb) b main
(gdb) c
Flashing
========
If you just want to download the application to the emsk's CCM or DDR and run,
you can also use this command to achieve this.
.. code-block:: console
$ make BOARD=em_starterkit flash
This command still use openocd and gdb to load application elf file to emsk,
but it will load application and then run immediately. If power is lost,
the application will also lost due to power loss.
Most of the time you will not be flashing your program but will instead
debug it using openocd and gdb. The program can be download via the USB
cable into the code and data memories.
@ -305,8 +245,6 @@ refer to the documentation on the ARC EM Starter Kit at the
executable image onto the SPI-FLASH in such a way that it is understood
by the bootloader.
Release Notes
*************