Включение контроллера жесткого диска в bios. Как в биосе включить контроллер жесткого диска

Включение контроллера жесткого диска в bios. Как в биосе включить контроллер жесткого диска Компьютер

Post-карты в современных ноутбуках

BIOS, когда производится загрузка x86-системы, регулярно пишет данные в порт ввода/вывода

0x80

. Эти данные сообщают о том, на каком этапе находится загрузка, а так же о происходящих в ходе этого процесса ошибках. Раньше соответствующие сведения отправлялись на шину ISA, куда можно было подключить POST-плату, выводящую текущее значение в шестнадцатеричном формате.

В прошивке EC, на самом деле, имеется код, ответственный за запись данных в порт 0x80. В этом коде можно обнаружить команды, с помощью которых данные разделяют на полубайты, используемые потом в роли смещений в следующей таблице:

0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e

Затем, вместе с тактовыми импульсами, осуществляется последовательный вывод результирующего значения на GPIO-пины.

Вышеприведённая поисковая таблица может показаться вам знакомой. Дело в том, что она позволяет преобразовывать полубайты в шестнадцатеричные числа для их вывода на 7-сегментном дисплее. Если взглянуть на схему материнской платы, там можно увидеть две линии — EC_TX и EC_RX (эти названия, вероятно, не очень удачны, так как одна из них — это линия данных, а другая — тактовая линия, обе они используются лишь для отправки данных).

Это наводит на мысль о том, что существуют некие POST-платы, которые можно подключать к разъёму M.2 для решения проблем, возникающих в ходе загрузки ноутбуков. Так как я знаком с протоколом обмена данными, используемым в M.2-картах, я попытался сделать собственный вариант такой платы (она, в целом, представляет собой два последовательно соединённых сдвиговых регистра, подключённых к 7-сегментным дисплеям). Посмотрите — какая симпатичная у меня получилась штука.

Самодельная POST-плата для разъёма M.2

Но я, к сожалению, видимо что-то напутал, так как эта плата, в итоге, так и не заработала, а мне не очень-то хотелось тратить время на поиск и исправление ошибок, допущенных при её создании.

Где хранится код?

Прошивка, в соответствии с даташитом, способна обращаться к содержимому флеш-памяти, применяя линейную адресацию, пользуясь 28-битным регистром адреса и 8-битным регистром данных. В коде прошивки можно обнаружить множество операций записи и чтения, направленных на адреса

0x0fff_fe000x0fff_fd00

. Но размер флеш-памяти далёк от 256 Мб, в результате такие операции, очевидно, не работают с подобными адресами флеш-памяти.

При более близком рассмотрении кода выяснилось, что там, в основном, осуществляется запись 0xff в 0x0fff_fe00, а после этого выполняются операции чтения/записи множества байтов — вроде 0x05, 0x02 или 0xd7.

Оказывается, что это SPI-команды для работы с флеш-памятью, а то, что мы видели — это механизм, с помощью которого код прошивки осуществляет запись и стирание данных. Но если взглянуть на образ, хранящийся в BIOS, оказывается, что он ничем не отличается от оригинала.

Во многих прошивках для 8051 обычно имеется код, реализующий возможности отладки, и мой — не исключение. Перед функциями, имеющими отношение к контроллеру клавиатуры и к EC, имеется множество функций, которые явно реализуют отладочные возможности. Одна из них — это команда контроллера клавиатуры, предназначенная для чтения из EC данных с адресов флеш-памяти с применением регистра.

Если сделать оттуда дамп прошивки, то получится образ, который отличается от оригинала. Изначально я предполагал, что EC использует образ из флеш-памяти BIOS, так как он хранится в этой памяти, и EC к этой памяти подключён. Но оказалось, что это, на самом деле, не так.

К этой памяти напрямую подключены и CPU, и EC. В результате, в том случае, если и тот и другой одновременно попытаются прочесть из неё данные, на шине неизбежно возникнет конфликт. Прошивка, на самом деле, хранится в самом EC. В IT8502 этой возможности не было (это запутало меня ещё сильнее, так как я пользовался даташитом именно для такого контроллера).

Запуск моего собственного кода в ec

Вероятно, стоит сказать о том, что у 8051 имеется некоторое количество различных адресных пространств:

Тут обращает на себя внимание факт отсутствия инструкций для записи в адресное пространство CODE. Но, если опираться на то, о чём мы говорили в предыдущем разделе, внести изменение в это адресное пространство можно, воспользовавшись возможностью записи данных во флеш-память.

Я этого делать не собирался, так как подобные действия несут в себе риск «окирпичивания» устройства. EC можно перепрограммировать, используя входы/выходы клавиатурной матрицы в роли параллельного порта, но я не собирался заниматься и этим.

Ещё одна проблема, связанная с записью данных во флеш-память, заключается в том, что её содержимое проверяется с использованием контрольной суммы. В прошивке имеется сигнатура, которая указывает на то, где начинается контрольная сумма, и в ней имеются два байта, которые различаются в разных редакциях прошивки.

Применив delsum part (инструмент, который я создал ранее, рассчитанный именно на решение подобных задач), можно найти множество кандидатов на роль контрольной суммы: это — CRC с полиномом 0x8005, а контрольная сумма заканчивается по адресу 0x1ffff.

Но начало контрольной суммы с уверенностью определить нельзя, так как во всех редакциях прошивки, которые я смог найти, соответствующие данные выглядели, до адреса 0x4000, одинаково. Это значит, что для каждого начального смещения, соответствующего адресу до 0x4000, имеется набор параметров, применение которого приводит к получению правильных контрольных сумм.

При этом можно изменять байты в области памяти, для которой вычисляется контрольная сумма, поступая так при условии, что есть полная уверенность в том, что это делается в правильном месте, так как для вычисления контрольной суммы важна лишь конечная часть этой области памяти.

Правда, для выполнения собственного кода нет нужды выполнять запись данных во флеш-память. В EC для этого имеется другой механизм. А именно — адреса 0x0000-0x1000 в адресном пространстве XDATA — это обычная оперативная память, которую можно отобразить на произвольную область адресного пространства CODE, изменив содержимое кое-каких регистров.

Схема из даташита, на которой показано 5 областей, пронумерованных от 0 до 4, которые могут быть отображены на адресное пространство кода. А именно, речь идёт об областях 0x0000-0x0800, 0x0800-0x0c00, 0x0c00-0x0e00, 0x0e00-0x0f00 и 0x0f00-0x1000

В результате для выполнения собственного кода достаточно лишь выполнить отображение одного из этих фрагментов на память с кодом. Оперативная память в диапазоне 0x0000-0x0e00 используется самой прошивкой, в результате остаются блоки 3 и 4, размер каждого из которых составляет 256 байт.

Правда, чтобы осуществить отображение этой памяти на память с кодом, нужно выполнить запись в регистры и в оперативную память из пространства XDATA. Есть одна отладочная функция, позволяющая писать данные в XDATA, но она содержит ошибки и может писать данные только по адресам, где байт из верхней части адреса является таким же, как и байт из его нижней части. Тут имеется ещё и интерфейс I2C, который достаточно хорошо подходит для решения задачи записи данных в SRAM.

Я сомневался по поводу записи данных в порты ввода/вывода, так как было сказано, что это подходит лишь для триггерных регистров. Но в регистрах, используемых для отображения памяти, имеется ещё и бит для запуска DMA-транзакции (так как этот чип, конечно, поддерживает DMA).

К счастью, был и другой путь: функционал отображения памяти используется для перезаписи флеш-памяти (так как никто не заинтересован в том, чтобы работа программы завершилась бы с ошибкой, когда будет достигнута область с кодом, выполняющим запись данных).

При таком подходе я смог ещё и проверить, работает ли механизм отображения памяти так, как нужно. Как оказалось, работал он неправильно. Получилось, что, например, отображение адресов 0x0e00-0x0f00 из пространства XDATA на область, начинающуюся с адреса 0x7722, приводит к отображению адреса 0x7722 на 0x0e22 (а не на 0x0e00), адреса 0x7723 на 0x023, адреса 0x7800 на 0x0e00, и адреса 0x7821 на 0x0e21. Это, возможно, результат ошибки в самом чипе.

В любом случае, эту проблему легко обойти, так как между адресами, всё равно, имеется взаимно однозначное соответствие, а значит — код можно просто записать в те места пространства XDATA, которые будут соответствовать нужным местам памяти. Оказалось, что I2C-запись в регистры, отвечающие за отображение памяти, тоже работает.

Исправление ошибки «установка на данный диск невозможна» с помощью настроек биос (uefi).

Чаще всего указанная ошибка происходит при установке Windows 7 на старых компьютерах с БИОС и Legacy загрузкой, в тех случаях, когда в БИОС в параметрах работы SATA устройств (то есть жёсткого диска) включен режим AHCI (или какие-либо режимы RAID, SCSI).

Решение в данном конкретном случае — зайти в параметры БИОС и изменить режим работы жесткого диска на IDE. Как правило, это делается где-то в разделе Integrated Peripherals — SATA Mode настроек БИОС (несколько примеров на скриншоте).
Включение контроллера жесткого диска в bios. Как в биосе включить контроллер жесткого диска

Но даже если у вас не «старый» компьютер или ноутбук, этот вариант также может сработать. Если же вы устанавливаете Windows 10 или 8, то вместо включения IDE режима, рекомендую:

  1. Включить EFI-загрузку в UEFI (если она поддерживается).
  2. Загрузиться с установочного накопителя (флешки) и попробовать установку.

Правда в этом варианте вам может встретиться другой тип ошибки, в тексте которой будет сообщаться, что на выбранном диске находится таблица MBR-разделов (инструкция по исправлению упомянута в начале этой статьи).

Почему такое происходит я и сам не до конца понял (ведь драйвера AHCI включены в образы Windows 7 и выше). Более того, воспроизвести ошибку я смог и для установки Windows 10 (скриншоты как раз оттуда) — просто изменив контроллер диска с IDE на SCSI для виртуальной машины Hyper-V «первого поколения» (то есть с БИОС).
Включение контроллера жесткого диска в bios. Как в биосе включить контроллер жесткого диска

Будет ли появляться указанная ошибка при EFI-загрузке и установке на диск, работающий в IDE-режиме, проверить не смог, но допускаю подобное (в этом случае пробуем включить AHCI для SATA дисков в UEFI).

Как я устанавливал ssd диск на старый компьютер

Я уже не раз в своих статьях упоминал о SSD дисках, говорил о том, что они быстрее обычных и с их помощью можно апгрейдить компьютер. И казалось бы их установка тривиальная вещь, что может быть проще, снимаете старый жесткий диск, ставите новый SSD, устанавливаете на него Windows и радуетесь, но на самом деле все не так просто.

Итак, имею старый компьютер, который решил проапгрейдить и установить SSD диск. В БИОС переключил режим AHCI. Для этого зашел в БИОС (нажмите кнопку Del или F2 (могут быть и другие клавиши зависит от модели материнской платы), при включении компьютера) в меню «Main» выбрал «Sata Configuration».

И в «Configure Sata as » выбрал «AHCI»

Сохранил настройки, перезагрузил компьютер и начал установку Windows. Но не тут то было, возникла ошибка:

Начал менять настройки БИОС, даже обновил его версию, результат был один- постоянно появлялась эта ошибка. В итоге я решил в БИОС выбрать режим IDE и установить Windows. Установка прошла успешна, затем я решил попробовать в БИОС-е переключиться снова на режим AHCI, но подобный трюк не удался и Windows просто не загрузилась (в принципе я ожидал подобный результат).

Вернув режим IDE, Windows успешно загрузилась, теперь необходимо сделать изменения в реестре. Для этого откройте редактор реестра — нажмите сочетание клавиш «Win» «R» и введите regedit.

Включение контроллера жесткого диска в bios. Как в биосе включить контроллер жесткого диска

Все, систему можно перезагружать и устанавливать режим AHCI в БИОС. В результате все заработало, SSD диск работал в режиме ACHI Windows успешно загрузилась и работала в разы быстрее чем с обычным жестким диском.

Так что, если ваш старый компьютер перестал вас радовать скоростью своей работы- установка SSD диска, на мой взгляд, идеальное решение. Но не нужно забывать про минимальные размер оперативной памяти — 2Гб ну и процессор желательно 2 ядра хотя бы по 2 Ггц.

Надеюсь эта статья помогла вам избежать ошибки:

Установка Windows на данный диск не возможна. Возможно оборудование данного компьютера не поддерживает загрузку с данного диска. Убедитесь, что контроллер данного диска включен в меню BIOS компьютера.

И помогла проапгрейдить ваш компьютер и повысить его работоспособность и быстродействие.

Во время установки операционной системы Windows 10 могут возникать различные ошибки. Как правило, они связаны с неправильными настройками BIOS или некорректной работой комплектующих устройств компьютера или ноутбука. Одна из частых ошибок звучит так:

«Установка Windows на данный диск невозможна. Возможно, оборудование данного компьютера не поддерживает загрузку с данного диска. Убедитесь, что контроллер данного диска включен в меню BIOS компьютера». Да, случаются неприятности, когда диск действительно отрубился и более не работает. Но чаще всего причина в другом.

Самая частая причина, из-за которой возникает эта неисправность заключается в настройках SATA-контроллера при работе со старыми жесткими дисками. Попробуйте для начала при включении ПК зайти в БИОС и сменить режим работы контроллера с ACHI на IDE.

На более современных материнских платах с UEFI вместо обычного BIOS может помочь смена работы на режим Legacy.

Если же ни одна из этих манипуляций не помогает, то верните всё как было. Причина скорее всего в другом.

Иногда ошибка «Убедитесь, что контроллер данного диска включен в меню BIOS компьютера» может появится потому, что покривилась загрузочная запись жесткого диска и её надо восстановить. Для этого при запуске установки операционной системы Windows 10 нажать на кнопку «Восстановление системы» и перейти в меню «Диагностика»>>

По очереди набираем команды:

Bootrec /fixmbr bootrec /fixboot bootrec /RebuildBcd

Выполнение каждой из них должно завершится успешно. После этого перезагружаем ПК и пробуем запустить установку вновь. Обычно этим ошибка контроллера диска в меню bios компьютера решается и дальше всё идёт уже без проблем.

Клавиатурные механизмы

Ноутбук получает сведения о нажатых клавишах клавиатуры через i8042-порты EC (

0x600x64

). У контроллера имеется прямой доступ к матрице контактов клавиатуры, а значит, ему нужно преобразовывать необработанные данные, поступающие с клавиатуры, в скан-коды PS/2. Ему ещё нужно наблюдать за состоянием клавиши

Fn

, которая позволяет определять альтернативный функционал для некоторых клавиш, и сведения о нажатии которой не отправляются процессору.

Можно подумать, что вышеописанная задача решается очень легко, что заключается она в просмотре некоей поисковой таблицы и в отправке хосту результатов. Но, увы, скан-коды PS/2 — это настоящий бардак.

Существует три различных набора скан-кодов, между которыми нет ничего общего. EC использует набор №2. Одиночное нажатие и отпускание клавиши не всегда приводит к генерированию одного байта скан-кода.

Вот примеры:


Поведение большинства клавиш, как правило, соответствует вышеприведённой схеме, когда при отпускании клавиши генерируется тот же код, что при её нажатии, но с префиксом

F0

. А

E0

— это префикс для расширенного набора скан-кодов (обратите внимание на то, что при отпускании клавиши

Delete

  код

F0

идёт после кода

E0

). Но тут есть некоторые исключения. Например:

Позиции клавиш на клавиатуре представлены 7-битным целым числом, которое используется в поисковой таблице в роли индекса при преобразовании этого числа в промежуточное байтовое значение. Эта первая поисковая таблица может быть изменена с помощью команд i8042 для переключения на другую раскладку клавиатуры.

Если промежуточное значение меньше 0x80, это значит, что оно просто соответствует обычному однобайтовому PS/2 скан-коду. А если говорить о других значениях, то они, по уже рассмотренной нами схеме, используются в роли индексов в поисковой таблице. Результирующее значение определяет функцию, которая используется для обработки скан-кода.

Тут решаются и другие задачи, вроде борьбы с фантомными нажатиями клавиш (anti-ghosting), устранения ложных повторных нажатий клавиш (debouncing) и поддержки клавиши Fn, о которой я уже вкратце рассказал.

Интересно то, что контроллер иногда помещает в буфер некоторые скан-коды, делая это в коде, не имеющем отношение к клавиатурным механизмам. Например, речь идёт о сочетании клавиш Win Q, или о прерывании обработки нажатия на клавишу. Я, правда, более глубоко в этом не разбирался.

Контроллер диска включен в меню bios компьютера

Во время установки операционной системы Windows 10 могут возникать различные ошибки. Как правило, они связаны с неправильными настройками BIOS или некорректной работой комплектующих устройств компьютера или ноутбука. Одна из частых ошибок звучит так:

«Установка Windows на данный диск невозможна. Возможно, оборудование данного компьютера не поддерживает загрузку с данного диска. Убедитесь, что контроллер данного диска включен в меню BIOS компьютера». Да, случаются неприятности, когда диск действительно отрубился и более не работает. Но чаще всего причина в другом.

Самая частая причина, из-за которой возникает эта неисправность заключается в настройках SATA-контроллера при работе со старыми жесткими дисками. Попробуйте для начала при включении ПК зайти в БИОС и сменить режим работы контроллера с ACHI на IDE.

На более современных материнских платах с UEFI вместо обычного BIOS может помочь смена работы на режим Legacy.

Если же ни одна из этих манипуляций не помогает, то верните всё как было. Причина скорее всего в другом.

Иногда ошибка «Убедитесь, что контроллер данного диска включен в меню BIOS компьютера» может появится потому, что покривилась загрузочная запись жесткого диска и её надо восстановить. Для этого при запуске установки операционной системы Windows 10 нажать на кнопку «Восстановление системы» и перейти в меню «Диагностика»>>

По очереди набираем команды:

Bootrec /fixmbr bootrec /fixboot bootrec /RebuildBcd

Выполнение каждой из них должно завершится успешно. После этого перезагружаем ПК и пробуем запустить установку вновь. Обычно этим ошибка контроллера диска в меню bios компьютера решается и дальше всё идёт уже без проблем.

Краткая история встроенных контроллеров на платформах x86

Сначала был создан компьютер IBM PC. Многих это возмутило, данный шаг компании IBM был широко признан неразумным.

В материнскую плату этого компьютера было встроено множество периферийных устройств, вроде Intel 8259 (программируемый контроллер прерываний) или Intel 8253 (программируемый таймер). Обращаться к этим контроллерам можно было, пользуясь инструкциями in/out ядра x86 (и, на самом деле, к контроллерам 8259 и 8253 всё ещё можно обращаться на современных x86-процессоров, но теперь они входят в состав кристалла CPU).

В компьютере IBM PC AT, который был выпущен в 1984 году, контроллер i8255 заменили на Intel 8042, который отвечал за взаимодействие с клавиатурой и назывался контроллером клавиатуры. В адресном пространстве ввода/вывода x86 у него было два адреса — 0x60 и 0x64.

Ядро, пользуясь этими портами, могло отправлять этому контроллеру команды и получать от него данные. У контроллера клавиатуры были неиспользуемые выводы, поэтому специалисты компании IBM решили, что блестящей мыслью будет использовать эти выводы для решения задач, не связанных с клавиатурой, вроде перезагрузки компьютера.

Где-то в конце 1980-х периферийные устройства всё чаще и чаще объединяли, включая в состав одной микросхемы несколько таких устройств. Например — это чипы северного моста и южного моста. Один из таких чипов, Super I/O-контроллер, отвечал за взаимодействие с низкоскоростными устройствами, вроде последовательных портов, параллельных портов и контроллеров дисководов гибких дисков. В состав этого чипа часто входил и контроллер клавиатуры.

Ноутбукам, кроме прочего, требовалась особая система управления питанием. Производители портативных компьютеров взглянули на контроллер клавиатуры, на то, что он способен перезагружать компьютер, и сказали: «На самом деле — это замечательно. Давайте сделаем то, что нам нужно, по похожей схеме».

В результате к контроллеру клавиатуры были добавлены два порта с похожим интерфейсом, позволяющим отправлять на устройства команды и получать от них данные. И, фактически, во многих платформах эта возможность реализована в том же самом контроллере, который входит в состав Super I/O-чипа.

В середине 1990-х заметным явлением стал стандарт ACPI (Advanced Configuration and Power Interface, усовершенствованный интерфейс управления конфигурацией и питанием). Он определял стандартизированный интерфейс для EC. А именно, через его командный интерфейс можно было обращаться к 8-битному адресному пространству переменных, определяемых производителями оборудования.

В конце 2000-х годов микросхемы южного и северного мостов были объединены с CPU. Правда, надо отметить, что интеграция южного моста (PCH, Platform Controller Hub) в CPU, по всей видимости, имеет место лишь на мобильных платформах. Но в ноутбуках EC всё ещё представлен отдельным чипом, который, кроме того, реализует функционал Super I/O-контроллера и контроллера клавиатуры. Он, например, решает следующие задачи:

Пару слов о usb

Ознакомление с работой порта USB потребовало бы отдельной статьи описывающей его работу и плюс описание обработки данных HID на Windows. Это очень сильно усложнило бы материал, к тому же уже есть хорошие статьи по теме, поэтому PS2 идеальный пример из-за своей простоты.

USB создавался как универсальный порт для всех устройств, будь то клавиатура, фотоаппарат, сканнер, игровой руль с педалями, принтер и пр. Вдобавок он поддерживает вложенность портов – USB материнки => монитор с USB => клавиатура с USB к которой подключена мышка, флешка и USB-hub к которому подключен жёсткий диск.

Провода кабеля USB 2.0

USB 3.0 быстрее за счёт дополнительных пяти контактов. Как видите там нету линии CLOCK для синхронизации, поэтому логика передачи данных сложнее. Слева USB 2.0 и справа USB 3.0 для сравнения.

Все данные передаются через протокол HID (Human Interface Device), который описывает форматы, порядок взаимодействия и передачи данных и всё остальное. Стандарт USB 2.0 занимает 650 страниц, документ HID Class Specification, описывающий работу устройств (мыши, клавиатуры и пр) – 97 страниц, их рекомендуется изучить если вы работаете с USB.

Первым делом подключенное устройство должно рассказать о себе, для этого оно отправляет несколько структур данных, в которых указывается ID устройства и ID производителя по которым Plug’n’Play manager может найти в реестре информацию, загрузить и соединить драйвера.

USB устройства пассивны, т.е. хост должен сам с определённым интервалом проверять наличие данных. Частота опроса и размер пакета данных задаются в одном из дескрипторов устройства USB. Максимальный размер пакета – 64 байта, что для информации о нажатых клавишах более чем достаточно.

В Windows есть встроенная поддержка HID, она не такая простая как связь драйвера порта PS2 с драйвером клавиатуры, потому что драйвер HID должен уметь обрабатывать все поддерживаемые протоколом сценарии. Вне зависимости от провайдера данных — порты PS2, USB или Remote Desktop или виртуальная машина – на самом верху driver node будет находится Kbdclass, от которого ядро ОС и будет получать информацию.

Источник

Преобразование gpt в mbr

Если стоит вопрос обратный — например, материнская плата не поддерживает
BIOS UEFI, но в состав сборки комплектующих вошёл HDD или SSD с GPT-разметкой, ничего не останется иного, как преобразовать
его в MBR. Сделать это можно теми же способами, что описаны выше для обратного процесса:

  • путём удаления
    всех разделов с помощью установщика Виндовс, если в хранящихся на диске данных нет надобности;
  • с помощью программы
    AOMEI Partition Assistant.

Чтобы преобразовать диск из GPT в MBR, проделываем такие же шаги, как в предыдущем разделе
статьи, с той лишь разницей, что на этот раз запускаем, соответственно, обратную операцию.
Включение контроллера жесткого диска в bios. Как в биосе включить контроллер жесткого диска

С проблемой, описанной в заголовке, иногда можно столкнуться во время установки ОС Windows с оптического диска или флэшки. Зачастую подобная ошибка появляется при установке Windows 7, особенно если недавно была произведена замена жесткого диска.

Окно со столь грозным сообщением появляется на экране на этапе выбора подходящего раздела HDD для установки операционной системы. Полный текст этого предупреждения выглядит следующим образом:

Решение этой проблемы довольно простое, однако, детальная инструкция лишней точно не будет, особенно, для малоопытных пользователей ПК. Итак, алгоритм действий следующий:

  1. Перезагрузите компьютер и зайдите в меню BIOS.

Как туда попасть зависит от версии того самого БИОСа, это либо кнопка Del, либо F8, F10 или F11. В любом случае, нужная клавиша будет указана во втором окне, которое появится после включения ПК.

  1. Зайдите в раздел «Advanced» и найдите там пункт «AHCI Mode Control».
  1. Переключите этот режим из «Auto» на «Manual».
  1. Теперь вы можете отключить «Native AHCI Match», сделав его «Disable». Это и требуется для устранения ошибки и нормальной установки ОС.
  1. Установив операционную систему и драйвера, необходимые для ее исправной работы, вы можете вернуть настройки BIOS обратно.

На этом все, теперь вы знаете, как решить проблему «Убедитесь, что контроллер данного диска включен в меню BIOS компьютера».

Прошивка ec

Раздобыть прошивку контроллера несложно. Я уже извлекал образ BIOS раньше, для других нужд. После его обработки с помощью утилиты

в моём распоряжении оказалось примерно 160 Кб 8051-кода из самого начала образа, расположенного до кода, имеющего отношения к UEFI. Контроллер 8051 имеет 16-битное адресное пространство, а значит 160 Кб кода ему не соответствуют. Получается, что речь идёт о так называемой banked-прошивке.

Размеры блоков прошивки обычно, в большинстве контроллеров 8051, составляют либо 32, либо 64 Кб. Выяснить их размер при работе с конкретным контроллером можно, поискав повторяющиеся фрагменты кода. Дело в том, что в разных блоках прошивки обычно имеются одинаковые фрагменты, представляющие код общего назначения (быстро найти такие фрагменты можно попробовать, прибегнув к автокорреляции). Оказалось, что в моём случае речь идёт о блоках кода размером 32 Кб.

Обработка 32-килобайтных блоков с помощью утилиты at51_base позволила узнать о том, что первый блок загружается по адресу 0x0, а второй, третий и четвёртый — по адресу 0x8000. Получается, что первые 32 Кб адресного пространства не меняются, а его верхняя область (0x8000) динамически переключается между тремя имеющимися банками. Пятый банк кода не содержит. В нём имеются только некие данные.

После того, как я всё это выяснил, меня посетила блестящая идея, которая заключалась в том, чтобы посмотреть даташит исследуемого компонента. Даташит на мой контроллер найти не удалось, но мне попались документы на IT8502E, описывающие устройство достаточно близкое к тому, которое было у меня.

При просмотре даташита я наткнулся на упоминание отладочного интерфейса I2C, но он, правда, не был документирован. После некоторых изысканий я нашёл проект ECSpy, который представляет собой Rust-реализацию отладчика для EC, созданную силами компании System76, которая работает над собственной прошивкой для EC.

Отладчик даёт доступ на чтение и запись к оперативной памяти и регистрам ввода/вывода EC. Доступ к регистрам отличается дополнительным ограничением, которое заключается в том, что операция записи чётко определена лишь для триггерных регистров (в результате, например, операция, вызывающая изменение состояния конечного автомата, не сработает).

Ещё в даташите сказано, что возможность отладки нужно включать с помощью регистра, но она и так включена. Доступ к ней осуществляется посредством I/O-портов x86 через Super I/O-чип, поэтому ей можно пользоваться из пользовательского пространства, без необходимости писать драйвер.

Для реверс-инжиниринга тех частей прошивки, которые отвечают за взаимодействие с различными устройствами, могут пригодиться спецификации этих устройств. Я, работая над этим проектом, прочитал часть спецификаций ACPI, SMBus и Smart Battery. В процессе исследования кода прошивки используются следующие ресурсы и инструменты: boardview-файлы, даташиты, спецификации компонентов, отладчик Ghidra, обычный браузер, применяемый для поиска дополнительных сведений вроде скан-кодов, исходный код Linux-драйвера для EC, дизассемблированный машинный ACPI-код, отладчик для EC и его исходный код.

В прошивке имеется единственная главная функция, в которой и решается большая часть задач. Обычно прерывания устанавливают какие-то биты, связанные с событиями, а потом эти события обрабатываются за пределами контекста прерываний в главном цикле. В векторе прерываний контроллера имеются описания некоторого количества различных прерываний, но большинство прерываний идут по линии так называемого INTC-прерывания, по адресу 0x13, после чего осуществляется просмотр большой таблицы переходов, содержащей адреса конкретных обработчиков прерываний.

Большой объём работы выполняется в коде главного цикла, ответственном за обработку событий таймера. Таймер в EC запрограммирован так, что он выдаёт прерывание раз в одну миллисекунду. Потом, на основе прерываний таймера, формируются события, которые происходят, например, каждые 10, 50, 100 мс. Обновление ACPI-переменных выполняется, в основном, в этом контексте.

Старт системы

Полностью компьютер выключен когда он отключен от питания и конденсаторы на материнской плате разрядились. До эры смартфонов мобильные телефоны часто глючили и если перезагрузка не лечила проблему, то приходилось доставать батарею и ждать 10 секунд, потому что сбрасывалось программное состояние ОС, в то время как чипы на материнской плате и контроллеры устройств оставались активными сохраняя состояние, драйвера ОС к ним просто реконнектились.

10 секунд — время на разрядку конденсаторов, состояние чипов сбрасывается только при полном отключении. Если же ПК подключен к розетке или батарее, то он находится в режиме Stand-By, это значит что по шине питания подаётся маленькое напряжения (5В) от которого запитываются некоторые чипы на материнке.

Как минимум это системный контроллер, по сути это мини-компьютер запускающий большой компьютер. Получив уведомление о нажатии кнопки Power он просит блок питания/батарею подать больше напряжения и после инициализирует весь чип-сет, в том числе и процессор.

Инициализация включает в себя перекачку кода и данных прошивки материнки (BIOS/UEFI) в оперативную память и настройку CPU на её исполнение. Думать что кнопка Power это рубильник который подаёт электричество на CPU и тот начинает исполнять с заранее известного адреса прошивку BIOS неправильно.

Возможно старые компьютеры так и работали. Кнопка включения находится на своей плате, вместе со светодиодами состояний и к материнке она подключается через специальный разъём. На картинке ниже видны контакты для кнопки Power, Reset, а также светодиодов с состоянием Power и чтения жёсткого диска. Нажатие кнопки включения переводится в сигнал на контакты материнки, откуда он достигает системный контроллер.

Контакты на материнке для подключения кнопки включения, светодиодов состояния Power, жёсткого диска и динамиков.

Плата ноутбука с кнопкой включения и светодиодом состояния

Прикладная иллюстрация как блок питания получает сигнал от материнки на включение. Если вы задумаете установить мощную видеокарту (Nvidia 2070 S) на офисный ПК, то просто вставить её недостаточно, потому как она требует питание в 600W, в то время как такой ПК имеет блок на

500W. Первое что придёт в голову – купить новый блок питания на 650W с отдельной линией для видеокарты. Но и здесь будут разочарования, потому как разъёмы материнки будут не совпадать с разъёмами БП, а если его отдельно воткнуть в розетку и подключить к видюхе тоже ничего не будет – в блоке питания вентилятор не крутится и изображения нет.

$300. Есть решение проще, хоть оно и вызывает опасения пожаробезопасности. Берём скрепку, разгибаем и вставляем в зелёный (PS_ON) и один из чёрных пинов (COM). Теперь всё должно работать.

Установка windows на данный диск невозможна (решение) — программирование, администрирование, it

Установка Windows на данный диск невозможна (решение)

В этой инструкции подробно о том, что делать, если при установке Windows вам сообщают, что невозможно установить Windows в раздел диска, а в подробностях — «Установка Windows на данный диск невозможна. Возможно, оборудование компьютера не поддерживает загрузку с данного диска. Убедитесь, что контроллер данного диска включен в меню BIOS компьютера».

Если же все-таки выбрать этот раздел и нажать «Далее» в программе установки, вы увидите ошибку сообщающую, что нам не удалось создать новый или найти существующий раздел с предложением просмотреть дополнительные сведения в файлах журнала программы установки. Ниже будут описаны способы исправить такую ошибку (которая может возникать в программах установки Windows 10 — Windows 7).

По мере того, как все чаще на компьютерах и ноутбуках пользователей встречается разнообразие в таблицах разделов на дисках (GPT и MBR), режимов работы HDD (AHCI и IDE) и типов загрузки (EFI и Legacy), учащаются и ошибки при установке Windows 10, 8 или Windows 7, вызванные этими параметрами. Описываемый случай — как раз одна из таких ошибок.

Исправление ошибки «Установка на данный диск невозможна» с помощью настроек БИОС (UEFI)

Решение в данном конкретном случае — зайти в параметры БИОС и изменить режим работы жесткого диска на IDE. Как правило, это делается где-то в разделе Integrated Peripherals — SATA Mode настроек БИОС (несколько примеров на скриншоте).

Но даже если у вас не «старый» компьютер или ноутбук, этот вариант также может сработать. Если же вы устанавливаете Windows 10 или 8, то вместо включения IDE режима, рекомендую:

  1. Включить EFI-загрузку в UEFI (если она поддерживается).
  2. Загрузиться с установочного накопителя (флешки) и попробовать установку.

Правда в этом варианте вам может встретиться другой тип ошибки, в тексте которой будет сообщаться, что на выбранном диске находится таблица MBR-разделов (инструкция по исправлению упомянута в начале этой статьи).

Почему такое происходит я и сам не до конца понял (ведь драйвера AHCI включены в образы Windows 7 и выше). Более того, воспроизвести ошибку я смог и для установки Windows 10 (скриншоты как раз оттуда) — просто изменив контроллер диска с IDE на SCSI для виртуальной машины Hyper-V «первого поколения» (т.е. с БИОС).

Будет ли появляться указанная ошибка при EFI-загрузке и установке на диск, работающий в IDE-режиме, проверить не смог, но допускаю подобное (в этом случае пробуем включить AHCI для SATA дисков в UEFI).

Сторонние драйвера контроллера дисков AHCI, SCSI, RAID

В некоторых случаях проблема вызвана специфичностью оборудования пользователя. Наиболее распространенный вариант — наличие кэширующих SSD на ноутбуке, многодисковые конфигурации, RAID-массивы и SCSI карты.

Оцените статью
OverComp.ru