Root, спасибо за ссылки по теме и основные шаги предпринимаемые по редактированию BIOS-а в моем случае. Некоторые из инструментов мне пригодятся позже, когда успешно пройду пункт "в) редактируем текстовым редактором" . В шаге 0 ты упоминал исходники BIOS-ов, подскажи пожалуйста где их можно взять?
Я получил ASL-код (помог мне в этом подвернувшийся под руку AD.EXE [AD - ACPI Dump. Version 0.91. Jan 09 2002 от Phoenix], который совместил шаги а и б, надеюсь правильно). Поиск по "больным" местам (порт 4d0, на него ругался ACPI от Windows XP) показал два упоминания в ASL-коде:
....
OperationRegion(ELCR,SystemIo,0x04D0,0x02)
Field(ELCR /* \ELCR */,ByteAcc,NoLock,Preserve)
{
ELC1,8,
ELC2,8
}
....
Device(SYSR)
//
// SYSR - Motherboard Resources
//
{
// _HID - Hardware ID
//
// Supplies OSPM with the device's Plug and Play
// hardware ID. When describing a platform, use of
// any _HID objects is optional. However, a _HID
// object must be used to describe any device that
// will be enumerated by OSPM. OSPM only enumerates
// a device when no bus enumerator can detect the
// device ID. For example, devices on an ISA bus are
// enumerated by OSPM. Use the _ADR object to
// describe devices enumerated by bus enumerators
// other than OSPM.
//
Name(_HID,EISAID("PNP0C02")) // Motherboard Resources
// _UID - Unique ID
//
// Provides OSPM with a serial number-style ID of a
// device (or battery), which does not change across
// reboots. This object is optional, but is required
// when the device has no other way to report a
// persistent unique device ID. When a system has
// two devices that report the same _HID, each
// device must have a _UID object. When reported,
// the UID needs to be unique only among devices
// with the same device ID. OSPM typically uses the
// unique device ID to ensure that the device
// -specific information, such as network protocol
// binding information, is remembered for the device
// even if its relative location changes. For most
// integrated devices, this object contains a unique
// identifier. For other devices, like a docking
// station, this object can be a control method that
// returns the unique docking station ID. A _UID
// object evaluates to either a numeric value or a
// string.
//
Name(_UID,0x01)
// _CRS - Current Resource Settings
//
// Evaluates to a buffer describing the resources
// currently allocated to a device. Additionally, a
// bus device must supply the resources that it
// decodes and can assign to child devices. If a
// device is disabled, then _CRS returns a valid
// resource template for the device, but the actual
// resource assignments in the return byte stream
// are ignored. If the device is disabled when _CRS
// is called, it must remain disabled.
//
Name(_CRS,ResourceTemplate()
{
IO(Decode16,0x0010,0x0010,0x01,0x10)
IO(Decode16,0x0022,0x0022,0x01,0x1E)
IO(Decode16,0x0044,0x0044,0x01,0x1C)
IO(Decode16,0x0062,0x0062,0x01,0x02)
IO(Decode16,0x0065,0x0065,0x01,0x0B)
IO(Decode16,0x0074,0x0074,0x01,0x0C)
IO(Decode16,0x0091,0x0091,0x01,0x03)
IO(Decode16,0x00A2,0x00A2,0x01,0x1E)
IO(Decode16,0x00E0,0x00E0,0x01,0x10)
IO(Decode16,0x03F0,0x03F0,0x01,0x02)
IO(Decode16,0x04D0,0x04D0,0x01,0x02)
})
}
Сравнение с "нормальным" ASL-кодом (MotherBoard EPOX 8RDAEI, на чипсете NForce2, ID-стринг: 12/11/2003-nVidia-nForce-6A61BPAIC-00) показал точно такие же вхождения:
....
OperationRegion(ELCR,SystemIo,0x04D0,0x02)
Field(ELCR /* \ELCR */,ByteAcc,NoLock,Preserve)
{
ELC1,8,
ELC2,8
}
....
Device(SYSR)
//
// SYSR - Motherboard Resources
//
{
// _HID - Hardware ID
//
// Supplies OSPM with the device's Plug and Play
// hardware ID. When describing a platform, use of
// any _HID objects is optional. However, a _HID
// object must be used to describe any device that
// will be enumerated by OSPM. OSPM only enumerates
// a device when no bus enumerator can detect the
// device ID. For example, devices on an ISA bus are
// enumerated by OSPM. Use the _ADR object to
// describe devices enumerated by bus enumerators
// other than OSPM.
//
Name(_HID,EISAID("PNP0C02")) // Motherboard Resources
// _UID - Unique ID
//
// Provides OSPM with a serial number-style ID of a
// device (or battery), which does not change across
// reboots. This object is optional, but is required
// when the device has no other way to report a
// persistent unique device ID. When a system has
// two devices that report the same _HID, each
// device must have a _UID object. When reported,
// the UID needs to be unique only among devices
// with the same device ID. OSPM typically uses the
// unique device ID to ensure that the device
// -specific information, such as network protocol
// binding information, is remembered for the device
// even if its relative location changes. For most
// integrated devices, this object contains a unique
// identifier. For other devices, like a docking
// station, this object can be a control method that
// returns the unique docking station ID. A _UID
// object evaluates to either a numeric value or a
// string.
//
Name(_UID,0x01)
// _CRS - Current Resource Settings
//
// Evaluates to a buffer describing the resources
// currently allocated to a device. Additionally, a
// bus device must supply the resources that it
// decodes and can assign to child devices. If a
// device is disabled, then _CRS returns a valid
// resource template for the device, but the actual
// resource assignments in the return byte stream
// are ignored. If the device is disabled when _CRS
// is called, it must remain disabled.
//
Name(_CRS,ResourceTemplate()
{
IO(Decode16,0x0010,0x0010,0x01,0x10)
IO(Decode16,0x0022,0x0022,0x01,0x1E)
IO(Decode16,0x0044,0x0044,0x01,0x1C)
IO(Decode16,0x0062,0x0062,0x01,0x02)
IO(Decode16,0x0065,0x0065,0x01,0x0B)
IO(Decode16,0x0074,0x0074,0x01,0x0C)
IO(Decode16,0x0091,0x0091,0x01,0x03)
IO(Decode16,0x00A2,0x00A2,0x01,0x1E)
IO(Decode16,0x00E0,0x00E0,0x01,0x10)
IO(Decode16,0x0B78,0x0B78,0x04,0x04)
IO(Decode16,0x0F78,0x0F78,0x04,0x04)
IO(Decode16,0x0A78,0x0A78,0x04,0x04)
IO(Decode16,0x0E78,0x0E78,0x04,0x04)
IO(Decode16,0x0BBC,0x0BBC,0x04,0x04)
IO(Decode16,0x0FBC,0x0FBC,0x04,0x04)
IO(Decode16,0x04D0,0x04D0,0x01,0x02)
IO(Decode16,0x0294,0x0294,0x01,0x04)
IO(Decode16,0x04E0,0x04E0,0x01,0x08)
})
}
По-простому не получилось придется копать глубже .
Отсюда вопрос: может кто знает где по-быстрому можно понять что такое ACPI, его структуру возможности и т.д. Читать спецификацию в объеме 500 страниц довольно долго.
Root, спасибо за ссылки по теме и основные шаги предпринимаемые по редактированию BIOS-а в моем случае. Некоторые из инструментов мне пригодятся позже, когда успешно пройду пункт "в) редактируем текстовым редактором" . В шаге 0 ты упоминал исходники BIOS-ов, подскажи пожалуйста где их можно взять?
Я получил ASL-код (помог мне в этом подвернувшийся под руку AD.EXE [AD - ACPI Dump. Version 0.91. Jan 09 2002 от Phoenix], который совместил шаги а и б, надеюсь правильно). Поиск по "больным" местам (порт 4d0, на него ругался ACPI от Windows XP) показал два упоминания в ASL-коде:
Сравнение с "нормальным" ASL-кодом (MotherBoard EPOX 8RDAEI, на чипсете NForce2, ID-стринг: 12/11/2003-nVidia-nForce-6A61BPAIC-00) показал точно такие же вхождения:
По-простому не получилось придется копать глубже .
Отсюда вопрос: может кто знает где по-быстрому можно понять что такое ACPI, его структуру возможности и т.д. Читать спецификацию в объеме 500 страниц довольно долго.