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/TI-RTOS:AM335x 应用启动速度非常慢

Guru**** 2575385 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/621708/rtos-ti-rtos-am335x-very-slow-application-start

器件型号:TI-RTOS

工具/软件:TI-RTOS

你(们)好。

我正在使用 pdk_am335x_1_0_7的 starterware 文件夹中的引导加载程序、并在 phycoreAm335x SOM 上通过 SPI 闪存运行简单的 RTOS 应用程序。  

映像加载到 RAM 后、在代码开始时需要大约几秒钟时间到达 GPIO_Toggle 函数、该函数会点亮 LED、而在调试会话中、应用程序会立即运行、LED 会亮起...

有 sth。 在 RTOS 应用程序中使用引导加载程序时需要考虑的事项?

Codesnipet:

int main ()
{

//*调用电路板初始化函数*/
Board_initCfg boardCfg;
boardCfg = Board_init_PINMUX_config |
Board_init_module_clock;//| Board_init_uart_stdio;
//boardCfg = Board_init_all;


Board_gpio (boardCfg);
// Network_init (
;();//
GPIO_TOGGLE (USER_LED0);//直到 LED 亮起10秒...

(笑声)

BIOS_start();

return -1;
} 

此致、

Jim

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

     n`t 注意、引导加载程序会执行 pinmux 配置和时钟配置、因此您的应用代码中应该不需要该配置。 您能否在 GPIO_init 之前放置一个 while 环路、以便内核在 while 上暂停、并且可以连接到 ARM 内核。 然后单步执行 GPIO_init 和 GPIO_toggle 以查看10秒内的耗电量

    您确定是应用程序耗时10秒了。 我在 AM335x ICE 板上尝试过此操作、但未遇到此问题。 但 SPI 和 MMC 是这些电路板上启动序列中的第一个和第二个启动模式。 我们过去看到这种情况的主要原因之一是、如果 SPI 不是引导序列中的第一个引导介质、并且存在像以太网这样的外设引导模式、 在引导序列中、USB 或 UART 先于 SPI。如果外设引导在引导序列中、则 RBL 会等待这些引导超时、然后再进入下一个引导模式。 请参阅初始化章节、检查与 PHYtec 板上的引导模式引脚对应的引导顺序。

    此致、
    Rahul

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

    我将开始一个更深入的调试会话、并在这里进行回复。 感谢您的快速响应、感谢您的帮助。

    此致、

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

    我刚开始处理这个问题、想知道 pinmux 在引导加载程序中的哪个位置完成。 我找到了时钟和器件配置、但引脚多路复用器没有问题。 您是否想向我提供一些有关 bootlaoder 中的引脚多路复用的信息? 对我来说、引导加载程序的文档非常令人困惑(如果可用)。

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

    我执行了一个小引脚多路复用并编写了一个非常基本的 RTOS 项目、该项目只会切换在引导加载程序配置中配置的 allready 引脚、并在该引脚用于对引导时间(GPIO 0)进行基准测试。 我从 RTOS 应用程序中排除了所有时钟和其他初始化、并移动/检查了引导加载程序中的必要选项。 引脚列表已切换、但在大约10秒后仍然保持...

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

    Jim、

    我还在使用相同的 phytec 板、并尝试从 SPI 闪存启动 TI-RTOS 应用。  它可以工作、但速度太慢。  问题不在 RTOS 中、而是在尝试让引导加载程序高效运行 SPI 时出现。

    这里有2个阶段。  我已设置 AM335x 引导字、以便先从 SPI 闪存引导加载程序。  我确定了传输的范围、以查看内部加载程序如何运行 SPI。  它在每个传输大约2.6us 的时间内执行32位传输、两次传输之间的间隔为1.8us。  我的 SPI 引导加载程序大约为36k、内部引导 ROM 代码在大约38ms 内从闪存加载。  这定义了应该可以实现的功能。 如果 TI 能告诉我们内部 SPI 引导器是设置为32位字、还是使用4字节 FIFO 传输、以及它们是否使用 DMA 控制器、这将非常有用。 或其他东西。

    我的引导加载程序来自 Starterware 示例。  我获得的性能是以300ns 的速度进行字节传输、字节传输之间存在8us 的间隔。 这使得我的3.3MB RTOS 应用程序加载几乎需要20秒。  并且还会使我的应用程序从闪存中检索数据的速度有点慢、因为它对 SPI 使用相同的驱动程序。

    我想了解如何配置 SPI、以便使用其内部 FIFO 有效读取数据、从而在不使用 DMA 的情况下缩小差距。

    此外、我确实使用 DMA 将数据从存储器移动到特定于应用的 SPI 硬件、这种做法已经足够好了。

    Gerry Belanger

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

    我想我有一些工作区问题。 将工程导入到新工作区后、将立即加载。

    谢谢、此致、

    Jim