主题中讨论的其他器件: 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
春岩市