增加了uart输出的条件编译

This commit is contained in:
fslongjin 2022-04-15 15:28:00 +08:00
parent 22359344e4
commit 0e8bf69d65
4 changed files with 21 additions and 6 deletions

View File

@ -6,7 +6,8 @@
"${workspaceFolder}/**" "${workspaceFolder}/**"
], ],
"defines": [ "defines": [
"x86_64" "x86_64",
"DEBUG"
], ],
"compilerPath": "/usr/bin/gcc", "compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17", "cStandard": "gnu17",

View File

@ -7,7 +7,13 @@ DIR_LIB=lib
lib_patterns := *.a lib_patterns := *.a
LIB_FILES := $(foreach DIR,$(DIR_LIB),$(addprefix $(DIR)/,$(lib_patterns))) LIB_FILES := $(foreach DIR,$(DIR_LIB),$(addprefix $(DIR)/,$(lib_patterns)))
CFLAGS := -mcmodel=large -fno-builtin -m64 -g -O0 -I . -fno-stack-protector DEBUG=1
CFLAGS := -mcmodel=large -fno-builtin -m64 -O0 -I . -fno-stack-protector
ifeq ($(DEBUG), 1)
CFLAGS += -g
endif
ARCH=x86_64 ARCH=x86_64
# 控制操作系统使用的中断控制器 _INTR_8259A_ _INTR_APIC_ # 控制操作系统使用的中断控制器 _INTR_8259A_ _INTR_APIC_
PIC := _INTR_APIC_ PIC := _INTR_APIC_

View File

@ -29,7 +29,7 @@ int printk_init(const int char_size_x, const int char_size_y)
{ {
struct multiboot_tag_framebuffer_info_t info; struct multiboot_tag_framebuffer_info_t info;
int reserved; int reserved;
multiboot2_iter(multiboot2_get_Framebuffer_info, &info, &reserved); multiboot2_iter(multiboot2_get_Framebuffer_info, &info, &reserved);
pos.width = info.framebuffer_width; pos.width = info.framebuffer_width;
@ -112,16 +112,20 @@ void auto_newline()
* @brief * @brief
* *
*/ */
if (pos.x > pos.max_x) if (pos.x > pos.max_x)
{ {
uart_send(COM1, '\n'); #ifdef DEBUG
uart_send(COM1, '\n');
#endif
pos.x = 0; pos.x = 0;
++pos.y; ++pos.y;
} }
if (pos.y > pos.max_y) if (pos.y > pos.max_y)
{ {
#ifdef DEBUG
uart_send(COM1, '\n'); uart_send(COM1, '\n');
#endif
pos.y = pos.max_y; pos.y = pos.max_y;
int lines_to_scroll = 1; int lines_to_scroll = 1;
scroll(true, lines_to_scroll * pos.char_size_y, false); scroll(true, lines_to_scroll * pos.char_size_y, false);
@ -630,8 +634,10 @@ static void putchar(uint *fb, int Xsize, int x, int y, unsigned int FRcolor, uns
* @param BKcolor * @param BKcolor
* @param font bitmap * @param font bitmap
*/ */
// 输出到串口
#ifdef DEBUG
uart_send(COM1, font); uart_send(COM1, font);
#endif
unsigned char *font_ptr = font_ascii[font]; unsigned char *font_ptr = font_ascii[font];
unsigned int *addr; unsigned int *addr;

View File

@ -84,7 +84,9 @@ void system_initialize()
// 初始化printk // 初始化printk
printk_init(8, 16); printk_init(8, 16);
#ifdef DEBUG
uart_init(COM1, 115200); uart_init(COM1, 115200);
#endif
kinfo("Kernel Starting..."); kinfo("Kernel Starting...");
// 重新加载gdt和idt // 重新加载gdt和idt