Разблокировка pam на intel i5 - PullRequest
7 голосов
/ 21 июля 2011

Я пытаюсь разблокировать 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 ч в качестве смещения.

Пожалуйста, сообщите, я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...