[PATCH V3] doc: board: ti: k3: Add a guide to debugging with OpenOCD

Heinrich Schuchardt xypron.glpk at gmx.de
Thu Aug 3 00:37:01 CEST 2023


On 8/1/23 19:41, Nishanth Menon wrote:
> From: Jason Kacines <j-kacines at ti.com>
>
> Bootloader debug usually tends to be a bit dicey prior to DDR and
> serial port getting active in the system. JTAG typically remains the
> only practical debug option during the initial bringup.
>
> OpenOCD is one of the most popular environment for providing debug
> capability via a gdb compatible interface for developers to work with.

Thanks for documenting the usage of OpenOCD. I only have some nits:

%s/gdb/GDB/

>
> Debugging U-boot and bootloaders on K3 platform does have a bit of
> tribal knowledge that is better documented in our common platform
> documentation.
>
> Signed-off-by: Jason Kacines <j-kacines at ti.com>
> Signed-off-by: Nishanth Menon <nm at ti.com>
> ---
>
> Changes since V2:
> * Review comments and further grammatical fixes
> * Added openOCD version supported in each of the board documentation
>
> V2: https://lore.kernel.org/all/20230729204500.31823-1-nm@ti.com/
> V1: https://lore.kernel.org/u-boot/20230721191934.1959003-1-j-kacines@ti.com/
>
>   doc/board/ti/am62x_sk.rst             |  24 ++
>   doc/board/ti/am65x_evm.rst            |  24 ++
>   doc/board/ti/img/openocd-overview.svg | 580 ++++++++++++++++++++++++++
>   doc/board/ti/j7200_evm.rst            |  24 ++
>   doc/board/ti/j721e_evm.rst            |  24 ++
>   doc/board/ti/k3.rst                   | 481 +++++++++++++++++++++
>   6 files changed, 1157 insertions(+)
>   create mode 100644 doc/board/ti/img/openocd-overview.svg
>
> diff --git a/doc/board/ti/am62x_sk.rst b/doc/board/ti/am62x_sk.rst
> index 637985cb096e..9f577fe0f430 100644
> --- a/doc/board/ti/am62x_sk.rst
> +++ b/doc/board/ti/am62x_sk.rst
> @@ -246,3 +246,27 @@ https://www.ti.com/lit/pdf/spruiv7 under the `Boot Mode Pins` section.
>        - 11001010
>
>   For SW2 and SW1, the switch state in the "ON" position = 1.
> +
> +Debugging U-boot

%s/U-boot/U-Boot/

> +----------------
> +
> +See :ref:`Common Debugging environment - openOCD<k3_rst_refer_openocd>`: for
> +detailed setup information.
> +
> +.. warning::
> +
> +  **OpenOCD support since**: v0.12.0
> +
> +  If the default package version of OpenOCD in your development
> +  environment's distribution needs to be updated, it might be necessary to
> +  build OpenOCD from the source.
> +
> +.. include::  k3.rst
> +    :start-after: .. k3_rst_include_start_openocd_connect_XDS110
> +    :end-before: .. k3_rst_include_end_openocd_connect_XDS110
> +
> +To start OpenOCD to connect to the board

Do you mean:

To start OpenOCD and connect to the board

> +
> +.. code-block:: bash
> +
> +  openocd -f board/ti_am625evm.cfg
> diff --git a/doc/board/ti/am65x_evm.rst b/doc/board/ti/am65x_evm.rst
> index 0129235c2b29..60d18390959f 100644
> --- a/doc/board/ti/am65x_evm.rst
> +++ b/doc/board/ti/am65x_evm.rst
> @@ -287,3 +287,27 @@ artifacts needed to the device:
>    sb --ymodem tispl.bin > $MAIN_DEV < $MAIN_DEV
>    sleep 1
>    sb --xmodem u-boot.img > $MAIN_DEV < $MAIN_DEV
> +
> +Debugging U-boot

%s/U-boot/U-Boot/

> +----------------
> +
> +See :ref:`Common Debugging environment - openOCD<k3_rst_refer_openocd>`: for
> +detailed setup information.
> +
> +.. warning::
> +
> +  **OpenOCD support since**: v0.12.0
> +
> +  If the default package version of OpenOCD in your development
> +  environment's distribution needs to be updated, it might be necessary to
> +  build OpenOCD from the source.
> +
> +.. include::  k3.rst
> +    :start-after: .. k3_rst_include_start_openocd_connect_XDS110
> +    :end-before: .. k3_rst_include_end_openocd_connect_XDS110
> +
> +To start OpenOCD to connect to the board

see above

> +
> +.. code-block:: bash
> +
> +  openocd -f board/ti_am654evm.cfg
> diff --git a/doc/board/ti/img/openocd-overview.svg b/doc/board/ti/img/openocd-overview.svg
> new file mode 100644
> index 000000000000..13a817132a45
> --- /dev/null
> +++ b/doc/board/ti/img/openocd-overview.svg
> @@ -0,0 +1,580 @@
> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> +<!--SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause-->
> +
> +<!--Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/-->
> +
> +<svg
> +   xmlns:xhtml="http://www.w3.org/1999/xhtml"
> +   xmlns:dc="http://purl.org/dc/elements/1.1/"
> +   xmlns:cc="http://creativecommons.org/ns#"
> +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
> +   xmlns:svg="http://www.w3.org/2000/svg"
> +   xmlns="http://www.w3.org/2000/svg"
> +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
> +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> +   version="1.1"
> +   width="281px"
> +   height="671px"
> +   viewBox="-0.5 -0.5 281 671"
> +   id="svg128"
> +   sodipodi:docname="openocd-overview.svg"
> +   inkscape:version="0.92.3 (2405546, 2018-03-11)">
> +  <metadata
> +     id="metadata132">
> +    <rdf:RDF>
> +      <cc:Work
> +         rdf:about="">
> +        <dc:format>image/svg+xml</dc:format>
> +        <dc:type
> +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
> +      </cc:Work>
> +    </rdf:RDF>
> +  </metadata>
> +  <sodipodi:namedview
> +     pagecolor="#ffffff"
> +     bordercolor="#666666"
> +     borderopacity="1"
> +     objecttolerance="10"
> +     gridtolerance="10"
> +     guidetolerance="10"
> +     inkscape:pageopacity="0"
> +     inkscape:pageshadow="2"
> +     inkscape:window-width="3440"
> +     inkscape:window-height="1391"
> +     id="namedview130"
> +     showgrid="false"
> +     inkscape:zoom="1.4068554"
> +     inkscape:cx="283.8637"
> +     inkscape:cy="385.05999"
> +     inkscape:window-x="0"
> +     inkscape:window-y="25"
> +     inkscape:window-maximized="1"
> +     inkscape:current-layer="svg128" />
> +  <defs
> +     id="defs2" />
> +  <g
> +     id="g118">
> +    <path
> +       d="M 0 510 L 0 510 L 280 510 L 280 510"
> +       fill="rgb(255, 255, 255)"
> +       stroke="#ff0a1b"
> +       stroke-miterlimit="10"
> +       pointer-events="all"
> +       id="path4" />
> +    <path
> +       d="M 0 510 L 0 670 L 280 670 L 280 510"
> +       fill="none"
> +       stroke="#ff0a1b"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path6" />
> +    <rect
> +       x="10"
> +       y="590"
> +       width="100"
> +       height="70"
> +       fill="#f8cecc"
> +       stroke="#b85450"
> +       pointer-events="none"
> +       id="rect8" />
> +    <path
> +       d="M 20 590 L 20 660 M 100 590 L 100 660"
> +       fill="none"
> +       stroke="#b85450"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path10" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g16">
> +      <switch
> +         id="switch14">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 625px; margin-left: 21px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Cortex-R</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="60"
> +           y="629"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text12">Cortex-R</text>
> +      </switch>
> +    </g>
> +    <rect
> +       x="170"
> +       y="590"
> +       width="100"
> +       height="70"
> +       fill="#f8cecc"
> +       stroke="#b85450"
> +       pointer-events="none"
> +       id="rect18" />
> +    <path
> +       d="M 180 590 L 180 660 M 260 590 L 260 660"
> +       fill="none"
> +       stroke="#b85450"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path20" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g26">
> +      <switch
> +         id="switch24">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 625px; margin-left: 181px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Cortex-A</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="220"
> +           y="629"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text22">Cortex-A</text>
> +      </switch>
> +    </g>
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g32">
> +      <switch
> +         id="switch30">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 530px; margin-left: 221px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">K3 SoC</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="250"
> +           y="534"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text28">K3 SoC</text>
> +      </switch>
> +    </g>
> +    <path
> +       d="M 140 550 L 140 570 L 60 570 L 60 583.63"
> +       fill="none"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path34" />
> +    <path
> +       d="M 60 588.88 L 56.5 581.88 L 60 583.63 L 63.5 581.88 Z"
> +       fill="rgb(0, 0, 0)"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path36" />
> +    <path
> +       d="M 140 550 L 140 570 L 220 570 L 220 583.63"
> +       fill="none"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path38" />
> +    <path
> +       d="M 220 588.88 L 216.5 581.88 L 220 583.63 L 223.5 581.88 Z"
> +       fill="rgb(0, 0, 0)"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path40" />
> +    <rect
> +       x="90"
> +       y="520"
> +       width="100"
> +       height="30"
> +       fill="#f8cecc"
> +       stroke="#b85450"
> +       pointer-events="none"
> +       id="rect42" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g48">
> +      <switch
> +         id="switch46">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 535px; margin-left: 91px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Debug SS</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="140"
> +           y="539"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text44">Debug SS</text>
> +      </switch>
> +    </g>
> +    <path
> +       d="M 140 470 L 140 503.63"
> +       fill="none"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path50" />
> +    <path
> +       d="M 140 508.88 L 136.5 501.88 L 140 503.63 L 143.5 501.88 Z"
> +       fill="rgb(0, 0, 0)"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path52" />
> +    <rect
> +       x="80"
> +       y="410"
> +       width="120"
> +       height="60"
> +       rx="9"
> +       ry="9"
> +       fill="#ffe6cc"
> +       stroke="#d79b00"
> +       pointer-events="none"
> +       id="rect54" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g60">
> +      <switch
> +         id="switch58">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 440px; margin-left: 81px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Jtag Interface<xhtml:br />
> +(XDS110, TUMPA..)</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="140"
> +           y="444"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text56">Jtag Interface...</text>
> +      </switch>
> +    </g>
> +    <path
> +       d="M 140 370 L 140 403.63"
> +       fill="none"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path62" />
> +    <path
> +       d="M 140 408.88 L 136.5 401.88 L 140 403.63 L 143.5 401.88 Z"
> +       fill="rgb(0, 0, 0)"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path64" />
> +    <rect
> +       x="80"
> +       y="310"
> +       width="120"
> +       height="60"
> +       fill="#f5f5f5"
> +       stroke="#666666"
> +       pointer-events="none"
> +       id="rect66" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g72">
> +      <switch
> +         id="switch70">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 340px; margin-left: 81px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: #333333; ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">PC</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="140"
> +           y="344"
> +           fill="#333333"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text68">PC</text>
> +      </switch>
> +    </g>
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g78">
> +      <switch
> +         id="switch76">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 385px; margin-left: 141px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">USB</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="170"
> +           y="389"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text74">USB</text>
> +      </switch>
> +    </g>
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g84">
> +      <switch
> +         id="switch82">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 485px; margin-left: 141px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">JTAG</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="170"
> +           y="489"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text80">JTAG</text>
> +      </switch>
> +    </g>
> +    <path
> +       d="M 100 230 L 180 230 L 200 270 L 180 310 L 100 310 L 80 270 Z"
> +       fill="#e1d5e7"
> +       stroke="#9673a6"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path86" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g92">
> +      <switch
> +         id="switch90">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 270px; margin-left: 81px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">OpenOCD</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="140"
> +           y="274"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text88">OpenOCD</text>
> +      </switch>
> +    </g>
> +    <path
> +       d="M 140 200 L 140 220 L 140 210 L 140 223.63"
> +       fill="none"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path94" />
> +    <path
> +       d="M 140 228.88 L 136.5 221.88 L 140 223.63 L 143.5 221.88 Z"
> +       fill="rgb(0, 0, 0)"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path96" />
> +    <path
> +       d="M 100 120 L 180 120 L 200 160 L 180 200 L 100 200 L 80 160 Z"
> +       fill="#e1d5e7"
> +       stroke="#9673a6"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path98" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g104">
> +      <switch
> +         id="switch102">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 160px; margin-left: 81px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">gdb</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="140"
> +           y="164"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text100">gdb</text>
> +      </switch>
> +    </g>
> +    <path
> +       d="M 140 80 L 140 113.63"
> +       fill="none"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path106" />
> +    <path
> +       d="M 140 118.88 L 136.5 111.88 L 140 113.63 L 143.5 111.88 Z"
> +       fill="rgb(0, 0, 0)"
> +       stroke="rgb(0, 0, 0)"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path108" />
> +    <path
> +       d="M 80 0 L 200 0 L 200 68 Q 170 46.4 140 68 Q 110 89.6 80 68 L 80 12 Z"
> +       fill="#e1d5e7"
> +       stroke="#9673a6"
> +       stroke-miterlimit="10"
> +       pointer-events="none"
> +       id="path110" />
> +    <g
> +       transform="translate(-0.5 -0.5)"
> +       id="g116">
> +      <switch
> +         id="switch114">
> +        <foreignObject
> +           style="overflow: visible; text-align: left;"
> +           pointer-events="none"
> +           width="100%"
> +           height="100%"
> +           requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
> +          <xhtml:div
> +             style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 28px; margin-left: 81px;">
> +            <xhtml:div
> +               style="box-sizing: border-box; font-size: 0px; text-align: center;"
> +               data-drawio-colors="color: rgb(0, 0, 0); ">
> +              <xhtml:div
> +                 style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">IDE debugging code</xhtml:div>
> +            </xhtml:div>
> +          </xhtml:div>
> +        </foreignObject>
> +        <text
> +           x="140"
> +           y="32"
> +           fill="rgb(0, 0, 0)"
> +           font-family="Helvetica"
> +           font-size="12px"
> +           text-anchor="middle"
> +           id="text112">IDE debugging code</text>
> +      </switch>
> +    </g>
> +  </g>
> +</svg>
> diff --git a/doc/board/ti/j7200_evm.rst b/doc/board/ti/j7200_evm.rst
> index 69abc55a93ce..d5d5c10b2870 100644
> --- a/doc/board/ti/j7200_evm.rst
> +++ b/doc/board/ti/j7200_evm.rst
> @@ -201,3 +201,27 @@ fat formatted UDA FS as file.
>
>   In case of booting from eMMC, write above images into raw or UDA FS.
>   and set mmc partconf accordingly.
> +
> +Debugging U-boot
> +----------------
> +
> +See :ref:`Common Debugging environment - openOCD<k3_rst_refer_openocd>`: for
> +detailed setup information.
> +
> +.. warning::
> +
> +  **OpenOCD support since**: v0.12.0
> +
> +  If the default package version of OpenOCD in your development
> +  environment's distribution needs to be updated, it might be necessary to
> +  build OpenOCD from the source.
> +
> +.. include::  k3.rst
> +    :start-after: .. k3_rst_include_start_openocd_connect_XDS110
> +    :end-before: .. k3_rst_include_end_openocd_connect_XDS110
> +
> +To start OpenOCD to connect to the board
> +
> +.. code-block:: bash
> +
> +  openocd -f board/ti_j7200evm.cfg
> diff --git a/doc/board/ti/j721e_evm.rst b/doc/board/ti/j721e_evm.rst
> index f4b4c192d9da..a9f441087938 100644
> --- a/doc/board/ti/j721e_evm.rst
> +++ b/doc/board/ti/j721e_evm.rst
> @@ -228,3 +228,27 @@ J721E common processor board can be attached to a Ethernet QSGMII card and the
>   PHY in the card has to be reset before it can be used for data transfer.
>   "do_main_cpsw0_qsgmii_phyinit" env variable has to be set for the U-BOOT to
>   configure this PHY.
> +
> +Debugging U-boot

%s/U-boot/U-Boot/

> +----------------
> +
> +See :ref:`Common Debugging environment - openOCD<k3_rst_refer_openocd>`: for
> +detailed setup information.
> +
> +.. warning::
> +
> +  **OpenOCD support since**: v0.12.0
> +
> +  If the default package version of OpenOCD in your development
> +  environment's distribution needs to be updated, it might be necessary to
> +  build OpenOCD from the source.
> +
> +.. include::  k3.rst
> +    :start-after: .. k3_rst_include_start_openocd_connect_XDS110
> +    :end-before: .. k3_rst_include_end_openocd_connect_XDS110
> +
> +To start OpenOCD to connect to the board

see above

> +
> +.. code-block:: bash
> +
> +  openocd -f board/ti_j721eevm.cfg
> diff --git a/doc/board/ti/k3.rst b/doc/board/ti/k3.rst
> index 2034002af7cb..ea96fe502f35 100644
> --- a/doc/board/ti/k3.rst
> +++ b/doc/board/ti/k3.rst
> @@ -468,3 +468,484 @@ filesystem and then imported
>
>     => fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
>     => env import -t ${loadaddr} ${filesize}
> +
> +.. _k3_rst_refer_openocd:
> +
> +Common Debugging environment - OpenOCD
> +--------------------------------------
> +
> +This section will show you how to connect a board to `OpenOCD
> +<https://openocd.org/>`_ and load the SPL symbols for debugging with
> +a K3 generation device. To follow this guide, you must build custom
> +u-boot binaries, start your board from a boot media such as an SD

%s/u-boot/U-Boot/

> +card, and use an OpenOCD environment. This section uses generic
> +examples, though you can apply these instructions to any supported K3
> +generation device.
> +
> +Overall structure of this setup is in the following figure.

The overall

> +
> +.. image:: img/openocd-overview.svg
> +
> +.. note::
> +
> +  If you find these instructions useful, please consider `donating
> +  <https://openocd.org/pages/donations.html>`_ to OpenOCD.
> +
> +Step 1: Download and install OpenOCD
> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +To get started, it is more convenient if the distribution you
> +use supports OpenOCD by default. Follow the instructions in the
> +`getting OpenOCD <https://openocd.org/pages/getting-openocd.html>`_
> +documentation to pick the installation steps appropriate to your
> +environment. Some references to OpenOCD documentation:
> +
> +* `OpenOCD User Guide <https://openocd.org/doc/html/index.html>`_
> +* `OpenOCD Developer's Guide <https://openocd.org/doc/doxygen/html/index.html>`_
> +
> +Refer to the release notes corresponding to the `OpenOCD version
> +<https://github.com/openocd-org/openocd/releases>`_ to ensure that:

%s/ that:/:/

> +
> +* Processor support: In general, processor support shouldn't present
> +  any difficulties since OpenOCD provides solid support for both armv8
> +  and armv7.

ARMv8 and ARMv7

or

Armv8 and Armv7

ARM themselves use either of these.

> +* SoC support: When working with System-on-a-Chip (SoC), the support
> +  usually comes as a tcl config file. It is vital to ensure the correct
> +  version of OpenOCD or to use the tcl files from the latest release or

%s/tcl/Tcl/

> +  the one mentioned.
> +* Board or the JTAG adapter support: In most cases, board support is
> +  a relatively easy problem if the board has a JTAG pin header. All
> +  you need to do is ensure that the adapter you select is compatible
> +  with OpenOCD. Some boards do come with an onboard JTAG adapter that

%s/do come/come/

> +  requires a USB cable to be plugged into the board, in which case, it
> +  is vital to ensure that the JTAG adapter is supported. Fortunately,
> +  almost all TI K3 SK/EVMs come with TI's XDS110, which has support

which has out of the box support by OpenOCD

> +  out of the box with OpenOCD. The board-specific documentation will
> +  cover the details and any adapter recommendations.
> +
> +.. code-block:: bash
> +
> + openocd -v
> +
> +.. note::
> +
> + OpenOCD version 0.12.0 is usually required to connect to most K3
> + devices. If the support is on a newer version than what is in your

If your device is only supported by a newer version than the one
provided by your distribution,

> + distribution, you may need to build it from the source.
> +
> +Building OpenOCD from source
> +""""""""""""""""""""""""""""
> +
> +Dependency package installation instructions are for Debian

The dependency package installation instructions below are

> +systems, but equivalent instructions should exist on systems with

%s/on/for/

> +other package managers. Please refer to `OpenOCD Documentation

%s/to/to the/

> +<https://openocd.org/>`_ for more recent installation steps.
> +
> +.. code-block:: bash
> +
> +  $ sudo apt-get install libtool pkg-config texinfo libusb-dev \
> +    libusb-1.0.0-dev libftdi-dev libhidapi-dev autoconf automake

This list might be incomplete:

sudo apt build-dep openocd
will install all dependecies used by Debian or Ubuntu.

My computer curently would install:

   libcapstone-dev libcapstone4 libftdi1-dev libgpiod-dev libgpiod2
libhidapi-dev libhidapi-hidraw0 libhidapi-libusb0
   libjaylink-dev libjaylink0 libjim-dev libjim0.81 libusb-1.0-0-dev texlive

> +  $ git clone https://github.com/openocd-org/openocd.git openocd
> +  $ cd openocd
> +  $ git submodule init
> +  $ git submodule update
> +  $ ./bootstrap
> +  $ ./configure --prefix=/usr/local/
> +  $ make -j`nproc`
> +  $ sudo make install
> +
> +.. note::
> +
> +  The example above uses the GitHub mirror site. See
> +  `git repo information <https://openocd.org/doc/html/Developers.html#OpenOCD-Git-Repository>`_
> +  information to pick the official git repo.
> +  If a specific version is desired, select the version using `git checkout tag`.
> +
> +Installing OpenOCD udev rules
> +"""""""""""""""""""""""""""""
> +
> +The step is unnecessary if the distribution supports the OpenOCD, but

This step is not required

> +if building from a source, ensure that the udev rules are installed
> +correctly to ensure a sane system.
> +
> +.. code-block:: bash
> +
> +  # Go to the OpenOCD source directory
> +  $ cd openocd
> +  # Copy the udev rules to the correct system location
> +  $ sudo cp ./contrib/60-openocd.rules \
> +      ./src/JTAG/drivers/libjaylink/contrib/99-libjaylink.rules \
> +      /etc/udev/rules.d/
> +  # Get Udev to load the new rules up
> +  $ sudo udevadm control --reload-rules
> +  # Use the new rules on existing connected devices
> +  $ sudo udevadm trigger
> +
> +Step 2: Setup gdb

%s/gdb/GDB/

> +^^^^^^^^^^^^^^^^^
> +
> +Most systems come with gdb-multiarch package.

%s/with/with the/

> +
> +.. code-block:: bash
> +
> +  # Install gdb-multiarch package
> +  $ sudo apt-get install gdb-multiarch
> +
> +Though using gdb natively is normal, developers with interest in using IDE

%s/gdb/GDB/

> +will find few of these interesting:

%s/will/may/

%s/few/a few/

> +
> +* `gdb-dashboard <https://github.com/cyrus-and/gdb-dashboard>`_
> +* `gef <https://github.com/hugsy/gef>`_
> +* `peda <https://github.com/longld/peda>`_
> +* `pwndbg <https://github.com/pwndbg/pwndbg>`_
> +* `voltron <https://github.com/snare/voltron>`_
> +* `ddd <https://www.gnu.org/software/ddd/>`_
> +* `vscode <https://www.justinmklam.com/posts/2017/10/vscode-debugger-setup/>`_
> +* `vim conque-gdb <https://github.com/vim-scripts/Conque-GDB>`_
> +* `emacs realgud <https://github.com/realgud/realgud/wiki/gdb-notes>`_
> +* `Lauterbach IDE <https://www2.lauterbach.com/pdf/backend_gdb.pdf>`_
> +
> +.. warning::
> +  lldb support for OpenOCD is still a work in progress as of this writing.

%s/lldb/LLDB/

> +  Using gdb is probably the safest option at this point in time.

%s/gdb/GDB/

> +
> +Step 3: Setup of board to PC

Connect board to host

> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +There are few patterns of boards in the ecosystem
> +
> +.. k3_rst_include_start_openocd_connect_XDS110
> +
> +**Integrated JTAG adapter/dongle**: The board has a micro-USB connector labelled
> +XDS110 USB or JTAG. Connect a USB cable to the board to the mentioned port.
> +
> +.. note::
> +
> +  There are multiple USB ports on a typical board, So, ensure you have read
> +  the user guide for the board and confirm the silk screen label to ensure

%s/confirm/confirmed/

> +  connecting to the correct port.
> +
> +.. k3_rst_include_end_openocd_connect_XDS110
> +
> +.. k3_rst_include_start_openocd_connect_cti20
> +
> +**cTI20 connector**: The TI's `cTI20
> +<https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_JTAG_connectors.html#cti-20-pin-header-information>`_ connector
> +is probably the most prevelant on TI platforms. Though many
> +TI boards do have onboard XDS110, cTI20 connector is usually

%s/do have/have an/

> +provided as an alternate scheme to connect alternatives such
> +as `Lauterbach <https://www.lauterbach.com/>`_ or `XDS560
> +<https://www.ti.com/tool/TMDSEMU560V2STM-U>`_.
> +
> +To debug on these boards, the following combinations is suggested:
> +
> +* `TUMPA <https://www.diygadget.com/JTAG-cables-and-microcontroller-programmers/tiao-usb-multi-protocol-adapter-JTAG-spi-i2c-serial>`_
> +  or `equivalent dongles supported by OpenOCD. <https://openocd.org/doc/html/Debug-Adapter-Hardware.html#Debug-Adapter-Hardware>`_
> +* Cable such as `Tag-connect ribbon cable <https://www.tag-connect.com/product/20-pin-cortex-ribbon-cable-4-length-with-50-mil-connectors>`_
> +* Adapter to convert cTI20 to ARM20 such as those from
> +  `Segger <https://www.segger.com/products/debug-probes/j-link/accessories/adapters/ti-cti-20-adapter/>`_
> +  or `Lauterbach LA-3780 <https://www.lauterbach.com/ad3780.html>`_
> +  Or optionally, if you have manufacturing capability then you could try
> +  `BeagleBone JTAG Adapter <https://github.com/mmorawiec/BeagleBone-Black-JTAG-Adapters>`_
> +
> +.. warning::
> +  XDS560 and Lauterbach are proprietary solutions and is not supported by
> +  OpenOCD.
> +  When purchasing off the shelf adapter/dongle, you do want to be careful

%s/off/an off/

> +  about the signalling though. Please
> +  `read for additional info <https://software-dl.ti.com/ccs/esd/xdsdebugprobes/emu_JTAG_connectors.html>`_.
> +
> +.. k3_rst_include_end_openocd_connect_cti20
> +
> +.. k3_rst_include_start_openocd_connect_tag_connect
> +
> +**Tag-Connect**: `Tag-Connect <https://www.tag-connect.com/>`_
> +pads on the boards which require special cable. Please check the documentation
> +to `identify <https://www.tag-connect.com/info/legs-or-no-legs>`_ if "legged"
> +or "no-leg" version of the cable is appropriate for the board.
> +
> +To debug on these boards, you will need:
> +
> +* `TUMPA <https://www.diygadget.com/JTAG-cables-and-microcontroller-programmers/tiao-usb-multi-protocol-adapter-JTAG-spi-i2c-serial>`_
> +  or `equivalent dongles supported by OpenOCD <https://openocd.org/doc/html/Debug-Adapter-Hardware.html#Debug-Adapter-Hardware>`_.
> +* Tag-Connect cable appropriate to the board such as
> +  `TC2050-IDC-NL <https://www.tag-connect.com/product/TC2050-IDC-NL-10-pin-no-legs-cable-with-ribbon-connector>`_
> +* In case of no-leg, version, a
> +  `retaining clip <https://www.tag-connect.com/product/tc2050-clip-3pack-retaining-clip>`_
> +* Tag-Connect to ARM20
> +  `adapter <https://www.tag-connect.com/product/tc2050-arm2010-arm-20-pin-to-tc2050-adapter>`_
> +
> +.. note::
> +  You can optionally use a 3d printed solution such as
> +  `Protective cap <https://www.thingiverse.com/thing:3025584>`_ or
> +  `clip <https://www.thingiverse.com/thing:3035278>`_ to replace
> +  the retaining clip.
> +
> +.. warning::
> +  With the Tag-Connect to ARM20 adapter, Please solder the "Trst" signal for
> +  connection to work.
> +
> +.. k3_rst_include_end_openocd_connect_tag_connect
> +
> +Debugging with OpenOCD
> +^^^^^^^^^^^^^^^^^^^^^^
> +
> +Debugging U-boot is different from debugging regular user space

%s/U-boot/U-Boot/

> +applications. The bootloader initialization process involves many boot
> +media and hardware configuration operations. For K3 devices, there
> +are also interactions with security firmware. While reloading the
> +"elf" file works through gdb, developers must be mindful of cascading

%s/gdb/GDB/

> +initialization's potential consequences.
> +
> +Consider the following code change:
> +
> +.. code-block:: diff
> +
> +  --- a/file.c	2023-07-29 10:55:29.647928811 -0500
> +  +++ b/file.c	2023-07-29 10:55:46.091856816 -0500
> +  @@ -1,3 +1,3 @@
> +   val = readl(reg);
> +  -val |= 0x2;
> +  +val |= 0x1;
> +   writel(val, reg);
> +
> +Re-running the elf file with the above change will result in the
> +register setting 0x3 instead of the intended 0x1. There are other
> +hardware blocks which may not behave very well with re-initialization

%s/wit re-initialization sequence/with a re-initialization/

> +sequence without proper shutdown.
> +
> +To help narrow the debug down, it is usually more simpler to use the

%s/more simpler/simpler/

(simpler is already a comparative)

> +standard boot media to get to the bootloader and debug only in the area
> +of interest.
> +
> +In general, to debug u-boot spl/u-boot with OpenOCD there are three steps:

%s/u-boot/U-Boot/

> +
> +* Modify the code to put a loop to allow debugger to attach near the point

%s/to put a loop to allow debugger/adding a loop to allow the debugger/

> +  of interest. Boot up normally to stop at the loop.
> +* Connect with OpenOCD and step out of the loop
> +* Step through code to find the root of issue

%s/code/the code/

> +
> +Typical debug involves a few iterations of the above sequence. Though

%s/debug/debugging/

> +most bootloader developers like to use printf to debug, debug with
> +JTAG tends to be most efficient since it is possible to investigate
> +code flow and inspect hardware registers without repeated iterations.

%s/code/the code/

> +
> +Code modification
> +"""""""""""""""""
> +
> +* **start.S**: Adding an infinite while loop at the very entry of
> +  U-Boot. For this, look for the corresponding start.S entry file.
> +  This is usually only required when debugging some core SoC or
> +  processor related function. For example: arch/arm/cpu/armv8/start.S or
> +  arch/arm/cpu/armv7/start.S
> +
> +.. code-block:: diff
> +
> +  diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
> +  index 69e281b086..744929e825 100644
> +  --- a/arch/arm/cpu/armv7/start.S
> +  +++ b/arch/arm/cpu/armv7/start.S
> +  @@ -37,6 +37,8 @@
> +   #endif
> +
> +   reset:
> +  +dead_loop:
> +  +    b dead_loop
> +       /* Allow the board to save important registers */
> +       b    save_boot_params
> +   save_boot_params_ret:
> +
> +* **board_init_f**: Adding an infinite while loop at the board entry
> +  function. In many cases, it is important to debug the boot process if
> +  any changes are made for board-specific applications. Below is a step
> +  by step process for debugging the boot SPL or Armv8 SPL:
> +
> +  To debug the boot process in either domain, we will first
> +  add a modification in the code we would like to debug.

%s/in the code/to the code/

> +  In this example, we will debug ``board_init_f`` inside
> +  ``arch/arm/mach-k3/{soc}_init.c``. Since some sections of U-Boot
> +  will be executed multiple times during the bootup process of K3
> +  devices, we will need to include either ``CONFIG_CPU_ARM64`` or
> +  ``CONFIG_CPU_V7R`` to catch the CPU at the desired place during the
> +  bootup process (Main or Wakeup domains). For example, modify the
> +  file as follows (depending on need):
> +
> +.. code-block:: c
> +
> +  void board_init_f(ulong dummy)
> +  {
> +      .
> +      .
> +      /* Code to run on the R5F (Wakeup/Boot Domain) */
> +      if (IS_ENABLED(CONFIG_CPU_V7R)) {
> +          volatile int x = 1;
> +          while(x) {};
> +      }
> +      ...
> +      /* Code to run on the ARMV8 (Main Domain) */
> +      if (IS_ENABLED(CONFIG_CPU_ARM64)) {
> +          volatile int x = 1;
> +          while(x) {};
> +      }
> +      .
> +      .
> +  }
> +
> +Connecting with OpenOCD for debug session

%s/for/for a/

> +"""""""""""""""""""""""""""""""""""""""""
> +
> +Startup openocd to debug the platform as follows:

%s/openocd/OpenOCD/

> +
> +* **Integrated JTAG interface**: If the evm has a debugger such as
> +  XDS110 inbuilt, there is typically an evm board support added and a
> +  cfg file will be available.
> +
> +.. k3_rst_include_start_openocd_cfg_XDS110
> +
> +.. code-block:: bash
> +
> +  openocd -f board/{board_of_choice}.cfg
> +
> +.. k3_rst_include_end_openocd_cfg_XDS110
> +
> +.. k3_rst_include_start_openocd_cfg_external_intro
> +
> +* **External JTAG adapter/interface**: In other cases, where an
> +  adapter/dongle  is used, a simple cfg file can be created to integrate the

%s/  / /

> +  SoC and adapter information. See `supported TI K3 SoCs
> +  <https://github.com/openocd-org/openocd/blob/master/tcl/target/ti_k3.cfg#L59>`_
> +  to decide if the SoC is supported or not.
> +
> +.. code-block:: bash
> +
> +  openocd -f openocd_connect.cfg
> +
> +.. k3_rst_include_end_openocd_cfg_external_intro
> +
> +  For example, with BeaglePlay (AM62X platform), the openocd_connect.cfg:
> +
> +.. code-block:: tcl
> +
> +  # TUMPA example:
> +  # http://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_User's_Manual
> +  source [find interface/ftdi/tumpa.cfg]
> +
> +  transport select jtag
> +
> +  # default JTAG configuration has only SRST and no TRST
> +  reset_config srst_only srst_push_pull
> +
> +  # delay after SRST goes inactive
> +  adapter srst delay 20
> +
> +  if { ![info exists SOC] } {
> +    # Set the SoC of interest
> +    set SOC am625
> +  }
> +
> +  source [find target/ti_k3.cfg]
> +
> +  ftdi tdo_sample_edge falling
> +
> +  # Speeds for FT2232H are in multiples of 2, and 32MHz is tops
> +  # max speed we seem to achieve is ~20MHz.. so we pick 16MHz
> +  adapter speed 16000
> +
> +Below is an example of the output of this command:
> +
> +.. code-block:: console
> +
> +  Info : Listening on port 6666 for tcl connections
> +  Info : Listening on port 4444 for telnet connections
> +  Info : XDS110: connected
> +  Info : XDS110: vid/pid = 0451/bef3
> +  Info : XDS110: firmware version = 3.0.0.20
> +  Info : XDS110: hardware version = 0x002f
> +  Info : XDS110: connected to target via JTAG
> +  Info : XDS110: TCK set to 2500 kHz
> +  Info : clock speed 2500 kHz
> +  Info : JTAG tap: am625.cpu tap/device found: 0x0bb7e02f (mfg: 0x017 (Texas Instruments), part: 0xbb7e, ver: 0x0)
> +  Info : starting gdb server for am625.cpu.sysctrl on 3333
> +  Info : Listening on port 3333 for gdb connections
> +  Info : starting gdb server for am625.cpu.a53.0 on 3334
> +  Info : Listening on port 3334 for gdb connections
> +  Info : starting gdb server for am625.cpu.a53.1 on 3335
> +  Info : Listening on port 3335 for gdb connections
> +  Info : starting gdb server for am625.cpu.a53.2 on 3336
> +  Info : Listening on port 3336 for gdb connections
> +  Info : starting gdb server for am625.cpu.a53.3 on 3337
> +  Info : Listening on port 3337 for gdb connections
> +  Info : starting gdb server for am625.cpu.main0_r5.0 on 3338
> +  Info : Listening on port 3338 for gdb connections
> +  Info : starting gdb server for am625.cpu.gp_mcu on 3339
> +  Info : Listening on port 3339 for gdb connections
> +
> +.. note::
> +  Notice the default configuration is non-SMP configuration allowing
> +  for each of the core to be attached and debugged simultaneously.
> +  armv8 SPL/U-boot starts up on cpu0 of a53/a72.
> +
> +.. k3_rst_include_start_openocd_cfg_external_gdb
> +
> +To debug using this server, use gdb directly or your preferred
> +gdb-based IDE. To start up gdb in the terminal, run the following
> +command.
> +
> +.. code-block:: bash
> +
> +  gdb-multiarch
> +
> +To connect to your desired core, run the following command within gdb
> +and load the symbols from the corresponding elf file.
> +
> +.. code-block:: bash
> +
> +  target extended-remote localhost:{port for desired core}
> +  symbol-file {path to elf file}
> +
> +.. k3_rst_include_end_openocd_cfg_external_gdb
> +
> +In the above example of AM625,
> +
> +.. code-block:: bash
> +
> +  target extended-remote localhost:3338     <- R5F (Wakeup Domain)
> +  target extended-remote localhost:3334     <- A53 (Main Domain)
> +
> +The core can now be debugged directly within gdb using gdb commands or

%s/gdb/GDB/

> +if using IDE, as appropriate to the IDE.
> +
> +Stepping through the code
> +"""""""""""""""""""""""""
> +
> +Use the gdb command ``lay next`` after loading the symbols to see the

%s/lay next/lay src/ ?

Please, provide the name of the layout.
Cf. https://sourceware.org/gdb/onlinedocs/gdb/TUI-Commands.html

> +code and breakpoints. To exit the debug loop added above, add any
> +breakpoints needed and run the following gdb commands.
> +
> +.. code-block:: bash
> +
> +  set x = 0
> +  continue
> +
> +The platform has now been successfully setup to debug with OpenOCD
> +using gdb commands or a gdb-based IDE. See `OpenOCD documentation for

%s/gdb/GDB/

> +gdb <https://openocd.org/doc/html/GDB-and-OpenOCD.html>`_ for further
> +information.
> +
> +.. warning::
> +
> +  On the K3 family of devices, a watchdog timer within the DMSC is
> +  enabled by default by the ROM bootcode with a timeout of 3 minutes.
> +  The watchdog timer is serviced by System Firmware (SYSFW) or TI
> +  Foundational Security (TIFS) during normal operation. If debugging
> +  the SPL before the SYSFW is loaded, the watchdog timer will not get
> +  serviced automatically and the debug session will reset after 3
> +  minutes. It is recommended to start debugging SPL code only after
> +  the startup of SYSFW to avoid running into the watchdog timer reset.
> +
> +Misc notes with openOCD

%s/Misc/Miscellaneous/

> +^^^^^^^^^^^^^^^^^^^^^^^
> +
> +At this time, OpenOCD does not support tracing for K3 platforms.

Currently

Best regards

Heinrich

> +Tracing function could be beneficial if the bug in code occurs deep
> +within nested function and can optionally save developers major
> +trouble of stepping through a large quantity of code.



More information about the U-Boot mailing list