Board.KolibriOS.org
http://board.kolibrios.org/

SATA в режиме IDE - полная поддержка
http://board.kolibrios.org/viewtopic.php?f=1&t=2343
Page 5 of 18

Author:  Serge [ Mon Jul 29, 2013 9:40 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

1.Список плат: http://en.wikipedia.org/wiki/List_of_Ma ... 11_chipset
2. Не понял, зачем упираться в таблицу для контроллеров если есть malloc, выделяющий столько памяти, сколько необходимо.

Author:  Mario_r4 [ Mon Jul 29, 2013 10:05 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Serge wrote:
2. Не понял, зачем упираться в таблицу для контроллеров если есть malloc, выделяющий столько памяти, сколько необходимо.

Что и для RealMode рабочий malloc есть?

Author:  Serge [ Mon Jul 29, 2013 10:45 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

А какой глубокий смысл искать контроллеры в RealMode ?

Author:  Mario_r4 [ Mon Jul 29, 2013 12:21 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Serge wrote:
А какой глубокий смысл искать контроллеры в RealMode ?

По большому счету особого смысла нет. Был код у Кулакова и я его использовал. Однако как я уже ранее упоминал у меня есть сомнения, что шина будет нормально функционировать. В коде ядра первое обращение к ней идет значительно позже, чем ищутся физические диски на контроллерах адреса которые получены как раз в Real Mode.

Author:  Serge [ Mon Jul 29, 2013 1:30 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Первый обращение к PCI происходит при инициализации APIC. Шина функционирует. Есть функция pci_enum. Её вызов надо переместить до APIC_init и дальше пользоваться уже готовым списком устройств.

Author:  Mario_r4 [ Wed Aug 07, 2013 9:13 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

За отсутствием IDE PATA дисков в наличии, решил и купил переходник ISSI (SATA - IDE) китайской AGESTAR. Работает в обе стороны, пока проверил только воткнув в PATA материнки и шнурком соединив с SATA HDD. Обошлось это чудо китайской промышленности за 290 рублей.
Attachment:
IMGP8251_small.JPG
IMGP8251_small.JPG [ 58.3 KiB | Viewed 3157 times ]

Attachment:
IMGP8256_small.JPG
IMGP8256_small.JPG [ 52.21 KiB | Viewed 3157 times ]

Фотки кликабельны. Для оценки размеров рядом пробка от "полторашки".

Author:  Mario_r4 [ Sat Aug 17, 2013 6:56 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Есть некоторый прогресс в изысканиях. Сегодня решил посмотреть что показывается при загрузке, в регистре Bus Master IDE Status Register.
Кому интересно вот некоторая информация.
Spoiler: Show
Bus Master IDE Status Register

Register Name: Bus Master IDE Status Register

Address Offset: Primary Channel: Base + 02h

Secondary Channel: Base + 0Ah

Default Value: 00h

Attribute: Read/Write Clear

Size: 8 bits


Bit Description

7 Simplex only:This read-only bit indicates whether or not both bus master channels (primary
and secondary) can be operated at the same time. If the bit is a '0', then the channels operate
independently and can be used at the same time. If the bit is a '1', then only one channel may be
used at a time.

6 Drive 1 DMA Capable:This read/write bit is set by device dependent code (BIOS or device
driver) to indicate that drive 1 for this channel is capable of DMA transfers, and that the
controller has been initialized for optimum performance.

5 Drive 0 DMA Capable: This read/write bit is set by device dependent code (BIOS or device
driver) to indicate that drive 0 for this channel is capable of DMA transfers, and that the
controller has been initialized for optimum performance.

4:3 Reserved. Must return 0 on reads.

2 Interrupt:This bit is set by the rising edge of the IDE interrupt line. This bit is cleared when a
'1' is written to it by software. Software can use this bit to determine if an IDE device has
asserted its interrupt line. When this bit is read as a one, all data transfered from the drive is
visible in system memory.

1 Error: This bit is set when the controller encounters an error in transferring data to/from
memory. The exact error condition is bus specific and can be determined in a bus specific
manner. This bit is cleared when a '1' is written to it by software.

0 Bus Master IDE Active: This bit is set when the Start bit is written to the Command register.
This bit is cleared when the last transfer for a region is performed, where EOT for that region is
set in the region descriptor. It is also cleared when the Start bit is cleared in the Command
register. When this bit is read as a zero, all data transfered from the drive during the previous
bus master command is visible in system memory, unless the bus master command was aborted.

Так вот на работающих с DMA контроллерах биты 5 и 6 установлены, а на неработающих соответственно не установлены.

Исключением являются Qemu (версия 0.12.2, возможно в более новых поправлено) где биты не установлены, а DMA все равно работает - тут уже без комментариев, это за гранью добра и зла. :mrgreen:

Также является исключением eBox в режиме Native Mode, в котором биты установлены, но DMA не работает, хотя в Legacy Mode биты установлены и все работает. Возможно еще какая-то причина.

Также на одном из моих компов с мамкой Asus прерывание делится между контроллером SATA (в режиме эмуляции IDE) и контроллером USB. При обращении к HDD, отваливается USB - что впрочем не удивительно, так как кода обрабатывающего такие ситуации в ядре нет (или я не прав и он есть, а я не умею его готовить?). Впрочем после отваливания USB система через N-ное количество обращений к HDD тоже повисает. Биты на этой машине установлены в режиме DMA даже для отсутствующих устройств - вот такой вот интересный BIOS на мамке.

З.Ы. Информацию я раздобыл роясь в гугле:
Attachment:
IDE-BusMaster.7z [28.56 KiB]
Downloaded 86 times


UPDATE
В Qemu 1.5.1 также не установлены биты 5 и 6, а еще автоподстройку размера окна под гостевую ОС убрали.

Author:  Phantom-84 [ Sun Aug 18, 2013 8:12 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4 wrote:
Так вот на работающих с DMA контроллерах биты 5 и 6 установлены, а на неработающих соответственно не установлены.

Исключением являются Qemu (версия 0.12.2, возможно в более новых поправлено) где биты не установлены, а DMA все равно работает - тут уже без комментариев, это за гранью добра и зла. :mrgreen:

Также является исключением eBox в режиме Native Mode, в котором биты установлены, но DMA не работает, хотя в Legacy Mode биты установлены и все работает. Возможно еще какая-то причина.
А что еще можно ожидать от программно изменяемых информационных бит :(

Author:  Mario_r4 [ Sun Aug 18, 2013 11:07 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Phantom-84 wrote:
А что еще можно ожидать от программно изменяемых информационных бит :(

Вообще то можно ожидать следованию стандартам. :)

Author:  Mario_r4 [ Sun Aug 18, 2013 12:08 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Установка 5 и 6 бита не помогла решить проблему. Вероятно они являются исключительно индикаторами и не влияют на саму работу.
Самое интересное, что прописанное значение потом не сбрасывается. Возможно эти биты меняют свои значения при повторной записи 1, надо будет -изучить.

UPDATE
Вот какая шняга - если записывать просто нулевой байт, то они сбрасываются. Видимо наличие установленных битов 1 и 2 (сброс Error и Interrupt) заставляет игнорировать установку/сброс 5 и 6 бита.

Author:  Phantom-84 [ Sun Aug 18, 2013 12:44 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4 wrote:
Установка 5 и 6 регистра не помогла решить проблему. Вероятно они являются исключительно индикаторами и не влияют на саму работу.
Однозначно они таковыми и являются.

Author:  Mario_r4 [ Sun Aug 18, 2013 12:58 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Phantom-84 wrote:
Mario_r4 wrote:
Установка 5 и 6 регистра не помогла решить проблему. Вероятно они являются исключительно индикаторами и не влияют на саму работу.
Однозначно они таковыми и являются.

*бита разумеется а не регистра, я глючу. :)
Однако не означает ли это, что BIOS вообще забил на настройку контроллера и его нужно дополнительно настраивать самому? Просто сейчас система при обращении к таким устройствам через DMA намертво повисает и я опять не знаю в какую сторону копать. Все доки перерыл, все по феншую накодировано в плане работы с DMA.

Author:  Phantom-84 [ Sun Aug 18, 2013 2:44 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4 wrote:
*бита разумеется а не регистра
Я так и понял, даже не обратил внимания на опечатку.

Quote:
Однако не означает ли это, что BIOS вообще забил на настройку контроллера и его нужно дополнительно настраивать самому? Просто сейчас система при обращении к таким устройствам через DMA намертво повисает и я опять не знаю в какую сторону копать. Все доки перерыл, все по феншую накодировано в плане работы с DMA.
Можно и не настраивать. Просто посмотри, выбран ли DMA-режим в устройстве. Ну и время ожидания нужно всегда выставлять, чтобы отсутствие ответа от устройства не приводило к зависанию.

Author:  Mario_r4 [ Sun Aug 18, 2013 6:14 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Phantom-84 wrote:
Можно и не настраивать. Просто посмотри, выбран ли DMA-режим в устройстве.

Эээ... не, так не пойдет. Я же эту тему не просто так обозвал "полная поддержка" PIO у меня без проблем работает, а хочется как у белых людей на больших системах.
Phantom-84 wrote:
Ну и время ожидания нужно всегда выставлять, чтобы отсутствие ответа от устройства не приводило к зависанию.

Это есть, но даже это не помогает, там похоже в другом месте затык смертельный происходит.

Author:  Phantom-84 [ Sun Aug 18, 2013 8:43 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4 wrote:
Эээ... не, так не пойдет. Я же эту тему не просто так обозвал "полная поддержка" PIO у меня без проблем работает, а хочется как у белых людей на больших системах.
Тогда пользуемся SET FEATURES и выставляем желаемый режим на свой страх и риск.

Quote:
Это есть, но даже это не помогает, там похоже в другом месте затык смертельный происходит.
Может, где-то нет проверки на приход своего/чужого прерывания.

Page 5 of 18 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/