lib: Move debug print function into a separate file

Signed-off-by: Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
This commit is contained in:
ivoszbg 2022-06-14 19:51:51 +03:00
parent 0ac15a9da6
commit c038c7839c
7 changed files with 40 additions and 29 deletions

12
include/lib/debug.h Normal file
View File

@ -0,0 +1,12 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
*/
#ifndef DEBUG_H_ /* Include guard */
#define DEBUG_H_
extern void draw_text(volatile char *fb, char *text, int textX, int textY, int width, int stride);
long int debug_linecount = 0;
#endif

View File

@ -11,8 +11,7 @@ extern void load_kernel(void* dtb, void* x1, void* x2, void* x3, void* kernel);
extern void soc_init(void); extern void soc_init(void);
extern void board_init(void); extern void board_init(void);
extern void draw_text(volatile char *fb, char *text, int textX, int textY); extern void printk(char *text);
extern void debug_printfb(volatile char *fb, char *text, int textX, int width, int stride);
/* Define our own 128 bit memcpy */ /* Define our own 128 bit memcpy */
void memcpy(void *dest, void *src, int size) void memcpy(void *dest, void *src, int size)

View File

@ -1,7 +1,7 @@
menu "Libraries" menu "Libraries"
config SIMPLE_FB config SIMPLE_FB
bool "Support for Simple Framebuffer" bool "Support for Simple Framebuffer"
default y default y
help help
Say Y if you want to have Framebuffer output. Say Y if you want to have Framebuffer output.
endmenu endmenu

View File

@ -1 +1,2 @@
lib-$(CONFIG_SIMPLE_FB) += simplefb/simplefb.o lib-$(CONFIG_SIMPLE_FB) += simplefb/simplefb.o
lib-y += debug/debug.o

18
lib/debug/debug.c Normal file
View File

@ -0,0 +1,18 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
*/
#include <lib/debug.h>
void printk(char *text) {
#ifdef CONFIG_SIMPLE_FB
/* IMPORTANT: Limit the linecount */
if(debug_linecount > 100 || debug_linecount < 0)
debug_linecount = 0;
draw_text((char*)CONFIG_FRAMEBUFFER_BASE, "[uniLoader] ", 0, (20 + (debug_linecount * 30)), CONFIG_FRAMEBUFFER_WIDTH, CONFIG_FRAMEBUFFER_STRIDE);
draw_text((char*)CONFIG_FRAMEBUFFER_BASE, text, 0 + (12 * 8), (20 + (debug_linecount * 30)), CONFIG_FRAMEBUFFER_WIDTH, CONFIG_FRAMEBUFFER_STRIDE);
debug_linecount++;
#endif
}

View File

@ -8,8 +8,6 @@
#include <lib/simplefb.h> #include <lib/simplefb.h>
#include <lib/font.h> #include <lib/font.h>
int debug_linecount = 0;
void clean_fb(volatile char *fb, char *text, int width, int height, int stride) { void clean_fb(volatile char *fb, char *text, int width, int height, int stride) {
for (volatile char *addr = fb; addr < fb + (width * height * stride); addr += stride) for (volatile char *addr = fb; addr < fb + (width * height * stride); addr += stride)
*(int*) (addr) = 0x0; *(int*) (addr) = 0x0;
@ -61,17 +59,6 @@ void draw_text(volatile char *fb, char *text, int textX, int textY, int width, i
} }
} }
void debug_printfb(volatile char *fb, char *text, int textX, int width, int stride) {
/* IMPORTANT: Limit the linecount */
if(debug_linecount > 100 || debug_linecount < 0)
debug_linecount = 0;
draw_text(fb, "[uniLoader] ", textX, (20 + (debug_linecount * 30)), width, stride);
draw_text(fb, text, textX + 96, (20 + (debug_linecount * 30)), width, stride);
debug_linecount++;
}
/* Helper functions */ /* Helper functions */
font_params get_font_params() { font_params get_font_params() {
font_params params = {.width=FONTW, .height=FONTH}; font_params params = {.width=FONTW, .height=FONTH};

View File

@ -10,19 +10,13 @@ void main(void* dt, void* kernel) {
/* Initialize SoC and Board specific peripherals/quirks */ /* Initialize SoC and Board specific peripherals/quirks */
soc_init(); soc_init();
#ifdef CONFIG_SIMPLE_FB printk("soc_init() passed!");
debug_printfb((char*)CONFIG_FRAMEBUFFER_BASE, "soc_init() passed!", 0, CONFIG_FRAMEBUFFER_WIDTH, CONFIG_FRAMEBUFFER_STRIDE);
#endif
board_init(); board_init();
#ifdef CONFIG_SIMPLE_FB printk("board_init() passed!");
debug_printfb((char*)CONFIG_FRAMEBUFFER_BASE, "board_init() passed!", 0, CONFIG_FRAMEBUFFER_WIDTH, CONFIG_FRAMEBUFFER_STRIDE);
#endif
/* Copy kernel to memory and boot */ /* Copy kernel to memory and boot */
#ifdef CONFIG_SIMPLE_FB printk("Booting linux...");
debug_printfb((char*)CONFIG_FRAMEBUFFER_BASE, "Booting linux...", 0, CONFIG_FRAMEBUFFER_WIDTH, CONFIG_FRAMEBUFFER_STRIDE);
#endif
memcpy((void*)CONFIG_PAYLOAD_ENTRY, kernel, (unsigned long) &kernel_size); memcpy((void*)CONFIG_PAYLOAD_ENTRY, kernel, (unsigned long) &kernel_size);
load_kernel(dt, 0, 0, 0, (void*)CONFIG_PAYLOAD_ENTRY); load_kernel(dt, 0, 0, 0, (void*)CONFIG_PAYLOAD_ENTRY);
} }