Page 7 of 14

Posted: Fri Nov 10, 2006 11:50 am
by Serge
Mario79
В раннем варианте ядра загрузчик грузил ini файл. Там можно было прописать все настройки. Но этот вариант не пошёл. Смстема настраивается сама определяя возможности процессора, размер ОЗУ и видеопамяти. Где-то здесь и происходит ошибка. Найти ёё можно методом научного тыка расставив cli hlt в kernel.asm, только кто будет этим заниматься?

Posted: Fri Nov 10, 2006 1:01 pm
by Mario79
Serge
Можно сделать версию ядра с встроенным шрифтом и после каждого минимального шага выводить надпись. Таким нехитрым методом можно выяснить приблизительное место зависания.
А если ошибка возникает еще в реальном режиме, так там вообще нет проблемы с выводом шрифта, по крайней мере, до переключения видеорежима.

Posted: Fri Nov 10, 2006 2:08 pm
by diamond
Mario79 wrote:Ядро выложил Serge.
Я тоже выкладывал ядро, только там изменения касались DMA. В общем, ревизия 210 вернулась к записи через PIO, чтение (которое работает нормально) остаётся через DMA.

Posted: Fri Nov 10, 2006 3:15 pm
by Mario79
diamond
На Cyrix как раз чтение работает со сбоями (выявил при просмотре JPEG), а запись как ни странно нормально.
А вообще так делать половинчатые вещи не лучший выход.

Posted: Fri Nov 10, 2006 5:01 pm
by andrew_programmer
А можно как нибудь проверить,портиться ли файл(та его часть,что загружена в буфер) в буфере или он портиться после записи из буфера на диск ?

Может какой-нибудь тестовый файлик создать с известрной чексуммой,а потом смотреть,что с ней происходит при чтении или записи.

Posted: Fri Nov 10, 2006 5:42 pm
by Serge
Mario79
Ядро уходит в перезагрузку ещё до того как можно будет увидеть надпись на экране, так что hlt надёжнее. Я бы давно этот баг исправил но у меня нет компа на котором система не грузится и похоже тема не очень актуальна.

Posted: Fri Nov 10, 2006 9:15 pm
by andrew_programmer
>и похоже тема не очень актуальна.

Актуальна,актуальна.Serge,завтра пойду в универ и протестирую ядро,которое ты выложил,на старых компах.Раньше протестировать не получилось.

Posted: Sat Nov 11, 2006 12:29 am
by Serge
Если кто-нибудь возьмётся найти ошибку я напишу что надо сделать.

Posted: Sat Nov 11, 2006 1:50 am
by Heavyiron
Возник вопрос: текущее ядро если запускаешь колибри в qemu и выбираешь видеорежим с проверкой (vesa3) пишет "Ошибка: видеорежим не найден" и дальше загрузка не идет. Это немного раздражало, но думал что так и нужно, пока не попробовал запустить в qemu один из старых дистрибутивов menuetos. Даже при выборе "проверить другие режимы" система устанавливает 24 бита и нормально загружается. Перелопатив много дистров, пришел к выводу (поправьте, если ошибаюсь), что это появилось в поздних версиях дистрибутивов Ивана Поддубного и благополучно перекочевало в Колибри. Начал сравнивать исходники. Во всех дистрах Вилле (в последних тоже) в bootcode.inc в процедуре probemore есть такая строчка:
cmp eax,24.
В ядре Ивана (соответственно и в колибри) она заменена на следующую:
cmp eax,32 ;24.
Если изменить в колибри обратно на 24, то все нормально грузится в qemu (да и на реальных компах без поддержки vesa3)!
Так вот собственно вопрос ;) : будет ли устанавливаться 32-битный режим, если вернуть 24 в эту строчку? Проверить это, насколько я понимаю, довольно сложно, но и изменения эти тоже ведь, наверное, не просто так делались... Может кто-нибудь прояснить ситуацию?

Posted: Sat Nov 11, 2006 5:17 pm
by andrew_programmer
Итак,результаты тестирования ядра Serge-а на старых компьютерах.

Pentium166MMX ,видеокарта S3(с VESA2.0),мышь на COM2.

Система загрузилась,но мышь на COM2 не заработала,хотя раньше на этом компе мышь прекрасно работала.

AMD-K5 75.17MHz(самый слабый из PC-шных процессоров,что я видел)
видеокарта S3(с VESA1.2),мышь на COM1.

Система загрузилась и нормально работала(в том числе и мышь).


Serge писал:
> Если кто-нибудь возьмётся найти ошибку я напишу что надо сделать.

По суботам я гарантированно имею доступ к старым компам и могу тестировать.Если кто-то имеет дома старый комп,то лучше всего ему тестировать(так быстрее).
Помоему у campera не запускается по той- же причине,по какой и на всех старых компах.

Heavyiron писал:
>Так вот собственно вопрос : будет ли устанавливаться 32-битный режим, если вернуть 24 в эту строчку?

Если я правильно помню код,то 32-х битный режим устанавливаться не будет.

Posted: Sat Nov 11, 2006 7:05 pm
by Serge
>COM2 мышь не работает.

На некоторых компьютерах если COM-порты отключены БИОС, назначает IRQ3
контроллерам AC97 или USB. Поэтому я отключил встроенный обработчик
прерывания от COM2.

поиск ошибки
для проверки надо скачать исходники ядра с kolibrios.org и сделать
следующие изменения в коде

Code: Select all

kernel.asm

; MEMORY MODEL
           call mem_test
           mov [MEM_AMOUNT], eax

заменить на
; MEMORY MODEL
           call mem_test
           mov eax,  32*1024*1024
           mov [MEM_AMOUNT], eax

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
core/memory.inc

proc map_LFB

           mov edi, [LFBSize]
           mov esi, [LFBAddress]

заменить на
proc map_LFB
           
           mov edi, 0x00400000   ;[LFBSize]
           mov esi, [LFBAddress]
           
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
kernel.asm

; ENABLE PAGING

;           btr [cpu_caps], CAPS_SSE    ;test: dont't use sse code
;           btr [cpu_caps], CAPS_SSE2   ;test: don't use sse2

;           btr [cpu_caps], CAPS_FXSR   ;test: disable sse support
                                        ;all sse commands rise #UD exption
;           btr [cpu_caps], CAPS_PSE    ;test: don't use large pages
;           btr [cpu_caps], CAPS_PGE    ;test: don't use global pages
;           btr [cpu_caps], CAPS_MTRR   ;test: don't use MTRR
;           btr [cpu_caps], CAPS_TSC    ;test: don't use TSC

заменить на
; ENABLE PAGING

           call test_cpu
           btr [cpu_caps], CAPS_PSE    ;test: don't use large pages
           btr [cpu_caps], CAPS_PGE    ;test: don't use global pages
           btr [cpu_caps], CAPS_MTRR   ;test: don't use MTRR
           
           btr [cpu_caps], CAPS_FXSR   ;test: disable sse support
                                        ;all sse commands rise #UD exption
           btr [cpu_caps], CAPS_SSE    ;test: dont't use sse code
           btr [cpu_caps], CAPS_SSE2   ;test: don't use sse2

           bts [cpu_caps], CAPS_TSC    ;test: don't use TSC
потом вернуть всё назад начиная с MEMORY MODEL пока система не
перестанет загружаться. Строки с btr комментировать по одной, по
порядку сверху вниз.

Posted: Sun Nov 12, 2006 8:02 pm
by Wildwest

Posted: Mon Nov 13, 2006 8:14 am
by Mario79
andrew_programmer
200 перезагрузок, 30 человеко/часов...
Вот ядро для тестирования на компе где глючит DMA (проблему с загрузкой на старых машинах не решает):
http://www.kolibri.hut1.ru/temp/kernel_207_fix_dma.7z

Posted: Mon Nov 13, 2006 5:09 pm
by diamond
Mario79 wrote:А вообще так делать половинчатые вещи не лучший выход.
Конечно, не лучший выход, но так по крайней мере работает, а на поиск/исправление ошибок у меня в данный период нету времени.
Wildwest
За ссылку спасибо. По поводу того, что "was a sound card": сейчас этот код кому-нибудь нужен? Скажем, несколько загадочно выглядит третий режим в mixer - установка громкости устройства, выводить на которое звук вроде бы никто (?) не умеет.
Mario79 wrote:MPU401 это порт, к которому подключаются MIDI устройства, как входные (например, MIDI клавиатура, так и выходные, которые выводят звук.
Ставлю вопрос таким образом: куда выводит звук midiplay? Конкретно на данном форуме, в данной теме существует ли человек, у которого он работает? (Для справки: у меня midiplay виснет, даже если попытаться поменять порт в setup).

Posted: Mon Nov 13, 2006 5:46 pm
by Mario79
diamond
У меня одно время находился комп, на котором стояла старая ISA SB. На ней была поддержка как раз того, что ты спрашиваешь, и там попискивал набор тонов. А в целом на большинстве звуковух эта вещь отсутствует за ненадобностью.