Raspberry Pi 4:C 循环中 GPIO bit-banging 的速度不均匀(RPi 4,64 位)

问题描述 投票:0回答:1

我正在尝试测量通过 GPIO 位碰撞可实现的数据传输速度并将读取结果记录在内存中。我已经创建了一篇关于设置的文章,它使用连接到 GPIO 1的 FPGA。

我使用以下方法:GPIO0 到 GPIO20 专用于“数据”,而 GPIO25 到 GPIO27 指定用于“控制信号”,例如“数据就绪”、“数据请求”和“重置”。

循环很简单:

  1. RPi 将“数据请求”设置为高
  2. FPGA检测到“数据请求”并在GPIO0-20处设置数据(该数据是50MHz计数定时器值,所以它允许我测量速度)。
  3. FPGA 将“数据就绪”电平设置为高电平
  4. RPI 检测到“数据就绪”高电平,读取数据并写入 RAM 中的缓冲区
  5. RPI 将“数据请求”设置为低。接收到低“数据请求”后,FPGA 将数据就绪设置为低。
  6. 转到1

我发现前 ~60-70K 读取每个周期约为 0.88 uS,但随后速度会快两倍以上,每个周期约为 0.38 uS。

我想知道这种速度不均匀的原因是什么。有没有办法以每周期 0.38 uS 的更高速度开始传输,并确保它不会回落到较慢的 0.88 uS 模式?

raspberry-pi profiling gpio raspberry-pi4
1个回答
0
投票

我已经确认是DVFS造成的。

我发现,在 RPi4 中,默认情况下,当核心空闲时,其频率设置为 600MHz,而在负载时则增加到 1800MHz。系统似乎需要大约 50-60 毫秒才能对增加的负载做出反应。

将缩放调节器设置为“性能”而不是默认的“按需”值,交换速度从一开始就很快。

© www.soinside.com 2019 - 2024. All rights reserved.