Зависает при загрузке на реальном компьютере. Как снять лог?
-
вот фото со старой kolibri_IDEUSB_trytofix4_dbg и включенным пунктом D http://yadi.sk/d/LTdL-PjVJDwZw никаких дополнительных сообщений на экране не было . Сейчас сделаю лог kolibri_IDEUSB_trytofix4_dbg2.7z
kolibri_IDEUSB_trytofix4_dbg2.7z тоже висит и при обычной загрузке и при включении C и D пунктов :
http://yadi.sk/d/ByBZAPkYJDzWT
http://yadi.sk/d/vUzlVOinJDzWK
K: Kernel SVN r4575
K: 2 CPU detected
K: Attach Interrupt 6 Handler 8002FFF1
K: Set IDE IRQ6 return code 8005CD00
K: Dev: Optiarc DVD RW AD-5200S
K: PIO mode 00000003
K: Multiword DMA mode 00000007
K: Ultra DMA mode 0000203F
K: Primary Bus Master IDE Status Register 00000020
K: Secondary Bus Master IDE Status Register 00000060
K: Attach Interrupt 15 Handler 80031040
K: Set IDE IRQ15 return code 8005CD14
http://yadi.sk/d/ByBZAPkYJDzWT
http://yadi.sk/d/vUzlVOinJDzWK
K: Kernel SVN r4575
K: 2 CPU detected
K: Attach Interrupt 6 Handler 8002FFF1
K: Set IDE IRQ6 return code 8005CD00
K: Dev: Optiarc DVD RW AD-5200S
K: PIO mode 00000003
K: Multiword DMA mode 00000007
K: Ultra DMA mode 0000203F
K: Primary Bus Master IDE Status Register 00000020
K: Secondary Bus Master IDE Status Register 00000060
K: Attach Interrupt 15 Handler 80031040
K: Set IDE IRQ15 return code 8005CD14
Итого: установленный обработчик IRQ15 для IDE контроллера не вызывается совсем.
Я прописал там вывод отладочных сообщениий в:
kernel\trunk\blkdev\hd_drv.inc
И получается контроллер IDE вроде и не при чем...
Что возвращает нас к вопросу:
Кто убил кролика Роджера?
Почему зависает при инициализации USB.
Я прописал там вывод отладочных сообщениий в:
kernel\trunk\blkdev\hd_drv.inc
Spoiler:
Code: Select all
;-----------------------------------------------------------------------------
align 4
IDE_irq_14_handler:
DEBUGF 1, "K : IDE_irq_14_handler \n"
cmp [IDE_common_irq_param], irq14_num
jne .exit
pushfd
cli
pushad
mov [IDE_common_irq_param], 0
mov dx, [IDEContrRegsBaseAddr]
; test whether it is our interrupt?
add edx, 2
in al, dx
test al, 100b
jz @f
; clear Bus Master IDE Status register
; clear Interrupt bit
out dx, al
; clear Bus Master IDE Command register
sub edx, 2
xor eax, eax
out dx, al
; read status register and remove the interrupt request
mov edx, [hdbase]
add edx, 0x7
in al, dx
popad
popfd
mov al, 1
ret
;--------------------------------------
align 4
@@:
popad
popfd
;--------------------------------------
align 4
.exit:
mov al, 0
ret
;-----------------------------------------------------------------------------
align 4
IDE_irq_15_handler:
DEBUGF 1, "K : IDE_irq_15_handler \n"
cmp [IDE_common_irq_param], irq15_num
jne .exit
pushfd
cli
pushad
mov [IDE_common_irq_param], 0
mov dx, [IDEContrRegsBaseAddr]
add dx, 8
; test whether it is our interrupt?
add edx, 2
in al, dx
test al, 100b
jz @f
; clear Bus Master IDE Status register
; clear Interrupt bit
out dx, al
; clear Bus Master IDE Command register
sub edx, 2
mov al, 0
out dx, al
; read status register and remove the interrupt request
mov edx, [hdbase]
add edx, 0x7
in al, dx
popad
popfd
mov al, 1
ret
;--------------------------------------
align 4
@@:
popad
popfd
;--------------------------------------
align 4
.exit:
mov al, 0
ret
;-----------------------------------------------------------------------------
align 4
IDE_common_irq_handler:
pushfd
cli
pushad
DEBUGF 1, "K : IDE_common_irq_handler \n"
xor ebx, ebx
mov eax, IDE_common_irq_param
DEBUGF 1, "K : [IDE_common_irq_param] %x \n", [eax]:2
mov [eax], bl
; test whether it is our interrupt?
mov dx, [IDEContrRegsBaseAddr]
add edx, 2
in al, dx
DEBUGF 1, "K : channel 1 interrupt? %x \n", eax
test al, 100b ; check channel 1 interrupt
jnz @f
add dx, 8
in al, dx
DEBUGF 1, "K : channel 2 interrupt? %x \n", eax
test al, 100b ; check channel 2 interrupt
jnz @f
DEBUGF 1, "K : IDE - no, it's not our interrupt \n"
popad
popfd
mov al, 0 ; no, it's not our interrupt
ret
;--------------------------------------
align 4
@@:
; clear Bus Master IDE Status register
; clear Interrupt bit
DEBUGF 1, "K : IDE - clear Interrupt bit \n"
out dx, al
; clear Bus Master IDE Command register
sub edx, 2
xor eax, eax
DEBUGF 1, "K : IDE - clear Bus Master IDE Command register \n"
out dx, al
; read status register and remove the interrupt request
mov edx, [hdbase]
add edx, 0x7
in al, dx
DEBUGF 1, "K : read status register and remove the interrupt request %x \n", eax
DEBUGF 1, "K : IDE - yes, this is our interrupt \n"
popad
popfd
mov al, 1 ; yes, this is our interrupt
ret
;-----------------------------------------------------------------------------
Что возвращает нас к вопросу:
Почему зависает при инициализации USB.
Last edited by Mario_r4 on Thu Feb 20, 2014 10:38 am, edited 1 time in total.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Может все таки дело в usb драйвере . Хотя вам виднее я не программист . Как бывает в больницах врачи проводят заседания по сложным вопросам так и тут может стоит собрать разработчиков Колибри и устроить собеседование . Одна голова хорошо а две лучше .
Last edited by lastar on Thu Feb 20, 2014 2:03 pm, edited 2 times in total.
При чём тут IRQ15? Контроллер жёсткого диска 00:1f.1 висит на IRQ10, обработчик IRQ15 и не должен вызываться.
Сделаем мир лучше!
Если посмотреть фото, то можно увидеть, как 15 прерывание устанавливается на контроллер IDE диска, а затем согласно выводимому логу на 15 прерывание же вешается один из USB контроллеров. Тот контроллер, который повешен на IRQ10, вообще не трогается кодом работы с IDE. Получается парадокс - контроллер генерирует прерывание без какого-либо обращения к нему.CleverMouse wrote:При чём тут IRQ15? Контроллер жёсткого диска 00:1f.1 висит на IRQ10, обработчик IRQ15 и не должен вызываться.
З.Ы. Сдается мне в текущей схеме, где кодом поддерживается только один контроллер проблема вообще не имеет решения.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Тот USB-контроллер, который вешается на IRQ15, молчит в тряпочку, зависание происходит сразу после того, как следующий USB-контроллер - который тоже молчит в тряпочку и будет молчать как минимум 100 мс на USB-шный initial debounce, а если к нему ничего не подключено, то вообще пока не подключат что-нибудь - устанавливает свой обработчик на IRQ10 и размаскирует IRQ10. Почему вообще код контроллера IDE-диска думает, что IDE-диск всегда даёт IRQ15? Здесь он даёт IRQ10.Mario_r4 wrote:Если посмотреть фото, то можно увидеть, как 15 прерывание устанавливается на контроллер IDE диска, а затем согласно выводимому логу на 15 прерывание же вешается один из USB контроллеров. Тот контроллер, который повешен на IRQ10, вообще не трогается кодом работы с IDE. Получается парадокс - контроллер генерирует прерывание без какого-либо обращения к нему.CleverMouse wrote:При чём тут IRQ15? Контроллер жёсткого диска 00:1f.1 висит на IRQ10, обработчик IRQ15 и не должен вызываться.
З.Ы. Сдается мне в текущей схеме, где кодом поддерживается только один контроллер проблема вообще не имеет решения.
Сделаем мир лучше!
Вот тут решалась проблема работы моего контроллера в ReactOS http://jira.reactos.org/browse/CORE-6668
Вот в этой теме похоже про это прерывание написал автор UniATA Alter :
Alter added a comment - 2012-09-17 13:14
Seems it is incorrectly handled USB Interrupt.
Infinite ISR loop happens immediately after connecting to IRQ 15 (which is shared between IDE and USB controllers)
There were no operations with IDE, those can cause and interrupt, thus, interrupt is treated as unexpected for IDE and should be passed to other handler.
Similar problem had already been observed in the past (I don't remember exact BUG ID).
---
00:1d.2 USB Controller [0c03]: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 [8086:27ca] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at b400 [size=1K]
Device is using IRQ 15! ISA Cards using that IRQ may fail!
Device is an Intel UHCI (USB) Controller. Turn off Legacy USB in your BIOS!
---
00:1f.1 IDE interface [0101]: Intel Corporation 82801G (ICH7 Family) IDE Controller [8086:27df] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at c080
I/O ports at c000 [size=16K]
I/O ports at 08f0
I/O ports at 08f8
I/O ports at b800 [size=2K]
Вот в этой теме похоже про это прерывание написал автор UniATA Alter :
Alter added a comment - 2012-09-17 13:14
Seems it is incorrectly handled USB Interrupt.
Infinite ISR loop happens immediately after connecting to IRQ 15 (which is shared between IDE and USB controllers)
There were no operations with IDE, those can cause and interrupt, thus, interrupt is treated as unexpected for IDE and should be passed to other handler.
Similar problem had already been observed in the past (I don't remember exact BUG ID).
---
00:1d.2 USB Controller [0c03]: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 [8086:27ca] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at b400 [size=1K]
Device is using IRQ 15! ISA Cards using that IRQ may fail!
Device is an Intel UHCI (USB) Controller. Turn off Legacy USB in your BIOS!
---
00:1f.1 IDE interface [0101]: Intel Corporation 82801G (ICH7 Family) IDE Controller [8086:27df] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at c080
I/O ports at c000 [size=16K]
I/O ports at 08f0
I/O ports at 08f8
I/O ports at b800 [size=2K]
Last edited by lastar on Thu Feb 20, 2014 2:21 pm, edited 1 time in total.
Потому что он получил это значение от BIOS, еще в Real Mode CPUCleverMouse wrote:Почему вообще код контроллера IDE-диска думает, что IDE-диск всегда даёт IRQ15? Здесь он даёт IRQ10.
kernel\trunk\boot\bootcode.inc
Spoiler:
Code: Select all
; \begin{Mario79}
; find HDD IDE DMA PCI device
; check for PCI BIOS
mov ax, 0xB101
int 0x1A
jc .nopci
cmp edx, 'PCI '
jnz .nopci
; find PCI class code
; class 1 = mass storage
; subclass 1 = IDE controller
; a) class 1, subclass 1, programming interface 0x80
; This is a Parallel IDE Controller which uses IRQs 14 and 15.
mov ax, 0xB103
mov ecx, 1*10000h + 1*100h + 0x80
mov [es:BOOT_IDE_PI_16], cx
xor si, si ; device index = 0
int 0x1A
jnc .found_1 ; Parallel IDE Controller
; b) class 1, subclass 1, programming interface 0x8f
mov ax, 0xB103
mov ecx, 1*10000h + 1*100h + 0x8f
mov [es:BOOT_IDE_PI_16], cx
xor si, si ; device index = 0
int 0x1A
jnc .found_1
; c) class 1, subclass 1, programming interface 0x85
mov ax, 0xB103
mov ecx, 1*10000h + 1*100h + 0x85
mov [es:BOOT_IDE_PI_16], cx
xor si, si ; device index = 0
int 0x1A
jnc .found_1
; d) class 1, subclass 1, programming interface 0x8A
; This is a Parallel IDE Controller which uses IRQs 14 and 15.
mov ax, 0xB103
mov ecx, 1*10000h + 1*100h + 0x8A
mov [es:BOOT_IDE_PI_16], cx
xor si, si ; device index = 0
int 0x1A
jnc .found_1 ; Parallel IDE Controller
; Controller not found!
xor ax, ax
mov [es:BOOT_IDE_PI_16], ax
jmp .nopci
;--------------------------------------
.found_1:
; get memory base BAR4
mov ax, 0xB10A
mov di, 0x20 ; memory base is config register at 0x20
push cx
int 0x1A
jc .no_BAR4 ;.nopci
and cx, 0xFFFC ; clear address decode type
mov [es:BOOT_IDE_BASE_ADDR], cx
.no_BAR4:
pop cx
;--------------------------------------
.found:
; get Interrupt Line
mov ax, 0xB10A
mov di, 0x3c ; memory base is config register at 0x3c
push cx
int 0x1A
jc .no_Interrupt ;.nopci
mov [es:BOOT_IDE_INTERR_16], cx
.no_Interrupt:
pop cx
;--------------------------------------
; get memory base BAR0
mov ax, 0xB10A
mov di, 0x10 ; memory base is config register at 0x10
push cx
int 0x1A
jc .no_BAR0 ;.nopci
mov [es:BOOT_IDE_BAR0_16], cx
.no_BAR0:
pop cx
;--------------------------------------
; get memory base BAR1
mov ax, 0xB10A
mov di, 0x14 ; memory base is config register at 0x14
push cx
int 0x1A
jc .no_BAR1 ;.nopci
mov [es:BOOT_IDE_BAR1_16], cx
.no_BAR1:
pop cx
;--------------------------------------
; get memory base BAR2
mov ax, 0xB10A
mov di, 0x18 ; memory base is config register at 0x18
push cx
int 0x1A
jc .no_BAR2 ;.nopci
mov [es:BOOT_IDE_BAR2_16], cx
.no_BAR2:
pop cx
;--------------------------------------
; get memory base BAR3
mov ax, 0xB10A
mov di, 0x1C ; memory base is config register at 0x1c
push cx
int 0x1A
jc .no_BAR3 ;.nopci
mov [es:BOOT_IDE_BAR3_16], cx
.no_BAR3:
pop cx
;--------------------------------------
.nopci:
; \end{Mario79}
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Убедительно. Не меняются.Mario_r4 wrote:Потому что он получил это значение от BIOS, еще в RealMode CPUCleverMouse wrote:Почему вообще код контроллера IDE-диска думает, что IDE-диск всегда даёт IRQ15? Здесь он даёт IRQ10.
kernel\trunk\boot\bootcode.inc
И мне почему то казалось, что прерывания после перехода в Protected Mode CPU не меняются. Если же они меняются, то мне интересно какой код это делает? Почему то у lastar, если отключен контроллер USB, то эта схема прокатывает, т.е. назначенный BIOS в RealMode CPU номер прерывания не меняется после перехода в Protected Mode CPU.
lastar, нужен лог от вот этой версии ядра, она показывает все PCI-устройства с точки зрения ядра.
- Attachments
-
-
kernel.7z (81.93 KiB)Downloaded 200 times
-
Сделаем мир лучше!
все пошел на перезагрузку для теста
http://yadi.sk/d/6LKFaPerJExoK
http://yadi.sk/d/lqEYi_VuJEyB6
http://yadi.sk/d/tXlu9EMdJEycR
Если плохо видно и надо будет переписать в ручную лог с экрана то напишите
Вот тут решалась проблема работы моего контроллера в ReactOS http://jira.reactos.org/browse/CORE-6668
Вот в этой теме похоже про это прерывание написал автор UniATA Alter :
Alter added a comment - 2012-09-17 13:14
Seems it is incorrectly handled USB Interrupt.
Infinite ISR loop happens immediately after connecting to IRQ 15 (which is shared between IDE and USB controllers)
There were no operations with IDE, those can cause and interrupt, thus, interrupt is treated as unexpected for IDE and should be passed to other handler.
Similar problem had already been observed in the past (I don't remember exact BUG ID).
---
00:1d.2 USB Controller [0c03]: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 [8086:27ca] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at b400 [size=1K]
Device is using IRQ 15! ISA Cards using that IRQ may fail!
Device is an Intel UHCI (USB) Controller. Turn off Legacy USB in your BIOS!
---
00:1f.1 IDE interface [0101]: Intel Corporation 82801G (ICH7 Family) IDE Controller [8086:27df] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at c080
I/O ports at c000 [size=16K]
I/O ports at 08f0
I/O ports at 08f8
I/O ports at b800 [size=2K]
http://yadi.sk/d/lqEYi_VuJEyB6
http://yadi.sk/d/tXlu9EMdJEycR
Если плохо видно и надо будет переписать в ручную лог с экрана то напишите
Вот тут решалась проблема работы моего контроллера в ReactOS http://jira.reactos.org/browse/CORE-6668
Вот в этой теме похоже про это прерывание написал автор UniATA Alter :
Alter added a comment - 2012-09-17 13:14
Seems it is incorrectly handled USB Interrupt.
Infinite ISR loop happens immediately after connecting to IRQ 15 (which is shared between IDE and USB controllers)
There were no operations with IDE, those can cause and interrupt, thus, interrupt is treated as unexpected for IDE and should be passed to other handler.
Similar problem had already been observed in the past (I don't remember exact BUG ID).
---
00:1d.2 USB Controller [0c03]: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 [8086:27ca] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at b400 [size=1K]
Device is using IRQ 15! ISA Cards using that IRQ may fail!
Device is an Intel UHCI (USB) Controller. Turn off Legacy USB in your BIOS!
---
00:1f.1 IDE interface [0101]: Intel Corporation 82801G (ICH7 Family) IDE Controller [8086:27df] (rev 01)
Subsystem: P5KPL-VM Motherboard [1043:8179]
Flags: bus master, medium devsel, latency 0, IRQ 15
I/O ports at c080
I/O ports at c000 [size=16K]
I/O ports at 08f0
I/O ports at 08f8
I/O ports at b800 [size=2K]
Вот Фото получше сделал поэкспериментировал с настройками камеры телефона :
http://yadi.sk/d/X3txobXUJF3pe
http://yadi.sk/d/FbjhBUJ6JF494
http://yadi.sk/d/aYZubhaAJF4AZ
http://yadi.sk/d/jYGMUNWcJF4Cq
http://yadi.sk/d/X3txobXUJF3pe
http://yadi.sk/d/FbjhBUJ6JF494
http://yadi.sk/d/aYZubhaAJF4AZ
http://yadi.sk/d/jYGMUNWcJF4Cq
Проверь, пожалуйста, это ядро.
- Attachments
-
-
kernel.7z (81.92 KiB)Downloaded 197 times
-
Сделаем мир лучше!
CleverMouse Колибри загрузилась
1 BOARD лог со стандартными параметрами http://yadi.sk/d/Py3J7WzXJFAx5
2 BOARD лог со включенным пунктом D http://yadi.sk/d/G8p4QAW0JFAxb и скриншоты со включенным пунктом D http://yadi.sk/d/K6cVZL0pJFBhK http://yadi.sk/d/bUea-bYQJFBjP http://yadi.sk/d/TXz9KMX2JFBmm
В чем же была проблема ?
1 BOARD лог со стандартными параметрами http://yadi.sk/d/Py3J7WzXJFAx5
2 BOARD лог со включенным пунктом D http://yadi.sk/d/G8p4QAW0JFAxb и скриншоты со включенным пунктом D http://yadi.sk/d/K6cVZL0pJFBhK http://yadi.sk/d/bUea-bYQJFBjP http://yadi.sk/d/TXz9KMX2JFBmm
В чем же была проблема ?
Who is online
Users browsing this forum: No registered users and 0 guests