Mario79
В раннем варианте ядра загрузчик грузил ini файл. Там можно было прописать все настройки. Но этот вариант не пошёл. Смстема настраивается сама определяя возможности процессора, размер ОЗУ и видеопамяти. Где-то здесь и происходит ошибка. Найти ёё можно методом научного тыка расставив cli hlt в kernel.asm, только кто будет этим заниматься?
Колибри 0630
Serge
Можно сделать версию ядра с встроенным шрифтом и после каждого минимального шага выводить надпись. Таким нехитрым методом можно выяснить приблизительное место зависания.
А если ошибка возникает еще в реальном режиме, так там вообще нет проблемы с выводом шрифта, по крайней мере, до переключения видеорежима.
Можно сделать версию ядра с встроенным шрифтом и после каждого минимального шага выводить надпись. Таким нехитрым методом можно выяснить приблизительное место зависания.
А если ошибка возникает еще в реальном режиме, так там вообще нет проблемы с выводом шрифта, по крайней мере, до переключения видеорежима.
Я тоже выкладывал ядро, только там изменения касались DMA. В общем, ревизия 210 вернулась к записи через PIO, чтение (которое работает нормально) остаётся через DMA.Mario79 wrote:Ядро выложил Serge.
diamond
На Cyrix как раз чтение работает со сбоями (выявил при просмотре JPEG), а запись как ни странно нормально.
А вообще так делать половинчатые вещи не лучший выход.
На Cyrix как раз чтение работает со сбоями (выявил при просмотре JPEG), а запись как ни странно нормально.
А вообще так делать половинчатые вещи не лучший выход.
А можно как нибудь проверить,портиться ли файл(та его часть,что загружена в буфер) в буфере или он портиться после записи из буфера на диск ?
Может какой-нибудь тестовый файлик создать с известрной чексуммой,а потом смотреть,что с ней происходит при чтении или записи.
Может какой-нибудь тестовый файлик создать с известрной чексуммой,а потом смотреть,что с ней происходит при чтении или записи.
Mario79
Ядро уходит в перезагрузку ещё до того как можно будет увидеть надпись на экране, так что hlt надёжнее. Я бы давно этот баг исправил но у меня нет компа на котором система не грузится и похоже тема не очень актуальна.
Ядро уходит в перезагрузку ещё до того как можно будет увидеть надпись на экране, так что hlt надёжнее. Я бы давно этот баг исправил но у меня нет компа на котором система не грузится и похоже тема не очень актуальна.
>и похоже тема не очень актуальна.
Актуальна,актуальна.Serge,завтра пойду в универ и протестирую ядро,которое ты выложил,на старых компах.Раньше протестировать не получилось.
Актуальна,актуальна.Serge,завтра пойду в универ и протестирую ядро,которое ты выложил,на старых компах.Раньше протестировать не получилось.
Если кто-нибудь возьмётся найти ошибку я напишу что надо сделать.
Возник вопрос: текущее ядро если запускаешь колибри в qemu и выбираешь видеорежим с проверкой (vesa3) пишет "Ошибка: видеорежим не найден" и дальше загрузка не идет. Это немного раздражало, но думал что так и нужно, пока не попробовал запустить в qemu один из старых дистрибутивов menuetos. Даже при выборе "проверить другие режимы" система устанавливает 24 бита и нормально загружается. Перелопатив много дистров, пришел к выводу (поправьте, если ошибаюсь), что это появилось в поздних версиях дистрибутивов Ивана Поддубного и благополучно перекочевало в Колибри. Начал сравнивать исходники. Во всех дистрах Вилле (в последних тоже) в bootcode.inc в процедуре probemore есть такая строчка:
cmp eax,24.
В ядре Ивана (соответственно и в колибри) она заменена на следующую:
cmp eax,32 ;24.
Если изменить в колибри обратно на 24, то все нормально грузится в qemu (да и на реальных компах без поддержки vesa3)!
Так вот собственно вопрос
: будет ли устанавливаться 32-битный режим, если вернуть 24 в эту строчку? Проверить это, насколько я понимаю, довольно сложно, но и изменения эти тоже ведь, наверное, не просто так делались... Может кто-нибудь прояснить ситуацию?
cmp eax,24.
В ядре Ивана (соответственно и в колибри) она заменена на следующую:
cmp eax,32 ;24.
Если изменить в колибри обратно на 24, то все нормально грузится в qemu (да и на реальных компах без поддержки vesa3)!
Так вот собственно вопрос
![Wink ;)](./images/smilies/icon_wink.gif)
Итак,результаты тестирования ядра Serge-а на старых компьютерах.
Pentium166MMX ,видеокарта S3(с VESA2.0),мышь на COM2.
Система загрузилась,но мышь на COM2 не заработала,хотя раньше на этом компе мышь прекрасно работала.
AMD-K5 75.17MHz(самый слабый из PC-шных процессоров,что я видел)
видеокарта S3(с VESA1.2),мышь на COM1.
Система загрузилась и нормально работала(в том числе и мышь).
Serge писал:
> Если кто-нибудь возьмётся найти ошибку я напишу что надо сделать.
По суботам я гарантированно имею доступ к старым компам и могу тестировать.Если кто-то имеет дома старый комп,то лучше всего ему тестировать(так быстрее).
Помоему у campera не запускается по той- же причине,по какой и на всех старых компах.
Heavyiron писал:
>Так вот собственно вопрос : будет ли устанавливаться 32-битный режим, если вернуть 24 в эту строчку?
Если я правильно помню код,то 32-х битный режим устанавливаться не будет.
Pentium166MMX ,видеокарта S3(с VESA2.0),мышь на COM2.
Система загрузилась,но мышь на COM2 не заработала,хотя раньше на этом компе мышь прекрасно работала.
AMD-K5 75.17MHz(самый слабый из PC-шных процессоров,что я видел)
видеокарта S3(с VESA1.2),мышь на COM1.
Система загрузилась и нормально работала(в том числе и мышь).
Serge писал:
> Если кто-нибудь возьмётся найти ошибку я напишу что надо сделать.
По суботам я гарантированно имею доступ к старым компам и могу тестировать.Если кто-то имеет дома старый комп,то лучше всего ему тестировать(так быстрее).
Помоему у campera не запускается по той- же причине,по какой и на всех старых компах.
Heavyiron писал:
>Так вот собственно вопрос : будет ли устанавливаться 32-битный режим, если вернуть 24 в эту строчку?
Если я правильно помню код,то 32-х битный режим устанавливаться не будет.
>COM2 мышь не работает.
На некоторых компьютерах если COM-порты отключены БИОС, назначает IRQ3
контроллерам AC97 или USB. Поэтому я отключил встроенный обработчик
прерывания от COM2.
поиск ошибки
для проверки надо скачать исходники ядра с kolibrios.org и сделать
следующие изменения в коде
потом вернуть всё назад начиная с MEMORY MODEL пока система не
перестанет загружаться. Строки с btr комментировать по одной, по
порядку сверху вниз.
На некоторых компьютерах если 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
перестанет загружаться. Строки с btr комментировать по одной, по
порядку сверху вниз.
andrew_programmer
200 перезагрузок, 30 человеко/часов...
Вот ядро для тестирования на компе где глючит DMA (проблему с загрузкой на старых машинах не решает):
http://www.kolibri.hut1.ru/temp/kernel_207_fix_dma.7z
200 перезагрузок, 30 человеко/часов...
Вот ядро для тестирования на компе где глючит DMA (проблему с загрузкой на старых машинах не решает):
http://www.kolibri.hut1.ru/temp/kernel_207_fix_dma.7z
Конечно, не лучший выход, но так по крайней мере работает, а на поиск/исправление ошибок у меня в данный период нету времени.Mario79 wrote:А вообще так делать половинчатые вещи не лучший выход.
Wildwest
За ссылку спасибо. По поводу того, что "was a sound card": сейчас этот код кому-нибудь нужен? Скажем, несколько загадочно выглядит третий режим в mixer - установка громкости устройства, выводить на которое звук вроде бы никто (?) не умеет.
Ставлю вопрос таким образом: куда выводит звук midiplay? Конкретно на данном форуме, в данной теме существует ли человек, у которого он работает? (Для справки: у меня midiplay виснет, даже если попытаться поменять порт в setup).Mario79 wrote:MPU401 это порт, к которому подключаются MIDI устройства, как входные (например, MIDI клавиатура, так и выходные, которые выводят звук.
diamond
У меня одно время находился комп, на котором стояла старая ISA SB. На ней была поддержка как раз того, что ты спрашиваешь, и там попискивал набор тонов. А в целом на большинстве звуковух эта вещь отсутствует за ненадобностью.
У меня одно время находился комп, на котором стояла старая ISA SB. На ней была поддержка как раз того, что ты спрашиваешь, и там попискивал набор тонов. А в целом на большинстве звуковух эта вещь отсутствует за ненадобностью.
Who is online
Users browsing this forum: No registered users and 1 guest