Serial ATA

Drive subsystem, filesystem drivers
  • Serge
    > В смысле через BIOS ? Драйвер ищет контроллеры на PCI шине и видет всё что не отключено.
    Какой драйвер? Я знаю только про ядро (detect/dev_hdcd.inc:SendCommandToHDD и fs/fs_lfn.inc:fs_OnHd*), которое при определении IDE-дисков и не думает про PCI.
  • diamond

    Я имею ввиду что драйвер будет искать контроллеры через PCI.
    Кстати ядро тоже ищет контроллер через PCI
    Это из bootcode
    ; \begin{Mario79}
    ; find HDD IDE DMA PCI device
    ; check for PCI BIOS
  • Serge
    Но общаться-то с устройством драйвер ведь будет через порты? Вот о них и речь. Базовый порт (не знаю точно, что именно подразумевается под этим в случае нескольких диапазонов ввода/вывода, но полагаю, что с этим можно разобраться) выдаёт BIOSовская функция и может выдавать драйвер - поэтому обсуждение и зашло о том, что в действительности драйвер должен выдавать.

    А этот код из bootcode.inc ищет PCI-устройство, соответствующее контроллеру DMA, а вовсе не сами жёсткие диски.
  • >А этот код из bootcode.inc ищет PCI-устройство, соответствующее контроллеру DMA, а вовсе не сами жёсткие диски.

    Так и я о том же. Сначала надо найти контроллер. Он может работать в legacy mode через порты 0x1F0 и т.д или в native mode, тогда там совсем другие порты и линия irq. У некоторых pata контроллеров есть extended mode для работы через память а не порты. Драйвер может перевести контроллер в native в этом случае bios скорее всего потеряет контроллер.
  • Я думаю проблемы с sata потому что Колибри работает только с одним контроллером. В новых чипсетах нет pata и на плату ставят внешний контроллер для старых hd и cd. Биос настраивает контроллеры в legacy mode а дальше как повезёт. Скорее всего внешний контроллер оказывается на дефолтных адресах.
  • А разве есть какие-то проблемы с SATA?
  • А разве у всех видны диски ?
  • Есть проблемы с USB-флешками (у Mario79 и camper), я с ними пытаюсь разобраться, но SATA-диски видны у всех.
  • diamond

    У меня в режиме с двумя контроллерами все диски видны только через БИОС. Если работа с дисками через БИОС стала основной то всё нормально. Кстати флешка не появилась. Моя биос понимает только fat12 флешку. В Колибри она не видна.

    Я неправильно выразился. Проблема не с SATA а с дополнительными контроллерами. Старый код работает только с одним контроллером. На новых и не очень платах несколькy контроллеров - 1 SATA + 1 PATA или 2 SATA + внешний PATA.
  • Serge wrote:diamond

    Если SATA или PATA в native mode там будут другие базовые адреса. А есть способ получить серийный номер устройства через биос ?

    Ghost
    Ну не обязательно в явном виде. Система запрашивает параметры устройства, получает тип устройства, назначает имя по своему разумению и монтирует с этим именем. Ещё можно давать каждому устройству имя на PCI шине. У меня получится IDE D31:F1:Primary:Master, CD D31:F1:Secondary:Master, SATA D31:F2:Primary:Master. У sata нет деления на master и slave, но для совместимости можно считать что там primary master и secondary master.
    Серега это на твоей системе нет slave. Существуют как SATA с 2 дисками где оба мастеры. А также и SATA с 4 дисками где идет полная эмуляция master и slave и два канала. Поэтой причине пришлось опрашивать и мастер и слейв и отсеивать фантомов на слейве для первого случия.
    Помимо этого есть еще ACHI(AHCI ) так называемы родной режим для SATA.!!! Где обращение идет через MMIO (порты отоброженные впамять) и на одном канале может быть до 255 устройств.
  • Кто-нибудь занимается?

    Насчёт именования дисков, есть предложение оставить hd0, hd1, hd2 и hd3 для IDE, а для SATA выделять остальные hd4, h5, и т.д.

    pcidev видит контроллеры SATA? IRQ установлены?
    2.Отсутствует поддержка LBA48 - а это большой объем переделки кода. В принципе можно обойтись поддержкой 32-х битной адресации, но с современной скоростью развития жестких через 1-2 года это опять упрется в трубу. Дело в коде который в Колибри жестко завязан на максимум 32 бита, расширение до 64-х бит кода работы с ФС потребует большой переделки, по сути написать с нуля по крайней мере на 50-70% кода.
    Можно конкретизировать места подлежащие переделке (хотя бы список модулей) ?

    Кстати, как насчёт Long LBA ?
  • Asper
    Текст написан 2 года назад, за это время код подвергался модернизации в которой я не участвовал. Нужно смотреть исходники.
    Насчет Long LBA ничего не скажу - спецификации не читал. Могу лишь предположить, что задействовали незадействованные биты в старшем dword.
  • Mario wrote:Asper
    Если контроллер в режиме IDE, то теоретически только поддержки прерываний не хватает. Переписать на другие порты особой проблемы нет.
    Значит по сути с патчем Ghost можно сделать?
  • Who is online

    Users browsing this forum: No registered users and 4 guests