Как связаться с GPIO в Windows (Win 10) для не малинового устройства? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть материнская плата (KINO-DH310) с windows 10, контроллер GPIO отображается под Диспетчер устройств -> Системные устройства -> Interl (R) Serial IO Хост-контроллер GPIO .

Как мне начать простой ввод-вывод с этого контроллера? Я пробовал разные стратегии, разные языки программирования, но безрезультатно. Большинство примеров / примеров кода, которые я вижу в Интернете, предназначены для Raspberry Pi и, похоже, не работают для меня. Есть ли концепция, которую я не понимаю?

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
};

Это всегда генерирует нарушение прав доступа, поскольку вы потенциально можете получить доступ к памяти, которая может повредить систему. Есть ли способ подавить это?

My C # Code:

var gpio = GpioController.GetDefault();

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

Всегда генерирует ноль. Я надеялся, так как я мог видеть это в диспетчере устройств, Windows могла обнаружить, что у него есть доступ к контроллеру GPIO.

Любое разъяснение будет с благодарностью, даже если ответ будет, что Windows не поддерживает его (что, я надеюсь, не так)

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Просто хотел дать обновление, если кто-то пытается сделать что-то подобное.В конце концов, мне нужно было получить SDK от производителя материнской платы.(IEI)

В BIOS была небольшая ошибка, но они были достаточно хороши, чтобы дать мне исправление для BIOS, и после обновления версии BIOS SDK работал отлично.

Final Result

0 голосов
/ 16 мая 2019

Вы не можете использовать прерывания BIOS, когда процессор находится в защищенном режиме, который используют все современные операционные системы. Глядя на руководство к вашей плате, кажется, что пример, который вы используете, предназначен для применения в «голом металле».

Что касается использования C #, то похоже, что класс GpioController поддерживается только в Windows IoT.

Должно быть возможно использовать IO, взаимодействуя с драйвером, но информацию об этом найти сложно, поэтому вам может не повезти.

...