Чувствую, обсуждение ушло не в ту степь... Вернемся к

Чувствую, обсуждение ушло не в ту степь...

Вернемся к моему первому сообщению, в котором я сообщил, что путём "прогрева" мульта удалось победить проблему.
В ответ меня просветили, что "мульт тут не при делах" (очень образно, понравилось мне это выражение), мол не тот у него функционал.

Я же при помощи своей программы показал, что с функционалом мульта всё в порядке: регистры, использующиеся для работы с CaseOpen, на месте и всё также доступны программно. Данный факт, с учётом того, что в биосе сохранился код по работе с CaseOpen (который собственно и выводит Chassis Intruded! на экран) делает мою гипотезу, согласно которой причина глюка была связана именно с мультом, вполне правдоподобной. Глюк мог быть связан как с самим чипом, так и с проблемными контактами (напомню, что кроме прогрева чипа я пропаивал контакты с 65 до примерно 80...85).

Если кому-то не нравится моя гипотеза -- ну чтож поделать... С практикой она вполне согласуется.:)

Боюсь более точную причину глюка мы уже никогда не узнаем. Во-первых, потому что проблема была решена и больше не возникала. Во-вторых, материнка уже 2 дня как отдана довольному клиенту.

----------
А теперь обещанная программа. Может кому пригодится в плане решения обсуждаемых в этой теме проблем.

Простейшая программа для тестирования функции CaseOpen (Chassis Intrusion)
 Winbond'овских "мультиков" W83627DHG.

Программа умеет:

1) отображать статус CaseOpen;
2) сбрасывать этот статус (двумя способами);
3) включать/отключать звуковой сигнал, оповещающий об открытой крышке.

Программа работает только под чистым DOS'ом,
 так что для запуска потребуется загрузочная флэшка.
Запуск этой программы под Win и на виртуальных машинах бессмысленен.

Ещё одно [очевидное] необходимое условие: на материнской плате компьютера должен
 присутствовать чип с маркировкой W83627DHG.

================================================================================
После запуска программа выдает на экран текущее состояние интересующих нас
 регистров, точнее битов, имеющих отношение к CaseOpen.

---
CaseOpen Interrupt Status: 0  [ 1 = Case has been opened                       ]
CaseOpen HW Status Reg   : 0  [ 1 = CaseOpen detected and latched              ]
CaseOpen SMI mask        : 1  [ 1 = disables coresp-ing INT status bit for SMI ]
CaseOpen Beep Control    : 1  [ 1 = enable BEEP output                         ]
---
Здесь в квадратных скобках отображается памятка/комментарий.
Перед скобками -- значение интересующих битов.

Значения в первых двух строках обычно дублируют друг друга:
0 -> крышка корпуса ни разу не открывалась;
1 -> крышка корпуса хотя бы раз открывалась или даже до сих пор открыта;

В четвёртой строке отображается состояние звуковой сигнализации:
0 -> при открытии крышки звуки не издаются;
1 -> при открытии крышки начнёт звучать тревожный сигнал до тех пор,
         пока состояние первых двух регистров не будет сброшено;
Естественно, при отсутствии спикера, подключенного к материнке, никакого
 сигнала вы не услышите.:)


После отображения состояния регистров программа переходит в режим ожидания ввода команды.

Команды ОДНОсимвольные (латиницей) регистроЗависимые, выполняются по нажатию клавиши Enter.

s или S - отображение состояния упомянутых выше регистров

B - включение  звуковой сигнализации на открытие корпуса
b - отключение звуковой сигнализации на открытие корпуса

C - засылаем в регистр сброса 1
c - засылаем в регистр сброса 0

Команды 'C' и 'c' крайне желательно выполнять последовательно!
!!! В результате последовательного выполнения команд 'C' и 'c' произойдет
    сброс состояния "корпус открыт"
    Причем в момент выполнения команд крышка корпуса должна быть закрыта !!!
    (точнее, датчик открытия корпуса должен находиться в состоянии, соответствующем
       закрытой крышке корпуса)

R и r - аналогично командам 'C' и 'c' - альтернативный вариант сброса
        (через контрольный регистр CR)

X или x - выход из программы.

--------------------------------------------------------------------------------

Программу можно использовать для изучения работы Chassis Intrusion.
Примерный порядок использования.

1) Грузимся с флэшки в ДОС, запускаем программу.
2) Если звуковая сигнализация не включена, вводим команду "B" (без кавычек);
3) "Открываем" крышку корпуса
     или снимаем, затем обратно одеваем перемычку
      (или наоборот: одеваем ненадолго - обратно снимаем перемычку)
     на разъёме Chassis/CI/JCI на материнке.
   Слышим звуковую сигнализацию.
4) Смотрим состояние регистров (команда "S" без кавычек) -- видим, что состояние
     первых двух изменилось с 0 на 1.
5) Сбрасываем состояние "корпус открыт" либо последовательностью команд "C" и "c",
   либо последовательностью команд "R" и "r".
6) Звук сигнализации должен исчезнуть. Проверяем состояние регистров:
     первые два вернулись в исходное состояние (1->0)
7) Выход из программы (команда "X")

Понятно, что ход выполнения программы предсказуем.:)

В этом и состоит одна из задач программы -- проверка того,
 что работа с Chassis Intrusion происходит именно через винбондовский мультик.
Ибо проскакивает информация о том, что на некоторых материнках
 не смотря на наличие на их борту мультика W83627DHG(-A),
 за работу с Chassis Intrusion отвечает южный мост.

Основная же причина написания программы: показать, что программный интерфейс 
 чипов W83627DHG и W83627DHG-A для работы с Chassis Intrusion (CaseOpen)
 идентичен!

Единственное отличие: в W83627DHG-A пока не удалось включить звуковую
 сигнализацию на "открытие корпуса".


-------------------------------------------------------------------------------
Тестирование производилось на следующих материнских платах:

MSI K9VGM-V (с Winbond W83627DHG  )
ASUS P5K-VM (с Winbond W83627DHG-А)

В микростаровской материнке в биосе присутствует пункт меню, позволяющий
 включить/отключить/сбросить использование Chassis Intrusion, что очень удобно.
Во время POST, если крышка была открыта, биос любезно предлагает
 либо продолжить работу, либо зайти в настройки.

Асусовская материнка всех этих плюсов лишена:

1) в настройках биоса соответствующий пункт отсутствует;
2) в случае "открытия корпуса" на этапе POST биос, выдав соответствующее
   предупреждение, прекращет свою работу  (фактически подвешивает комп).
   Чтобы выйти из этой затруднительной ситуации необходимо:

  а) "закрыть крышку корпуса", нажать кнопку RESET;
  б) дождаться, пока биос снова ругнется и подвесит комп;
  в) снова нажать кнопку RESET на корпусе;

В ближайшее время постараюсь протестить прогу на др. материнках с Winbond W83627DHG(-А) на борту.
Но честно говоря, особых сюрпризов не ожидаю.:)

===============================================================================
VadimK60 (oct2015)

ВложениеРазмер
winbond_caseopen.rar 1.5 МБ