raspberry3_bare/hello.c

75 lines
1.5 KiB
C
Raw Permalink Normal View History

2022-03-15 23:37:20 +01:00
#include "fb.h"
2022-03-15 23:09:55 +01:00
#include "mbox.h"
#include "static_tools.h"
2022-03-15 23:37:20 +01:00
#include "uart.h"
#include "utils.h"
2022-03-14 07:46:32 +01:00
2022-03-20 21:44:11 +01:00
#define FB_WIDTH 640
#define FB_HEIGHT 480
#define BUFF_SIZE 100
2022-03-20 21:44:11 +01:00
extern unsigned long int __ld_kernel_begin;
2022-03-15 23:37:20 +01:00
int kernelmain(void)
{
2022-03-18 00:30:59 +01:00
struct fbst *fb;
unsigned char *ptr;
uart_init();
puts("starting kernel\n");
char buffer[BUFF_SIZE];
readline(buffer, BUFF_SIZE);
if (strcmp(buffer, "kernel") == 0) {
if(copy_kernel()){
puts("Checksum error");
}
}
2022-03-20 21:44:11 +01:00
if (fb_init(FB_WIDTH, FB_HEIGHT) == 0) {
2022-03-15 23:37:20 +01:00
puts("Fail to init framebuffer");
}
2022-03-15 23:09:55 +01:00
mbox[0] = 8 * 4;
mbox[1] = MBOX_REQUEST;
mbox[2] = MBOX_TAG_GETVCOREMEM;
mbox[3] = 8;
mbox[4] = 0;
mbox[5] = 0;
mbox[6] = 0;
mbox[7] = MBOX_TAG_LAST;
2022-03-17 22:35:47 +01:00
if (!mbox_call(MBOX_CH_PROP, mbox)) {
2022-03-15 23:09:55 +01:00
puts("videocore start at 0x");
printhex(mbox[5]);
puts(" - ");
2022-03-15 23:37:20 +01:00
int mem = mbox[6] / 1024 / 1024;
2022-03-15 23:09:55 +01:00
printdec(mem);
puts(" Mo\n");
2022-03-15 23:37:20 +01:00
} else {
2022-03-15 23:09:55 +01:00
puts("Error getting videocore mem\n");
}
2022-03-17 22:35:47 +01:00
printclock();
2022-03-15 23:37:20 +01:00
2022-03-12 22:31:26 +01:00
int el = get_el();
puts("Exception leve: ");
printdec(el);
2022-03-18 00:30:59 +01:00
fb = fb_get();
ptr = fb->fbp;
2022-03-17 22:35:47 +01:00
2022-03-18 00:30:59 +01:00
for (unsigned int y = 0; y < fb->height; y++) {
for (unsigned int x = 0; x < fb->width; x++) {
2022-03-17 22:35:47 +01:00
if (y % 60 == 0)
*((unsigned int *)ptr) = 0x00FF0000;
else if (y % 40 == 0)
*((unsigned int *)ptr) = 0x0000FF00;
else if (y % 20 == 0)
*((unsigned int *)ptr) = 0x000000FF;
else
*((unsigned int *)ptr) = 0x00000000;
ptr += 4;
2022-03-15 23:37:20 +01:00
}
2022-03-17 22:35:47 +01:00
}
2022-03-18 00:30:59 +01:00
fb_print(0, 0, "Hello Dude\n");
2022-03-14 07:46:32 +01:00
return 0;
}