Я пытаюсь разблокировать PAM (Programmable Attribute Map) на Intel i5 (чипсет HM55), чтобы я мог немного изменить Video BIOS, но не могу этого сделать.В руководстве для программистов написано:
Этот регистр управляет атрибутами чтения, записи и теневого копирования в диапазоне от C_0000h до C_7FFFh.Uncore позволяет программировать атрибуты памяти в 13 устаревших сегментах памяти различных размеров в диапазоне адресов от 768 КБ до 1 МБ.Для поддержки этих функций используются семь регистров карты программируемых атрибутов (PAM).Кешируемость этих областей контролируется с помощью регистра MTRR в ядре.
Два бита используются для указания атрибутов памяти для каждого сегмента памяти.Эти биты применяются для доступа хоста к областям PAM.Эти атрибуты: • RE - Read Enable.Когда RE = 1, доступ на чтение хоста к соответствующему сегменту памяти запрашивается Uncore и направляется в основную память.И наоборот, когда RE = 0, доступ на чтение хоста направляется в DMI.• WE - запись разрешена.Когда WE = 1, доступ на запись хоста в соответствующий сегмент памяти запрашивается Uncore и направляется в основную память.И наоборот, когда WE = 0, доступ на чтение хоста направляется в DMI.
outl(0xcf8, 0x80000080);
printf("Old pam1: %x pam2: %x\n",inb(0xcfd),inb(0xcfe));
outl(0xcf8, 0x80000080);
outb(0xcfd, 0x33);
outb(0xcfe, 0x33);
printf("New pam1: %x pam2: %x\n",inb(0xcfd),inb(0xcfe));
Я тестирую это в реальном режиме (DOS), поэтому это должно быть разрешено.Пример, подобный этому, был показан в 915 разрешениях:
int unlock_bios_845g_865g() {
// set permissions to read and write so I can write into shadowed VideoBIOS
OUTL(0x80000090, 0xcf8);
oldpam1 = inb(0xcfd);
oldpam2 = inb(0xcfe);
OUTL(0x80000090, 0xcf8);
OUTB(0x33, 0xcfd);
OUTB(0x33, 0xcfe);
return 1;
}
, но для моего процессора / набора микросхем (семейство процессоров Intel® CoreTM 2-го поколения для мобильных ПК и процессоров Intel® Celeron® для мобильных устройств):
B/ D / F / Тип: Смещение адреса: Сбросить значение: Доступ: Размер: Оптимальный BIOS По умолчанию 0/0/0 / PCI 81 ч 00 ч RW 8 бит 0 ч
, поэтому я использую 81 ч в качестве смещения.
Пожалуйста, сообщите, я.