非树莓派设备如何在Windows(Win 10)上与GPIO通信?

时间:2019-05-15 18:21:57

标签: c# c++ windows gpio

我有一个带有Windows 10的主板(KINO-DH310),GPIO控制器显示在设备管理器-> 系统设备-> Interl(R)下串行IO GPIO主机控制器

我应该如何使用此控制器开始简单的I / O?我尝试了不同的策略,不同的编程语言,但没有任何影响。我在网上看到的大多数示例/示例代码都是针对树莓派的,似乎并不适合我。有我不理解的概念吗?

GPIO Controller

我尝试使用汇编(从C ++应用程序)将输出引脚切换为高低

KINO-DH310推荐的组件:数字输出为1001b

MOV AX, 6F09H ;setting the digital port as output
MOV BL, 09H   ;digital value is 09H
INT 15H

我的C ++代码:

__asm {
mov AX, 6F09H
mov BL, 00H
INT 15H        <--- Generates "Access Violation reading location 0xFFFFFFFF" error
};

这总是会产生访问冲突,因为您可能会访问可能损害系统的内存。有没有办法抑制这种情况?

我的C#代码:

var gpio = GpioController.GetDefault();

if (gpio == null)
    return;      <--- Always returns null

始终生成null。我一直希望能够在设备管理器中看到它,因此Windows可以检测到它可以访问GPIO控制器。

任何澄清都将不胜感激,即使答案是Windows不支持它(我希望情况并非如此)

2 个答案:

答案 0 :(得分:0)

当CPU处于所有现代操作系统都使用的保护模式时,不能使用BIOS中断。查看您的电路板的手册,似乎您正在使用的示例适用于裸机应用。

就使用C#而言,似乎GpioController类仅在Windows IoT上受支持。

应该可以通过与驱动程序接口来使用IO,但是有关该信息的信息很难找到,因此您可能会不走运。

答案 1 :(得分:0)

如果有人尝试做类似的事情,只是想提供更新。最后,我需要从主板制造商那里获取SDK。 (IEI)

BIOS中有一个小错误,但它们足以让我得到BIOS的补丁,并且在更新BIOS版本后,SDK可以完美运行。

Final Result