File tree 4 files changed +32
-2
lines changed
4 files changed +32
-2
lines changed Original file line number Diff line number Diff line change @@ -22,13 +22,14 @@ nasm -f elf32 ./kernel/cpu/load_isr.asm -o load_isr.o
22
22
i686-elf-gcc -I./kernel/include/ -I./kernel/drivers/ -c ./kernel/cpu/isr.c -o isr.o
23
23
nasm -f elf32 ./kernel/cpu/load_irq.asm -o load_irq.o
24
24
i686-elf-gcc -I./kernel/include/ -c ./kernel/cpu/irq.c -o irq.o
25
+ i686-elf-gcc -I./kernel/ -I./kernel/include/ -c ./kernel/drivers/pit/pit.c -o pit.o
25
26
i686-elf-gcc -I./kernel/drivers/ -c ./kernel/system/panic.c -o panic.o
26
27
i686-elf-gcc -I./kernel/include/ -I./kernel/drivers/ -c ./kernel/system/memory.c -o memory.o
27
28
i686-elf-gcc -I./kernel/drivers/ -I./kernel/system/ -I./kernel/include/ -c ./kernel/system/vtconsole.c -o vtconsole.o
28
29
i686-elf-gcc -I./kernel/include/ -I./kernel/drivers/ -c ./kernel/fs/vfs/vfs.c -o vfs.o
29
30
30
31
31
- i686-elf-gcc -T ./kernel/arch/i386/linker.ld -o PlatypusOS.bin -ffreestanding -O2 -nostdlib boot.o vga.o keyboard.o ports.o gdt.o load_gdt.o idt.o load_idt.o isr.o load_isr.o irq.o load_irq.o panic.o memory.o vtconsole.o vfs.o main.o
32
+ i686-elf-gcc -T ./kernel/arch/i386/linker.ld -o PlatypusOS.bin -ffreestanding -O2 -nostdlib boot.o vga.o keyboard.o ports.o gdt.o load_gdt.o idt.o load_idt.o isr.o load_isr.o irq.o load_irq.o pit.o panic.o memory.o vtconsole.o vfs.o main.o
32
33
33
34
# After linking everything, remove the object files
34
35
rm * .o
Original file line number Diff line number Diff line change 1
1
#include <vga/vga.h>
2
2
#include <keyboard/keyboard.h>
3
3
#include <system/vtconsole.h>
4
+ #include <pit/pit.h>
4
5
#include <vfs.h>
5
6
#include <gdt.h>
6
7
#include <idt.h>
@@ -25,6 +26,8 @@ void kernel_main() {
25
26
writestr ("[OK] Load ISR\n" );
26
27
init_irq ();
27
28
writestr ("[OK] Load IRQ\n" );
29
+ writestr ("[OK] Load PIT\n" );
30
+ init_timer (50 );
28
31
29
32
/* Load Drivers */
30
33
init_keyboard ();
@@ -42,4 +45,4 @@ void kernel_main() {
42
45
settextcolor (COLOR_WHITE , COLOR_BLACK );
43
46
writestr ("Hi! There's not much to do yet, but come back later for more stuff!\n" );
44
47
writestr ("user@kernel: " );
45
- }
48
+ }
Original file line number Diff line number Diff line change
1
+ #include "pit.h"
2
+ #include <cpu/irq.h>
3
+ #include <kernel/ports.h>
4
+
5
+ int kernel_timer_ticks = 0 ;
6
+
7
+ void handler_timer () {
8
+ kernel_timer_ticks ++ ;
9
+ }
10
+
11
+ void init_timer (int frequency ) {
12
+
13
+ install_irq_handler (0 , handler_timer );
14
+ int divisor = 1193180 / frequency ;
15
+
16
+ outp (0x43 , 0x36 );
17
+ outp (0x40 , frequency & 0xFF );
18
+ outp (0x40 , frequency >> 8 );
19
+ }
Original file line number Diff line number Diff line change
1
+ #ifndef _PIT_H
2
+ #define _PIT_H
3
+
4
+ void handler_timer ();
5
+ void init_timer (int frequency );
6
+
7
+ #endif //_PIT_H
You can’t perform that action at this time.
0 commit comments