SATA в режиме IDE - полная поддержка

Internal structure and you change requests/suggestions
  • Имеется PATA диск обьёмом около 300 гиг. Стоит в старом компе на i815 чипсете+. К сожалению комп подключен к телевизору через HDMI и в VESA режиме ничего не видно будет.
    UnКайF - это некоторое число такого же размера, как указатель. Что оно означает, знает только ядро. Драйвер может только передавать его ядру, когда хочет что-нибудь сделать. (c) CleverMouse
  • Mario_r4
    Не используй sti.
    pushfd
    cli
    ...
    ...
    popfd
  • eBox-3310MX с подключенным SATA SSD диском на 16GB (KingSpec KSD-SU25.1-016MJ) стал зависать при определённых настройках BIOS. До этого изменения, при всех настройках работало. Прилагаю boardlog + pcidev + фото BIOS при тех настройках, при которых работает. А если поменять одну строчку (IDE Operate Mode) с Legacy Mode на Native Mode, то через несколько секунд после загрузки зависает (лог снять не хватает времени). Но как раз именно с Native Mode работает Windows.
    Spoiler:
    2013-06-26_01.19.56.jpg
    2013-06-26_01.19.56.jpg (139.03 KiB)
    Viewed 22750 times
    2013-06-26_01.20.14.jpg
    2013-06-26_01.20.14.jpg (124 KiB)
    Viewed 22750 times
    Для тех, кто не в курсе, замечу, что на самом деле eBox имеет только PATA контроллер, но так как PATA-диски ушли в прошлое, производитель eBox добавил ещё и PATA->SATA bridge, через который, собственно, и подключаются SATA диски.
    Attachments
    Downloaded 617 times
    Downloaded 580 times
  • eBox-3310MX: Лог board + pcidev при тех настройках BIOS, при которых зависает после загрузки если вставить SATA диск. Логи были сняты, естественно, без диска.
    Attachments
    Downloaded 567 times
    Downloaded 547 times
  • award 6.00pg
    mb sapphire am2rd790fx (790fx/sb600)
    hdd0 wd 80 gb ide
    hdd1 samsung 80 gb sata
    hdd2 samsung 200 gb sata
    dvdrw samsung sata

    Настроек на sata-контроллер лишь три - native ide/legacy ide/raid
    В native видны только sata устройства,в legacy лишь ide hdd
    Attachments
    LEGACY.rar (1.79 KiB)
    Downloaded 569 times
    NATIVE.rar (1.82 KiB)
    Downloaded 569 times
    Кристофер Робин сел в «Форд» и взмахнул кнутом…
  • X-Ray wrote:award 6.00pg
    mb sapphire am2rd790fx (790fx/sb600)
    hdd0 wd 80 gb ide
    hdd1 samsung 80 gb sata
    hdd2 samsung 200 gb sata
    dvdrw samsung sata

    Настроек на sata-контроллер лишь три - native ide/legacy ide/raid
    В native видны только sata устройства,в legacy лишь ide hdd
    А какая из больших ОС используется и при какой настройке есть доступ ко всем дискам в большой ОС?

    З.Ы. Забавно, что собственно AHCI контроллера ни в каком режиме не видно, и похоже что это два IDE контроллера, которые на шине PCI меняются местами в зависимости от настройки. Похоже придется таки вводить таблицу на минимум два контроллера, а так не хотелось. Ведь еще и HD диски выше 4-го придется делать.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Win XP. В режиме native видно все диски,в legacy сейчас проверю (если смогу снова подключиться к соседскому роутеру,карта лагает,гребанный ralink)
    Кристофер Робин сел в «Форд» и взмахнул кнутом…
  • SVN r.3706
    1) Добавлена LBA48 запись для PIO режима.
    DMA по прежнему только для контролеров 0180 (т.е. исходных PATA IDE) и до 128 Гб.

    2)
    Serge wrote:Mario_r4
    Не используй sti.
    pushfd
    cli
    ...
    ...
    popfd
    Сделано.

    3)
    hidnplayr « Tue Jun 25, 2013 9:00 am » Mario_r4: Just so you know,

    Code: Select all

    movzx eax,[IDE_BAR0_val]
    DEBUGF 1, "K : BAR0 %x \n", eax
    can also be written as

    Code: Select all

    DEBUGF 1, "K : BAR0 %x \n", [IDE_BAR0_val]:1
    Также сделано с некоторыми коррекциями.
    Done! Thanks!
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Интернет-таки отвалился(
    В режиме legacy win xp заново нашел дисковод dvd-rw (sata) и два ide-контроллера,изменений никаких нет.
    Кристофер Робин сел в «Форд» и взмахнул кнутом…
  • X-Ray wrote:Интернет-таки отвалился(
    В режиме legacy win xp заново нашел дисковод dvd-rw (sata) и два ide-контроллера,изменений никаких нет.
    Тогда мои размышления были правильные и два контроллера просто меняются местами на шине PCI. Я буду заниматься доработкой поддерживающей одновременно более одного контроллера немного позже.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Скорее контроллеры меняются функциями, а не местами. А то что второй переключается в режим совместимости при использовании настройки NATIVE, так это скорее всего как раз ради экономии IRQ-линий, чтобы можно было использовать IRQ14/15. Задействовать IRQ14/15 под что-либо еще сложно, а часто и невозможно. На моем компе второй контроллер не может работать в режиме совместимости (байт интерфейса 85h), поэтому он при любых настройках работает в нативном режиме и забирает под себя доп. IRQ-линию. Хотя в принципе можно разделять одну IRQ-линию между несколькими контроллерами, работающими в нативном режиме.
  • Phantom-84 абсолютно прав.

    По крайней мере во всех AMD-чипсетах один контроллер SATA, но в зависимости от BIOS-настройки он представляется системе как IDE, AHCI или RAID.
    Spoiler:The SB800 SATA will have different device IDs for different drivers, because they are
    totally different devices from the driver point of view. It’s not sufficient for the OS to know
    whether to load IDE, AHCI, or RAID driver. In a non-fresh installed condition, Windows
    will match the 4 IDs (vendor ID, device ID, sub-system ID and sub-vendor ID) first, and if
    they are matched, it will load the driver and will not check the sub-class code. This will
    cause blue screen in WinXP if SATA RAID driver is loaded, SATA controller is in IDE
    mode, and device ID is shared.
    кстати, BIOS-настройка может быть очень легко изменена при старте ядра.
    Spoiler:1. Enable the subclass code register (PCI config register 0Ah) and the program interface register (PCI config register 09h) to be programmable
    SATA_PCI_config 0x40 [0] = 1

    2.Program SATA Controller mode in
    a) IDE mode, or
    SATA_PCI_config 0x09 = 0x8F (default)
    SATA_PCI_config 0x0A = 0x01
    b) AHCI mode, or
    SATA_PCI_config 0x09 = 0x01
    SATA_PCI_config 0x0A = 0x06
    c) RAID mode
    SATA_PCI_config 0x09 = 0x00
    SATA_PCI_config 0x0A = 0x04

    3. Clear the bit to convert the subclass code register to be a read-only register.
    SATA_PCI_config 0x40 [0] = 0
    Поскольку 9-й и 10-й байты конфигспейса просто отображают функцию устройства, такой финт может сработать и в других чипсетах (а вот регистр 0х40 в PCI-стандарте не определен, так что на интелах выключатель может сидеть где-то в другом месте).
  • SVN r.3712
    1) Поддержка LBA48 для чтения и записи в режиме DMA, для жестких дисков.
    2) Чистка и оптимизация кода

    Промежуточные итоги:
    1) Теперь стандартные PATA контроллеры 0180 и 018A поддерживают LBA48 в режимах PIO и DMA.
    2) Также SATA контроллеры 0185 и 018F в режиме эмуляции IDE поддерживают LBA48 в режиме PIO.

    Задачи на будущее:
    1) Система пока не умеет работать с прерываниями отличающимися от 14 и 15, потому собственно только PIO для SATA IDE. Собственно в этом сама задача - написать код работы с нестандартными прерываниями.
    2) Система пока не умеет работать с более чем одним физическим контроллером на шине PCI. Соответственно задача реализовать таблицу контроллеров и написать весь прочий код.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • art_zh wrote:но в зависимости от BIOS-настройки он представляется системе как IDE, AHCI или RAID.
    Это само собой. Правда, я имел в виду немного другое, а именно изменения, происходящие с двумя PCI IDE-контроллерами в логах X-Ray при изменении настройки LEGACY/NATIVE.

    Mario_r4 прав, SATA-контроллер может отображаться в виде двух PCI IDE-, хотя на данной материнке есть IDE-порт, а значит наверняка и обычный PCI IDE-контроллер, который может быть одним из двух видимых PCI IDE-.
  • Who is online

    Users browsing this forum: No registered users and 4 guests