Sata драйвера под windows

Sata драйвера под windows

Драйвера для AMD SATA AHCI RAID контроллеров

— AMD SB6xx RAID Drivers
— AMD SB7xx RAID Drivers
— AMD SB8xx RAID Drivers
— AMD SB9xx RAID Drivers
— AMD A-Series APU Chipset RAID Drivers
— AMD E-Series APU Chipset RAID Drivers

Поддерживаются ИД устройств:

PCI/VEN_1002&DEV_4380
PCI/VEN_1002&DEV_4381
PCI/VEN_1002&DEV_4391
PCI/VEN_1002&DEV_4392
PCI/VEN_1002&DEV_4393
PCI/VEN_1002&DEV_4394
PCI/VEN_1022&DEV_7801
PCI/VEN_1022&DEV_7802
PCI/VEN_1022&DEV_7803
PCI/VEN_1022&DEV_7804

Windows XP 32/64-bit версия 13.4
скачать AMD RAID драйвер
Размер: 24.41 MB

Windows Vista, Win7, Win8 32/64-bit версия 13.4
скачать драйвера AMD SATA/AHCI/RAID
Размер: 48.91 MB

комплект драйверов для более старых версий чипсетов

скачать AMD SATA AHCI Controller Driver
Размер: 6.94 Mb
ОС:
Windows 7 — v.3.1.1540.127
Windows Vista — v.3.1.1540.127
Windows XP — v.3.1.1540.127, 3.1.1540.64, 3.2.1548.37, 3.10.1540.64

В архиве:
— драйвера для AMD 7xx чипсетов.
— AMD SATA AHCI Controller Driver от HP для ноутбуков v.3.1.1540.64
— AMD SATA AHCI Controller Driver Diskette

Как скачать драйвер? — прочитайте руководство по скачиванию драйверов с нашего сайта

Как установить драйвер? — статья, которая Вам поможет установить драйвера

Если Вы заметили неработающую ссылку, пожалуйста сообщите об этом Администратору сайта в разделе Контакты

Замена драйверов AHCI на драйвера Microsoft® SATA

Аномальная производительность операционных систем Windows® после установки SSD, например, более медленное выполнение тестов, чем ожидалось, или сбои системы может быть из-за устаревших или неподдерживаемых драйверов контроллера памяти. Помимо установки самых последних драйверов производителя вашей материнской платы или системы, замена драйверов на встроенные драйверы Windows может улучшить производительность или устранить проблемы с ней.

Для этого откройте Диспетчер устройств (введите Диспетчер устройств в строке поиска).

В Диспетчере устройств вы увидите список различных категорий драйверов. Найдите категорию под названием «Контроллеры IDE ATA/ATAPI» и разверните ее.

Если вы не можете найти раздел IDE ATA/ATAPI, скорее всего, ваша система не работает в режиме AHCI. Обратитесь к документации вашей операционной системе (ОС) и производителя компьютера и следуйте их инструкциям, чтобы проверить, что ваша система настроена на режим AHCI для обеспечения оптимальной производительности при установке одного SSD.

Вы увидите несколько записей для контроллера AHCI (например, показанные ниже драйверы Intel® ).

Щелкните правой кнопкой мыши на записи драйвера контроллера и выберите Свойства, затем нажмите на вкладку Драйвер, после чего Обновить драйверы.

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

На следующем экране выберите драйвер из списка имеющихся драйве ров .

В списке Моделей вы увидите текущие драйверы, а также драйвер Microsoft, который называется Standard AHCI 1.0 Serial ATA Controller. Выберите Standard AHCI1.0 Serial ATA Controller и нажмите Далее.

Когда драйвер Microsoft будет установлен, вам нужно будет перезагрузить компьютер, чтобы изменения вступили в силу (иногда требуется несколько перезагрузок). Вы также можете вернуться в Диспетчер устройств и проверить, что стандартные драйверы Microsoft установлены.

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

© Корпорация Micron Technology, Inc., 2019. Все права защищены. Продукты, их технические характеристики, а также информация о них могут быть изменены без уведомления. Crucial и Micron Technology, Inc. не несут ответственности за ошибки и неточности в текстовых или фотографических материалах. Micron, логотип Micron, Crucial и логотип Crucial являются товарными знаками или зарегистрированными товарными знаками компании Micron Technology, Inc. Microsoft и Windows являются зарегистрированными товарными знаками корпорации Microsoft в США и/или других странах. Intel является товарным знаком компании Intel Corporation или ее дочерних компаний в США и/или других странах. Все остальные товарные знаки и знаки обслуживания являются собственностью соответствующих владельцев.

Sata драйвера под windows

Зачем и кому нужен такой драйвер ? Рассказываю: UniATA имеет смысл поставить, если к новой материнской плате не прилагаются драйвера для вашей старой операционки. Или наоборот — есть старая плата, на которую нужно водрузить новую винду. Конечно, есть стандартные встроенные драйвера, которые наверняка это железо опознают и будут с ним работать. Но как. В PIO режиме, т.е. 0.5-3 Мб/сек. А UniATA будет работать в DMA или UltraDMA режиме, что существенно (иногда даже в 10 раз) быстрее. А вот еще одна проблема — новые винты объемом больше 128 Гб (LBA-48 или BigLba). В старых операционках их поддержка не предусмотрена вообще, а новые требуют последних Service Pack’ов. Поддержка таких винтов в UniATA встроена. И наконец — ситуация смены материнской платы. Обычно это нетривиальная задача. Если просто сделать замену, драйвера от предыдущей платы не опознают новый IDE контроллер и система не загрузится. Придется возвращать плату назад, принудительно менять драйвера на стандартные, снова менять плату и устанавливать новые. О том, чтобы ходить со своим загрузочным винчестеров к друзьям в гости (или на работу) можно забыть (либо довольствоваться скоростью 0.5-3 Мб/сек). Поскольку UniATA поддерживает большой список контроллеров и в дополнение к списку понимает почти любые стандартные (обычные onboard primary/secondary), такая проблема тоже оказывается решенной. UniATA также понимает новые SATA и AHCI контроллеры. Ниже можно почитать более подробный (и более технический) список полезностей.

Features

  • поддержка DMA/UDMA (до ATA-133) на известных контроллерах и базового DMA — на совместимых
  • поддержка жестких дисков объемом больше 128Gb (LBA-48, EnableBigLba)
  • поддержка жестких дисков объемом больше 2Tb (SCSI READ16, WRITE16)
  • поддержка SerialATA (SATA, SATA-2, SATA-3)
  • поддержка NT3.51 (i386+ CPU), NT4, 2000, XP, 2003, 2005, Vista, 7, ReactOS (x86/i386)
  • поддержка SMP/HT
  • поддержка AHCI rev. 0.95 — 1.30
  • поддержка большого списка IDE controllers, а также любых других ATA/ATAPI совместимых контроллеров.
  • вся линейка режимов: UDMA0-UDMA6 (ATA-16/25/33/44/66/100/133)
  • не требует переустановки при смене IDE контроллера или мaтеринской платы
  • внутренняя очередь команд и исполнение операций чтения/записи в более оптимальной последовательности
  • user-mode утилита atactl для управления ATA/ATAPI устройствами. Можно находу менять режим передачи данных (PIO/DMA/UDMA).
  • настройки кеширования, скорости и многого другого в Registry
  • список плохих/ненадежных блоков, чтобы драйвер не мучал диск, а сразу возвращал ошибку (Nikolai Vorontsov).
  • NEW поддержка SCT Command Transport (используется smartmontools)
  • Горячая замена IDE устройств в OS младше w2k (Mike)

Plans

  • Человеческий инсталятор
  • Поддержка RAID (mirror, stripping, mirror+stripping)
  • PNP (WDM) реализация для w2k и старше
  • Поддержка 64-битных версий Windows
  • Поддержка RAID (mirror, stripping, mirror+stripping)
  • Поддержка Win 9x/ME (есть уже частично работающая сборка, спасибо Xeno)
  • работа с BIOS INT13 (Alexei Chipovalov)
  • эмуляция MODE SENSE/MODE SELECT на IDE устройствах (винтах) для управления кешированием, спящим режимом и т.п. (уже в разработке)
  • поддержка древних MFM жестких дисков (KtP)

History

Обчитавшись спецификаций (винтов, ATAPI и ATA/IDE контроллеров) и сорцов (от NT4 и FreeBSD) я нарисовал версию BusMaster_v8a_ok.rar/tgz (52.1 Kb/60.5 Kb) (v 0.8a), успешно понявшую все доступные мне контроллеры, а именно:

  1. VIA 82C586 (ETEQ) на SOYO-5EHM
  2. VIA 8233 на Soltek-DRV4
  3. CMD 649 (дополнительный PCI контроллер)

А чуть позже и такие:

  1. Intel ICH on

    10 different machines

  2. Intel ICH2 on Dual-Processor machine
  3. ServerWorks CSB5 on Dual-Processor machine
  4. AcerLabs Aladdin V (Rev 0xC4) on Notebook
  5. Intel PIIX3
  6. VIA 82C686
  7. nVidia nForce MCP51 (PATA and SATA)

By design, драйвер инициализирует любое PCI устройство, считающее себя IDE Controller’ом, а также well-known Mass-storage Controllers:

Intel PIIX / PIIX3 / PIIX4
Intel ICH / ICH0 / ICH2
AcerLabs Aladdin ATA / ATA33
VIA ATAxxx
SiS 5591 ATA33
CMD 649 ATA100 checked
CMD 648 / 646
Cyrix 5530 ATA33
AMD 756 ATA66
ServerWorks ROSB4 ATA33
Promise TX2 ATA33 / ATA66 / ATA100
HighPoint ATAxxx
Intel ICH3, PIIX4e
nVIDIA nForce/nForce2
AMD 768, 766, 756
ServerWorks CSB5 ATA66/100
Promise TX2 ATA133
Promise Ultra/FastTrak 33/66/100
Promise OEM ATA100 Acard ATPxxxx 33/66/100
Cenatek Rocket Drive Intel ICH4 /ICH5, PIIX4e
SiS Family
Intel ICH6
National Geode SC1100
IT8xxx
Intel ICH7, ICH8
ATI
nVIDIA nForce3/nForce4
buggy controllers:

PC Technology RZ 1000
PC Technology 37C922
CMD 640
SiS83C601

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

Version

На Новый Год, под елочку 🙂

  • Введена поддержка SATA/SATA-2 для VIA, SII, SIS, INTEL (кроме AHCI режима), ATI, NVIDIA, SERVERWORKS, ALI. Это серьезное изменение номер 1.
  • Сделана виртуальная адресация регистров контроллера. Это позволяет очень легко добавлять поддержку контроллеров с нестандартным расположением управляющих регистров. Все SATA (не AHCI) таковыми являются. Это серьезное изменение номер 0.
  • Теперь драйвер использует спец. библиотеку из комплекта DbgDump, которая позволяет обходить различия API разных версий NT.
  • Сделана поддержка более 2х каналов на одном контроллере.
  • Сделана проверка физ. адресов на 32битность. А то систем с физ. памятью больше 4Гб становится все больше. А контроллеров, умеющих такое пока мало.
    2006.12.30
    Release Версия 0.33h2 (rar/tgz) — 83.3 Kb/99.8 Kb.
    и исходники 0.33h2 (rar/tgz) — 175.4 Kb/218.1 Kb.
    Debug Версия 0.33h2 (rar/tgz) — 196.9 Kb/240.5 Kb.
    NT3.51 Debug

    Не прошло и года, как вышла новая версия 🙂

  • Наконец я сделал представление стандартного 2х-канального контроллера в виде 2х логических устройств в системах Win 2000 и старше. Ранее этот контроллер представлялся как одно устройство с 2мя прерываниями (у каждого канала свое). Работало это когда как. Вероятно, в зависимости от фазы луны и высоты над уровнем моря. Это серьезное изменение номер 1.
  • Понял и научился правильно использовать SCSIPORT’овое API для отложеной обработки прерываний. Оказалось, что пользоваться стоит только таймером. А ScsiPortNotification(CallDisableInterrupts, . ) и ScsiPortNotification(CallEnableInterrupts, . ) не годятся. Хотя они и понижают IRQL и тем самым дают зеленый свет другим прерываниям, совместное использование их с таймером приводит к повисанию. А ожидание готовности ATAPI устройства — процесс иногда длительный. И лучше применять отложеную обработку по таймеру. Что и было сделано. И никаких больше танцев с бубном 🙂 Это серьезное изменение номер 2.
  • Найдена и исправлена страшная ошибка в коде сброса контроллера. Если сброс произошел во время обработки рекурсивного запроса, то сообщение об отмене операции не отправлялось для верхнеуровневого (исходного) запроса. А это часто происходит при инициализации ATAPI устройств, и как следствие — ставим UniATA и не можем загрузить систему.
  • Исправлен код реинициализации PIO/DMA режима перед передачей ATAPI команд. Как оказалось, не все безобидные на вид команды можно исполнять в DMA режиме. Даже если не требуется передача данных. Поэтому приходится для таких команд переключать устройство в PIO, а потом обратно.
  • В коде установки режимя передачи данных при проверке готовности устройства теперь не проверяется бит IDE_STATUS_ERROR, т.к. он свидетельствует только о том, что предыдущая операция завершилась с ошибкой.
  • Исправлена ошибка с неинициализированной переменной (вектор прерывания) в коде поиска старых ISA IDE контроллеров. На некоторых системах это приводило к синему экрану.
  • Из кода поиска контроллеров убран опрос подключенных устройств. Для ускорения загрузки ОС. Все равно опрос устройств инициируется системой после того, как мы сообщаем ей об обнаружении контроллера. Это было наследие исходного драйвера ATAPI.SYS, который по задумке разработчиков не должен был инициализировать контроллер при отсутствии ATAPI устройств, вместо него этим должен был заниматься ATDISK.SYS. Сейчас же это только тормозит (двойная работа все-таки).
    2006.09.05
    Release Версия 0.33d (rar/tgz) — 82.9 Kb/99.4 Kb.
    и исходники 0.33d (rar/tgz) — 175 Kb/217.4 Kb.
    Debug Версия 0.33d (rar/tgz) — 195.6 Kb/237.5 Kb.
  • Оптимизированы функции длительного ожидания готовности устройства.
  • Добавлен сброс DMA контроллера (выполняется последовательность действий для завершения DMA операции) после сброса контроллера, т.к. иначе в некоторых случаях могут возникать unexpected interrupts (при этом устройства возвращают статус IDLE).
  • Улучшена проверка источника прерывания. Во-первых обязательно проверяется BM_STATUS_INTR в регистре статуса DMA вне зависимости от того, была ли это PIO или DMA операция. Во вторых, при наличии установленого BM_STATUS_INTR игнорируется бит BUSY в регистре статуса IDE устройства, и канал переводится в состояние ожидания готовности устройства. Ранее такая ситуация считалась unexpected interrupt’ом, что не соответствует действительности. Также убрано требование отсутствия BM_STATUS_ACTIVE при наличии BM_STATUS_INTR. В случае ошибок устройства это вполне реальная комбинация и прерывание должно быть обслужено.
  • Улучшен порядок преверки каналов на готовность для многоканальных контроллеров. Теперь в первую очередь проверяются каналы, ожидающие прерывание.
  • Исправлена ошибка с парностью вызовов запрещения/разрешения прерываний при отложеной обработке (DPC, Timer DPC). Как правило, обработка откладывается на некоторое время и передается в другой поток с более низким приоритетом если требуется подождать готовности устройства.
  • Реализована возможность исполнения не ATAPI команд в DMA режиме помимо READ/WRITE BLOCK (для них это уже давно сделано).
  • Добавлена проверка статуса IDE устройства на 0xff перед отправкой очередной команды. Это значение говорит либо о повисании устройства, либо о его отсутствии.
  • Исправлен ряд ошибок со сменой начального DMA режима и в процессе работы. Где-то забыл флаг DMA операции сбросить, где-то сравнил знаковые числа как беззнаковые и т.п. Мелочи, а из-за них не все работает.
  • Добавлена проверка на готовность устройства с приему команды переключения режима передачи.
  • В atactl.exe сделаны более осмысленные сообщения об ошибках.
    2006.03.18
    Release Версия 0.32a2 (rar/tgz) — 81.9 Kb/98.5 Kb.
    и исходники 0.32a2 (rar/tgz) — 172.3 Kb/214.7 Kb.
    Debug Версия 0.32a2 (rar/tgz) — 192.2 Kb/234.5 Kb.
  • Исправлена ошибка в коде поддержки семейства nForce. Эти контроллеры отличаются от VIA и AMD тем, что адреса управляющих регистров смещены на 16 байт. В процессе эволюции для этих контроллеров из внутреннего списка поддерживаемых устройств был убран флаг NVIDIA как избыточный (все равно ведь можно по VensdorId определить). А вот в том месте, где контроллер программируется, проверка осталась старой (по флагу). В результате при подключении устройств на secondary канал контроллер просто вешался от действий драйвера (не в те регистры записали). Почему это все работало с primary каналом мне непонятно, Типа чудо 🙂
    2005.11.29
    Release Версия 0.32a (rar/tgz) — 81.8 Kb/98.4 Kb.
    и исходники 0.32a (rar/tgz) — 172 Kb/214.3 Kb.
    Debug Версия 0.32a (rar/tgz) — 191.5 Kb/234 Kb.
  • В atactl.exe добавлена возможность определения режима (PIO/DMA/UDMA) даже при отсутствии драйвера UniATA.
  • Начаты изменения связаные с портированием в NT3.51 (спасибо KtP) и ReactOS (спасибо Root).
  • Добавлена поддержка новых ICH6 и ICH7, а также VIA 6421.
  • Исправлена ошибка в коде поддержки nForce и nForce2. По ошибке для этих контроллеров во внутреннем списке поддерживаемых устройств был установлен флаг AMDBUG.
  • Изменены параметры инициализации (timings) для семейства HighPoint.
  • Исправлена ошибка в установке логической геометрии для больших дисков. Было 255 секторов, 63 головки, а должно быть наоборот.
  • Добавлена поддержка (точнее трансляция в из SCSI в ATA) команды SCSIOP_MEDIUM_REMOVAL для не-ATAPI устройств.
  • Исправлена ошибка в коде поддержки старых жестких дисков, которые на сбрасывают DRQ после окончания передачи данных.
  • Исправлен ряд ошибок в коде инициализации устройств. Там была путаница с наследованием ограничений скорости передачи данных в иерархии дескрипторов controller-channel-device.
  • Улучшен код переключения между режимами PIO/DMA.
    2005.10.14
    Release Версия 0.31f (rar/tgz) — 80.4 Kb/96.4 Kb.
    и исходники 0.31f (rar/tgz) — 166.9 Kb/207.4 Kb.
    Debug Версия 0.31f (rar/tgz) — 190 Kb/232.3 Kb.
  • Исправлена ошибка в .INF файле для NT4. UniATA устанавливался как System Bus Extender, а disk.sys надеялся, что загрузится хотя бы 1 SCSI miniport. В результате система не грузила disk.sys и не могла найти свой boot device. Спасибо Axxie.
  • Сделал более стандартный метод вычисления логической геометрии. Для лучшей совместимости с предыдущими версиями в Registry settings добавлена возможность указать этот метод вручную. Подробности читайте в описании параметра GeomType.
  • Вместе с Debug версией теперь идет отладочная информация в виде .PDB. Кроме того, для Release .PDB тоже автоматически создается при сборке.

    2005.04.22
    Release Версия 0.31d (rar/tgz) — 80.1 Kb/96.1 Kb.
    и исходники 0.31d (rar/tgz) — 166.2 Kb/206.7 Kb.
    Debug Версия 0.31d (rar/tgz) — 111.8 Kb/131.6 Kb.
    Исправлен еще ряд ошибок в коде обработки неправильного адреса устройства на шине.
    2005.04.09
    Debug Версия 0.31c (rar/tgz) — 111.8 Kb/131.6 Kb.
    Release Версия 0.31c (rar/tgz) — 80.1 Kb/96.1 Kb.
    и исходники 0.31c (rar/tgz) — 166.3 Kb/206.6 Kb.
    Исправлена ошибка в коде проверки правильности адреса на шине. Написал ‘>’ вместо ‘>=’. Как следствие — crash при обращении к несуществующему каналу N2 (это тот, что идет после N0 и N1).
    2005.04.05
    Release Версия 0.31b (rar/tgz) — 80.1 Kb/96.1 Kb.
    и исходники 0.31b (rar/tgz) — 166.1 Kb/206.5 Kb.
    Debug Версия 0.31b (rar/tgz) — 111.8 Kb/131.6 Kb.

  • Расширил Registry settings для управления поддерживаемыми устройствами. Теперь можно отдельно включать/выключать поддержку PCI, ISA, ISA/PCI Compat, MCA.
  • Также в отладочных целях добавлена возможность выдачи Debug-сообщений прямо на синий экран
  • В список устройств добавлено HiNT VXPro II. Правда, мы с ним пока еще не работаем 🙂
    Note: не устанавливайте Debug версию в Win 2000 и старше без DbgPrint Dump, настроенного следующим образом: 2005.03.04
    Версия 0.31a (rar/tgz) — 80 Kb/96 Kb.
    и исходники 0.31a (rar/tgz) — 165.9 Kb/206.3 Kb.
  • Нашел и исправил неинициализированую структуру. Это был DEVICE_EXTENSION (в который входят перемынные состояний каналов, подключеных устройств и обработчиков прерываний. На большинстве машин, участвовавших в тестировании там изначально были нули. А вот на некоторых (достоверно известна только одна машинка, за что спасибо Axxie), память была уже чем-то заполнена.
  • Также поступило интересное сообщение от Mike. У него UniATA работает на ICH4 в NT4+sp6a.
    2005.03.04
    Версия 0.31 (rar/tgz) — 79.6 Kb/95.6 Kb.
    и исходники 0.31 (rar/tgz) — 165.1 Kb/205.4 Kb.
  • Полностью переписан код по борьбе с ATAPI устройствами, генерирующими INTR не сбрасывая BSY. Thanks to Root за терпение при тестировании 🙂
  • Исправлена последовательность действий по отправке ATAPI команд. В одном месте не сбрасывался interrupt status, а в другом слишком рано разрешались прерывания.
  • Добавлен сброс interrupt status при сбросе контроллера. На всякий случай.
  • Еще немного расширил Registry settings и исправил ряд глюков
    2005.02.20
    Debug Версия 0.30i (rar/tgz) — 101.6 Kb/119.8 Kb.
    Версия 0.30i (rar/tgz) — 79.2 Kb/95.2 Kb.
    и исходники 0.30i (rar/tgz) — 164.2 Kb/204.5 Kb.
  • Исправлен глюк (тормоза) в сбросе кэша винта при shutdown’е.
  • Влил в .INF еще одно исправление от Root
  • Добавлен экспериментальный код (взято из свежей FreeBSD) для борьбы с ATAPI устройствами, генерирующими INTR не сбрасывая BSY. Thanks to Root
  • Добавлен код для борьбы со следующим глюком SCSIPORT.SYS в NT4: если первая попытка инициализировать Compatible Mode IDE контроллер заканчивается ошибкой при проверке правильности списка запрошеных ресурсов, не сбрасывается флаг, говорящий о том, что этот контроллер уже инициализирован. В результате вторая попытка не проходит, т.к. драйвер видит, что контроллер уже кем-то занят. Thanks to Vitaliy Vorobyov aka deathsoftX@yandex.ru (remove X) за обнаружение и исправление.
  • Расширил и нормально задокументировал Registry settings
  • Снова выложена специальная Debug-версия с включенными логами.
    2005.02.08
    Debug Версия 0.30h (rar/tgz) — 99.9 Kb/118.2 Kb.
    Версия 0.30h (rar/tgz) — 78.3 Kb/94.3 Kb.
    и исходники 0.30h (rar/tgz) — 162.6 Kb/202.7 Kb.
  • Убрал слишком длинное ожидание готовности устройства в случае возникновения ошибки.
  • Сделал сброс кэша винта при shutdown’е.
  • Влил в .INF исправление от Root, может теперь глючить перестанет 🙂
  • В atactl.exe добавлена возможность reset’а отдельного устройства — ключ -r. Полезно при повисании ATAPI устройств.
  • Также выложен специальная Debug-версия с включенными логами.
    Note: не устанавливайте эту версию без DbgPrint Dump, настроенного следующим образом: 2005.01.30
    Версия 0.30g (rar/tgz) — 78.2 Kb/93.8 Kb.
    и исходники 0.30g (rar/tgz) — 161.5 Kb/201 Kb.
  • Обнаружил и исправил глюк: в некоторых ситуациях драйвер пытался перепрограммировать режим передачи данных одного из устройств на IDE канале, в то время как второе устройство обрабатывало команду. Это также иногда проявлялось при поступлении новой команды в очередь. Выражался глюк очень просто: система висла намертво.
    На моей машине устойчиво проявлялось только в очень специфических условиях. Но это при том, что на каждом IDE канале висит только одно устройство. При наличии 2х устройств все могло вылазить еще при загрузке ОС.
  • Похоже, что LBA48 уже работает нормально. А вот Intel ICH4 — все еще нет 🙁
    2005.01.16
    Версия 0.30e (rar/tgz) — 78.1 Kb/93.8 Kb.
    и исходники 0.30e (rar/tgz) — 160.9 Kb/200.4 Kb.
    Еще ряд исправлений в LBA48:
  • забыл установить бит IDE_USE_LBA при использовании LBA48 адресации
  • не было поддержки LBA48 для команды IDE_VERIFY — проверка поверхности
  • не всегда правильно обрабатывался READ NATIVE MAX LBA/SET MAX LBA
    а также полезное дополнение:
  • сделана утилика atactl.exe, позволяющая получать список IDE, SCSI и RAID контроллеров, а также информацию о подключенных к ним устройствах. Если в системе установлен драйвер UniATA, с помощью atactl.exe можно менять режим передачи данных для произвольного IDE/ATAPI устройства (PIO, DMA, UDMA).
  • немного оптимизирован код установки DMA режима для различных контроллеров. В результате удаления дублирующегося кода (см. ф-цию AtaSetTransferMode()) обнаружилось несколько несоответствий режима работы ATA/ATAPI устройства и контроллера.
    2005.01.02
    Версия 0.30c (rar/tgz) — 69.8 Kb/75.1 Kb.
    и исходники 0.30c (rar/tgz) — 148.6 Kb/176.8 Kb.
  • Исправил глюк в поддержке LBA48 — т.е. дисков объемом больше 128Gb. Проблема была в коде определения реального размера винта и смены логической геометрии. Некоторые винты после reset’а ограничивают свой размер до 32Gb (например мой Seagate Barracuda IV 40) или до 128Gb (живых примеров не знаю). И есть команды READ_NATIVE_LAST_LBA/SET_MAX_LBA, которыми винт можно перевести в нормальное состояние (полный объем). Плюс для винтов > 128Gb появились их 48-битные братья. А я и не знал 🙁 Получилось, что винт перепрограммировался на 128Gb.
    Огромное спасибо Александру Спелицину — spelX@mail.ru (remove X) за тестирование на 160Gb винте да еще и со старым контроллером — i440BX.
  • Исправил глюк в обработке флага UNIATA_NO_DPC_ATAPI — обход глюка с повисанием CMD-649 при подключении некоторых новых CD/DVD-приводов.
    2004.12.27
    Версия 0.30a (rar/tgz) — 67.9 Kb/72.5 Kb.
    и исходники 0.30a (rar/tgz) — 146.4 Kb/173.7 Kb.
  • Уже в который раз переписан код поддержки Intel ICH4. Точнее говоря, я вернул его к тому состоянию, в котором все как будто хорошо работало. Пока ничего не обещаю, посмотрим на результаты тестирования.
  • Пока нет правильной, идеологичной и 100% работы с ScsiPort драйвером, сделан хитрый workaround. А именно — пробуем инициализировать основной Onboard IDE controller 2-мя способами (хаки, о которых я писал раньше и жаловался, что на разных машинах по необяснимым причинам одни работают а другие нет). Пока опыт показывает, что хотя бы 1 из них работает. Опять таки — посмотрим.
    2004.12.05
    Версия 0.29j (rar/tgz) — 67.6 Kb/72 Kb.
    и исходники 0.29j (rar/tgz) — 145.5 Kb/172.6 Kb.
  • Багфикс в коде распознавания SiS контроллеров. Там вообще интересный алгоритм опознания. Есть 1 PCI IDE Controller c навечно прибитым гвоздями DeviceId/VendorID. И есть еще всякие Bridge Devices, по наличию которых определяется, что это за IDE Controller. Это так как и у VIA. А вот для еще некоторых моделей есть хитрая проверка: У IDE контроллера меняется 1 байт в PCI Config Space и проверяется, не изменился ли у него DeviceID (!). (Вообще, смена DeviceID на лету — это какой-то бред, но она таки происходит на некоторых SiS’ах и в частности на Mike’овском). Проблема была в том, что при переносе кода я потерял строчку, которая после проверки восстанавливает этот самый байт.
    Спасибо Mike’у за терпение в тестировании глючных версий и отправку вот таких баг-репортов (181 Kb).
    Так что пробуем.
    2004.09.21
  • Устранено еще несколько ошибок в коде для Intel, Acer и еще каких-то контроллеров. Довольно глупый баг оказался: поставил break в switch/case вместо return. В результате, после успешного перевода контроллера в UDMA режим, вызывался default код для переключения устройства (не контроллера!) в PIO-0.
  • Улучшена поддержка SiS контроллеров. за что большое спасибо Ivano Guerra. И конечно же, все это предстоит еще проверить на практике. Предлагается на пробу Версия 0.29i3 (rar/tgz) — 67.6 Kb/72 Kb.
    и исходники 0.29i3 (rar/tgz) — 144.9 Kb/171.9 Kb.
    2004.09.08
    Все в том-же коде поддержки Intel‘овских контроллеров ICHxxx найден еще баг. Похоже что по моему недосмотру. Приводит к повреждению данных на диске. Так что выход v29i отменяется до устранения.
    2004.08.26
    Версия 0.29i (rar/tgz) — 144.4 Kb/171.2 Kb.
  • В коде поддержки Intel‘овских контроллеров найден баг. Баг этот был скопирован из FBSD 5.2.1 (и все еще там присутствует). Я внимательно сравнил с очень старой версией и обнаружл, что в 16-битный регистр (PCI Config Space 0x54) записывается 32-битное значение (0x10000 Версия 0.29h (rar/tgz) — 66.9 Kb/71.4 Kb.
    и исходники 0.29h (rar/tgz) — 143.6 Kb/170.3 Kb.
  • Переписан код поддержки Intel‘овских контроллеров. Надеюсь, то что работало раньше работать не перестанет, а ICH4 — наконец-то заведется.
  • Перетянута поддержка еще целого ряда контроллеров из FBSD 5.2.1.
  • Исправил глюк в device include/exclude registry settings.
  • Сделана поддержка simplex-mode. Это когда IDE каналы работают поочереди. Для некоторых контроллеров этот режим просто необходим. Помимо автоопределения, simplex-mode может быть включен при помощи значения Registry DWORD:ForceSimplex в ключе HKLM\System\CurrentControlSet\Services\UniATA\Parameters или в подключе, специфичном для данного контроллера.
  • Сделана поддержка IDE устройств, отдающих в неактивном состоянии статус 0x40 (IDE_STATUS_DRDY) вместо привычных 0x50 (IDE_STATUS_IDLE). Такое нблюдалось в последней версии VMWare (4.5.1 build-7568). Спасибо Виталию за информацию и тестирование.
  • Переписан код балансировки загрузки IDE каналов (в simplex-mode) и устройств, подключенных к одному канало.
    2004.08.01
    Версия 0.29d (rar/tgz) — 62.4 Kb/66 Kb.
    и исходники 0.29d (rar/tgz) — 135.9 Kb/160.1 Kb.
  • Наконец-то разобрался, что за проблемы были при подключении некоторых новых CD/DVD-приводов к контроллерам CMD-64x. Висла винда при загрузке (и с моими дровами и XP с MS’овскими). Те же самые CD замечательно работали на onboard VIA IDE. Стал разбираться — оказалось виноват код, делающий Reset контроллера после опроса устройств. После этого (возможно еще из-за того, что DVD стоял slave, а драйвер перед окончанием инициализации принудительно выбирал master). Убрал — все зажужжало. Этот глючный код был взят из стандартного atapi драйвера еще от NT4, и по всей видимости MS его не меняла в новых виндах.
  • Проверил под XP. Работает, но PNP (и как следствие hibernate) с UniATA пока несовместимы. В w2k — то же самое. Буду разбираться.
    2004.06.05
    Версия 0.29c (rar/tgz) — 61.6 Kb/65.2 Kb.
    и исходники 0.29c (rar/tgz) — 133.9 Kb/157.9 Kb.
  • Исправлен код для работы с VIA 8235 и VIA 8233A. На сей шаг меня сподвигли дивные глюки, наблюдавшиеся на машинке VIA 8235. Тормозит, и работает с переменным успехом (данные то читаются, то нет). Посмотрел последнюю версию ATA дров от FBSD. Там никаких особенностей для этого контроллера. Зато в форумах стоит ругань на глюки с UDMA на VIA 8235. Посмотрел в Linux’е и уведел, что именно для VIA 8235 и VIA 8233A не перепрограммируется регистр PCI 0x4с. Я сделал точно также. Жалко только, что проверить пока не могу.
  • Еще при пересмотре кода увидел, что как-то неправильно (не так, как в FBSD’шном) оригинале вычислялся номер регистра для установки режима на Secondary channel в SiS’ах. Тоже поправил.
    2004.06.02
    Версия 0.29a (rar/tgz) — 61.1 Kb/64.7 Kb.
    и исходники 0.29a (rar/tgz) — 133.5 Kb/157.5 Kb.
  • Добавлена поддержка кучи новых контроллеров. Особенно это коснулось SiS и Promise.
  • Сделаны device/vendor-specific настройки в Registry.
    В ключе HKLM\System\CurrentControlSet\Services\UniATA можно создавать следующую иерархию ключей с настройками.
    Paramaters — наиболее глобальные настройки.
    Paramaters\Ven_VVVV — где VVVV — код производителя (см. PCI Dump)
    Paramaters\Ven_VVVV\Dev_DDDD, DDDD — код устройства. См. туда же.
    Paramaters\Ven_VVVV\Dev_DDDD\Slot_XXXXXXXX, XXXXXXXX — адрес на шине PCI.
    По хорошему. нужно было бы сделать удобный кофигуратор.
  • Сделаны Include/Exclude опции. Теперь можно создать DWORD значение с именем Include или Exclude в указанных выше ключах для включения/выключения UniATA на определенных контроллерах.
    2004.04.08
    Версия 0.29b (rar/tgz) — 61.5 Kb/65.1 Kb.
    и исходники 0.29b (rar/tgz) — 133.8 Kb/157.8 Kb.
  • Поправил файлики OEMSETUP.INF и TXTSETUP.OEM. Успешно добавил UniATA во время установки w2k и поставил ее на винт, подключеный к CMD649 IDE контроллеру. Надо сказать, что w2k сама по себе об этом контроллере ничего не знает. Из этого я сделал вывод, что теперь эти файлы правильные. Enjoy.
    2004.05.19
    Версия 0.28 (rar/tgz) — 58.3 Kb/61.8 Kb.
    и исходники 0.28 (rar/tgz) — 127.2 Kb/149.1 Kb.
  • Исправлен код включения/выключения прерываний (раньше работал только для Primary канала).
  • Наконец-то окончательно убрана зависимость поддержки DMA от системного ScsiPort драйвера. Теперь UniATA самостоятельно транслирует виртуальные адреса в физические (что необходимо для работы DMA). За счет этого во первых ушла потребность в использховании хакерских методов при инициализации (приходилось прикидываться PCI устройством, имея на самом деле ISA интерфейс). А во вторых, ушло копирование данных между DMA буфером и пользовательским.
    2004.02.24
    Версия 0.27a (rar/tgz) — 58.2 Kb/61.9 Kb.
    и исходники 0.27a (rar/tgz) — 124.7 Kb/147.6 Kb.
  • Исправлен код обработки ошибок для ATAPI устройств (CD-ROM/RW, etc.). На некоторых устройствах после получения ошибки необходимо дождаться установки бита DRQ в регистре статуса.
    2004.01.20
    Версия 0.27 (rar/tgz) — 58.3 Kb/61.8 Kb.
    и исходники 0.27 (rar/tgz) — 125.5 Kb/147.1 Kb.
  • Thanks to Vitaliy Vorobyov aka deathsoftX@yandex.ru (remove X).
    Исправлен код инициализации для NT4+SP6a
  • Thanks to Vitaliy Vorobyov again, за переписывание INF. файла для NT4.
  • Код, использующий задержки, вынесен из обработчика прерываний (ISR) в отдельный поток (DPC).
    2004.01.16
    Версия 0.26c (rar/tgz) — 55.8 Kb/59 Kb.
    и исходники 0.26c (rar/tgz) — 120.7 Kb/141.4 Kb.
  • Исправил код обработки ошибок передачи данных в DMA режиме. Предыдущие версии вешались наглухо в такой ситуации. Как показал эксперимент, проблема состояла в том, что после ошибки необходимо дождаться сигнала готовности от HDD перед повторным исполнение команды.
    Отдельное спасибо Alex Y. Matiash за сообщение об ошибке.
  • Исправил код обработки прерывания для CMD 649 и CMD 648 контроллеров
    2003.12.26
    Версия 0.26 (rar/tgz) — 55.7 Kb/59 Kb.
    и исходники 0.26 (rar/tgz) — 119.3 Kb/140 Kb.
  • Отключил поддержку Promise и HighPoint RAID по умолчанию, так как RAID мы пока не умеем.
    Оставил возможность работать с этими контроллерами как с обычными 2-канальными ATA контроллерами. Включается ключиком
  • Добавил в дистрибутив утилитку для пересборки .INF-файла для w2k, которая сканирует PCI устройства и добавляет в список совместимые, но не вошедшие в список (на момент сборки драйвера) IDE контроллеры.
    2003.09.23
    Версия 0.26b (rar/tgz) — 55.8 Kb/59 Kb.
    и исходники 0.26b (rar/tgz) — 120.6 Kb/141.2 Kb.
  • Исправил глюк при работе DMA на некоторых видах CD-ROM’ов.
    2003.11.08
    Версия 0.25f (rar/tgz) — 36.9 Kb/38.6 Kb.
    и исходники 0.25f (rar/tgz) — 100.6 Kb/119.1 Kb.
    2003.09.12
    Версия 0.25e (rar/tgz) — 164.3 Kb/200.1 Kb.
  • Исправлена бага, из-за которой под w2k не работал второй канал onboard контроллеров. Проблема состояла в том, что NT4 позволяла в процессе инициализации обходными путями зарегистрировать 2 PCI устройства, имеющих одинаковые адреса на PCI шине, но использующих разные системные ресурсы (порты ввода/выводи и прерывания). В w2k такой фокус не работает, поэтому там создается одно устройство, использующее два прерывания.
  • Добавил поддержку для AdapterControl — включение/выключение контроллера прерываний по желанию операционной системы (w2k и старше).
  • Тестирование показало, что функциональность PnP под w2k пока не работает. Основная трудность — для поддержки PnP необходимо создать в Registry и установочном .INF файле список поддерживаемых устройств. Это плохо сочетается с универсальностью. Возможно будут сделаны утилиты, создающие/ пополняющие .INF файл и/или записи в Registry на основе результатов опроса PCI шины. Возможно также придется создать 2 сервиса, использующие один uniata.sys, но в разных режимах:
    — один в PnP для фиксированного (с точки зрения операционки) списка устройств
    — второй в Legacy режиме, который будет подхватывать все остальные контроллеры
    2003.09.01
    Версия 0.25a (rar/tgz) — 157.5 Kb/192.6 Kb.
  • Оказалось, что работать с onboard контроллерами мешал PciIde.sys, который как раз такими контроллерами и занимается. Поэтому я сделал простенький BAT-файл, который копирует UniATA.sys, создает необходимые ключи в Registry и отключает загрузку PciIde.
    Теперь работает и в w2k .
  • Навел порядок в readme файлах. Они теперь есть для w2k (readme_w2k.txt) и NT4 (readme_nt4.txt), плюс сохранена старая версия (readme_nt4_old.txt). Все это переехало в каталоги XXX_Dist.
    2003.08.24
    В процессе прикручивания поддержки w2k обнаружил, что даже довольно старые версии работают в этой самой w2k. Но к сожалению только с дополнительными контроллерами. Сейчас думаю, как бы обмануть стандартный для w2k/XP IDE miniport, чтобы он не пыталься работать с onboard (Compatible Mode) IDE.
    2003.07.12
    Версия 0.25 (rar/tgz) — 155.2 Kb/187.5 Kb.
  • Добавлена поддержка Acard и nForce2 IDE контроллеров.
  • Исправлены неточности в коде поддержки DMA для Promise IDE.
  • Сделана проверка использования DMA перед обращением к регистрам контроллера. 2003.06.03
    Версия 0.24 (rar/tgz) — 153.1 Kb/185.2 Kb.
  • Отключена поддержка DMA для ATAPI устройств на контроллерах ServerWorks. Не работает 🙁
  • Исправлена бага с попыткой использованя SET_GEOMETRY на оччень старых винтах
  • Нормально отрабатывается ситуация с поддержкой DWordIO (32bit) на тех же оччень старых винтах. Утверждают, что умеют. Обманывают.
  • Пробовал под w2k. Не работает. 2003.02.15
    Версия 0.23e (rar/tgz) — 152.8 Kb/184.9 Kb.
  • Добавлен код для правильной работы с некоторыми устройствами (Yamaha-CRW2100), имеющими привычку генерировать Unexpected Interrupt в процессе инициализации (несколько позже, чем можно было предположить).
    2002.11.25
    Версия 0.23d (rar/tgz) — 152.8 Kb/184.9 Kb.
  • Исправлена бага в .INF файле
  • .INF файлы вместе с uniata.sys уехали в Debug_Dist и Release_Dist директории
  • в idedma.mak добавлен новый target PKG c параметром VER. Например текущая версия вместе с дистрибутивами собиралась так:
    nmake PKG VER=»23d_ok»
  • сделана новая инструкция по инсталяции (внутри архива).
    2002.11.14
    Версия 0.23c (rar/tgz) — 155.4 Kb/188.9 Kb.
  • Исправлена жирная бага, способная ронять машину при исполнении DSC-restrictive commands (Таких как SEEK, PLAY_CD, immediate LOAD/UNLOAD, etc.). Обнаружилась при попытке послушать Audio-CD. Эта же бага могла приводить к неработоспособности сдвоенных контроллеров. (Это когда несколько IDE каналов видятся через одно PCI устройство).
  • .INF файлы уехали в Debug и Release директории для инсталляции соответствующего build’а
    2002.11.04
    Версия 0.23 (rar/tgz) — 147.3 Kb/176.6 Kb.
    Только брать ее не надо, она глючная ;). Есть 0.23b BusMaster_v23b_ok.rar/tgz (148.9 Kb/198.7 Kb) , которая хорошая, но я ее еще не принес.
    Уже принес. Вот она — BusMaster_v23b_ok.rar
  • Оптимизирован по размеру код инициализации большинства контроллеров.
  • Сделаны независимые очереди команд для Master и Slave устройств. Теперь command reordering осуществляется для каждого конкретного устройства более эффективно. Очередь, из которой выбирается следующая команда определяется по отдельному алгоритму. Пока учитывается только размер очереди, но в ближайшее время я планирую сделать нечто более умное.
  • Сделан инсталяционный .INF файл (лежит в директории Dist) 2002.10.11(29)
    Версия 0.22b (rar/tgz) — 146.1 Kb/173.5 Kb.
    Немного менее глюкавая
  • Исправлен код инициализации VIA-compatible chipsets. Теперь нормально отрабатывается вариант неизвестной версии (Revision Id) контроллера.
  • Исправлен код инициализации некоторых указателей при поиске контроллеров. Иногда они оказывались NULL’ами.
  • Написан человеческий механизм уменьшения скорости передачи при высоком CRC Error-rate. Теперь не падаем сразу в PIO, а плавно снижаем скорость. Если обнаруживается, что ошибок намного меньше в каком-то определенном режиме, устройство окончательно переводится в этот режим и не поднимается выше. Это решает trouble с использованием 40-проводникового кабеля вместо 80 для устройств, понимающих UDMA66+, но не устанавливающих бит, соответствующий типу кабеля в IDENTIFY_INFORMATION. 2002.10.10
    Опять Ура! Получилась новая версия BusMaster_v21d_ok.rar/tgz (87.8 Kb/108.2 Kb) (v 0.21d). Буду очень признателен всем, кто возьмет потестить и расскажет, где оно работает, а где не очень (у меня дома — работает. В качестве единственного драйвера для onboard и additional PCI IDE контроллеров. Вместо atapi.sys и прочего).
  • Добавлено DMA/UDMA для ATAPI устройств.
  • Очень поменялась идеология работы с контроллерами, предоставляющими достум к обоим каналам через 1 PCI устройство. При проектировании NT в идеологию не была заложена возможность параллельной работы 2х каналов на 1 устройстве. Пришлось пользоваться обходными путями (Создавать дополнительный DeviceObject, который бы во время обслуживания одного канала ловил прерывания от другого и складывал их в очередь).
  • Сделана сортировка запросов при помещении в очередь. Теперь быстрее работает сканирование больших деревьев директорий, даже при параллельном доступе (6.00 минут -> 5.30). Пробовал мерять для простого копирования — результаты неустойчивые при более-менее одинаковых условиях. Буду еще эксперементировать с методом сортировки. 2002.09.16
    Ура! Получилась работающая версия BusMaster_v13b_ok.rar/tgz (97.4 Kb/112.6 Kb) (v 0.13b). умеющая DMA.
  • Собственно запущен DMA engine .
  • Поправлен механизм инициализации Primary/Secondary на одном контроллере.
  • Добавлена поддержка Generic DMA (Single Word DMA, mode 0) на случай, если другое режимы не инициализируются (например на неизвестном типе контроллера). Согласно спецификации, BusMaster должен автоматически переводиться в этот режим после включения питания или reset’а.
  • Уменьшено с 5 до 0.05 секунд время ожидания ответа от устройства в обработчике прерывания. Это очень неправильно — блокировать прерывания / переключение thread’ов при повисшем устройстве. Особенно учитывая тот факт, что без этого можно (и даже, согласно рекомендациям Microsoft, нужно) обходиться. 2002.06.25
    Версия 0.9 (rar/tgz) — 54.1 Kb/62.1 Kb.
  • Сделан идеологически правильный алгоритм поиска и инициализации устройств.
  • Исправлены баги с инициализацией MasterIde controller (это тот, что onboard и обычно работает через ISA-to-PCI bridge). Как оказалось, работать с этим счастьем через PCI шину нельзя. Контроллер виден, но IRQ и IO-range для него не выделены (подозреваю, что сделано для какой-то совместимости). Вместо этого следует пользоваться стандартными IRQ/IO-rangres:
      Primary channel — IRQ 14 / IO 0x1f0
      Secondary channel — IRQ 15 / IO 0x170

    2002.06.01

    По дороге обнаружил интересную вещь: некоторые винты (в частности мой Seagate Barracuda ATA 4) by default занижают свой размер до 32Gb, что требует использования специальных команд для правильного определения размера (см. спецификации, keyword=»READ/SET NATIVE MAX LBA»)

    Читайте также:  Kinect xbox 360 sdk для windows 10
  • Оцените статью