This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/AM5728:CCSv7中的 SPL/U-boot 调试

Guru**** 2602165 points
Other Parts Discussed in Thread: AM5728, CCSTUDIO

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612088/ccs-am5728-spl-u-boot-debug-in-ccsv7

器件型号:AM5728
Thread 中讨论的其他器件: CCStudio

工具/软件:Code Composer Studio

您好!

编写本文档是为了获取有关在 AM5728评估板修订版 A3上使用 CCSv7进行 SPL/Uboot 调试的信息。 我正在使用 CCSv7.0.0.00043 (在 Linux Ubuntu 16.04上)和最新版本的 SDK (03.03.00.04)。 我已经执行了 Sitara Linux 培训中的所有步骤- uboot_linux_debug_with _ccsv5文档 http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_uboot_linux_debug_with_ccsv5 、首先我要尝试调试 SPL 代码、因此我已经执行了以下步骤:

1-在 CCSv7上,作为 File->New->Project->C/C++>Makefile Project,其中包含用于 Uboot 源代码项目的现有代码

2-使用 CCSv7 Make File Target 详细 介绍 https://training.ti.com/linux-board-porting-series-module-6-building-u-boot-ccs 或使用命令构建和编译 Uboot 源码  

导出路径=/home/alicanlinux/ti-processor-sdk-linux-am57xx-evm-03.03.00.04/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$path

使 arch=arm cross_compile=arm-linux-gnueabihf- distclean

使 arch=arm cross_compile=arm-linux-gnueabihf- am57xx_evm_config

使 arch=arm cross_compile=arm-linux-gnueabihf-

3-使用"Blackhawk XDS560v2-USB 系统跟踪仿真器"和电路板或器件:AM5728设置目标配置。  

4-启动配置并连接到 CortexA15_0目标。

5 - CPU 复位(SW)至 CortexA15_0目标、用于将 ARM 内核模式从 THUMB-2更改为 ARM 或内核寄存器-> CPSR 寄存器列表 将 T 寄存器从1更改为0

6 -使用(Uboot 源码方向)/spl/u-boot-spl.bin、起始地址0x40300000 (u-boot-spl.cfg 中的 CONFIG_SPL_TEXT_base 值)和 type-size 32位加载存储器

7-从 (Uboot 源码目录)/spl/u-boot-spl 加载符号(代码和数据偏移保留为空)

8-将程序计数器寄存器(PC)设置为地址0x40300000

执行这些步骤后、我能够使用 Code Composer Studio 上的"Disassembly"视图或"New Breakpoint"按钮成功创建断点(断点和硬件断点)。 但是、当我在/(Uboot source dir)/arch/arm/cpu/armv7/omap-common/hwinit-common.c 或其他源文件上的 s_init()、watchdog_init()或 earn_system_init()函数中定义硬件断点时、硬件断点似乎不起作用(不会停止 CPU)。  

您能建议任何方法来解决这个问题吗?

此致

Alican

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Biser 等人

    此问题是否有任何更新? 我认为我有相同/相似的问题。

    我正在尝试运行从 ti-processor-sdk-linux-am57xx-04.00.00.04构建的 SPL、具体取决于 TI 电路板上移植系列模块6、7 (基于 CCSv5)的过程、但使用的是 TI572XEVM、XDS100v2仿真器和 CCS7.2。

    我也无法在 CCS7.2中达到断点。 A15_0内核一直运行、直到我按下 CCS7.2上的暂停按钮。

    我已经尝试在禁用看门狗后设置硬件断点、方法是单击蓝色的平衡-非平衡变压器并输入硬件断点的表达式 file_name 行#。

    **我没有按照模块7视频中的确切步骤进行操作(1)将 bin 文件加载到存储器中的加载地址,然后加载符号),因为**在 Linux 版的 CCS 7.2中,我看不到加载存储器按钮,只能加载程序或加载符号选项**。 当我使用加载程序将 u-boot-spl 加载到 A15_0中时、我可以看到 PC 指向_start()。

    (1)我假设对于 SPL、我只需要连接并加载 A15内核0、并且可以单独保留 core1、对吧?
    (2)有时、当我按下暂停按钮来暂停执行时、我可以看到 A15_0内核下的跟踪堆栈是什么、以及什么是有效的 PC。
    (3)在禁用看门狗后、尽管设置了断点、但 PC 在其他时间会复位回0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一个可能有趣的事实... 在我按下暂停按钮(等待从未达到的断点后)后、我注意到 PC 回到0x00000000C。

    这使我怀疑572xEVM 被某处重置。

    在我首先在目标上运行某项操作(例如使目标退出复位)之前、我无法通过 JTAG 连接 A15_0。 我首先运行一个 Linux 映像、然后在 u-boot 命令提示符处点击空格键停止、然后通过 JTAG 将 CCS 连接到目标。

    现在、我能够通过存储器负载加载 u-boot-spl.bin、如 TI 板载串行器、模块7视频中所示。 但是、当我以这种方式加载 SPL 时、SD 卡中的 u-boot 已经以特定的方式初始化了中断和外设。

    在将 u-boot-spl.bin 加载到存储器中、然后加载符号、设置硬件断点、然后按"恢复"按钮之前、是否需要正确初始化 am572x? 是否有可用于初始化环境的脚本文件或 GEL 文件脚本?

    我是不是在这里倒树呢?

    谢谢!

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否见 过 processors.wiki.ti.com/.../AM572x_GP_EVM_Hardware_Setup
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢! 恐怕我没有查看过这份文档。 尝试一下。。。

    此 wiki 页面列出了 CCS 版本6。 我使用 CCS 版本6还是7.2 (最新版本)是否重要? 我目前正在运行最新的 TI SDK。

    谢谢!

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我下载了6.1.1的.zip 安装文件,但当我运行安装程序时,它会尝试从互联网上获取产品,我认为这些产品被我们的防火墙阻止(ti_dspack_ibsetup_6.1.0.....)


    我能够安装 CCS 6.2、但上面的 wiki 页面中似乎没有引用的 A15内核的 GEL 文件。

    当前 CCS 6.1.1是否仅支持 am572x 的 JTAG 调试?

    是否有用于6.1.1的自包含安装程序、或者如果6.1.1是 A15的唯一可能、是否有针对此问题的防火墙问题的解决方法。

    如果我在家中成功安装了 CCS 6.1.1、我可以在拇指驱动器上复制它、然后在工作计算机上解压缩它、还是需要.bin 文件?

    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据 SDK 的发行说明(processors.wiki.ti.com/index.php ),CCSv6是受支持的版本。 我从工厂团队那里得到反馈、断点问题正在调查中。 当他们有更多信息时、他们会回到这里。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Biser、

    谢谢 Biser!!

    好的、SDK 注释显示为 CCSv6、但显示为6..??  我在另一篇文章中看到、您在其中特别提到了6.1.1。

    我尝试在工作场所和家中安装6.1.1、但在安装过程中遇到错误(请参阅下文)。

    我可以安装6.2、只是很好。  但是、根据您昨天(上面)链接的 JTAG wiki、我在浏览 CCS 6.2的目录树(但我只是在 am572x 目录中查看)时未看到用于初始化 Wiki 中引用的 A15内核的 GEL 文件。  我将再次尝试安装它、并在任何地方寻找它。

    关于 CCS 6.1.1、我无法为 libcrypt11安装32位库、但能够安装 libcrypt20。  6.1.1的安装程序会标记此标记、但随后允许用户继续安装。  

    我选择最小配置(只需单击 Sitara 处理器组)、不要单击任何可选功能。  当 CCS 6.1.1安装程序到达尝试安装 com.ti.ccstudio.debugserver.linux.feature.group 的位置时、我无法下载 ti_dspack_ibsetup_6.1.0.1349.bin。

    我在工作和在家都尝试过这种方法。

    我要安装 CCS 的主机系统是64位 Ubuntu 16.04 LTS。

    *** CCS 6的另一个子版本是否是用于 am572x EVM JTAG 调试的最佳版本?

    谢谢!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    注:

    我成功安装了 CCS 6.1.3、但仍然无法找到上述链接(processors.wiki.ti.com/.../AM572x_GP_EVM_Hardware_Setup)中列出的 GEL 文件、

    AM572x_cortexa15_CPU0_startup.gel
    AM572x_cortexa15_CPU1_startup.gel。

    当我执行查找时。 -print|grep cortexa15在~/ti/ccsv6/ccs_base 文件夹下、我唯一看到的是:

    /emulation/boards/am571x/gel/AM571x_cortexa15_cpu0_startup.gel.

    我的理解是、我需要在 A15内核的启动过程中附加一个初始化脚本、以便向 PMIC 发送 I2C 消息、以便它始终保持开启状态以进行 JTAG 调试。

    任何帮助都将不胜感激!!

    谢谢!

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    注意:我使用了错误的目标配置类型 AM572X_revA、而不是 GPEVM_AM572x_SiRevA。

    当我切换到正确的目标配置文件并将 XDS100v2的 JTAG 时钟速度提高到15MHz 时、CCS 在连接到内核 A15_0时加载了正确的 GEL 文件、 并且能够初始化 PMIC 以使其保持通电状态、从而保持与 CCS 的 JTAG 连接。

    当我在高级设置中切换到正确的目标配置时、CCS 7.2会将所有内核的所有初始化脚本重新填充到我认为是默认值的内容。

    A15_0、A15_1都填充了 gpevm_am572x.gel、而不是 AM572x_cortexa15_CPU0_startup.gel 和 AM572x_cortexa15_CPU1_startup.gel、如上面的链接所示。

    我仍然无法按照上述操作执行断点。 不确定我们是否应该使用硬件与标准断点以及原因。 我非常确信、我可以通过右键单击所需函数中的反汇编窗口来"运行到光标"。

    当 CCS 组对断点进行更新时、请告知我们。

    谢谢!

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Biser、

    有关我的调试/断点问题的任何新闻?

    此致

    Alican
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我再次询问、但相关人员在下周中旬之前不在办公室、因此我不希望在此之前收到反馈。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    虽然在调试 am572xEVM 上的 SPL 时无法设置硬件断点、但我能够在反汇编窗口中使用"run until "。 但这需要将 A15汇编代码与源代码相关联。 当我有机会时、我可以发布一些说明、如果这对任何人都有用??

    此外、是否有人在从外部 DDR3 RAM 而不是内部片上 SDRAM 运行的程序内成功设置硬件断点? SPL 在内部片上 RAM 中运行、但 u-boot 在外部 DDR3、RAM 中运行。 我还无法从 wtihin CCS/JTAG 获取 SPL 以跳转到 u-boot。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    CCS 软件团队调查了为什么在5728上调试 SPL 时无法设置硬件断点的任何更新?

    另外、我希望能提供更多信息。 当您从外部 DDR3内存运行而不是从内部?SD 运行时,您实际上是否可以使用硬件断点? 在运行 SPL 后加载并运行 u-boot 来完成 RAM。  我可以达到与 TI 主板移植系列视频中的 TI 讲师相同的程度-当我将 SPL bin 文件加载到存储器中、加载符号、将程序计数器调整到 SPL 的入口点、然后点击 run。  我在控制台上打印一个 SPL 字符串、并显示错误消息、指示没有引导目标、请重置电路板。  我按照电路板移植系列中的说明从现在开始加载运行 u-boot、但到目前为止-不幸运。  

    因此、我希望在通过 XDS 调试器和 CCS 加载时尝试在 u-boot 中设置硬件断点、以查看这是否对 CCS 设置硬件断点的能力有任何影响 (例如、CCS 也许能够使用从外部 RAM 而不是内部 RAM 运行的代码来设置断点)、但是我恐怕首先需要弄清楚 u-boot 是否被正确加载。  我怀疑搬迁有问题...

    另请注意、我使用 CCS v 7.2运行、这是因为我们的上一位技术支持代表建议我应该能够正常运行、而且我们能够很远地使用它、以便我们可以在定制硬件上加载和运行 SPL。

    谢谢!!

    Jeff

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jeff:
    很抱歉耽误你的时间。 我仍在研究如何在从 DDR 运行时设置硬件断点。

    在引导 ROM 跳转至 SPL 代码之前、它会向 r0加载引导参数块、其中一个字段是其加载的器件。 它会在该设备上加载 u-boot.img。 "未检测到目标"是因为您在该字段中有随机数据。 因此、应正确设置 EMIF 寄存器、以便您可以加载 u-boot。 我刚刚加载了 u-boot、看起来加载正确。

    顺便说一下、我使用 ELF 版本的 SPL 和 u-boot。

    Steve K.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第二个想法是不要使用 ELF 版本。 使用.bin 版本并加载到地址0x40300000。 ELF 中没有设备树形结构、而.bin 中有设备树形结构。 我在 MLO 中执行了一些不需要器件树状结构的简单测试。

    Steve K.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Steve!

    在串行控制台上显示"No boot target error (无引导目标错误)"之后、恐怕我没有尝试在 CCS 中运行 u-boot。  不过、关于您的最后一条评论的一个问题... 您是在讨论 SPL bin 文件还是 u-boot bin 文件?  我能够将 SPL bin 文件加载到 SPL _start 地址(0x40300000)、然后运行 SPL。  但我认为 u-boot 的"加载地址"(SPL 完成其目标配置步骤后)为0x8000000、对吧?

    谢谢!!  Jeff

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jeff:
    我仍在进行这方面的工作。 自在线研讨会结束以来、U-boot 发生了重大变化。 我们正在更新研讨会。 我将在星期一用加载地址与您联系。

    Steve K.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Steve!

    我们使用从 SD 卡引导的5728损坏了电路板。 我们有另一个电路板不从 uSD 卡读取数据、但您可以加载 SPL 并从 CCS 运行它。 如果可以使用从 CCS 运行的 u-boot 来重新刷写 eMMC、我们可能会重新投入工作。 因此、您的时间安排可能会很棒。。。

    周末愉快!

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉耽误你的时间。 看起来 u-boot 的起始地址是0x80800000。

    Steve K.