punk_joker
Да, у тебя работает как задумано.
SATA в режиме IDE - полная поддержка
-
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
yogev_ezra
Просьба протестировать SVN r. 4303 на VMware.
Просьба протестировать SVN r. 4303 на VMware.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Протестировал SVN r. 4305, теперь вроде устанавливает как и задумано - Hard Disk: DMA, CD-ROM: PIO.Mario_r4 wrote:yogev_ezra
Просьба протестировать SVN r. 4303 на VMware.
Как я могу проверить, есть ли разница в скорости между PIO и DMA? Есть какая-то утилита для тестирования?
- Attachments
-
-
PCIDEV.TXT (5.51 KiB)Downloaded 238 times
-
BOARDLOG.TXT (2.57 KiB)Downloaded 237 times
-
Утилит нет, только косвенно - например прочитав/скопировав большой файл и засекая время.
Если есть желание можешь написать такую утилиту сам.
Если есть желание можешь написать такую утилиту сам.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Ясно. Ну логи-то хоть правильные теперь были?Mario_r4 wrote:Утилит нет, только косвенно - например прочитав/скопировав большой файл и засекая время.
Если есть желание можешь написать такую утилиту сам.
Да.yogev_ezra wrote:Ну логи-то хоть правильные теперь были?
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
0CodErr
Просьба проверить SVN r.4307
Просьба проверить SVN r.4307
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4, у меня без изменений. Работает в режиме только SATA.
В логе пишется, что dma установлен — но это ведь никак не проверяется?
И читается 10 раз полностью в буфер размером 100 Mb.
Не уверен, в каких именно "попугаях" получается результат, но по ощущениям кажется, что долго.
В логе пишется, что dma установлен — но это ведь никак не проверяется?
Мне тоже стало интересно. Сделал небольшую программку.yogev_ezra wrote:Как я могу проверить, есть ли разница в скорости между PIO и DMA?
Spoiler:
Создаётся файл "/hd0/1/_t_e_s_t_f_i_l_e_" размером 100 Mb.И читается 10 раз полностью в буфер размером 100 Mb.
Не уверен, в каких именно "попугаях" получается результат, но по ощущениям кажется, что долго.
Code: Select all
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:
Значит сброс прерывания надо сделать в другом месте. Я предположительно определил в чем проблема. Поскольку прерывание от контроллера диска не погашено, а на то же прерывание повешен обработчик UHCI, то прерывание бесконечно генерируется, а обработчик UHCI его бесконечно отбрасывает, так как у него нету признака, что прерывание его. Вопрос в том чтобы надежно заглушить остаточное прерывание от IDE DMA. Хоть прерывания от него и запрещены, но видимо твой контроолер имеет собственное мнение на этот счет.0CodErr wrote:у меня без изменений. Работает в режиме только SATA.
Проверки свойств самого диска я не делал, но если бы устройство не поддерживало UltraDMA, то доступа к диску вообще бы не было.0CodErr wrote:В логе пишется, что dma установлен — но это ведь никак не проверяется?
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
0CodErr
Просьба проверить ядро:
Просьба проверить ядро:
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Mario_r4, теперь заработало.
Залил SVN r.4311.0CodErr wrote:Mario_r4, теперь заработало.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Samsung rv508 все работает как задуманно. Логи прилагаю.
- Attachments
-
-
samsung_rv508.7z (2.35 KiB)Downloaded 229 times
-
to infinity and beyond
Вот только PCIDEV явно при других настройках сделан, либо от другой машины. Там нет IDE контроллера, только AHCI.punk_joker wrote:Samsung rv508 все работает как задуманно. Логи прилагаю.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Who is online
Users browsing this forum: No registered users and 46 guests