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.

[参考译文] RM44L920:外设寄存器访问缓慢

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1283203/rm44l920-peripheral-register-access-slow

器件型号:RM44L920
主题中讨论的其他器件: TMS570LC4357

您好!

我正在使用 RM44L920 Hercules 微控制器。 目前、我正在测量中断服务例程(ISR)的性能。


时钟设置如下:
GCLK:160 MHz
HCLK:160 MHz
RTI1CLK:80 MHz
VCLK1:80 MHz
VCLK2:80 MHz
VCLK4:80 MHz

我已经观察到、一个简单 ISR 所需的时间要远远多于最初的预期、大约为2至4微秒。

我注意到、对各种寄存器的访问、包括外设寄存器、DMA 寄存器、系统寄存器的访问尤其缓慢。 从这些寄存器读取操作会消耗约155纳秒(快速~25个 CPU 时钟)。

为了说明这一点、我设置了这个简单示例:
我已经使用主 C 文件创建了一个项目。

在此项目中、有两个用于测量

uint32_t test_load_from_IO(void);

-从 SCI 接收器数据寄存器(SCIRD)加载一个值300次,并测量执行时间(以毫秒为单位)。
对寄存器进行300次读取访问的累计时间为46微秒。 平均而言、每次对寄存器的读取访问都需要大约155ns、快速的25个 CPU 时钟。

uint32_t test_load_from_memory(void);

-从内存中加载值300次,并测量执行时间(以毫秒为单位)。
300个存储器加载操作所需的总时间为2微秒。 平均而言、从存储器加载的每次大约需要6、66ns、快1个 CPU 时钟。

UART 配置波特率:460800bps。 数据位:8位。 奇偶校验:无奇偶校验。 停止位:1位。
UART 用于发送测量结果。

RTI 配置为
自由运行计数器的频率0 = 1MHz
比较0值= 1000
RTI 用于测量以微秒为单位的执行时间。
我们的 ISR 必须访问寄存器、这可能会影响项目的整体性能、或通过接收 UART/SPI 数据导致溢出错误。
我想知道是否有技巧可以加快访问寄存器的速度。

感谢您的帮助

此致、e2e.ti.com/.../SimpleProject.zip

春岩市

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

    尊敬的 Chunyan:

    很抱歉在响应中出现了延误,在印度我们有几个假期。

    现在 、我已开始处理您的问题、并将尽快提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    尊敬的 Chunyan:

    我测试了您的项目、我可以看到您提到的行为。 我没有找到任何文档、说明为何与 RAM 和闪存相比外设存储器的访问速度较慢。

    我将再次进行进一步调查并提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    感谢您的答复。 我理解、由于 ARM 总线架构(AHB、APB 等)、读取或写入外设寄存器可能需要几个 CPU 周期。 但是、大约25个 CPU 时钟周期似乎过高。 该处理器通常采用此延迟级别吗? 有什么技巧可以让它更快吗?

    谢谢。此致、

    春岩市

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

    尊敬的 Chunyan:

    但是,大约25个 CPU 时钟周期似乎过多。 该处理器通常采用此延迟级别吗? 是否有任何技巧可以使其更快?

    我在其他 Hercules 器件(TMS570LC4357)上进行了测试、延迟看起来相同。 我还尝试了外设区域的不同 MPU 设置、但延迟没有改善、结果是一样的。

    所以、我认为我们无法加快速度、这只是一个限制。

    --
    谢谢。此致、
    Jagadish。