在我的应用程序中有一个线程负责 RESET 按钮,它被按下的时间和时间;在此基础上,我们采取行动。 问题是最小化 CPU 使用率:
1. popen
用法 fp=popen(RESET_GPIO_VALUE,"r");
这个应用程序有75% CPU consumption
.
fopen
用法fp=fopen(RESET_GPIO_VALUE,"r");
这个应用程序有87% CPU consumption
.open
用法fd = open(RESET_GPIO_VALUE,O_RDONLY);
这个应用程序有95% CPU consumption
.
有没有什么方法可以通过 10-15% of CPU consumption
访问 GPIO? .
目前在我的逻辑中,我通过上述定义方法检查其值来不断检查 RESET GPIO。当按下按钮时计时器启动并释放时停止计时器并计算时间差。这整个 Action 在无限循环中运行。
最佳答案
关于 RESET_GPIO_VALUE
的(最初)缺失信息,我们可以提供一个合理的答案。
显然,您的 µC 板级支持包实现了用户空间的 Linux GPIO Sysfs 接口(interface)(您应该阅读 Linux BSP 附带的相关文档)。
基本上(如果板卡和驱动支持的话),你可以在用户空间做GPIO的触发中断。就写rising
, falling
或 both
(字面意思)到/sys/class/gpio/gpioN/edge
选择您的代码想要响应的信号边缘,然后执行 poll()
在一个打开的文件描述符上 /sys/class/gpio/gpioN/value
.
这个投票每次都会返回value
相应地改变。
关于c - 访问 GPIO AM335x 板作为 RESET 和最小 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35981302/