Issues rebuilding kernel (Visual Studio 2008 Prof)

If you are new to OS Development, plan on spending some time here first before going into the other forums.

Moderator:Moderators

Post Reply
__asm
Posts:5
Joined:Wed Feb 03, 2010 7:09 pm
Issues rebuilding kernel (Visual Studio 2008 Prof)

Post by __asm » Thu Feb 04, 2010 2:53 am

Hi there, i've been having fun playing around with these tutorials, although im suffering from a strange qwerk, for some reason i can build all of the projects sucessfully i've created a boot disk and ran it through virtualbox and virtualpc on the first build everything will work, but if i make any changes to the code base i just end up with a blue screen and a blinking cursor,

I've tested with just simply making one simple change in the code:

i changed the word 'command' to 'prompt'

Code: Select all

//! command prompt
void cmd () {
	//DebugPrintf ("\nCommand> ");
	DebugPrintf ("\nPrompt> ");
}
and i got the bluescreen again, so im thinking there is something i've missed along the way, i've tried doing a full clean and rebuild on non-edited source code and it works perfectly everytime, hopefully someone can shed some light on this for me :D :roll:

cheers

jay

__asm
Posts:5
Joined:Wed Feb 03, 2010 7:09 pm

Re: Issues rebuilding kernel (Visual Studio 2008 Prof)

Post by __asm » Thu Feb 04, 2010 2:05 pm

right i've done some more investigating and it seems to be an issue with the keyboard library if i remove it from the solution and rebuild and link against the previous built keyboard everything works, i've checked all of the settings for the keyboard project and everything seems to be fine, there is a size difference though the keyboard.lib from the demo21.zip archive is 12.5KB whereas the one I build locally is only 8.45KB, i'll keep investgating though

User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:

Re: Issues rebuilding kernel (Visual Studio 2008 Prof)

Post by Mike » Sat Feb 06, 2010 12:11 am

Hello,

What happens if you create your own project for the keyboard and set up the settings manually? What happens if you run it in Bochs? Is there anything in the bochs crash log?
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

__asm
Posts:5
Joined:Wed Feb 03, 2010 7:09 pm

Re: Issues rebuilding kernel (Visual Studio 2008 Prof)

Post by __asm » Sat Feb 06, 2010 2:42 am

Hey, i've already tried creating my own project i've even gone as far as to write my .vcproj by hand :) and it still crashes, i just install bochs gave it a try and its the same as virtualbox it crashes, however i do have a log of the crash which is below, its really starting to bug me now :)

Jay

Code: Select all

00000000000i[     ] Bochs x86 Emulator 2.4.2
00000000000i[     ]   Build from CVS snapshot on November 12, 2009
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[     ]   SSE support: 2
00000000000i[     ]   CLFLUSH support: yes
00000000000i[     ]   3dnow! support: no
00000000000i[     ]   1G paging support: no
00000000000i[     ]   x86-64 support: yes
00000000000i[     ]   SEP support: yes
00000000000i[     ]   MWAIT support: no
00000000000i[     ]   XSAVE support: no
00000000000i[     ]   AES 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 06E90020. after alignment, vector=06E91000
00000000000i[MEM0 ] 32.00MB
00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32
00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('C:\Program Files\Bochs-2.4.2/BIOS-bochs-latest')
00000000000i[MEM0 ] rom at 0xc0000/40448 ('C:\Program Files\Bochs-2.4.2/VGABIOS-lgpl-latest')
00000000000i[CMOS ] Using local time for initial clock
00000000000i[CMOS ] Setting initial clock to: Sat Feb 06 02:29:20 2010 (time0=1265423360)
00000000000i[DMA  ] channel 4 used by cascade
00000000000i[DMA  ] channel 2 used by Floppy Drive
00000000000i[FDD  ] fd0: 'D:\bootdisk.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 = 3
00000000000i[WGUI ] IME disabled
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[     ] 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.235 $ $Date: 2009/09/28 16:36:02 $
00000200000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8
00000318060i[KBD  ] reset-disable command received
00000444780i[VBIOS] VGABios $Id: vgabios.c,v 1.69 2009/04/07 18:18:20 vruppert Exp $

00000444851i[CLVGA] VBE known Display Interface b0c0
00000444883i[CLVGA] VBE known Display Interface b0c5
00000447808i[VBIOS] VBE Bios $Id: vbe.c,v 1.62 2009/01/25 15:46:25 vruppert Exp $
00000754369i[BIOS ] Starting rombios32
00000754866i[BIOS ] Shutdown flag 0
00000755547i[BIOS ] ram_size=0x02000000
00000756025i[BIOS ] ram_end=32MB
00000796633i[BIOS ] Found 1 cpu(s)
00000815758i[BIOS ] bios_table_addr: 0x000fba98 end=0x000fcc00
00000815866i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
00001143563i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
00001471491i[P2I  ] PCI IRQ routing: PIRQA# set to 0x0b
00001471512i[P2I  ] PCI IRQ routing: PIRQB# set to 0x09
00001471533i[P2I  ] PCI IRQ routing: PIRQC# set to 0x0b
00001471554i[P2I  ] PCI IRQ routing: PIRQD# set to 0x09
00001471564i[P2I  ] write: ELCR2 = 0x0a
00001472449i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a
00001480407i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600
00001482969i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601
00001485370i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101
00001485600i[PIDE ] new BM-DMA address: 0xc000
00001486304i[BIOS ] region 4: 0x0000c000
00001488614i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680
00001488852i[ACPI ] new irq line = 11
00001488866i[ACPI ] new irq line = 9
00001488896i[ACPI ] new PM base address: 0xb000
00001488910i[ACPI ] new SM base address: 0xb100
00001488938i[PCI  ] setting SMRAM control register to 0x4a
00001653032i[CPU0 ] Enter to System Management Mode
00001653042i[CPU0 ] RSM: Resuming from System Management Mode
00001817062i[PCI  ] setting SMRAM control register to 0x0a
00001826231i[BIOS ] MP table addr=0x000fbb70 MPC table addr=0x000fbaa0 size=0xd0
00001828173i[BIOS ] SMBIOS table addr=0x000fbb80
00001830557i[BIOS ] ACPI tables: RSDP addr=0x000fbc90 ACPI DATA addr=0x01ff0000 size=0x988
00001833796i[BIOS ] Firmware waking vector 0x1ff00cc
00001844909i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
00001845753i[BIOS ] bios_table_cur_addr: 0x000fbcb4
00014041523i[BIOS ] Booting from 0000:7c00
00019506106e[CPU0 ] fetch_raw_descriptor: GDT: index (ff57) 1fea > limit (17)
00019506106e[CPU0 ] fetch_raw_descriptor: GDT: index (ff57) 1fea > limit (17)
00019506106i[CPU0 ] CPU is in v8086 mode (active)
00019506106i[CPU0 ] CS.d_b = 16 bit
00019506106i[CPU0 ] SS.d_b = 16 bit
00019506106i[CPU0 ] EFER   = 0x00000000
00019506106i[CPU0 ] | RAX=0000000000000000  RBX=0000000000000000
00019506106i[CPU0 ] | RCX=0000000000000026  RDX=00000000000003f2
00019506106i[CPU0 ] | RSP=0000000000000000  RBP=0000000000008fcc
00019506106i[CPU0 ] | RSI=00000000c00000ca  RDI=0000000000000b52
00019506106i[CPU0 ] |  R8=0000000000000000   R9=0000000000000000
00019506106i[CPU0 ] | R10=0000000000000000  R11=0000000000000000
00019506106i[CPU0 ] | R12=0000000000000000  R13=0000000000000000
00019506106i[CPU0 ] | R14=0000000000000000  R15=0000000000000000
00019506106i[CPU0 ] | IOPL=0 id vip vif AC VM RF NT OF DF IF tf SF zf AF PF cf
00019506106i[CPU0 ] | SEG selector     base    limit G D
00019506106i[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
00019506106i[CPU0 ] |  CS:8fcc( 0001| 0|  3) 0008fcc0 0000ffff 0 0
00019506106i[CPU0 ] |  DS:0400( 0002| 0|  3) 00004000 0000ffff 0 0
00019506106i[CPU0 ] |  SS:0ec0( 0002| 0|  3) 0000ec00 0000ffff 0 0
00019506106i[CPU0 ] |  ES:007a( 0002| 0|  3) 000007a0 0000ffff 0 0
00019506106i[CPU0 ] |  FS:19e0( 0002| 0|  3) 00019e00 0000ffff 0 0
00019506106i[CPU0 ] |  GS:0008( 0002| 0|  3) 00000080 0000ffff 0 0
00019506106i[CPU0 ] |  MSR_FS_BASE:0000000000019e00
00019506106i[CPU0 ] |  MSR_GS_BASE:0000000000000080
00019506106i[CPU0 ] | RIP=000000000000007a (000000000000007a)
00019506106i[CPU0 ] | CR0=0xe0000011 CR2=0x000000000008fd3a
00019506106i[CPU0 ] | CR3=0x0009c000 CR4=0x00000000
00019506106i[CPU0 ] 0x000000000000007a>> add byte ptr ds:[bx+si], al : 0000
00019506106p[CPU0 ] >>PANIC<< exception(): 3rd (10) exception with no resolution

__asm
Posts:5
Joined:Wed Feb 03, 2010 7:09 pm

Re: Issues rebuilding kernel (Visual Studio 2008 Prof)

Post by __asm » Sat Feb 06, 2010 2:56 am

right just tried something that frankly i should have done in the first place, i added the kybrd.* files the kernel project directly and rebuilt and it works perfectly, i did check the object created by the two projects the kernel project 4KB bigger than the keyboard project, what is strange is when i did a binary compare the two files are identical all the way to the end, except the one in the kernel is a clear 4KB larger, so what and why would it be stripping the object file??

Post Reply