Install: Hekate 8GB after copy (fuse >4GiB), dram_fuse helper, RAM test target
All checks were successful
Build / Build (push) Successful in 14s
All checks were successful
Build / Build (push) Successful in 14s
- Add dram_fuse.c/h for shared fuse-to-MiB mapping - After successful update/clean install copy: if hekate_8gb.bin exists and fuse reports more than 4 GiB, copy to sd:/payload.bin and sd:/bootloader/update.bin, then remove source; otherwise remove helper only - Makefile: make ram-test builds output/RAM-Test.bin (tools/ram_test_main.c) Made-with: Cursor
This commit is contained in:
70
tools/ram_test_main.c
Normal file
70
tools/ram_test_main.c
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Minimal RAM info test payload (fuse DRAM ID + SK table -> MiB).
|
||||
* Build: make ram-test -> output/RAM-Test.bin
|
||||
*/
|
||||
|
||||
#include <display/di.h>
|
||||
#include <mem/heap.h>
|
||||
#include <mem/minerva.h>
|
||||
#include <memory_map.h>
|
||||
#include <soc/bpmp.h>
|
||||
#include <soc/fuse.h>
|
||||
#include <soc/hw_init.h>
|
||||
#include <soc/t210.h>
|
||||
#include <utils/util.h>
|
||||
|
||||
#include "dram_fuse.h"
|
||||
#include "gfx.h"
|
||||
|
||||
#undef COLOR_CYAN
|
||||
#undef COLOR_WHITE
|
||||
#define COLOR_CYAN 0xFF00FFFF
|
||||
#define COLOR_WHITE 0xFFFFFFFF
|
||||
|
||||
/* Required by BDK */
|
||||
boot_cfg_t __attribute__((section("._boot_cfg"))) b_cfg;
|
||||
volatile nyx_storage_t *nyx_str = (nyx_storage_t *)NYX_STORAGE_ADDR;
|
||||
|
||||
extern void pivot_stack(u32 stack_top);
|
||||
|
||||
void ipl_main(void)
|
||||
{
|
||||
hw_init();
|
||||
pivot_stack(IPL_STACK_TOP);
|
||||
heap_init(IPL_HEAP_START);
|
||||
|
||||
minerva_init();
|
||||
minerva_change_freq(FREQ_800);
|
||||
|
||||
display_init();
|
||||
u32 *fb = display_init_framebuffer_pitch();
|
||||
gfx_init_ctxt(fb, 720, 1280, 720);
|
||||
gfx_con_init();
|
||||
display_backlight_pwm_init();
|
||||
display_backlight_brightness(100, 1000);
|
||||
|
||||
bpmp_clk_rate_set(BPMP_CLK_DEFAULT_BOOST);
|
||||
|
||||
gfx_clear_grey(0x1B);
|
||||
gfx_con_setpos(0, 0);
|
||||
gfx_con_setcol(COLOR_CYAN, gfx_con.fillbg, gfx_con.bgcol);
|
||||
gfx_printf("RAM test payload\n\n");
|
||||
gfx_con_setcol(COLOR_WHITE, gfx_con.fillbg, gfx_con.bgcol);
|
||||
|
||||
u32 raw = fuse_read_dramid(true);
|
||||
u32 nid = fuse_read_dramid(false);
|
||||
u32 chip = hw_get_chip_id();
|
||||
int mib = dram_capacity_mib_from_fuse();
|
||||
|
||||
gfx_printf("SoC: %s\n", chip == GP_HIDREV_MAJOR_T210B01 ? "Mariko (T210B01)" : "Erista (T210)");
|
||||
gfx_printf("DRAM fuse: raw %d norm %d\n", raw, nid);
|
||||
if (mib > 0)
|
||||
gfx_printf("Table MiB: %d (fuse SKU, not probe)\n", mib);
|
||||
else
|
||||
gfx_printf("Table MiB: (unknown id for this SoC)\n");
|
||||
|
||||
gfx_printf("\nHang — power off or inject payload.\n");
|
||||
|
||||
while (1)
|
||||
msleep(500);
|
||||
}
|
||||
Reference in New Issue
Block a user