Привет всем! Не пойму в чём дело.. Юг чипсета ICH имеет регистр BBAR, в котором должна находится база образа BIOS в памяти. Координаты этого регистра в пространстве PCI указаны как SPIBAR+50h. Я программой RW просматриваю это поле, но у меня там 32-бита нулей. Почему? Может этот регистр защищён каким-нибудь битом, который нужно взвести/сбросить - никто не в курсе? Был-бы признателен за наводку.
Это шутка такая? У вас же все написано. Регистр обнулён для защиты. Записываете в него FFFFFFFF он вернёт размер флешки. Далее располагаете его в памяти что-бы он не мешал никому.
Pavia, спасибо за наводку! Записываю в него макс, он возвращает.., только не то, что нужно - значение 00FFFF00h, т.е. просто обнуляет резервные старший/младший байты: У меня флэшка 512Kb = 0x80000, и если я правильно понял, в этом регистре должно быть значение 4Gb-512Kb=0xFFF80000, но т.к. адрес 3-байтный, то 0xF80000 (не точно), в любом случае где-то должна фигугировать восьмёрка, а тут все Fh. C инглишом у меня праблы, пользуюсь Google-переводчиком. вот что он выдаёт по описанию BBAR, и я-бы не догадался сам записать туда 0xFFFFFFFF: ..не понятна выделенная часть, как её трактовать (1s опечатка видимо)? Могу ошибаться, но кажется это поле как-то имело у меня другое значение (FCh вроде был какой-то из байтов), я это взял на заметку и переключился на другие регистры. А потом когда приспичило, то там уже нуль. Этот редактор памяти (RW Utility) позволяет вносить изменения, может я какой-то бит тогда взводил - уже не помню. Поэтому и решил спросить у местных гуру.
1's - сокрощение от first Software must always program 1s into the upper, Don’t Care, bits of this field based on the flash size. Hardware does not know the size of the flash array and relies upon the correct programming by software. The default value of 0000h results in all cycles allowed. Софт должен сначала установить биты вверх, не волнуйтесь, биты этого поля зависят от размера флешки. Железо может не знать размер флешки и полагается на правильное программирование софтом. Значение по умолчанию 0000h приводит к разрешению всех циклов. Эта фраза объясняет типичное поведения любого BAR- регистра. Устанавливаешь все 1 железо должно очистить согласно размеру. А следующая фраза говорит что железо может и не знать размер и перекладывает ответственность на программиста. И далее пишут что если выставить нули, то ничего страшного. У вас обнуление бит не происходит. Значит вы должны сами корректно выставить 0xFFF80000. Если боитись напутать то после перезагрузки компьютера эти значения должны восстановиться на правильные.
..вот об этом не знал, буду иметь в виду. так это если я его знаю... а если программно нужно определить, тогда как? нашёл в сети кое-какие ресурсы, накачал материал - изучаю.. инженеры по безопасности: "Xeno Kovah, John Butterworth, Corey Kallenberg" расписывают всё в слайдах не по-детски: http://www.legbacore.com/Research.html http://opensecuritytraining.info/IntroBIOS.html