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

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

Author:  Mario_r4 [ Wed Nov 27, 2013 7:31 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

punk_joker
Да, у тебя работает как задумано.

Author:  Mario_r4 [ Wed Nov 27, 2013 6:31 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

yogev_ezra
Просьба протестировать SVN r. 4303 на VMware.

Author:  yogev_ezra [ Wed Nov 27, 2013 9:22 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4 wrote:
yogev_ezra
Просьба протестировать SVN r. 4303 на VMware.

Протестировал SVN r. 4305, теперь вроде устанавливает как и задумано - Hard Disk: DMA, CD-ROM: PIO.
Как я могу проверить, есть ли разница в скорости между PIO и DMA? Есть какая-то утилита для тестирования?

Attachments:
PCIDEV.TXT [5.51 KiB]
Downloaded 93 times
BOARDLOG.TXT [2.57 KiB]
Downloaded 94 times

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

Утилит нет, только косвенно - например прочитав/скопировав большой файл и засекая время.
Если есть желание можешь написать такую утилиту сам.

Author:  yogev_ezra [ Wed Nov 27, 2013 9:38 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4 wrote:
Утилит нет, только косвенно - например прочитав/скопировав большой файл и засекая время.
Если есть желание можешь написать такую утилиту сам.
Ясно. Ну логи-то хоть правильные теперь были?

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

yogev_ezra wrote:
Ну логи-то хоть правильные теперь были?

Да.

Author:  0CodErr [ Wed Nov 27, 2013 11:16 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Attachment:
File comment: pcidev(r3534 sata+pata).txt
pcidev(r3534 pata).txt
pcidev(r3502 SATA+PATA).txt
pcidev(r3502 PATA).txt
Boardlog(r3534 SATA+PATA).txt
Boardlog(r3534 pata).txt

Archive.7z [1.91 KiB]
Downloaded 85 times

Author:  Mario_r4 [ Thu Nov 28, 2013 10:12 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

0CodErr
Просьба проверить SVN r.4307

Author:  0CodErr [ Thu Nov 28, 2013 5:14 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4, у меня без изменений. Работает в режиме только SATA.

В логе пишется, что dma установлен — но это ведь никак не проверяется?
yogev_ezra wrote:
Как я могу проверить, есть ли разница в скорости между PIO и DMA?
Мне тоже стало интересно. Сделал небольшую программку.
Spoiler: Show
Создаётся файл "/hd0/1/_t_e_s_t_f_i_l_e_" размером 100 Mb.
И читается 10 раз полностью в буфер размером 100 Mb.
Не уверен, в каких именно "попугаях" получается результат, но по ощущениям кажется, что долго.

Code:
ORG 0
BITS 32
; ---------------------------------------------------------------------------- ;
FILE_SIZE              equ (1024 * 1024 * 100)
LOOP_COUNT             equ 10
TIMER_TICKS_PER_SECOND equ 100
BYTES_PER_MEGABYTES    equ 1024 * 1024
OUT_STRING_LEFT        equ 16
STACK_SIZE             equ 256
; ---------------------------------------------------------------------------- ;
MENUET01       db 'MENUET01'
version        dd 1
program.start  dd START
program.end    dd END
program.memory dd END + FILE_SIZE + STACK_SIZE
program.stack  dd END + FILE_SIZE + STACK_SIZE
program.params dd 0
program.path   dd 0
; ---------------------------------------------------------------------------- ;
action_string  dd sz_start
timer_ticks    dd 0
result         dd 0
; ---------------------------------------------------------------------------- ;
file_info:
.action        dd 0
.position      dd FILE_SIZE ; for "create file"
               dd 0
.count         dd 0
.buffer        dd 0
               db 0
.file_path     dd sz_file_path
; ---------------------------------------------------------------------------- ;
sz_caption     db "test",0
sz_start       db "start..",0
sz_done        db " done. ",0
sz_error       db " error ",0
sz_file_path   db "/hd0/1/_t_e_s_t_f_i_l_e_",0
; ---------------------------------------------------------------------------- ;
START:
; set.event:
        mov    eax, 40
        mov    ebx, 5 ; redraw + button
        int    64
        call   On_Redraw
; ----------------------------------
        call   StartTest
        call   DrawInfo
; ----------------------------------
WaitEvent:
        mov    eax, 10
        int    64
        dec    eax
        jnz    Terminate
        call   On_Redraw
        jmp    WaitEvent
Terminate:
        or     eax, -1
        int    64
; ---------------------------------------------------------------------------- ;
On_Redraw:
; redraw.start
        mov    eax, 12
        mov    ebx, 1
        int    64
; draw.window
        xor    eax, eax
        mov    ebx, 200
        mov    ecx, 100
        mov    edx, 0x34CCDDEE
        mov    edi, sz_caption
        int    64
        call   DrawInfo
; redraw.finish
        mov    eax, 12
        mov    ebx, 2
        int    64
        ret
; ---------------------------------------------------------------------------- ;
DrawInfo:
; draw action
        mov    eax, 4
        mov    ecx, 0xC0000000
        mov    edi, 0x00CCDDEE
        mov    ebx, (OUT_STRING_LEFT << 16) | 10
        mov    edx, [action_string]
        int    64
; draw result
        mov    eax, 47
        mov    ebx, (10 << 16)
        mov    edx, (OUT_STRING_LEFT << 16) | 20
        mov    esi, 0x70000000
        mov    edi, 0x00FFFFFF
        mov    ecx, [result]
        int    64
        ret
; ---------------------------------------------------------------------------- ;
StartTest:
; if error then we go to .exit and action_string="error"
;                else before .exit action_string="done."
        mov    [action_string], dword sz_error
; try create file
        mov    eax, 70
        mov    [file_info.action], dword 2
        lea    ebx, [file_info]
        int    64
        test   eax, eax
        jnz    .exit
; try resize created file
        mov    eax, 70
        mov    [file_info.action], dword 4
        lea    ebx, [file_info]
        int    64
        test   eax, eax
        jnz    .exit
; get timer ticks
        mov    eax, 26
        mov    ebx, 9
        int    64
        mov    [timer_ticks], eax
; read from file
        mov    [file_info.position], dword 0
        mov    [file_info.action], dword 0
        mov    [file_info.count], dword FILE_SIZE
        mov    [file_info.buffer], dword END
        lea    edx, [file_info]
        mov    ecx, LOOP_COUNT
; ----------------------------------
.next:
        mov    eax, 70
        mov    ebx, edx
        int    64
        loop   .next
; ----------------------------------
; get timer ticks
        mov    eax, 26
        mov    ebx, 9
        int    64
; calculate result
; result = (FILE_SIZE * LOOP_COUNT / (delta(timer_ticks)) / (BYTES_PER_MEGABYTES * LOOP_COUNT / TIMER_TICKS_PER_SECOND)
        sub    eax, [timer_ticks]
        inc    eax ; to avoid next possible division by zero
        mov    ecx, eax
        mov    eax, FILE_SIZE * LOOP_COUNT
        xor    edx, edx
        div    ecx
        mov    ecx, BYTES_PER_MEGABYTES * LOOP_COUNT / TIMER_TICKS_PER_SECOND
        xor    edx, edx
        div    ecx
        mov    [action_string], dword sz_done
.exit:
        mov    [result], eax
        ret
; ---------------------------------------------------------------------------- ;
END:

Attachment:
rdt.kex [498 Bytes]
Downloaded 82 times

Author:  Mario_r4 [ Thu Nov 28, 2013 5:58 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

0CodErr wrote:
у меня без изменений. Работает в режиме только SATA.

Значит сброс прерывания надо сделать в другом месте. Я предположительно определил в чем проблема. Поскольку прерывание от контроллера диска не погашено, а на то же прерывание повешен обработчик UHCI, то прерывание бесконечно генерируется, а обработчик UHCI его бесконечно отбрасывает, так как у него нету признака, что прерывание его. Вопрос в том чтобы надежно заглушить остаточное прерывание от IDE DMA. Хоть прерывания от него и запрещены, но видимо твой контроолер имеет собственное мнение на этот счет. :)
0CodErr wrote:
В логе пишется, что dma установлен — но это ведь никак не проверяется?

Проверки свойств самого диска я не делал, но если бы устройство не поддерживало UltraDMA, то доступа к диску вообще бы не было.

Author:  Mario_r4 [ Thu Nov 28, 2013 9:00 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

0CodErr
Просьба проверить ядро:
Attachment:
kernel.7z [86.58 KiB]
Downloaded 81 times

Author:  0CodErr [ Thu Nov 28, 2013 10:50 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Mario_r4, теперь заработало.
Attachment:
File comment: pcidev(sata+pata).txt
pcidev(pata).txt
Boardlog(sata+pata).txt
Boardlog(pata).txt

Archive.7z [2.1 KiB]
Downloaded 86 times

Author:  Mario_r4 [ Thu Nov 28, 2013 10:58 pm ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

0CodErr wrote:
Mario_r4, теперь заработало.

Залил SVN r.4311.

Author:  punk_joker [ Mon Dec 02, 2013 4:04 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

Samsung rv508 все работает как задуманно. Логи прилагаю.

Attachments:
samsung_rv508.7z [2.35 KiB]
Downloaded 86 times

Author:  Mario_r4 [ Mon Dec 02, 2013 7:17 am ]
Post subject:  Re: SATA в режиме IDE - полная поддержка

punk_joker wrote:
Samsung rv508 все работает как задуманно. Логи прилагаю.

Вот только PCIDEV явно при других настройках сделан, либо от другой машины. Там нет IDE контроллера, только AHCI.

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