我正在做一个gpio切换应该像40MHz速度快的项目。我检查了" sysfs"接口和开关速度约为300Hz。在我们的案例中,它完全不可接受。 因此,在某些论坛中我使用/ dev / mem访问将会提高切换速度。我使用/ dev / mem并达到了30-32MHz的速度,对我们来说还可以。现在该项目正在进行现场测试,它会导致像内核崩溃这样的问题。
答案 0 :(得分:1)
据我所知,i.mx6没有原子引脚设置/复位功能,因此您必须确保所有GPIO输出引脚都由您的应用程序控制,内核和其他进程都不应该尝试更改同一GPIO控制器上的任何输出引脚。读取输入引脚或将某些引脚分配给其他外设应该没问题,但始终确保在后台不会发生位冲击(例如,某些SPI驱动程序认为他们更清楚何时设置或复位CS,并安静地设置CS引脚到GPIO输出,将其从SPI外设中取出)
只要您的进程没有中断,您就可以维持输出速度。如果您不禁用中断,您将在输出中出现故障。如果这样做,那么内核调度程序和中断驱动的硬件驱动程序就会停止工作。在双核或四核系统上,应该可以保留一个专用于您的进程的核心,并让系统的其余部分在其他核心上运行。不要盲目地禁用中断,而是使用sched_setaffinity(2)
和isolcpus
内核参数。