Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2020, 07:56   #1
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию Чипсет - найти ACPI контроллёр

Всем привет!
Мне нужно программно подобраться к ACPI-контролёру.
Открыв доки на свой чипсет обнаружил, что он висит на шине LPC. Дальше через АХ=B103\INT-1Ah в cfg-пространстве PCI я нашёл мост PCI-LPC по его классу 060100h - получил bus\dev\func = 00:1F:00, что совпадает с доками на чипсет (координаты одинаковы для всех чипсетов Intel). Теперь с пространства этого моста считал дворд с оффсета 40h, который указывается в доках как PMBAR (база ACPI).

Всё вроде нормально, но почему-то получил слишком маленькое значение базы, равной всего 0800h, хотя это-же значение возвращает и винда. Вопрос: что мне делать дальше с этой базой? Может это оффсет от рут-комплекса RCBA или что-то ещё? И вообще, порты у ACPI-контролёра I/O или MMIO? Есть другой вариант - парсить таблицу ACPI в ручную, но хотелось попробовать через прерывания.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 06.04.2020, 14:48   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
И вообще, порты у ACPI-контролёра I/O или MMIO?
Так написано что порты I/O

Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 06.04.2020 в 15:11.
Pavia вне форума Ответить с цитированием
Старый 06.04.2020, 15:01   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Из документа "io-controller-hub-10-family-datasheet"
В главе находится описание этих ACPI регистров
глава называется
13.8.3 Power Management I/O Registers
Откуда видим что описание программирование в главе
5.13 Power Management (D31:F0)
Там общие слова. И надо изучать ACPI и руководство на процессор.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 06.04.2020, 15:05   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Если I/O значит 800h это номер порта, и просто читать с него инструкцией IN/OUT что-ли? Что-то ничего не возвращает.. Вот лог моста PCI-to-LPC, чипсет ICH-7:
Код:
PCI to ISA Bridge
-------------------
bus 0 (0x00), device 31 (0x1F), function 0 (0x00)
Common header
	 Vendor ID    0x8086
	 Model ID     0x27B8
	 Revision ID  0x01
	 BaseClass    0x06
	 SubClass     0x01
	 PI           0x00
	 Cache Line   0x00
	 Latency      0x00
	 Header       0x80
PCI header
	 SubvendorID  0x1849
	 SubsystemID  0x27B8
	 Int. Line    0x00
	 Int. Pin     0x00
Capabilities
	 Vendor Dependant Capability
  Offset       E0h

Dump: ;// по адресу 40h лежит PMBASE = 0x00000801
------------------------------------------------------
	       0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 
	 00   86 80 B8 27 07 00 10 02 01 00 01 06 00 00 80 00 
	 10   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
	 20   00 00 00 00 00 00 00 00 00 00 00 00 49 18 B8 27 
	 30   00 00 00 00 E0 00 00 00 00 00 00 00 00 00 00 00 
	 40   01 08 00 00 80 00 00 00 81 04 00 00 10 00 00 00 
	 50   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
	 60   8B 8A 83 85 D0 00 00 00 80 80 87 8F 00 00 00 00 
	 70   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
	 80   00 00 09 14 81 02 FC 00 00 00 00 00 00 00 00 00 
	 90   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
	 A0   20 06 00 00 39 00 00 00 13 00 00 00 00 03 00 00 
	 B0   00 00 F0 00 00 00 00 00 00 00 00 08 00 00 00 00 
	 C0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
	 D0   33 22 11 00 67 45 00 00 C0 80 00 00 00 00 00 00 
	 E0   09 00 0C 10 A8 00 24 00 00 00 00 00 00 00 00 00 
	 F0   01 C0 D1 FE 00 00 00 00 86 0F 01 00 00 00 00 00
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 06.04.2020 в 15:07.
R71MT вне форума Ответить с цитированием
Старый 06.04.2020, 15:22   #5
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

вот-что говорится про этот офсет PMBASE:
Цитата:
Устанавливает базовый адрес для регистров ввода-вывода ACPI, регистров GPIO и регистров ввода-вывода TCO. Эти регистры могут отображаться в любом месте пространства ввода-вывода 64 К на 128-байтовых границах.
Изображения
Тип файла: png acpi.png (17.9 Кб, 19 просмотров)
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 06.04.2020, 15:49   #6
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
Если I/O значит 800h это номер порта, и просто читать с него инструкцией IN/OUT что-ли? Что-то ничего не возвращает..
Да. 800h это база и там куча регистров.
800h PM1_STS
802h PM1_EN
804h PM1_CNT
808h PM1_TMR



А вообще что вы хотите увидеть или сделать?
Там ещё дело такое, что значение по умолчанию 0000h. Это значение регистр получает после сигнала reset и после включения (por - power of reset).

БИОС мог настроить, но скорее всего нет.

Читаем про регистр PM1_STS (800h) этот регистр устанавливается после включения PM1_EN. Собственно насколько помню его включает уже ОС. А до этого процессор работает в автоматическом режиме.

Цитата:
10.8.3.1 PM1_STS—Power Management 1 Status Register

If bit 10 or 8 in this register is set, and the corresponding _EN bit is set in the PM1_EN
register, then the ICH7 will generate a Wake Event. Once back in an S0 state (or if
already in an S0 state when the event occurs), the ICH7 will also generate an SCI if the
SCI_EN bit is set, or an SMI# if the SCI_EN bit is not set.
Цитата:
Сообщение от R71MT Посмотреть сообщение
Вот лог моста PCI-to-LPC, чипсет ICH-7:
Лучше напишите, что у вас BIOS или UEFI и какая ОС?
И режим процессора RM,PM или SMM?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 06.04.2020 в 15:51.
Pavia вне форума Ответить с цитированием
Старый 06.04.2020, 16:12   #7
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

у меня AMI-BIOS, прожка для RM, это чисто модуль программы, который должен выводить инфу об ACPI. Табличка выше ACPI-Reg-Map у меня тоже есть, просто я не знал как к ней подобраться - сейчас потестирую в RM. А то-что биос мог не настроить регистры - это проблема.. хотя в реальном режиме можно-же парсить ACPI-таблицу вручную, и помню она даже возвращала что-то. Сейчас проверю.. отпишусь..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 06.04.2020, 16:18   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Вот лог моста PCI-to-LPC, чипсет ICH-7:
Тут такая странность в регистре PMIR(Power Management Initialization Register) БИОС должен был установить бит 30 в 1 а у вас 0.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 06.04.2020, 16:41   #9
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
в регистре PMIR (Power Management Initialization Register)
это-же лог моста, там вроде нет такого регистра PMIR.. какое у него смещение?
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 07.04.2020, 07:00   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Pavia спасибо большое!
С вашей помощью всё получилось, и на своём хабе ICH7 получил такие данные.. Значит биос всё-таки настраивает регистры ACPI при включении, и это гуд. Только остался вопрос: частота РМ-таймера где хранится? В теории она 3.579545 MHz вроде, а можно-ли (и как) узнать реальную? Среди регистров ACPI я что-то не нашёл этих данных.. Выхлоп прожки на скрине (R-mode):
Изображения
Тип файла: png acp_2i.png (21.4 Кб, 15 просмотров)
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аssembler технология ACPI qwe1qwe2qwe3 Помощь студентам 2 01.04.2013 17:33
Синий экран ACPI ADoO Операционные системы общие вопросы 2 23.05.2011 17:46
Графический чипсет ATI Radeon HD 5145 или NVIDIA GeForce GT 330M? Ledy Компьютерное железо 0 19.09.2010 22:38
Таблицы ACPI Тануки Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.10.2009 09:08
Литература по ACPI valerij Свободное общение 2 16.03.2009 01:21