【问题标题】:Accessing GPIO throgh /dev/mem is it safer?通过 /dev/mem 访问 GPIO 是否更安全?
【发布时间】:2017-07-19 08:23:01
【问题描述】:

我正在做一个项目,其中 gpio 切换应该像 40MHz 速度一样快。我检查了“sysfs”接口,开关速度在 300Hz 左右。在我们的情况下,这是完全不能接受的。 因此,在我阅读的一些论坛中,使用 /dev/mem 访问会提高切换速度。我使用 /dev/mem 并达到了 30-32MHz 的速度,这对我们来说没问题。现在该项目正在进行现场测试,从长远来看,它是否会导致内核崩溃之类的问题。

【问题讨论】:

  • 不看代码怎么判断?

标签: linux embedded embedded-linux imx6


【解决方案1】:

据我所知,i.mx6 没有原子引脚设置/重置功能,因此您必须确保所有 GPIO 输出引脚都由您的应用程序控制,内核或其他进程都不应尝试更改同一 GPIO 控制器上的任何输出引脚。读取输入管脚,或将一些管脚分配给其他外设应该没问题,但始终确保不会在后台发生 bit-banging(例如,一些 SPI 驱动程序认为他们更清楚何时设置或重置 CS,并悄悄地设置 CS 管脚到 GPIO 输出,将其从 SPI 外设中取出)

只要你的进程没有被中断,你就可以维持这样的输出速度。如果你不禁用中断,你会在输出中出现故障。如果你这样做了,那么内核调度程序和中断驱动的硬件驱动程序就会停止工作。在双核或四核系统上,应该可以保留一个核心供您的进程独占使用,并让系统的其余部分在其他核心上运行。不要只是盲目地禁用中断,而是使用sched_setaffinity(2)isolcpus 内核参数。

【讨论】:

  • 我确信我没有在除 /dev/mem 之外的任何地方使用 GPIO 控制器。
猜你喜欢
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多