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.

[参考译文] RTOS/TMDSICE3359:CCS 工程加载问题

Guru**** 2924210 points

Other Parts Discussed in Thread: AM3359

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659319/rtos-tmdsice3359-ccs-project-load-issue

器件型号:TMDSICE3359
主题中讨论的其他器件:AM3359

工具/软件:TI-RTOS

您好!

我对 AM335x 平台及其附带的工具仍然非常陌生。 目前、我正在尝试通过以下方法来运行一些简单的应用程序:获取其中一个 TI 示例、并将其更改为我希望执行的操作、而此时的操作远不止简单地运行。

我的设置是:在 Windows 7上运行的 CCS 7.2.0.00013。 我有 AM3359 ICE V2开发板。 我的项目使用以下部分:GNU v4.9.3 (Linaro)编译器/EDMA3 2.12.5/NDK 2.25.1.10/SYS/BIOS 6.46.5.55 AM335x PDK 1.0.8/C:/ti/ccsv7/ccs_base

这些组件基于示例应用"I2C_Example_icev2AM335x_armExampleProject"、我已将其用作我自己项目的基础。 问题出在示例和我自己的项目上。 通过 CCS 调试器加载.out 文件时、我在调试窗口中经常会遇到以下错误:

德州仪器(TI) XDS100v2 USB Debug Probe_0/CortxA8 (挂起- SW Breakpoint)
do_AngelSWI (int、void *)[C:/users\hoeksh\workspace_v7\HAHO_TestApp1\Debug\HAHO_Testunsigned char 1.out]、地址0x80011ED0
_kill (int)() at 0x800h、X800h
+ runtime、xt_0_unsigned char *、0x800h、xt_reature_0_unsigned char *、xe+ unsigned char 1.out] int、int)[C:/users\hoeksh\workspace_v7\HAHO_TestApp1\Debug\HAHO_TestApp1.out] at 0x00000000
XDC_runtime_Error_policySpin___E (struct XDC_runtime_Error_Block *、unsigned short、unsigned char *、int、unsigned long、 int、int)() 0x00000000 (下一帧与现有帧相同) 

我连接到目标的过程如下:

1.启动目标配置

2.连接到 Cortex A8目标

3.运行->复位-> CPU 复位(HW)

4.运行 GEL 脚本:sys_CLKOUT2 -> L3_CLK

5.运行 GEL 脚本:AM335x 系统初始化-> AM3359_ICE_Initialization

6.运行->加载->加载我的.out 文件

此时、我很奇怪地得到了误差。 我已经尝试了这一过程 、首先通过拔下板、通过按钮重置板或根本不重置板来重置板、这没有明显的区别。

执行 GEL 脚本的控制台输出为:

MPU
CortxA8初始化期间的控制台输出:输出:**** AM3359_ICE 初始化正在进行中........
CortxA8:输出:**** AM335x OPP =OPP100的所有 PLL 配置正在进行中........
CortxA8:输出:从 SYSBOOT[15:14]读取输入时钟:24MHz
CortxA8:输出:****将绕过...
CortxA8:输出:****已绕过,正在更改值...
CortxA8:输出:****锁定臂 PLL
CortxA8:输出:****内核已绕过
CortxA8:输出:****现在锁定内核...
CortxA8:输出:****内核锁定
CortxA8:输出:**** DDR DPLL 已绕过
CortxA8:输出:


**** DDR DPLL 锁定 CortxA8:输出:****每个 DPLL 已绕过 CortxA8:输出:****每个 DPLL 锁定 CortxA8:输出:**** DISP PLL 配置正在进行中
CortxA8:输出:**** DISP PLL 配置完成........
CortxA8:输出:****针对 OPP =OPP100的 AM335x 所有 ADPLL 配置完成.........
CortxA8:输出:**** AM335x DDR3 EMIF 和 PHY 配置正在进行中...
CortxA8:输出:EMIF PRCM 正在进行中........
CortxA8:输出:EMIF PRCM DONE
CortxA8:输出:DDR PHY 配置正在进行
中 CortxA8:输出:等待 VTP 就绪..........
CortxA8:输出:VTP 已就绪!
CortxA8:输出:DDR PHY CMD0寄存器配置正在进行中..........
CortxA8:输出:DDR PHY CMD1寄存器配置正在进行中..........
CortxA8:输出:DDR PHY CMT2寄存器配置正在进行中..........
CortxA8:输出:DDR PHY DATA0寄存器配置正在进行中..........
CortxA8:输出:DDR PHY Data1寄存器配置正在进行中..........
CortxA8:输出:设置 IO 控制寄存器……
CortxA8:输出:EMIF 定时寄存器配置正在进行中........
CortxA8:输出:EMIF 定时寄存器配置完成.........
CortxA8:输出:PHY 已就绪!!
CortxA8:输出:DDR PHY 配置完成
CortxA8:GEL 输出:打开 EDMA...
CortxA8:GEL 输出:EDMA 被打开...
CortxA8:输出:**** AM3359_ICE 初始化完成**


CortxA8:GEL 输出:**** SYS_CLKOUT2 = L3 (来自内核 PLL)(被2分频)
CortxA8:输出:**** AM3359_ICE 初始化正在进行中..........
CortxA8:输出:**** AM335x OPP =OPP100的所有 PLL 配置正在进行中........
CortxA8:输出:从 SYSBOOT[15:14]读取输入时钟:24MHz
CortxA8:输出:****将绕过...
CortxA8:输出:****已绕过,正在更改值...
CortxA8:输出:****锁定臂 PLL
CortxA8:输出:****内核已绕过
CortxA8:输出:****现在锁定内核...
CortxA8:输出:****内核锁定
CortxA8:输出:**** DDR DPLL 已绕过
CortxA8:输出:


**** DDR DPLL 锁定 CortxA8:输出:****每个 DPLL 已绕过 CortxA8:输出:****每个 DPLL 锁定 CortxA8:输出:**** DISP PLL 配置正在进行中
CortxA8:输出:**** DISP PLL 配置完成........
CortxA8:输出:****针对 OPP =OPP100的 AM335x 所有 ADPLL 配置完成.........
CortxA8:输出:**** AM335x DDR3 EMIF 和 PHY 配置正在进行中...
CortxA8:输出:EMIF PRCM 正在进行中........
CortxA8:输出:EMIF PRCM DONE
CortxA8:输出:DDR PHY 配置正在进行
中 CortxA8:输出:等待 VTP 就绪..........
CortxA8:输出:VTP 已就绪!
CortxA8:输出:DDR PHY CMD0寄存器配置正在进行中..........
CortxA8:输出:DDR PHY CMD1寄存器配置正在进行中..........
CortxA8:输出:DDR PHY CMT2寄存器配置正在进行中..........
CortxA8:输出:DDR PHY DATA0寄存器配置正在进行中..........
CortxA8:输出:DDR PHY Data1寄存器配置正在进行中..........
CortxA8:输出:设置 IO 控制寄存器……
CortxA8:输出:EMIF 定时寄存器配置正在进行中........
CortxA8:输出:EMIF 定时寄存器配置完成.........
CortxA8:输出:PHY 已就绪!!
CortxA8:输出:DDR PHY 配置完成
CortxA8:GEL 输出:打开 EDMA...
CortxA8:GEL 输出:EDMA 被打开...
CortxA8:输出:**** AM3359_ICE 初始化完成** 

当我在调试窗口中看到"Do_AngleSWI "消息时、调试控制台会显示以下错误:

CortxA8:未处理的 ADP_Stopped 异常0x20023 

是否有人可以帮助我解决这个问题?

此致、

  Han Hoekstra

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在上面添加了一项内容。
    我有一个非常简单的项目、它在任务中每秒仅在调试控制台上显示数据、该项目似乎一直在运行。 此项目不使用任何 Sitara 的 I/O、因此不引用.cfg 文件中的任何 ti.drv 模块、也不调用"Board_init"。 其他2个项目在.cfg 文件中加载了 I2C、UART 和 GPIO 驱动程序。
    我无法将我的简单项目扩展为包括 GPIO、因为这样我就会在"UART_stdioInit"上遇到编译器错误、我无法修复这些错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Han、

    让我们首先尝试在电路板上运行"I2C_Example_icev2AM335x_armExampleProject"示例。
    您是否能够在示例顶部的 main 中放置一个断点并单步执行代码以查看其崩溃的位置?

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

    你好,Lali,

    问题是、我甚至没有达到可以运行代码的程度。

    我唯一要做的就是尝试加载二进制文件、并且在加载后立即向我显示错误消息。 因此、我甚至不知道调试器到达主函数的第一行并允许我运行应用程序。 因此问题出在 编译器/链接器添加到应用程序的部分、该应用程序在 main 之前运行。 如果在我运行代码时弹出问题、那么我可能可以对此采取一些措施。

    此致、

      韩文

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

    您使用的是哪一个特定的 GEL 文件? C:\ti\ccsv7_3\ccsv7\ccs_base\emulation\boards\ice_am3359\gel\TMDXICE3359.gel?
    此外、根据上述步骤、您能否仅尝试使用#5?
    也可以尝试不使用 GEL 文件、我相信应用程序也会执行一些电路板初始化(PLL 等)。

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

    [引用用户="Lalindra Jayatilleke"]  
     您使用的是哪一个特定的 GEL 文件? C:\ti\ccsv7_3\ccsv7\ccs_base\emulation\boards\ice_am3359\gel\TMDXICE3359.gel

    [/报价]

    是的、这是我要使用的 GEL 文件。 看看您的路径、我认为您使用的是 CCS7版本3、我使用的是 CCS7版本2。 这是一个差异。

    [引用用户="Lalindra Jayatilleke"]  
    此外、根据上述步骤、您能否仅尝试使用#5?

    [/报价]

    我已经尝试过这种方法、但结果仍然相同。

    [引用用户="Lalindra Jayatilleke"]  
    也可以尝试不使用 GEL 文件、我相信应用程序也会执行一些电路板初始化(PLL 等)。

    [/报价]

    我创建的目标没有用于 Cortex A8的 GEL 文件、但使用此目标、调试器无法将应用程序加载到目标上、它会显示以下错误:

    CortxA8:写入长度为0x7ff0的第0页0x8000000处的存储器块时遇到问题:(错误-1065 @ 0x3D5A)无法访问器件存储器。 验证内存地址是否在有效内存中。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.100.1)
    CortxA8:文件加载程序:验证失败:目标写入0x8000000
    CortxA8:GEL:文件:C:\Users\hoeksh\workspace_v7\HAHO_TestApp2\Debug\HAHO_TestApp2.out:加载失败。
    CortxA8:Error Reading Memory Block at 0x233ba on Page 0 of Length 0xc:(error -1205 @ 0x233B8) Device memory bus has an error and may be hung (在长度0xc:(错误-1205 0x233B8)的第0页上读取内存块时出现问题) Device memory bus 验证内存地址是否在有效内存中。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.100.1)
    CortxA8:读取长度为0x60的第0页上0x233ba 处的存储器块时出现问题:(错误-2130 @ 0x233B8)无法访问器件存储器。 验证内存地址是否在有效内存中。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.100.1)
    CortxA8:错误:(错误-1170 @ 0x0)无法访问 DAP。 重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.100.1)
    CortxA8:在20次尝试后无法确定目标状态
    CortxA8:在断开连接之前无法从目标中删除调试状态。 程序存储器中仍可能嵌入了断点运算代码。 建议您在连接之前重置仿真器、并在继续调试之前重新加载程序
    

    因此、我认为在加载应用程序之前、需要使用 GEL 文件来配置目标。

    新信息:

    我已经有一些时间来使用电路板和软件、我创建了一个新项目、采用了不同项目的设置。 现在、我能够在大约70%的时间内运行我的应用程序。  我之前提到过、它无法运行的时间仍然存在相同的错误。 因此、我知道这个问题的发生原因仍然很有用、但我可以进行一些软件开发(当我有时间时、我必须 首先编写一些规范、 但我每次都尝试使用 ICE 板、然后就会熟悉整个 TI-RTOS 环境)。

    非常感谢您迄今为止为我提供的帮助、我真的希望我们能够发现"do _AngelSWI"问题的问题、 这样我就可以始终运行我的应用程序、而不必担心调试器在加载期间停止。
     
    Lali

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    开箱即用(未修改)示例是否起作用? 什么是 do AngelSWI? 您的代码? 如果是、它有什么作用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    未修改的示例也会出现相同的问题。

    我不知道函数'do_AngelSWI'是什么、它不是来自我的代码的东西。

    我仍然没有找到解决这个问题的办法,它经常在这里出现。 有时、只要在 CCSv7中终止并启动我的目标配置、然后执行我的第一个帖子中所述的过程即可。 但是、有时这在两次尝试后不起作用、然后我断开电路板的电源(也是 USB 调试电缆)、等待一段时间、再次为电路板供电、并且在大多数情况下、我可以再次运行应用(但并非总是如此)。

    我注意到的是 AM3359芯片变得很热、我不知道这与它有什么关系...

    感谢您花时间查看我的帖子!

    我真的不知道在仅加载软件映像而根本不运行该映像时、此崩溃会发生什么情况。

    此致、

      韩文

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

    我在上面的帖子中添加了少量内容:

    在我的项目的.map 文件中、我找不到任何"do _AngelSWi"的引用、因此我真的不知道这个引用来自哪里。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    do _AngelSWI 来自编译器。 您能不能看一下这个主题: e2e.ti.com/.../1182247
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经看过这个帖子、但是他们在讨论如何在没有连接调试器的情况下从闪存运行应用(如果我正确读取)。 我要做的是尝试在调试器控制下运行应用程序、因为我希望将输出发送到 CCS 调试控制台。

    我的应用程序正在使用"System_printf"打印有关应用程序中发生的情况的消息、我希望看到这些消息。 只有应用程序不会不时加载、并且会因上述错误消息而崩溃。 我创建的第一个项目比我当前正在处理的项目更频繁地显示此行为。

    当我的应用程序正在运行并且我终止目标连接(调试器不再连接)时、应用程序仍然正常运行。 我可以看到这一点、因为我使用 UART 向我的应用发送命令、并且这些命令已正确执行、因此应用程序仍在运行。
    我还可以看到、半宿主任务不再执行、因为我有一个任务、那就是使用100ms 的睡眠来使 LED 闪烁。 当调试器连接时、闪烁速率不是恒定的(有时延迟比100ms 长很多。)、当我在 CCS 中断开目标连接时、闪烁在100ms 保持恒定。

    我没有将应用程序加载到闪存中、而只是 RAM 中、因此当我复位电路板时、我的应用程序就会消失。

    建议的线程中的解决方案是删除半宿主的内容、但此时我不想这样做、因为这样我就无法打印状态信息、因为 UART 用于可控制应用行为的"协议"。

    我没有使用'xdc.runtime.SysMin'打印消息、而是使用'xdc.runtime.SysStd'。 SysStd 似乎比 SysMin 更实时地打印消息。 我在以下页面上阅读了有关 SysStd 的内容: processors.wiki.ti.com/.../Processor_SDK_RTOS:_TI_RTOS_Tips_And_Tricks

    希望这些信息能让您更深入地了解我的问题。 如果您需要我提供的更多信息、请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    今天、我查看了 SPI 驱动程序、并希望运行示例项目"MSPI_BasicExample_icev2AM335x_armExampleProject"。

    我成功运行了这个项目一次、在我加载项目的其他时间、它给我提供了有关"Do_AngelSWI"的错误消息

    在尝试运行此项目一段时间后出现故障、我执行了 Run->Reset->CPU Reset (HW)、Scripts->SYS_CLKOUT2->L3_CLK、后跟 Scripts->AM335x 系统初始化->AM3359_ICE_Initialization、然后执行了 Run->Load of my own project、并且一次加载该项目时没有出现错误消息。

    我完全不知道"do _AngelSWI"错误的问题可能是什么... 但这非常烦人... 对于我自己的项目、我仍然不时地得到它、这会耗费我时间、这令我很沮丧、因为我永远不知道我的项目是否会运行。