Xylitol

Untitled

Aug 21st, 2025
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <inttypes.h>
  4.  
  5. #define EFUSE_BASE_ADDR 0x5012D000u
  6. #define EFUSE_SIZE_BYTES 0x1000u /* 4 KB */
  7. #define LINE_BYTES 16u
  8.  
  9. static void hex_dump_region(uintptr_t base, size_t len) {
  10. volatile const uint8_t *p = (volatile const uint8_t *)base;
  11.  
  12. for (size_t off = 0; off < len; off += LINE_BYTES) {
  13. uint8_t buf[LINE_BYTES];
  14. size_t chunk = (off + LINE_BYTES <= len) ? LINE_BYTES : (len - off);
  15.  
  16. for (size_t i = 0; i < chunk; ++i) {
  17. buf[i] = p[off + i];
  18. }
  19.  
  20. /* Print address */
  21. printf("%08" PRIxPTR " ", (uintptr_t)(base + off));
  22.  
  23. /* Print hex */
  24. for (size_t i = 0; i < LINE_BYTES; ++i) {
  25. if (i < chunk) {
  26. printf("%02X ", buf[i]);
  27. } else {
  28. printf(" ");
  29. }
  30. if (i == 7) printf(" ");
  31. }
  32.  
  33. /* Print ASCII */
  34. printf(" |");
  35. for (size_t i = 0; i < chunk; ++i) {
  36. uint8_t c = buf[i];
  37. putchar((c >= 32 && c <= 126) ? c : '.');
  38. }
  39. printf("|\n");
  40. }
  41. }
  42.  
  43. int main(int argc, char **argv) {
  44. (void)argc; (void)argv;
  45. printf("\n=== eFuse raw dump: 0x%08" PRIxPTR " - 0x%08" PRIxPTR " (%u bytes) ===\n",
  46. (uintptr_t)EFUSE_BASE_ADDR,
  47. (uintptr_t)(EFUSE_BASE_ADDR + EFUSE_SIZE_BYTES - 1u),
  48. (unsigned)EFUSE_SIZE_BYTES);
  49.  
  50. hex_dump_region(EFUSE_BASE_ADDR, EFUSE_SIZE_BYTES);
  51.  
  52. printf("=== End of eFuse dump ===\n");
  53. return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment