#include #include #include #include #include #include #include static void halt() { while (1) { asm volatile("wfi"); // Wait for interrupt. Core enters low-power state. } } void main() { bool success = true; uint32_t error = -1; char buf[32]; const int raspi = raspi_init(); mmio_init(raspi); // Must be initialized before other peripherals. mbox_init(); uart_init(raspi); uart_print("Initializing framebuffer\n"); success = framebuffer_init(&error); if (!success) { uart_print("Failed to initialize framebuffer:\n"); if (error == MAILBOX_DELIVERY_ERROR) { uart_print("MAILBOX_DELIVERY_ERROR\n"); } else if (error == MAILBOX_ERROR) { uart_print("MAILBOX_ERROR\n"); } goto end; } const Framebuffer* fb = framebuffer_get(); uart_print("Framebuffer:"); uart_print("\n width: "); uart_print(utoa(fb->width, buf, sizeof(buf))); uart_print("\n height: "); uart_print(utoa(fb->height, buf, sizeof(buf))); uart_print("\n depth: "); uart_print(utoa(fb->depth, buf, sizeof(buf))); uart_print("\n addr: "); uart_print(ptoa(fb->pixels, buf, sizeof(buf))); uart_print("\n size: "); uart_print(utoa(fb->size, buf, sizeof(buf))); uart_print("\n"); uart_print("Clearing framebuffer\n"); framebuffer_clear((Pixel){255, 0, 255}); uart_print("All done\n"); end: halt(); }