Xylitol icon

Untitled

Xylitol | PRO | 08/21/25 06:53:28 PM UTC | 0 ⭐ | 432 👁️ | Never ⏰ | []
text |

1.55 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
 #define EFUSE_BASE_ADDR   0x5012D000u
#define EFUSE_SIZE_BYTES  0x1000u  /* 4 KB */
#define LINE_BYTES        16u
 static void hex_dump_region(uintptr_t base, size_t len) {
    volatile const uint8_t *p = (volatile const uint8_t *)base;
     for (size_t off = 0; off < len; off += LINE_BYTES) {
        uint8_t buf[LINE_BYTES];
        size_t chunk = (off + LINE_BYTES <= len) ? LINE_BYTES : (len - off);
         for (size_t i = 0; i < chunk; ++i) {
            buf[i] = p[off + i];
        }
         /* Print address */
        printf("%08" PRIxPTR "  ", (uintptr_t)(base + off));
         /* Print hex */
        for (size_t i = 0; i < LINE_BYTES; ++i) {
            if (i < chunk) {
                printf("%02X ", buf[i]);
            } else {
                printf("   ");
            }
            if (i == 7) printf(" ");
        }
         /* Print ASCII */
        printf(" |");
        for (size_t i = 0; i < chunk; ++i) {
            uint8_t c = buf[i];
            putchar((c >= 32 && c <= 126) ? c : '.');
        }
        printf("|\n");
    }
}
 int main(int argc, char **argv) {
    (void)argc; (void)argv;
    printf("\n=== eFuse raw dump: 0x%08" PRIxPTR " - 0x%08" PRIxPTR " (%u bytes) ===\n",
           (uintptr_t)EFUSE_BASE_ADDR,
           (uintptr_t)(EFUSE_BASE_ADDR + EFUSE_SIZE_BYTES - 1u),
           (unsigned)EFUSE_SIZE_BYTES);
     hex_dump_region(EFUSE_BASE_ADDR, EFUSE_SIZE_BYTES);
     printf("=== End of eFuse dump ===\n");
    return 0;
}
 

Comments