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.

[参考译文] AM6442:Cortex R5F 性能

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1322331/am6442-cortex-r5f-performance

器件型号:AM6442
主题中讨论的其他器件:SysConfig

您好!

我们正尝试从 F28379D 切换到性能更高的 AM64平台。 AM64似乎是一个很好的选择、但一些测量结果让我们感到惊讶。 相同的数学计算包括:

  • 使用200MHz 时钟和第二优化在 Delfino 上实现280uS;
  • AM64上 R5F 上的215uS、具有800MHz 时钟和第三种优化;
  • 在 AM64上 A53上为30us、具有1GHz 时钟和优化0。

我们发现 R5的性能令人惊讶。 200MHz Delfino 是否应在具有800MHz 的情况下实现与 ARM R5f 几乎相同的性能? 是否有办法提高 R5内核的性能(优化、启用硬件外设)?

此致、

安德烈安

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

    您好、 Andrean:

    感谢您的提问。

    相同的数学计算需要:

    您能提供更多的信息,你正在尝试在这里什么?

    例如:

    数据和代码存储在哪个存储器位置?

    访问数据的方法?

    此致

    阿什瓦尼

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

    尊敬的 Ashwani

    我们实现了多轴运动控制。 有三角函数、IIR 滤波器、乘法、除法等。 计算时、我们仅使用"float"类型。


    代码和数据存储在 DDR RAM 中。 我们对所有数据(数组)使用随机存储器存取。 此应用程序与 FreeRTOS 一起运行。

    此致、

    安德烈安

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

    您好、Andrean:

    主要延迟来自存储器访问、尤其是将代码和数据放入 DDR RAM 时。 AM64x 中有三个级别的存储器:TCM、OCRAM 和 DDR。 下表列出了这些内存级别的内存访问延迟:

     在 Sitara AM64x/AM243x 基准测试中、Cortex-R5存储器访问延迟(修订版 B)(TI.com)

    尝试将代码和数据、尤其是最常用的代码和数据放入 TCM 和 OCRAM 中。 请避免尽可能使用 DDR。

    此致、

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

    Ming 您好、

    感谢您的快速回答!

    我们使用 DDR、但会缓存数据和指令。 我们刚刚使用禁用的缓存运行了相同的测试。 在 R5F 上计算同样的运动需要3ms (而不是215uS)。 我们还尝试了将数据和代码放入 TCM 存储器。 R5F 的执行方式与在启用了高速缓存的 DDR 中相同。

    是否还有其他任何东西可以帮助提高 R5内核的性能?

    此致、  

    安德烈安

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

    您好, 

    您能否共享或检查存储器区域的 linker.cmd 文件和 SysConfig 文件设置?

    以下是一些指导原则:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1236505/faq-am64x-profinet-component-placement-recommendation-for-sitara-mpu-memory

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:

    这是链接器文件:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* This is the stack that is used by code running within main()
    * In case of NORTOS,
    * - This means all the code outside of ISR uses this stack
    * In case of FreeRTOS
    * - This means all the code until vTaskStartScheduler() is called in main()
    * uses this stack.
    * - After vTaskStartScheduler() each task created in FreeRTOS has its own stack
    */
    --stack_size=8192
    /* This is the heap size for malloc() API in NORTOS and FreeRTOS
    * This is also the heap used by pvPortMalloc in FreeRTOS
    */
    --heap_size=200000
    -e_vectors /* This is the entry of the application, _vector MUST be placed starting address 0x0 */
    /* This is the size of stack when R5 is in IRQ mode
    * In NORTOS,
    * - Here interrupt nesting is enabled
    * - This is the stack used by ISRs registered as type IRQ
    * In FreeRTOS,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    这是 MPU 配置:

    此致、

    安德烈安

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

    您好、 Andrean:

    谢谢您的博客。

    您能否同时共享生成的 memory_map 文件?

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:

    是的、当然可以。

    此致、

    安德烈安

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

    感谢  Andrean:

    请允许我花点时间来回顾并回复您。

    此致

    阿什瓦尼

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

    尊敬的 Ashwani:

    您有时间查看我的文件吗?

    此致、

    安德烈安

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

    您好, 

    很抱歉响应延迟。

    我仍在内部讨论这一点。

    请允许我再多花点时间。

    感谢您的耐心等待。

    此致

    阿什瓦尼

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

    您好、Andrean:

    你能否在 linker.cmd 中尝试以下命令?

    添加

    MSRAM1:origin = 0x700C0000,length = 0x100000

    将 DDR 的所有引用更改为 MSRAM1

    此致、

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

    Ming 您好、

    如果我将 所有内容都添加到 MSRAM 中、执行时间会缩短:

    - 180uS 未优化
    80us 与第三优化

    感谢您的帮助!

    此致、

    安德烈安

x 出现错误。请重试或与管理员联系。