PrettyOS Fehler-/Testthread
-
<RAM Disk at C0002000h DIR> dev 35 infošºíÆ×íí-îù̬Åîí^Àì?¬ÎNèTÝUÅË 9796 shell¤¼ìŽž„œššDþ„TôÁŽÅÞŽHÚÎÌŸË.[
Hier wurde offenbar etwas "kaputt" optimiert. Da fehlt das abschließende '\0'.
EDIT: wurde inzwischen repariert (neues strncpy)
-
Rev. 444 zeigt den oberflächlichen Grund, warum Transfers nicht laufen (qTD Status 0x80 (= active bit7) wird nicht zurück gesetzt und qTD nicht ausgeführt):
Es liegt am NAK counter. Setzt man RL (reload Nak Counter) auf 15 (4-bit-value), dann findet man bei manchen Devices NAK counter = 0, also 15 mal NAK. Dann bleibt der EHCI hilflos stehen.http://www.lowlevel.eu/wiki/USB (von XanClic):
Hier schickt der Host zuerst einmal das Datenpaket, kann das Gerät dieses nicht annehmen, antwortet es mit NAK. Wenn es das Paket empfangen kann, antwortet es mit ACK, wenn das Gerät danach noch ein Paket aufnehmen kann oder mit NYET, wenn nicht. Hat der Host ACK empfangen, so sendet er das nächste Paket. Hat er allerdings ein NYET oder ein NAK erhalten, dann beginnt er nun mit PING-Paketen. Das Gerät muss mit NAK antworten, wenn es immer noch kein Paket empfangen kann, oder mit ACK, wenn es nun bereit ist. Dies verringert die Anzahl an sinnlos gesendeten Daten natürlich erheblich. Das Gerät kann hierbei sogar angegeben, wann das nächste PING-Paket gesendet werden soll (der Host muss dies aber nicht befolgen).
Der NAK counter zählt auch NYET, wenn ich das richtig verstanden habe.
-
Revision 447
Sherlock Holmes schrieb:
Wenn man alles Unmögliche ausgeschlossen hat, muss in dem, was noch übrigbleibt, so unwahrscheinlich es auch scheinen mag, die Wahrheit zu finden sein.
^^ In diesem Sinne:
Nach jedem Aufruf von usbSendSCSIcmd (usb2_msd.c) geht das verloren, was der Aufruf von usbTransferSetConfiguration (usb2.c) in checkPortLineStatus (ehci.c) bewirkt hatte.
// usb2_msd.c 447 void testMSD(uint8_t devAddr) { (...) ///////// step 1: send SCSI comamnd "inquiry (opcode: 0x12)" textColor(0x09); printf("\n>>> SCSI: inquiry"); textColor(0x0F); //=====================================DEBUG============================ usbTransferSetConfiguration(devAddr,1); // usbTransferBulkOnlyMassStorageReset(devAddr, usbDevices[devAddr].numInterfaceMSD); // Reset Interface //=====================================DEBUG============================ usbSendSCSIcmd(...); ///////// step 2: send SCSI comamnd "test unit ready(6)" textColor(0x09); printf("\n>>> SCSI: test unit ready"); textColor(0x0F); //=====================================DEBUG============================ usbTransferSetConfiguration(devAddr,1); // usbTransferBulkOnlyMassStorageReset(devAddr, usbDevices[devAddr].numInterfaceMSD); // Reset Interface //=====================================DEBUG============================ usbSendSCSIcmd(...); // (usw.) }
^^ So läufts auf meinem realen PC.
-
Danke für den Tipp!
-
Ich habe das jetzt objektiv getestet:
- lief auch schon vorher auf real PC
- es gibt in der Tat usb-sticks, die die configuration zurück auf 0 setzen! Kann man mit getConfig ja vorher testen
- aber jetzt kommt es:
PrettyOS [Version 0.0.0.449] Console 1: EHCI Ports
--------------------------------------------------------------------------------
USB2: SET_CONFIGURATION 1>!
USB2: GET_CONFIGURATION>! 1
OUT part
asyncList: 01667000h <-- QH_Out CommandQTD: 01669000h
before aS:
curr QH: 01667000h next QH: 01667000h
curr qTD: 00000000h next qTD: 01669000h
NAK counter: 0>!
after aS:
curr QH: 01667000h next QH: 01667000h
curr qTD: 01669000h next qTD: 00000000h
NAK counter: 15
IN part
asyncList: 01668000h <-- QH_In
handshakeQTD: 0166B000h StatusQTD: 0166D000h DataQTD: 0166F000h
before aS:
curr QH: 01668000h next QH: 01668000h
curr qTD: 00000000h next qTD: 0166F000h
NAK counter: 0>!
after aS:
curr QH: 01668000h next QH: 01668000h
curr qTD: 0166B000h next qTD: 00000000h
NAK counter: 15
00h 80h 02h 02h 1Fh 00h 00h 00h 6Dh 65h 6Dh 6Fh 72h 79h 00h 00h 55h 53h 42h 32h
2Eh 30h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 31h 2Eh 30h 30h
memoryUSB2.01.0055h 53h 42h 53h 12h 42h 42h 42h 00h 00h 00h 00h 00h
Command Passed ("good status")
qTD Status: 01h Do Ping<-- command
qTD Status: 00h OK (no bit set)<-- data
qTD Status: 00h OK (no bit set)<-- status
USB2: GET_CONFIGURATION>! 0
USB2: SET_CONFIGURATION 1>!
USB2: GET_CONFIGURATION>! 0Command Block Status Values in "good status"
USB status: 00002000h
Reclamation> Press key <<<
--------------------------------------------------------------------------------
Port: 1, device attachedVor "inquiry" ist alles ok.
Nach "inquiry" sitzt die configuration auf 0 (bedeutet unkonfiguriert) und lässt sich aber auch nicht mehr gerade biegen auf 1.@+gjm+: Echt Superklasse dein Fund! Wie machst du das bloß?
-
Der Grund ist gefunden: ein falscher handshake nach dem CSW
Dieses Bild hat mich irre geleitet: http://www.beyondlogic.org/usbnutshell/contdata.gif in http://www.beyondlogic.org/usbnutshell/usb4.htm bei bulk transfer
Ich sehe drei Fälle:
- MSD device ist unempfindlich gegen falschen handshake (bei mir zwei 16 GB sticks und der 512 MB stick)
- MSD device ist empfindlich gegen handshake, man kann aber die config wieder setzen (das war der Fund von +gjm+)
- empfindlich, nicht reaparierbar, also trotz "setzen" kommt die config nicht mehr (mein 1 GB stick und Tobiking's Laptop mit seinem stick)
Der Fund von +gjm+, mein 1 GB stick und der Beweis bei Tobiking's Laptop, das waren wichtige Puzzleteile.
Der Meilenstein wurde erreicht!
Ein gewaltiger Dank gebührt +gjm+. Er begleitet PrettyOS seit den Anfängen in absolut konstruktiver Weise. Ihm gebührt ein Platz in der "Hall of Fame" unserer kleinen OS-Community.
-
siehe: http://www.c-plusplus.net/forum/viewtopic-var-p-is-1896489.html#1896489
Handshake --> Konfiguration von 1 auf 0 ---> set_config(1) (+gjm+) ---> Nebeneffekt: setzt die toggles der device endpoints auf 0 --> mehrfach fehlerhaftes Programm läuft.
Nun wurde im bulk-Transfer der Handshake entfernt, und es wird sauber getogglet.
-
Bitte um Hilfe bezüglich User-Stack/-Heap:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1909791.html#1909791
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-254893-and-start-is-550.html
BL2 hatte im Fat12.inc offenbar mit dem kernel-Laden nach 0x3000 bis ... seinen eigenen Stack bei 0x1FFFF überschrieben, was wir durch Versetzen des Stacks nach 0x3FFFF beseitigen konnten. Allerdings bietet dieses Fat12.inc noch Optimierungspotential, weil sich dort bugs und hotfixes irgendwie die Waage halten.
-
Wenn sich jemand mit Assembler und FAT12 richtig gut auskennt, könnte er uns vielleicht helfen beim Optimieren dieses Tools. Ansonsten droht GRUB.
-
Das Assembler-Forum unterstützt uns dankenswerterweise mit einigen Ratschlägen:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1918524.html#1918524
-
hallo ihr,
ich habe mit "bochs" ein problem mit dem laden des images. mir scheint, als ob der bootloader stage1 geladen wird, danach aber ein abbruch kommt. die version von prettyos habe ich nun nicht im kopf, weis aber das ckernel.c die version "0.0.0.530" hat.
hier mal meine bochsrc.bxrc:
############################################################### # bochsrc.txt file for DLX Linux disk image. ############################################################### # how much memory the emulated machine will have megs: 32 # filename of ROM images romimage: file="C:\Program Files\Bochs-2.4.5\BIOS-bochs-latest" vgaromimage: file="C:\Program Files\Bochs-2.4.5\VGABIOS-lgpl-latest" # what disk images will be used floppya: 1_44="C:\prettyos\trunk\Source\FloppyImage.img", status=inserted #floppyb: 1_44=floppyb.img, status=inserted # hard disk #ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 #ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17 # choose the boot disk. boot: a # default config interface is textconfig. #config_interface: textconfig #config_interface: wx #display_library: x # other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga # where do we send log messages? log: C:\prettyos\trunk\Source\bochsout.txt # disable the mouse, since DLX is text only mouse: enabled=0 # enable key mapping, using US layout as default. # # NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows. # However, the key mapping tables are used in the paste function, so # in the DLX Linux example I'm enabling keyboard_mapping so that paste # will work. Cut&Paste is currently implemented on win32 and X windows only. #keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map #keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-fr.map keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-de.map #keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-es.map
hier noch das output der bochsout.txt:
00000000000i[ ] Bochs x86 Emulator 2.4.5 00000000000i[ ] Build from CVS snapshot, on April 25, 2010 00000000000i[ ] System configuration 00000000000i[ ] processors: 1 (cores=1, HT threads=1) 00000000000i[ ] A20 line support: yes 00000000000i[ ] CPU configuration 00000000000i[ ] level: 6 00000000000i[ ] SMP support: no 00000000000i[ ] APIC support: yes 00000000000i[ ] FPU support: yes 00000000000i[ ] MMX support: yes 00000000000i[ ] 3dnow! support: no 00000000000i[ ] SEP support: yes 00000000000i[ ] SSE support: sse2 00000000000i[ ] XSAVE support: no 00000000000i[ ] AES support: no 00000000000i[ ] MOVBE support: no 00000000000i[ ] x86-64 support: yes 00000000000i[ ] 1G paging support: no 00000000000i[ ] MWAIT support: no 00000000000i[ ] VMX support: no 00000000000i[ ] Optimization configuration 00000000000i[ ] RepeatSpeedups support: yes 00000000000i[ ] Trace cache support: yes 00000000000i[ ] Fast function calls: yes 00000000000i[ ] Devices configuration 00000000000i[ ] ACPI support: yes 00000000000i[ ] NE2000 support: yes 00000000000i[ ] PCI support: yes, enabled=yes 00000000000i[ ] SB16 support: yes 00000000000i[ ] USB support: yes 00000000000i[ ] VGA extension support: vbe cirrus 00000000000i[MEM0 ] allocated memory at 02D80020. after alignment, vector=02D81000 00000000000i[MEM0 ] 32,00MB 00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32 00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('C:\Program Files\Bochs-2.4.5\BIOS-bochs-latest') 00000000000i[MEM0 ] rom at 0xc0000/40448 ('C:\Program Files\Bochs-2.4.5\VGABIOS-lgpl-latest') 00000000000i[CMOS ] Using local time for initial clock 00000000000i[CMOS ] Setting initial clock to: Fri Jul 02 17:55:29 2010 (time0=1278086129) 00000000000i[DMA ] channel 4 used by cascade 00000000000i[DMA ] channel 2 used by Floppy Drive 00000000000i[FDD ] fd0: 'C:\prettyos\trunk\Source\FloppyImage.img' ro=0, h=2,t=80,spt=18 00000000000i[PCI ] 440FX Host bridge present at device 0, function 0 00000000000i[PCI ] PIIX3 PCI-to-ISA bridge present at device 1, function 0 00000000000i[MEM0 ] Register memory access handlers: 0x000a0000 - 0x000bffff 00000000000i[WGUI ] Desktop Window dimensions: 1280 x 800 00000000000i[WGUI ] Number of Mouse Buttons = 5 00000000000i[WGUI ] IME disabled 00000000000i[KMAP ] Loading keymap from 'C:\Program Files\Bochs-2.4.5/keymaps/x11-pc-de.map' 00000000000i[KMAP ] Loaded 212 symbols 00000000000i[MEM0 ] Register memory access handlers: 0xe0000000 - 0xe0ffffff 00000000000i[CLVGA] VBE Bochs Display Extension Enabled 00000000000i[CLVGA] interval=50000 00000000000i[ ] init_dev of 'unmapped' plugin device by virtual method 00000000000i[ ] init_dev of 'biosdev' plugin device by virtual method 00000000000i[ ] init_dev of 'speaker' plugin device by virtual method 00000000000i[ ] init_dev of 'extfpuirq' plugin device by virtual method 00000000000i[ ] init_dev of 'gameport' plugin device by virtual method 00000000000i[ ] init_dev of 'pci_ide' plugin device by virtual method 00000000000i[PCI ] PIIX3 PCI IDE controller present at device 1, function 1 00000000000i[ ] init_dev of 'acpi' plugin device by virtual method 00000000000i[PCI ] ACPI Controller present at device 1, function 3 00000000000i[ ] init_dev of 'ioapic' plugin device by virtual method 00000000000i[IOAP ] initializing I/O APIC 00000000000i[MEM0 ] Register memory access handlers: 0xfec00000 - 0xfec00fff 00000000000i[ ] init_dev of 'keyboard' plugin device by virtual method 00000000000i[KBD ] will paste characters every 1000 keyboard ticks 00000000000i[ ] init_dev of 'harddrv' plugin device by virtual method 00000000000i[HD ] Using boot sequence floppy, none, none 00000000000i[HD ] Floppy boot signature check is enabled 00000000000i[ ] init_dev of 'serial' plugin device by virtual method 00000000000i[SER ] com1 at 0x03f8 irq 4 00000000000i[ ] init_dev of 'parallel' plugin device by virtual method 00000000000i[PAR ] parallel port 1 at 0x0378 irq 7 00000000000i[ ] register state of 'unmapped' plugin device by virtual method 00000000000i[ ] register state of 'biosdev' plugin device by virtual method 00000000000i[ ] register state of 'speaker' plugin device by virtual method 00000000000i[ ] register state of 'extfpuirq' plugin device by virtual method 00000000000i[ ] register state of 'gameport' plugin device by virtual method 00000000000i[ ] register state of 'pci_ide' plugin device by virtual method 00000000000i[ ] register state of 'acpi' plugin device by virtual method 00000000000i[ ] register state of 'ioapic' plugin device by virtual method 00000000000i[ ] register state of 'keyboard' plugin device by virtual method 00000000000i[ ] register state of 'harddrv' plugin device by virtual method 00000000000i[ ] register state of 'serial' plugin device by virtual method 00000000000i[ ] register state of 'parallel' plugin device by virtual method 00000000000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called 00000000000i[CPU0 ] cpu hardware reset 00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0xfee00000 00000000000i[CPU0 ] CPUID[0x00000000]: 00000003 756e6547 6c65746e 49656e69 00000000000i[CPU0 ] CPUID[0x00000001]: 00000f20 00000800 00002000 078bfbff 00000000000i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x00000003]: 00000000 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x00000004]: 00000000 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x80000000]: 80000008 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x80000001]: 00000000 00000000 00000101 2a100800 00000000000i[CPU0 ] CPUID[0x80000002]: 20202020 20202020 20202020 6e492020 00000000000i[CPU0 ] CPUID[0x80000003]: 286c6574 50202952 69746e65 52286d75 00000000000i[CPU0 ] CPUID[0x80000004]: 20342029 20555043 20202020 00202020 00000000000i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000 00000000000i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000 00000000000i[CPU0 ] CPUID[0x80000008]: 00003020 00000000 00000000 00000000 00000000000i[ ] reset of 'unmapped' plugin device by virtual method 00000000000i[ ] reset of 'biosdev' plugin device by virtual method 00000000000i[ ] reset of 'speaker' plugin device by virtual method 00000000000i[ ] reset of 'extfpuirq' plugin device by virtual method 00000000000i[ ] reset of 'gameport' plugin device by virtual method 00000000000i[ ] reset of 'pci_ide' plugin device by virtual method 00000000000i[ ] reset of 'acpi' plugin device by virtual method 00000000000i[ ] reset of 'ioapic' plugin device by virtual method 00000000000i[ ] reset of 'keyboard' plugin device by virtual method 00000000000i[ ] reset of 'harddrv' plugin device by virtual method 00000000000i[ ] reset of 'serial' plugin device by virtual method 00000000000i[ ] reset of 'parallel' plugin device by virtual method 00000003305i[BIOS ] $Revision: 1.247 $ $Date: 2010/04/04 19:33:50 $ 00000200000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8 00000318042i[KBD ] reset-disable command received 00000444800i[VBIOS] VGABios $Id: vgabios.c,v 1.69 2009/04/07 18:18:20 vruppert Exp $ 00000444871i[CLVGA] VBE known Display Interface b0c0 00000444903i[CLVGA] VBE known Display Interface b0c5 00000447828i[VBIOS] VBE Bios $Id: vbe.c,v 1.62 2009/01/25 15:46:25 vruppert Exp $ 00000760517i[BIOS ] Starting rombios32 00000761014i[BIOS ] Shutdown flag 0 00000761695i[BIOS ] ram_size=0x02000000 00000762173i[BIOS ] ram_end=32MB 00000802745i[BIOS ] Found 1 cpu(s) 00000822014i[BIOS ] bios_table_addr: 0x000fbc18 end=0x000fcc00 00000822117i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) 00001149814i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) 00001477742i[P2I ] PCI IRQ routing: PIRQA# set to 0x0b 00001477763i[P2I ] PCI IRQ routing: PIRQB# set to 0x09 00001477784i[P2I ] PCI IRQ routing: PIRQC# set to 0x0b 00001477805i[P2I ] PCI IRQ routing: PIRQD# set to 0x09 00001477815i[P2I ] write: ELCR2 = 0x0a 00001478700i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a 00001486658i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600 00001489220i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601 00001491621i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101 00001491851i[PIDE ] new BM-DMA address: 0xc000 00001492555i[BIOS ] region 4: 0x0000c000 00001494865i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680 00001495103i[ACPI ] new irq line = 11 00001495117i[ACPI ] new irq line = 9 00001495147i[ACPI ] new PM base address: 0xb000 00001495161i[ACPI ] new SM base address: 0xb100 00001495189i[PCI ] setting SMRAM control register to 0x4a 00001659283i[CPU0 ] Enter to System Management Mode 00001659293i[CPU0 ] RSM: Resuming from System Management Mode 00001823313i[PCI ] setting SMRAM control register to 0x0a 00001832484i[BIOS ] MP table addr=0x000fbcf0 MPC table addr=0x000fbc20 size=0xd0 00001834543i[BIOS ] SMBIOS table addr=0x000fbd00 00001836931i[BIOS ] ACPI tables: RSDP addr=0x000fbe20 ACPI DATA addr=0x01ff0000 size=0x988 00001840169i[BIOS ] Firmware waking vector 0x1ff00cc 00001851282i[PCI ] 440FX PMC write to PAM register 59 (TLB Flush) 00001852126i[BIOS ] bios_table_cur_addr: 0x000fbe44 00014041543i[BIOS ] Booting from 0000:7c00 00037968000p[WGUI ] >>PANIC<< Window closed, exiting! 00037968000i[CPU0 ] CPU is in real mode (active) 00037968000i[CPU0 ] CS.d_b = 16 bit 00037968000i[CPU0 ] SS.d_b = 16 bit 00037968000i[CPU0 ] EFER = 0x00000000 00037968000i[CPU0 ] | RAX=0000000000000000 RBX=0000000000000000 00037968000i[CPU0 ] | RCX=0000000000000000 RDX=0000000000000000 00037968000i[CPU0 ] | RSP=000000000000fffa RBP=0000000000000000 00037968000i[CPU0 ] | RSI=00000000000e2b02 RDI=000000000000ffac 00037968000i[CPU0 ] | R8=0000000000000000 R9=0000000000000000 00037968000i[CPU0 ] | R10=0000000000000000 R11=0000000000000000 00037968000i[CPU0 ] | R12=0000000000000000 R13=0000000000000000 00037968000i[CPU0 ] | R14=0000000000000000 R15=0000000000000000 00037968000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf 00037968000i[CPU0 ] | SEG selector base limit G D 00037968000i[CPU0 ] | SEG sltr(index|ti|rpl) base limit G D 00037968000i[CPU0 ] | CS:f000( 0004| 0| 0) 000f0000 0000ffff 0 0 00037968000i[CPU0 ] | DS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 00037968000i[CPU0 ] | SS:7c00( 0005| 0| 0) 0007c000 0000ffff 0 0 00037968000i[CPU0 ] | ES:0000( 0005| 0| 0) 00000000 0000ffff 0 0 00037968000i[CPU0 ] | FS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 00037968000i[CPU0 ] | GS:0000( 0005| 0| 0) 00000000 0000ffff 0 0 00037968000i[CPU0 ] | MSR_FS_BASE:0000000000000000 00037968000i[CPU0 ] | MSR_GS_BASE:0000000000000000 00037968000i[CPU0 ] | RIP=000000000000ff53 (0000000000007c6b) 00037968000i[CPU0 ] | CR0=0x60000010 CR2=0x0000000000000000 00037968000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000 00037968000i[CPU0 ] 0x0000000000007c6b>> mov ax, 0x0004 : B80400 00037968000i[CMOS ] Last time is 1278086138 (Fri Jul 02 17:55:38 2010) 00037968000i[ ] restoring default signal behavior 00037968000i[CTRL ] quit_sim called with exit code 1
-
die version von prettyos habe ich nun nicht im kopf, weis aber das ckernel.c die version "0.0.0.530"
0.0.0.530 ist die Version
Vielleicht hilft als erste Maßnahme ein Update auf 0.0.1.9, es kann sein, das Du eine Version hast, die Fehler enthält. Bei mir zumindest funktioniert Version 0.0.1.9 unter Bochs.
Kommen irgendwelche Fehlermeldungen? Es gab mal Probleme mit Bochs, das einen Fehler in der KeyQueue gefunden haben wollte, und deshalb panisch wurde. Da kam dann eine Fehlermeldung. Der scheint aber inzwischen weg zu sein, "panic: action=ignore" ist nicht mehr nötig im brxc-File um PrettyOS auszuführen.
-
danke dir
mir scheint aber eher, als ob meine bochs installation kapput ist... auf realer hardware laufen beide versionen... na, darum kümmere ich mich gleich mal...
-
Steige lieber um auf Qemu, VBox oder VMWare.
-
Aktueller Problemstatus bei 0.0.1.43 - Rev: 607:
- vm86 Testcode (ckernel.c, Zeilen 104 - 112) macht Probleme auf real PC
- fdir bleibt hängen (schon länger beobachtet)
-
Aktueller Problemstatus bei 0.0.1.66 - Rev: 635:
- strg + t (ruft scheduler_log() auf) führt zum #PF --> Absturz
- fdir bleibt hängen (schon länger beobachtet) --> Absturz
EDIT: alles erledigt
-
im IRC:
<somone>MrX: ich habe mal versucht ein userprogramm zu schreiben mit, fgets u. fputc, aber qemu bringt fehlermeldungen, das ich nicht schreiben oder lesen kann...
<somone>FLOPPY ERROR: fdctrl_write_data: can't write data in status mode
<somone>FLOPPY ERROR: fdctrl_read_data: can't read data in CMD stateEDIT: ich habe die syscall-Nr. korrigiert
-
seit 0.0.1.131 werden "reboots" verzeichnet, die im Ablauf - nicht reproduzierbar - eintreten (qemu, PC). MrX: action please.
general protection fault: err_code: 65276 adress(eip): 00113d10h...
-
Da dies der Testthread von PrettyOS ist ,wollte ich meinen Test wiedergeben.
Also ich habe das Image des .tar.gz Archives verwendet ,welches ich von ehenkes bekommen habe.
Dies habe ich natürlich prompt mit meiner Sun VirtualBox unter meinem Ubuntu getestet.
Die Hardwareerkennung schien gut zu laufen zumindest ,wenn es nach der Ausgabe von PrettyOS ging.
Dann bin ich in der ,für meine Verhältnisse unübersichtlichen, Shell gelandet.
Sie ist deswegen unübersichtlich ,weil unter und über der Eingabe ,in der die eingegebenen Zeichen erscheinen, Text beziehungsweise ein Zug zu sehen ist und man erst suchen muss.
Als ich damit zurecht gekommen bin habe ich help eingeben und die implementierten Funktionen/Befehle getestet.
Alles hat funktioniert außer reboot.
Und noch etwas ,was aber wahrscheinlich so gehört, ist ,dass mit dem Befehl fformat das Floppyimage nicht mehr PrettyOS gebootet hat.
Also in diesem Sinne einen Gruß von mir und hoffentlich hilft euch mein Rückblick.
tev