Сейчас на форуме: Dart Raiden, Alf, bedop66938 (+7 невидимых)

 eXeL@B —› Электроника —› Работа с портами ввода-вывода. Помогите с основами
Посл.ответ Сообщение


Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 14 марта 2017 22:15 · Поправил: daFix
· Личное сообщение · #1

Ситуация у меня такая - имеем системник x86, всё вполне стандартно за исключением PCI устойства.
Материнка сгорела, была заменена другой. Операционная система - Windows Embeded. После мучений с драйверами удалось запустить образ на новом железе. Софт вроде как стартует, но не видит смарт-карты которые подрубаются через PCI контроллер.
Взаимодействие с этим контроллером осуществляется через CreateFile/DeviceIoControl, тут вроде всё норм
Как говорилось ранее, к этой плате подключен смарт-кард ридер и вот с ним проблемы. Взаимодействие с ним осуществляется через порты напрямую:
Code:
  1. MOV DX,0x300h
  2. IN AL,DX
  3. TEST AL,0x2h

Впервые сталкиваюсь с подобной задачей и не знаю как подступиться.
Собственно, вопрос в том как на аппаратном уровне происходит распределение портов и как мне найти нужный мне порт на новой материнке?
Сразу прошу прощения за, возможно, плохую постановку вопроса

-----
Research For Food





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 14 марта 2017 22:32
· Личное сообщение · #2

материнка стандартная или кастомная ?
схема подключения то какая ? карт ридер то куда пихается ? интерфейс какой у него ?

ну обычно 300 порт входит в pcmcia интерфейс

смотреть в винде или acpi дампе схему распределения ИО портов



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 14 марта 2017 22:33
· Личное сообщение · #3

У тебя в свойствах кардирдера не видно куда он замапился в ресурсах?

-----
старый пень





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 14 марта 2017 22:43
· Личное сообщение · #4

daFix
Попробуй в цикле опросить порты с 0x300 до 0x304

-----
EnJoy!





Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 14 марта 2017 23:59
· Личное сообщение · #5

reversecode, r_e
kontron 986lcd-m
http://www.rtsoft.ru/upload/pdfcat/KTD-N0837-B_986LCD-M_Family_User_Manual.pdf
На 62 странице там таблица I/O Map, но 0x300 там нету.

Картридер подключен стандартным 10-ти пиновым шлейфом к контроллеру. На картридере нету контроллера, пины напрямую пробрасываются на PCI-плату, в системе ни как не отображается

Jupiter
Там достаточно большой комплекс и обращения распиханы по разным модулям, проверка займёт какое-то время.

Есть ли в системе возможность посмотреть все порты?

Добавлено спустя -43 минут
Последнее устройство в списке

ebd3_14.03.2017_EXELAB.rU.tgz - Screen.jpg

-----
Research For Food





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 15 марта 2017 00:19
· Личное сообщение · #6

daFix пишет:
Последнее устройство в списке

Ему прерывание (IRQ) не назначено, судя по скрину (но не уверен, что это критично).

Наверняка ты уже пробовал загружать Optimised Defaults в BIOS, но попробуй именно в нём покопаться.
Отключить USB 2.0, если есть такая возможность, потом снова включить.

-----
EnJoy!





Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 15 марта 2017 00:37
· Личное сообщение · #7

Jupiter
Порт забит в самом устройстве или назначается биосом? Возможен ли конфликт?
А по поводу прерывания - вроде не критично, ведь коммуникация может проходить по прерываниям или по портам. Хотя, моих знаний не хватает чтобы утверждать наверняка

-----
Research For Food





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 15 марта 2017 00:58
· Личное сообщение · #8

а контроллер то стандартный какой то ? или что то кастомное ?
нельзя просто что то вставить в pci слот и забиндится на какой то нижний порт что бы с ним сразу игратся io/out port

там должна проходить целая настройка pci арбитра и функционала

поэтому либо на старой матери что то подстраивало все это
либо что то ускальзывает от наших взоров

Добавлено спустя -59 минут
ааа о, на картинке энкрипшин контроллер это он ? ну так он нормально видится в pci
ищи уилиты итд которые его конфигурят




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 15 марта 2017 02:33
· Личное сообщение · #9

Насколько я понимаю, рабочий порт должен быть указан где-то в конфигурационном пространстве PCI.
Чтобы до него добраться, нужно по очереди просканировать все устройства, сверяясь с VEN/DEV кодами.

софт для работы c конфирационными регистрами:
RW-Everything
есть еще BAR-Edit и WPCREDIT - офсайты сдохли, ссылки в гугле



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 15 марта 2017 07:50
· Личное сообщение · #10

daFix пишет:
Картридер подключен стандартным 10-ти пиновым шлейфом к контроллеру.На картридере нету контроллера, пины напрямую пробрасываются на PCI-плату, в системе ни как не отображается


Что-то ничего не понятно. К какому контроллеру? Система не видит этот контроллер или ридер, подключенный к контроллеру? Какой диапазон I/O у этого контроллера?




Ранг: 77.2 (постоянный), 73thx
Активность: 0.190.15
Статус: Участник

Создано: 23 сентября 2017 02:30
· Личное сообщение · #11

daFix
Некро, но всё же - как решил?? Ибо, такой же приход ожидаю..


 eXeL@B —› Электроника —› Работа с портами ввода-вывода. Помогите с основами
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати