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.

[参考译文] TMS320F28379D:决定从 XRS 到进入主器件的时间的因素

Guru**** 2604225 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1065563/tms320f28379d-what-determines-time-from-xrs-to-entry-to-main

器件型号:TMS320F28379D

从 XRS 到主器件的时间为73ms、我在 LaunchXL 评估板上运行我的代码(TRST 设置为独立)。 这对于我的项目的处理器启动/复位最后期限来说太长了。

为了帮助我解决这个问题、我有几个问题:

1.从闪存执行标准启动并进入 code_start 需要多长时间? 我在技术参考手册或数据表中找不到任何时序。

2.退出引导 ROM 后,什么决定了 RTS 中的 code_start 和用户代码中的 main()条目之间的时间?  我已经禁用了看门狗计时器、因此我知道它超过了13ms。

3.是否可以确认以下内容:引导 ROM 和 RTS c_int00代码在默认10MHz 下执行,并具有15个闪存等待状态,直到在 man()中输入用户代码为止?

根据评估结果、我们非常感谢您提出任何有关缩短启动时间的建议。

谢谢。

John

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

    尊敬的 John:  

    感谢您的联系。  我们的主题专家将在节假日上班、因此我们将不得不等到下周再收到具体的详细信息。  不过、下面是一些初始反馈

    1.从闪存执行标准启动并进入 code_start 需要多长时间? 我在技术参考手册或数据表中找不到任何时序。

    标准引导 ROM 代码在分支到应用程序之前从内部 ROM (而不是从闪存)运行。  应用程序的执行取决于引导模式。  您使用哪种引导模式?  

    2.退出引导 ROM 后,什么决定了 RTS 中的 code_start 和用户代码中的 main()条目之间的时间?  我已经禁用了看门狗计时器、因此我知道它超过了13ms。

    您可以在调试器中单步执行从_c_int00到 main 的代码。  如果您需要有关配置此功能的帮助、请告知我们。

    3.是否可以确认以下内容:引导 ROM 和 RTS c_int00代码在默认10MHz 下执行,并具有15个闪存等待状态,直到在 man()中输入用户代码为止?

    我认为答案是肯定的、因为引导 ROM 代码在 PLL 处于旁路状态的情况下运行、闪存等待状态被配置为闪存初始化的一部分、而闪存初始化作为应用程序初始化的一部分运行、但我必须确认此操作。  

    但是、为了简化此调试、您可能只需要配置等待引导、将应用程序加载到 RAM 中、以便将延迟与您在闪存中看到的延迟进行比较。

    此致、

    Krishna

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

    感谢您的快速响应。

    1.从闪存执行标准启动并进入 code_start 需要多长时间? 我在技术参考手册或数据表中找不到任何时序。

    标准引导 ROM 代码在分支到应用程序之前从内部 ROM (而不是从闪存)运行。  应用程序的执行取决于引导模式。  您使用哪种引导模式?

    我使用的是 LANCHXL-F28379D 评估板。 TRST = 0、GPIO72 = 1、GPIO84 = 1、所以应该处于 GetMode。

    OTP 已保留默认值、因此我相信引导 ROM 会从闪存引导。

    已检查 CPU1引导 ROM 状态@ 0x0000 002C = 0x0000 4F00、因此位9 = 1闪存引导已启动(如预期的那样)

    已检查 CPU1引导模式地址@ 0x0000 0038 = 0x0000 000b =闪存引导(按预期)

    我不明白这意味着:

    配置等待引导、将应用程序加载到 RAM 中

    我可以看到如何使其进入等待引导、但如何加载 RAM?

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

    John、  

    感谢您的反馈。  您是否已通过调试器连接到目标?  如果是、您可以使用调试器将应用程序加载到 RAM 中。  您可以考虑在加载到 RAM 中的应用程序运行基准测试...

    此致、

    Krishna

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

    感谢您的建议。 在最终产品中、除了 RAM 中的几个关键例程之外、代码从闪存运行 、因此我需要解决闪存中的 Rnning 问题。

    但是、基准测试可能很有用、但我无法按照您建议的方法将_c_int00计时到 main 中、以便在 RAM 中执行。 您能建议一种方法吗?

    此时,我将以数字方式测量“从 XRS 到输出 GPIO 线路上的脉冲的范围”上的时间,首先是条目 main()。 在调试器中运行时、没有 XRS、因此无法以这种方式进行测量。

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

    您好!

    您是否能够为以下各项提供回答:

    1.从闪存执行标准启动并进入 code_start 需要多长时间? 我在技术参考手册或数据表中找不到任何时序。

    我使用的是 LANCHXL-F28379D 评估板。 TRST = 0、GPIO72 = 1、GPIO84 = 1、所以应该处于 GetMode。

    OTP 已保留默认值、因此我相信引导 ROM 会从闪存引导。

    已检查 CPU1引导 ROM 状态@ 0x0000 002C = 0x0000 4F00、因此位9 = 1闪存引导已启动(如预期的那样)

    已检查 CPU1引导模式地址@ 0x0000 0038 = 0x0000 000b =闪存引导(按预期)

    因此、我想知道从 XRS (进入 TI 引导 ROM)到 .sect "codestart" code_start 的时间: 在 F2837xD_CodeStartBranch.asm 中(从 TI 引导 ROM 退出)。

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

    尊敬的 John:  

    很抱歉在上一个帖子中答复您的以下问题时出现延迟。

    但是、基准测试可能很有用、但我无法按照  您建议的方法将_c_int00计时到 main 中、以便在 RAM 中执行。 您能建议一种方法吗?

    请按照以下步骤进行设置以执行此基准测试。   

    1.启动 CCS 并连接到您的目标。  

    2.切换到 Debug 透视图,但*不要*加载应用程序。

    3.从菜单栏中选择以下选项: tools->Debugger Options->Auto Run and Launch Options

    4.在“自动运行选项”下,取消选择“在程序加载或重新启动时”选项。  注意: 默认情况下、应用程序配置为运行到 main。

    5.选择"记住我的设置"

    6.从工具栏中启用 Profiler,如下所示: RUN->Clock-Enable。   

    7.请注意、时钟图标和计数器(复位为0)显示在 CCS 的底部边界内(通常在右下角、但可能在左侧)

      双击配置文件时钟将其复位为0 (如果尚未为0)

    8.加载您的应用程序。  注意: 在加载结束时、目标在_c_int00停止

    9.如果系统配置时钟显示为非零。 按照步骤7中所述对其进行重置。

    10. 从工具菜单中选择 Run->Go Main。

    11.请参阅分析时钟报告的从_c_int00到 main 执行的周期。

    12 要重复测试,请重置配置文件时钟并 选择“运行”->“重新启动”。

    谢谢、

    Krishna  

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

    感谢您提供详细信息。 这帮助我解决了我的问题。

    经确认的引导 ROM 需要1.5ms、_c_int00 ()需要70+ms 来初始化静态数据。

    还确认了_c_int00 ()以默认闪存等待状态和10MHz 时钟运行、因此运行速度非常慢。

    _system_pre_init()可用于插入代码,以设置闪存和时钟在静态数据初始化之前以10倍的速度运行。