From ae361f46b092264f5107eaaf8fc594e0ca679014 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Wed, 3 Sep 2014 16:05:48 +0200 Subject: fix bug in apic.c and update of Readme --- README.md | 192 +++++++------------------------------------------------------- 1 file changed, 22 insertions(+), 170 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 056ba5d..7131c48 100644 --- a/README.md +++ b/README.md @@ -45,88 +45,46 @@ All features are only very rudiemntary and buggy. * PCI bus scanning * Physical memory management * Virtual memory managment (Paging) -* Multitasking (2 tasks so far) -* Multiple processors (hardcoded 2) +* Multitasking +* Multiple processors * Floppy disk driver * VESA +* ACPI / MP (to get processor info) Todos ----- Some things I would like to add someday: +* shell + +* drivers to read/write usb sticks * Filesystem (probably ext2) +* kernel should run in high memory (~3gb) virutal mem. why? except v86 tasks? + * e1000 driver -* drivers to read/write usb sticks -* networking stack / webserver + * port c lib and gcc +* networking stack / webserver * user space / ring3 / ELF binaries support -* mouse support -* simple window manager -* 64-bit support + * alternatively grub as bootloader -* implement a real shell (in user mode) -* kernel should run in high memory (~3gb) virutal mem. why? except v86 tasks? -* let processors sleep if there is no work -* use ACPI instead of MP spec. +* 64-bit support * ARM -* JVM? +* JVM +* distributed OS + +* mouse support +* simple window manager Issues ------ -* memory map and some other locations are hardcoded. +* stack heap sizes?? +* multitasking crashes sometimes/ page faults? interrupts !? * the first ~4mb of physical mem are reserved by mem manager (hardcoded) -* bootloader loads only 52 sectors of kernel into mem. ~25KB! * size of bitmap to track free blocks of physical memory is hardcoded to max. * Assumed suport for VESA mode 0x114 with linear addressing! -* My Acer Aspire seems to lack MP tables, switch to ACPI - - -MEMORY LAYOUT -============= - -floppy image ------------- -* 0x0000 - MASTER BOOT RECORD -* 0x0200 - kernel image (contains sotrage for interrupt desc. table) -* 0x6400 - fool-font binary -* 0x8000 - file system will go here? - -ram ---- - -0x1000 - boot loader puts the kernel binary here. - -0x7000 - entry point for APs (Application Processors). - -0x7c00 - first stage boot loader (loaded by bios) boot/mbr.asm - includes initial Global Descriptor Table! - -0x7c00 + 3 (after jmp boot_16) - boot loader puts number of boot floppy disk here. - -0x7c00 + 0x600 - boot loader puts number of records in memory map in here! - -0x7c00 + 0x400 - the boot loader puts the memory map obtained from the - bios here before switching to protected mode. - -0x8300 - boot loader puts the vesa modes here! - -0x9000 - esp (stack counts down) - -0x9000 - physical memory manager bitmap!!! - -0xb000 - memory above this is used for dma (by our floppy.c driver) REFERENCES @@ -135,11 +93,9 @@ REFERENCES * LINUX KERNEL * GNU HURD * MINIX -* FreeBSD etc. +* FreeBSD * xv6 -* distributed OS? - -* e1000 driver +* e1000 linux driver * http://www.brokenthorn.com/Resources/OSDev17.html * http://www.jamesmolloy.co.uk/tutorial_html/9.-Multitasking.html @@ -152,108 +108,4 @@ REFERENCES * Intel 386 Programmes Ref. * http://forum.osdev.org/viewtopic.php?f=1&t=10944 * man syscalls (posix syscalls?) - - -MY NOTES BELOW THIS LINE -======================== - -Keyboard Driver ---------------- - -//some thoughts on redesign of the keyboard driver -//use uint8_t for proc_pos and buff_pos and a BUF_SIZE of 256 for auto wrap!? - -// kb input ringbuffer -kb_scancode kb_buff[BUF_SIZE]; - -buff_pos=0; -proc_pos=0; -buffered=0; - -void kb_irq() -{ - cli - - //we get one interrupt for EACH scancode! - kb_scancode val=get_scancode(); - - // think about race condition if called while inside kb_proc(); - if(buffered+1