问题标签 [gpio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arm - 在以非 root 用户身份运行的程序上通过 sysfs、mmap 或设备驱动程序控制 GPIO?
我正在尝试制作 ac 程序来访问嵌入式 linux 系统上的 GPIO,该系统将由非 root 用户运行。我已经可以通过 sysfs (/sys/class/gpio) 访问 GPIO,并制作了一个使用 mmap(通过 /dev/mem/)来控制 GPIO 的简单程序。但是,要写入 /sys/class/gpio/ 和 /dev/mem/,您必须具有 root 权限。在以非 root 用户身份运行的程序中访问 GPIO 的最“正确”或标准方法是什么?
编写设备驱动程序?
授予用户对 /sys/class/gpio/ 的读/写访问权限,以便程序可以使用 sysfs?
或者授予用户对 /dev/mem/ 的读/写访问权限,以便程序可以使用 mmap()?
谢谢
embedded - 通过 /dev/mem 驱动 Beaglebone GPIO
我正在尝试编写一个 C 程序来闪烁 Beaglebone 上的 LED。我知道我可以使用 sysfs 方式……但我想看看是否可以通过 /dev/mem 映射物理地址空间获得相同的结果。
我有一个头文件 beaglebone_gpio.h ,内容如下:
然后我有我的 C 程序 gpiotest.c
输出是:
但我看不到 LED 闪烁。
从程序的输出中可以看出,配置是正确的,FE1FFFFF 是一致的,因为 GPIO1_21、GPIO1_22、GPIO1_23 和 GPIO1_24 被配置为输出,每个都驱动一个 LED。
关于原因的任何想法?
vb.net - VB.net 和 GPIO
我需要打开一个连接到计算机 RJ-11 端口的钱箱。手册上说的是 RJ11 连接器case open: GPIO 63 ADD A25H(bit3)
如何从 VB.Net 访问该 GPIO?有人有例子吗?
c - void osSleep(tU32 ticks) - 它是如何工作的(微控制器中的计时器)?
我有一个用 C 语言编写的微控制器代码。根据我的例子,我使用函数“ void osSleep(tU32 ticks)
”来停止程序一段时间。不幸的是,我不知道它是如何工作的以及它对我的微控制器有什么作用(哪些引脚、状态等设置为什么值)。
我已经找到了 setBuzzer() 函数,因为我有它的来源:
所以 GPIO 端口设置为 1 或 0 用于与蜂鸣器相关的 PIN(BUZZER_PIN = 0x00002000)。蜂鸣器有一个引脚,所以我可以启用和禁用它(高电压和低电压)。
我想对 osSleep() 进行类似的分析,但奇怪的是,我在整个代码中找不到它的实现,只有声明:
也许该功能在某个库中。无论如何,我想知道它在较低级别上是如何工作的(例如,当我调用它时,定时器会发生什么,执行什么指令 - 就像在蜂鸣器示例中一样)。
此外, Embedded Artists的文档中只有一个名为“Pre-emptive Operating System v 1.4.0”的代码的高级简短定义。
android - WiFi模块与Android手机通信
我正在做一个项目,它是一个 android 控制的 LED 灯。该 LED 连接到 LED 控制器,该控制器连接到 WiFi 模块 ( WizFi220 )。WiFi 模块使用 GPIO 接口向 LED 控制器发送数据。Android 手机通过 TCPSocket 发送数据。
到目前为止,我已经实现了编写一个简单的服务器-客户端通信,并且服务器是在普通 PC 上用 Java 实现的。它运作良好。(例如,如果我按下 android 设备上的按钮,PC 上的服务器程序会向控制台打印一些内容)
问题是我应该向 WizFi 模块发送什么才能理解......如果它来自 GPIO 接口,“命令”会到达 LED 控制器,例如它打开/关闭、改变颜色或任何东西。(因为 LED 是 RGB LED)
感谢您的回答和帮助。
interrupt - request_irq 成功。处理程序未调用
我正在为 BeagleBoard-xM Rev C 上的用户按钮编写一个模块。现在,我只是想在调用中断处理程序时(即按下用户按钮时)打印一条消息。
用户按钮对应于 GPIO 引脚 4。我正在执行 gpio_to_irq(4) 以获取我通过处理程序传递给 request_irq() 的 IRQ 编号,这是成功的。事实上,这是我的 request_irq 调用。
我的中断处理程序看起来像这样。
但是当按钮被按下时,中断处理程序永远不会被调用。关于如何调试的任何指示?
谢谢!
c - 解码二进制信号
我正在从我的 Raspberry Pi 上的 gpio 引脚读取以下二进制信号(它是气象站的输出)。
第一列是二进制高或二进制低。第二列是它在状态中花费的时间(秒)。
如何将此信号转换为十六进制?!
如您所见,它为零约 48 秒,然后触发 1 和 0 的负载并再次回到零。
我需要弄清楚协议。我说不出那是什么。我唯一掌握的信息是当前温度为 21 摄氏度,风速为零,风向为零。非常感谢任何见解,
上面是两个不同传输的一些二进制数据图。
linux - ARM9 内核 2.6.10 GPIO 引脚中断返回 IRQ_HANDLED
我试图更好地理解在基于 GPIO 引脚的中断处理程序(上半部分)和 GPIO 引脚硬件中使用的“return IRQ_HANDLED”语句之间的交互。特别是,考虑设备已将 GPIO 引脚拉低以指示它需要注意的假设情况。这会导致调用相关的(上半部分)中断处理程序。现在假设上半部分处理程序排队了一些工作,然后返回“return IRQ_HANDLED”,但是无论出于何种原因,生成它的设备上的中断都没有被清除(即设备将 GPIO 引脚保持在低状态)。调用“return IRQ_HANDLED”是否会导致重新生成中断?我在以下文章的背景下问这个问题:
http://www.makelinux.net/books/lkd2/ch06lev1sec4
“可重入和中断处理程序 Linux 中的中断处理程序不需要是可重入的。当给定的中断处理程序正在执行时,相应的中断线在所有处理器上被屏蔽,防止接收到同一条线上的另一个中断。通常所有其他中断都被启用,所以其他中断被服务,但当前行总是被禁用。因此,同一个中断处理程序永远不会同时调用来服务嵌套中断。这大大简化了中断处理程序的编写。
上面的注释表明,在调用中断处理程序时,该中断的中断线被屏蔽。我试图弄清楚“return IRQ_HANDLED”的调用是否是取消屏蔽中断线的原因。并且,关于上述假设情况,如果我“返回 IRQ_HANDLED”但设备尚未真正清除其中断,因此仍将 GPIO 引脚保持在低(触发)状态,会发生什么情况。更具体地说,这是否会导致再次生成中断,从而使处理器永远没有机会完成第一次发生中断时排队的工作。即,这是否会导致中断风暴,其中处理器可能被无休止地中断,从而不允许任何有用的处理发生。
提前致谢,
吉姆
PS:我不清楚启用/禁用中断(特别是与特定 GPIO 引脚关联的中断)和屏蔽/取消屏蔽相同的 GPIO 中断之间的区别。
linux - 在 Linux 中打开 GPIO 有线 LED
我希望在 Linux 中找到一种通用机制来切换连接到嵌入式应用程序中 GPIO 控制器的 LED。
我可以使用 JTAG 或我的引导加载程序(直接设置寄存器)。但是,从用户模式切换一些灯会很棒
我在 Linux 上对此并不精通,是否有可以从我的用户模式应用程序调用的标准内核驱动程序?还是我需要为我的应用程序编写驱动程序?
我进行了一次网络搜索,发现了从编写自己的驱动程序到感觉即席的库的各种想法。我希望找到最“标准”的方式,认为 stackoverflow 人群会有很好的意见
任何提示都会很棒
python - 按键时跳转到功能
我为我想要测试的 Raspberry Pi 的 GPIO 制作了一些硬件。我发现了一些简洁的 python 代码,它为 8 个输出创建了 8 个按钮,并让您切换它们的状态。我对 python 几乎一无所知,但我希望能够通过键盘切换 8 个输出(例如数字 1-8)。我不知道如何在不暂停程序流程的情况下要求键盘输入,然后在响应后继续。
如何让数字 1-8 “中断”我的程序并跳转到 8 个相应函数中的 1 个?
我的代码: