c - 访问 GPIO AM335x 板作为 RESET 和最小 CPU 使用率

标签 c linux embedded embedded-linux gpio

在我的应用程序中有一个线程负责 RESET 按钮,它被按下的时间和时间;在此基础上,我们采取行动。 问题是最小化 CPU 使用率:

1. popen用法 fp=popen(RESET_GPIO_VALUE,"r");这个应用程序有75% CPU consumption .

  1. fopen用法 fp=fopen(RESET_GPIO_VALUE,"r");这个应用程序有87% CPU consumption .

  2. 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 , fallingboth (字面意思)到/sys/class/gpio/gpioN/edge选择您的代码想要响应的信号边缘,然后执行 poll()在一个打开的文件描述符上 /sys/class/gpio/gpioN/value .

这个投票每次都会返回value相应地改变。

关于c - 访问 GPIO AM335x 板作为 RESET 和最小 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35981302/

相关文章:

python - 使用 Python 访问嵌入式设备的低级寄存器

regex - 使用正则表达式和 sed 替换文件中的字符串

php - 显示 php 实例在服务器上运行的文件(用于内存管理目的)

linux - 从文件中删除特殊字符 - Unix

c - 为什么将函数插入示例代码后会出现错误?

c++ - 在设计和构建嵌入式系统时考虑 Chaos Monkey

c - 派生一个不使用自己的内存副本的子进程

C- fgets() 删除用户输入

c - stat 获取文件的大小并复制它

c - 是否可以将套接字绑定(bind)到 c 中的 2 个地址?