|
ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
|
On-silicon HIL: EPUB cover-art extraction + decode + render (#143). More...
#include <stddef.h>#include <stdint.h>#include "epub.h"#include "epub_cover_fixture.h"#include "ra8_board_ek_ra8d2.h"#include "ra8_boot_entry.h"#include "ra8_cgc.h"#include "ra8_err.h"#include "ra8_gfx.h"#include "ra8_isr.h"#include "ra8_mstp.h"#include "ra8_time.h"#include "reflow_image.h"Go to the source code of this file.
Enumerations | |
| enum | ec_consts_t : uint32_t { k_ec_uart_baud = 115200U , k_ec_fb_w = 160U , k_ec_fb_h = 120U , k_ec_arena_bytes = 128U * 1024U , k_ec_cover_cap = 64U * 1024U , k_ec_col_bg = 0x202028U , k_ec_fnv_offset = 0x811C9DC5U , k_ec_fnv_prime = 0x01000193U , k_ec_hex_nibbles = 8U , k_ec_nibble_bits = 4U , k_ec_nibble_mask = 0x0FU , k_ec_dec_ten = 10U } |
| Console / render knobs (no magic numbers). More... | |
Functions | |
| static void | ec_print (const uint8_t *msg, uint32_t len) |
| Emit a byte run on the SCI8 console. | |
| static void | ec_panic_halt (const uint8_t *msg, uint32_t len) |
| Print the fail banner and trap (ra8_emulator halts on the BKPT). | |
| static uint32_t | ec_framebuffer_hash (void) |
| FNV-1a hash over the rendered framebuffer. | |
| static void | ec_print_hex (uint32_t value) |
| Print a 32-bit value as 8 upper-case hex digits. | |
| static void | ec_print_uint (uint32_t value) |
| Print a small unsigned integer in decimal. | |
| static void | ec_setup_or_halt (void) |
| Bring up clocks/MSTP/time + the SCI8 console; halt on failure. | |
| static size_t | ec_render_cover_or_halt (int32_t *out_w, int32_t *out_h) |
| Open the EPUB, extract the cover, decode+scale+blit it; return size. | |
| void | main (void) |
| App entry: extract + decode + render the EPUB cover, print the banner. | |
Variables | |
| static epub_book_t | s_book |
| Opened book (large – file-scope, not on the stack). | |
| static uint8_t | s_cover [k_ec_cover_cap] |
| Cover-image read buffer (file-scope; holds the raw encoded bytes). | |
| static uint16_t | s_framebuffer [(size_t) k_ec_fb_h *(size_t) k_ec_fb_w] |
| RGB565 framebuffer the cover is rendered into. | |
| static uint8_t | s_img_arena [k_ec_arena_bytes] |
| Fixed bump arena backing the heap-free image decode. | |
| static const uint8_t | k_msg_boot [] = "ereader-cover-hil: boot\r\n" |
| static const uint8_t | k_msg_fail [] = "ereader-cover-hil: FAIL init\r\n" |
| static const uint8_t | k_msg_open [] = "ereader-cover-hil: FAIL open\r\n" |
| static const uint8_t | k_msg_cov [] = "ereader-cover-hil: FAIL cover\r\n" |
| static const uint8_t | k_msg_derr [] = "ereader-cover-hil: FAIL decode\r\n" |
| static const uint8_t | k_msg_pre [] = "ereader-cover-hil: cover " |
| static const uint8_t | k_msg_x [] = "x" |
| static const uint8_t | k_msg_crc [] = " crc=" |
| static const uint8_t | k_msg_ok [] = " PASS\r\n" |
On-silicon HIL: EPUB cover-art extraction + decode + render (#143).
The headline "book cover art" path for the on-device e-reader, end to end:
The console banner on success is:
ereader-cover-hil: cover <W>x<H> crc=<8hex> PASS
where <W>x<H> is the blitted (scaled) size and <8hex> the framebuffer hash. The whole chain is deterministic (a fixed blob through a deterministic parser + decoder + scaler), so the banner is identical on host, ra8_emulator, and silicon. Any failure on any stage prints a FAIL banner and halts on a BKPT before the PASS line, so the gate is exact.
This is the EPUB analogue of ereader_image (#106, which decodes a bare baked PNG): the only new surface is the epub_get_cover_image extraction in front of the proven decode+scale+blit pipeline.
[Ring 7 / App] {World: NS}
Definition in file main.c.
| enum ec_consts_t : uint32_t |
Console / render knobs (no magic numbers).
|
static |
FNV-1a hash over the rendered framebuffer.
Definition at line 106 of file main.c.
References k_ec_fnv_offset, k_ec_fnv_prime, and s_framebuffer.
Referenced by main().
|
static |
Print the fail banner and trap (ra8_emulator halts on the BKPT).
Definition at line 96 of file main.c.
References ec_print().
Referenced by ec_render_cover_or_halt(), ec_setup_or_halt(), and main().
|
static |
Emit a byte run on the SCI8 console.
Definition at line 90 of file main.c.
References ra8_board_uart_console_write().
Referenced by ec_panic_halt(), ec_print_hex(), ec_print_uint(), and main().
|
static |
Print a 32-bit value as 8 upper-case hex digits.
Definition at line 118 of file main.c.
References ec_print(), k_ec_dec_ten, k_ec_hex_nibbles, k_ec_nibble_bits, and k_ec_nibble_mask.
Referenced by main().
|
static |
Print a small unsigned integer in decimal.
Definition at line 130 of file main.c.
References ec_print(), and k_ec_dec_ten.
Referenced by main().
|
static |
Open the EPUB, extract the cover, decode+scale+blit it; return size.
Halts on any failure stage before returning. On success the cover has been rendered into s_framebuffer and the blitted dimensions are returned via out_w / out_h.
| [out] | out_w | Receives the blitted (scaled) cover width, pixels. |
| [out] | out_h | Receives the blitted (scaled) cover height, pixels. |
out_w/out_h set. Definition at line 182 of file main.c.
References ec_panic_halt(), epub_get_cover_image(), epub_open(), k_ec_arena_bytes, k_ec_cover_cap, k_ec_fb_h, k_ec_fb_w, k_epub_cover_fixture, k_epub_cover_fixture_len, k_msg_cov, k_msg_derr, k_msg_open, k_ra8_ok, ra8_img_decode_blit(), s_book, s_cover, and s_img_arena.
Referenced by main().
|
static |
Bring up clocks/MSTP/time + the SCI8 console; halt on failure.
Definition at line 149 of file main.c.
References ec_panic_halt(), k_ec_uart_baud, k_msg_fail, k_ra8_clock_id_cpuclk0, k_ra8_ok, ra8_board_uart_console_init(), ra8_cgc_get_clock_hz(), ra8_cgc_init(), ra8_mstp_init(), and ra8_time_init().
Referenced by main().
| void main | ( | void | ) |
App entry: extract + decode + render the EPUB cover, print the banner.
The application entry point Reset_Handler hands control to.
Definition at line 221 of file main.c.
References ec_framebuffer_hash(), ec_panic_halt(), ec_print(), ec_print_hex(), ec_print_uint(), ec_render_cover_or_halt(), ec_setup_or_halt(), k_ec_col_bg, k_ec_fb_h, k_ec_fb_w, k_msg_boot, k_msg_crc, k_msg_fail, k_msg_ok, k_msg_pre, k_msg_x, k_ra8_gfx_format_rgb565, k_ra8_ok, ra8_gfx_clear(), ra8_gfx_init(), ra8_isr_globals_enable(), and s_framebuffer.
|
static |
|
static |
|
static |
Definition at line 83 of file main.c.
Referenced by ec_render_cover_or_halt(), and main().
|
static |
|
static |
|
static |
|
static |
Definition at line 85 of file main.c.
Referenced by erb_render_image(), ez_print_banner(), ls_emit_banner(), main(), and mg_print_banner().
|
static |
|
static |
|
static |