如何设置虚拟 GPIO 环回

2023-12-11

我目前正在开发一个应该在.Net 中使用 gpio 引脚的程序。 我想在虚拟 GPIO 引脚上测试我的程序,但我不知道该怎么做。

我想做一个环回,将虚拟 GPIO 1 连接到另一个虚拟 GPIO 2。

我已经对串口和 tty0tty 做了类似的事情。

另外,我在Ubuntu上。


如果您没有可用的真实硬件,则在不破解真实内核驱动程序的情况下就没有这种可能性。幸运的是,在 Linux 内核中我们有gpio-mockup(还有新来的gpio-sim)用于测试 GPIO 库和 API。

主要思想是这样的。您创建一个虚拟 GPIO 芯片:

% modprobe gpio-mockup gpio_mockup_ranges=-1,3 gpio_mockup_named_lines

% gpiodetect
...
gpiochip2 [gpio-mockup-A] (3 lines)

% gpioinfo 2
gpiochip2 - 3 lines:
        line   0: "gpio-mockup-A-0" unused input active-high 
        line   1: "gpio-mockup-A-1" unused input active-high 
        line   2: "gpio-mockup-A-2" unused input active-high 

通过 DebugFS,您可能会看到这些行位于硬件方面,即无论您在那里编写什么,Linux 堆栈都会将其视为硬件状态:

% mount -t debugfs none /sys/kernel/debug

% ls -l /sys/kernel/debug/gpio-mockup/gpiochip2/
total 0
--w-------    1 root     root             0 Jan 29 01:10 0
--w-------    1 root     root             0 Jan 29 01:10 1
--w-------    1 root     root             0 Jan 29 01:10 2

(注意那里的只写属性)

现在演示部分

首先检查引脚的当前状态(让我们选择虚拟 GPIO 控制器的引脚 2):

% gpioget 2 2
0

假设引脚的硬件状态已从 0 更改为 1:

% echo 1 > /sys/kernel/debug/gpio-mockup/gpiochip2/2

再次检查引脚的状态:

% gpioget 2 2
1

对于输出部分,它有点复杂,即要么您需要到 GPIO 芯片的已弃用的 sysfs 接口,要么您必须运行一个线程或从代码中派生一个进程以保持上下文状态正确。和gpioget and gpioset目前这是不可能的,因为驱动程序会在(GPIO 控制器的)设备节点关闭后立即恢复状态。

总的来说,我认为您已经明白了,也许您甚至不需要输出 GPIO 线。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置虚拟 GPIO 环回 的相关文章

  • 如何在 C# 中搜索 Excel 文件

    我正在使用的代码 private void OpenExcelFile Excel Application exlApp new Microsoft Office Interop Excel Application if exlApp nu
  • .NET csc 和 Mono mcs 的兼容性

    我知道 NET 和 Mono 是二进制兼容的 但给定一组源代码 csc 和 mcs 会生成完全相同的 100 相同的二进制 CLI 可执行文件吗 人们能够判断可执行文件是用 csc 还是 mcs 编译的吗 很多东西在规范中没有完全定义 或者
  • 将注册表中的版本号转换为System.Version?

    我正在从注册表中检索版本号 如下所示 rKey GetValue Version 现在我想将其转换为System Version object 我该怎么做呢 假设这是一个字符串 string versionText string rKey
  • RadioButton 和 DropDownList 的 MVC 服务器端验证

    使用 ASP NET Core 2 2 Razor Pages 我正在探索将单选按钮和下拉列表绑定到页面模型 很多人都在询问客户端验证以 使其正常工作 我的问题是 当我查看这段代码时 绑定引擎是否正在执行任何服务器端检查 foreach v
  • VS2010 .NET 内存分析 - 非常慢

    运行 VS2010 的 NET 内存分配分析需要很长时间才能完成 该程序本身运行了大约 3 分钟并生成了 35GB 的内存分配 探查器的输出文件约为 28GB 报告分析流程接管三个小时 在具有 8GB RAM 的双 Xeon 上 即可完成
  • .NET Web 服务 (asmx) 超时问题

    我正在连接到供应商提供的 Web ASMX 服务并通过线路发送一组数据 当您向项目添加服务引用时 我的第一次尝试遇到了 Visual Studio 默认在 app config 文件中引发的 1 分钟超时 我把它增加到 10 分钟 又是一次
  • 配置失败,因为找不到 libcurl

    我正在尝试使用从远程服务器提取一些 json 数据fromJSON gt server lt http 111 111 000 00 3000 gt streams lt fromJSON paste server output strea
  • 我可以在 WinRT / Windows 8 Store 应用程序中绑定 DynamicObject

    我有以下代码 public class MyClass DynamicObject INotifyPropertyChanged Dictionary
  • 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何修复 Delphi Prism ASP.NET 错误:“解析器错误消息:‘Oxygene’不是受支持的语言”

    我在 Delphi Prism 中编写了一个 ASP NET Web 应用程序 不是网站 在我的开发机器上一切正常 但是当我将其安装在测试服务器上时 出现以下错误 Server Error in MyApp Application Pars
  • SoapHttpClientProtocol:以流而不是字符串的形式获取响应?

    我正在使用一种网络服务 它可以一次性输出大量数据 响应字符串可能约为 8MB 虽然在台式电脑上这不是问题 但嵌入式设备在处理 8MB 字符串对象时会发疯 我想知道是否有办法以流的形式获取响应 目前我正在使用如下方法 我尝试使用 POST 请
  • C# 数据类型到 SQL Server 数据类型

    如何将 C 数据类型 转换 为 SQL Server 数据类型 SqlDbType是已知的 i e C gt String SQL Server gt N String 尝试这个 它是一个 Extension 类 因此您要在文件上添加以下方
  • .NET VM 是编译器还是解释器?

    NET 的虚拟机是编译 CIL 字节码 然后在最低级别 CPU 汇编程序 执行代码 还是解释器 读取以下指令并执行它们 NET 的虚拟机吗 编译 CIL 字节码 然后 在最低级别执行代码 CPU 汇编器 是的 它是 CLR 的一个组件 称为
  • .NET(或 MFC)的高速图形控件?

    我需要编写一个数字示波器类型的应用程序 有很多很棒的静态绘图控件 但我需要一些可以绘制每秒处理 4000 个样本的 16 条轨迹的东西 有人知道 NET 的高速图形控件吗 我什至会选择 MFC 因为它可以封装到 NET 控件中 谢谢您的帮助
  • 如何判断谁登录了 SQL Server

    我正在设计一个应用程序 我正在寻找最好的方法来告诉谁当前登录到 SQL Server 我将使用 SSMS 内置的活动监视器 它显示访问服务器的所有进程的列表 非常酷 但是 如果在我的 NET 代码中 每次访问数据库时它都使用单独的连接 那么
  • 使用 Reporting Services 将组保持在一页上

    我使用 Reporting Services 创建了一个报表作为 C 应用程序的一部分 但我找不到一些我习惯在其他环境中看到的功能 我相信 MS Access 和 Crystal 报表都有一个名为 保持在一起 的选项 这样您就可以将特定的数
  • vagrant + virtualbox 等待机器启动时超时

    抱歉 我对 vagrant 很陌生 我正在运行 vagrant 1 4 3 和 virtualbox 4 3 26 我的主机操作系统是 ubuntu 14 04 2 我是一名 php 开发人员 我正在努力让我的开发环境为几个项目做好准备 我
  • 我发现部分方法非常有用,但没有部分属性。他们没有被包括在内有充分的理由吗?我有什么选择?

    更新 请注意 我知道我不能这样做 这是我真正希望能够发挥作用的 也许还有其他方法可以分离责任 不是吗 所以我正在寻找的是 实体框架强制将多种职责放入类中 常规逻辑 基本注释和 CRUD 接口功能 我只想将通常都在一个类中的内容 并通过实体框
  • 将按钮控件嵌入到现有 Direct3D 应用程序中

    我想将自己的内容覆盖在 Direct3D v9 游戏 由第三方制作 之上 叠加互动按钮 具体来说 我想覆盖一个可点击的按钮控件 就像 Steam 所做的那样 尽管我正在尝试一个更简单的界面 理想情况下 我能够覆盖 WPF 按钮或 Windo
  • 使用模型优先方法时如何播种数据?

    所以我正在学习MVC3和EF4 我尝试了代码优先方法 但它对我来说太混乱了 我可以毫无问题地创建类 但最困难的部分是处理外键和彼此之间的关系 但我首先选择了模型 这样我就可以直观地设计它并查看关系在哪里 创建模型后 它会为我创建一个 SQL

随机推荐