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/PROCESSOR-SDK-AM437X:在 SK 上调试 RTOS 项目

Guru**** 2578945 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/629394/ccs-processor-sdk-am437x-rtos-project-debugging-on-sk

器件型号:PROCESSOR-SDK-AM437X

工具/软件:Code Composer Studio

我´ve 了一款全新的 AM437x 入门套件。 已通过 USB 电缆将其连接到我的 PC。 它检测到"AM437x SK EVM XDS100v2"。

我´ve CCS、编译 GPIO_LedBlink_skAM437x_armTestProject 并尝试对其进行调试。 调用 BIOS_start()后,程序将搜索位置0x80168010。

如果我尝试调试我编写的程序、效果是一样的。 调用 BIOS_start()后,程序将搜索位置0x80168010。

我´ve 了 UART_BasicExample_skAM437x_armTestProject 和 EMAC_BasicExample_skAM437x_armBiosExampleProject。 它们无法连接到目标。 CCS 显示目标处于复位状态。

校正了什么配置来调试 AM437x 入门套件上的程序?

已安装的组件:
CCS 7.2
GCC ARM 编译器4.9.3
PROCESSOR_SDK_RTOS_AM437X 4.00.04
AM437x PDK v1.0.7
BIOS 6.46.05.55
xdctools 3.32.02.25_core

此致、

Marcio。

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

    请查看 processors.wiki.ti.com/.../Processor_SDK_Supported_Platforms_and_Versions 以了解硬件设置。

    我没有 SK EVM、我使用了 IDK EVM。 但我认为不同 EVM 变体的测试应用程序的工作方式相同。 确保 EVM 中没有 MMCSD 卡、GEL 文件会正确初始化 DDR。 加载代码、映射文件中的0x80168010是什么? BIOS_start()调用 GPIO_test()。 如果在 GPIO_test()放置一个断点,它会命中吗?

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

    我认为配置或初始化中缺少一些内容。

    我´ve 运行该程序几次、并设法运行该程序、并看到 LED 闪烁一次。 ´ve、我关闭了电路板电源、从未看到电路板再次运行。

    当程序运行时,执行 AppGpioCallbackFxn(),但 GPIO_test()任务不执行。

    程序从 main()开始,并在调用 BIOS_start()时进行搜索。 我甚至无法进入 BIOS_start()。 它不运行 GPIO_test()。

    int main (空)



    /*呼叫板初始化函数*/

    Board_initGPIO();

    /*启动 BIOS */

    BIOS_start();

    返回(0);



    我在映射文件中看不到地址。

    我相信 GEL 文件正在正确初始化 DDR。 这是默认值。 当我初始化调试部分时、控制台显示:

    CortexA9:输出:**** AM437x SK EVM 初始化正在进行中..........

    CortexA9:输出:****设备类型:GP

    CortexA9:GEL 输出:系统输入时钟为24MHz

    CortexA9:GEL 输出:****正在进行 CLKIN=24MHz 的 AM43xx OPP100…

    CortexA9:GEL 输出:****将绕过...

    CortexA9:GEL 输出:****已绕过,正在更改值...

    CortexA9:输出:****锁定 PLL

    CortexA9:GEL 输出:**** MPU PLL 已锁定

    CortexA9:GEL 输出:****内核已绕过

    CortexA9:GEL 输出:****现在锁定内核...

    CortexA9:GEL 输出:****内核已锁定

    CortexA9:GEL 输出:****根据 SD Divisor=4计算得出

    CortexA9:GEL 输出:****每个 DPLL 已旁路

    CortexA9:GEL 输出:****每个 DPLL 锁定

    CortexA9:GEL 输出:****计算得出的 EXTDEV SD 分频值=4

    CortexA9:GEL 输出:**** EXTDEV DPLL 已旁路

    CortexA9:GEL 输出:**** EXTDEV DPLL 锁定

    CortexA9:GEL 输出:**** DISP PLL 配置正在进行中..........

    CortexA9:GEL 输出:**** DISP PLL 已锁定

    CortexA9:GEL 输出:**** DDR DPLL 已旁路

    CortexA9:GEL 输出:**** DDR DPLL 已锁定

    CortexA9:GEL 输出:****设置 DDR3 = 400MHz

    CortexA9:GEL 输出:**** AM43xx OPP100配置已完成..........

    CortexA9:GEL 输出:正在启动 DDR3配置...

    CortexA9:输出:EMIF PRCM 正在进行中........

    CortexA9:输出:EMIF PRCM 完成

    CortexA9:GEL 输出:启用 EMIF CLK……

    CortexA9:GEL 输出:正在等待 VTP 就绪..........

    CortexA9:GEL 输出:VTP 已就绪!

    CortexA9:GEL 输出:启用 VTP 控制器

    CortexA9:GEL 输出:正在检查 DLL 是否就绪...

    CortexA9:GEL 输出:DLL 已就绪

    CortexA9:GEL 输出:配置 DDR IO 和控制模块寄存器...

    CortexA9:GEL 输出:控制模块寄存器配置完成

    CortexA9:GEL 输出:设置 DDR3 H/W 调平配置...

    CortexA9:GEL 输出:正在启动 EMIF 控制器配置...

    CortexA9:GEL 输出:

    DDR3硬件调平完成... 所有的水平结果都很棒!!!

    CortexA9:GEL 输出:PHY_STATUS_12=0x070000C1

    CortexA9:GEL 输出:PHY_STATUS_13=0x070000C4

    CortexA9:GEL 输出:PHY_STATUS_14=0x070000C0

    CortexA9:GEL 输出:PHY_STATUS_15=0x070000BF

    CortexA9:GEL 输出:PHY_STATUS_16=0x00000000

    CortexA9:GEL 输出:PHY_STATUS_7 =0x00000045

    CortexA9:GEL 输出:PHY_STATUS_8 =0x00000044

    CortexA9:GEL 输出:PHY_STATUS_9 =0x00000044

    CortexA9:GEL 输出:PHY_STATUS_10=0x00000044

    CortexA9:GEL 输出:PHY_STATUS_11=0x00000000

    CortexA9:GEL 输出:PHY_STATUS_17=0x033900D4

    CortexA9:GEL 输出:PHY_STATUS_18=0x03C300D3

    CortexA9:GEL 输出:PHY_STATUS_19=0x004E00D3

    CortexA9:GEL 输出:PHY_STATUS_20=0x003F00D3

    CortexA9:GEL 输出:PHY_STATUS_21=0x00000000

    CortexA9:GEL 输出:PHY_STATUS_22=0x02F90094

    CortexA9:GEL 输出:PHY_STATUS_23=0x03830093

    CortexA9:GEL 输出:PHY_STATUS_24=0x000E0093

    CortexA9:GEL 输出:PHY_STATUS_25=0x03FF0093

    CortexA9:GEL 输出:PHY_STATUS_26=0x00000000

    CortexA9:GEL 输出:

    DDR3配置已完成!!!

    CortexA9:GEL 输出:打开 EDMA...

    CortexA9:GEL 输出:EDMA 被打开...

    CortexA9:输出:**** AM437x SK EVM 初始化完成


    感谢你的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我的问题似乎与这两个帖子有关:
    e2e.ti.com/.../1671114
    e2e.ti.com/.../401837。

    我´ve 了 GEL 文件、但不确定它是否起作用、因为我在控制台中看不到添加的输出。 I θ´ve 还在项目属性的调试部分中从"混合 ARM/Thumb"更改为"仅 ARM "。

    GPIO_LedBlink_skAM437x_armTestProject 现在运行、但我的使用 NDK 的项目仍然运行。

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

    感谢您的更新。 您是说 Nimu_BasicExample_skAM437x_armExampleproject 失败了吗? 您有控制台输出吗?

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

    尊敬的 Eric:

    我指的是我自己的应用、它基于 LED 和 Nimu 的混合示例。

    我今天早上尝试调试 Nimu_BasicExample_skAM437x_armExampleproject、但也失败了。 没有控制台输出(除 GEL 外)。

    它不是确定性的。 有时在调用 Task_create()时失败,有时在调用 BIOS_start()时失败。 如果我停止调试器并执行一步进入、我可以看到它正在执行 ata Abort 异常处理程序。

    如果修改 NIMU_BasicExample_skAM437x_armExampleproject 以添加 System_printf、我看不到任何内容。 如果修改为使 LED 闪烁(通过 GPIO)、则 LED 不会闪烁。

    此致、

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

    尊敬的 Eric:

    我认为我发现了一些可以解释代码的非确定性行为的东西。
    我已经从头开始了一个 CCS 项目、并一次添加了一个模块:UART、GPIO 和 NDK。
    该程序一直运行、直到我添加了 NDK。
    有时、我在控制台上看到以下消息"00000.000 ExecStart:早已打开"。
    此消息来自 ExecOpen(),地址为 c:\ti\ndk_2_25_01_11\packages/ti\ndk\stack\res\exec.c
    ExecStatus 是定义时初始化的 ES_Closed 静态变量。

    void ExecOpen()

      if (ExecStatus!= ES_Closed)
      {
        DbgPrintf (DBG_ERROR、"ExecStart:already Open");
       返回;
      }



    我´ve 在 ExecOpen()中放置一个断点。 首次执行此过程时,变量“ExecStatus”为“垃圾”。 它未初始化(链接选项错误?) 或者它正在被覆盖。

    2017-10-09更新:

    问题似乎是 AM437x.lds (链接命令)文件。 当我从工程中删除它时、它开始运行。 我使用的默认值为 c:\ti\ccsv7\ccs_base\arm\include\。  e2e.ti.com/.../1565.AM437x.zip


    我是 ARM CPU 的新手。 请帮帮我。

    谢谢、

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

    Processor SDK RTOS 上的所有 CCS 示例项目均由以下脚本创建: processors.wiki.ti.com/.../Rebuilding_The_PDK

    然后将 CCS 项目导入 CCS、构建并运行。 项目中未使用 AM437x.lds。 这些项目是 RTSC 项目、其平台由存储器部分和数据/代码放置定义。 如果您按照我们创建工程的方式(不是从头开始将文件添加到 CCS 中)、则不应出现此问题。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 Eric
    当我´ve 说我从零开始一个项目时,我意味着我已经使用 SYS/BIOS->GNU Target Examples->Typical 创建了一个 CCS 项目。
    如果打开项目属性、General 选项卡中有一个放置链接器命令文件的位置。 这是一个下拉列表。 AM437x.lds 就在这里。 我的错误是填充此字段。 我没有意识到这是不需要的。
    谢谢、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    所有 Processor SDK RTOS 示例均由脚本创建、它们不是裸机。 如果您自己创建裸机示例、则它将.ld 文件作为链接器命令。 请访问 processors.wiki.ti.com/.../Processor_SDK_Bare_Metal_Examples

    此致、Eric