我有一个带有Windows 10的主板(KINO-DH310),GPIO控制器显示在设备管理器-> 系统设备-> Interl(R)下串行IO GPIO主机控制器。
我应该如何使用此控制器开始简单的I / O?我尝试了不同的策略,不同的编程语言,但没有任何影响。我在网上看到的大多数示例/示例代码都是针对树莓派的,似乎并不适合我。有我不理解的概念吗?
我尝试使用汇编(从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不支持它(我希望情况并非如此)
答案 0 :(得分:0)
当CPU处于所有现代操作系统都使用的保护模式时,不能使用BIOS中断。查看您的电路板的手册,似乎您正在使用的示例适用于裸机应用。
就使用C#而言,似乎GpioController类仅在Windows IoT上受支持。
应该可以通过与驱动程序接口来使用IO,但是有关该信息的信息很难找到,因此您可能会不走运。
答案 1 :(得分:0)
如果有人尝试做类似的事情,只是想提供更新。最后,我需要从主板制造商那里获取SDK。 (IEI)
BIOS中有一个小错误,但它们足以让我得到BIOS的补丁,并且在更新BIOS版本后,SDK可以完美运行。