raspberry3_bare/hello.c

52 lines
1.0 KiB
C

#include "fb.h"
#include "mbox.h"
#include "uart.h"
#include "utils.h"
struct fbst fb;
int kernelmain(void)
{
init_uart();
if (init_fb(&fb) == 0) {
puts("Fail to init framebuffer");
}
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;
if (!mbox_call(MBOX_CH_PROP, mbox)) {
puts("videocore start at 0x");
printhex(mbox[5]);
puts(" - ");
int mem = mbox[6] / 1024 / 1024;
printdec(mem);
puts(" Mo\n");
} else {
puts("Error getting videocore mem\n");
}
printclock();
unsigned char *ptr = fb.fbp;
for (unsigned int y = 0; y < fb.height; y++) {
for (unsigned int x = 0; x < fb.width; x++) {
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;
}
}
return 0;
}