diamond
>В native mode ядро этих дисков и не увидит.
В смысле через BIOS ? Драйвер ищет контроллеры на PCI шине и видет всё что не отключено.
Serial ATA
Serge
> В смысле через BIOS ? Драйвер ищет контроллеры на PCI шине и видет всё что не отключено.
Какой драйвер? Я знаю только про ядро (detect/dev_hdcd.inc:SendCommandToHDD и fs/fs_lfn.inc:fs_OnHd*), которое при определении IDE-дисков и не думает про PCI.
> В смысле через 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
Я имею ввиду что драйвер будет искать контроллеры через PCI.
Кстати ядро тоже ищет контроллер через PCI
Это из bootcode
; \begin{Mario79}
; find HDD IDE DMA PCI device
; check for PCI BIOS
Serge
Но общаться-то с устройством драйвер ведь будет через порты? Вот о них и речь. Базовый порт (не знаю точно, что именно подразумевается под этим в случае нескольких диапазонов ввода/вывода, но полагаю, что с этим можно разобраться) выдаёт BIOSовская функция и может выдавать драйвер - поэтому обсуждение и зашло о том, что в действительности драйвер должен выдавать.
А этот код из bootcode.inc ищет PCI-устройство, соответствующее контроллеру DMA, а вовсе не сами жёсткие диски.
Но общаться-то с устройством драйвер ведь будет через порты? Вот о них и речь. Базовый порт (не знаю точно, что именно подразумевается под этим в случае нескольких диапазонов ввода/вывода, но полагаю, что с этим можно разобраться) выдаёт BIOSовская функция и может выдавать драйвер - поэтому обсуждение и зашло о том, что в действительности драйвер должен выдавать.
А этот код из bootcode.inc ищет PCI-устройство, соответствующее контроллеру DMA, а вовсе не сами жёсткие диски.
>А этот код из bootcode.inc ищет PCI-устройство, соответствующее контроллеру DMA, а вовсе не сами жёсткие диски.
Так и я о том же. Сначала надо найти контроллер. Он может работать в legacy mode через порты 0x1F0 и т.д или в native mode, тогда там совсем другие порты и линия irq. У некоторых pata контроллеров есть extended mode для работы через память а не порты. Драйвер может перевести контроллер в native в этом случае bios скорее всего потеряет контроллер.
Так и я о том же. Сначала надо найти контроллер. Он может работать в 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.
У меня в режиме с двумя контроллерами все диски видны только через БИОС. Если работа с дисками через БИОС стала основной то всё нормально. Кстати флешка не появилась. Моя биос понимает только fat12 флешку. В Колибри она не видна.
Я неправильно выразился. Проблема не с SATA а с дополнительными контроллерами. Старый код работает только с одним контроллером. На новых и не очень платах несколькy контроллеров - 1 SATA + 1 PATA или 2 SATA + внешний PATA.
Серега это на твоей системе нет slave. Существуют как SATA с 2 дисками где оба мастеры. А также и SATA с 4 дисками где идет полная эмуляция master и slave и два канала. Поэтой причине пришлось опрашивать и мастер и слейв и отсеивать фантомов на слейве для первого случия.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.
Помимо этого есть еще ACHI(AHCI ) так называемы родной режим для SATA.!!! Где обращение идет через MMIO (порты отоброженные впамять) и на одном канале может быть до 255 устройств.
Кто-нибудь занимается?
Насчёт именования дисков, есть предложение оставить hd0, hd1, hd2 и hd3 для IDE, а для SATA выделять остальные hd4, h5, и т.д.
pcidev видит контроллеры SATA? IRQ установлены?
Кстати, как насчёт Long LBA ?
Насчёт именования дисков, есть предложение оставить 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.
Текст написан 2 года назад, за это время код подвергался модернизации в которой я не участвовал. Нужно смотреть исходники.
Насчет Long LBA ничего не скажу - спецификации не читал. Могу лишь предположить, что задействовали незадействованные биты в старшем dword.
Значит по сути с патчем Ghost'а можно сделать?Mario wrote:Asper
Если контроллер в режиме IDE, то теоретически только поддержки прерываний не хватает. Переписать на другие порты особой проблемы нет.
Who is online
Users browsing this forum: No registered users and 0 guests