diff options
author | Arturs Artamonovs <dos21h@gmail.com> | 2025-08-05 22:48:52 +0100 |
---|---|---|
committer | Arturs Artamonovs <dos21h@gmail.com> | 2025-08-05 22:48:52 +0100 |
commit | 72755030b734b4e1f0cf265ef6e7cdc5e246bc8c (patch) | |
tree | a7b242309de3ca8ca40f730be38602077de51b6c /md/writeup/raspberry5_baremetal_detect_board.md | |
parent | 1481938d316d97f52b4ba5a35142a110c303ea44 (diff) | |
download | md-content-72755030b734b4e1f0cf265ef6e7cdc5e246bc8c.tar.gz md-content-72755030b734b4e1f0cf265ef6e7cdc5e246bc8c.zip |
Diffstat (limited to 'md/writeup/raspberry5_baremetal_detect_board.md')
-rw-r--r-- | md/writeup/raspberry5_baremetal_detect_board.md | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/md/writeup/raspberry5_baremetal_detect_board.md b/md/writeup/raspberry5_baremetal_detect_board.md new file mode 100644 index 0000000..98bd505 --- /dev/null +++ b/md/writeup/raspberry5_baremetal_detect_board.md @@ -0,0 +1,49 @@ +title: Raspberry 5 baremetal detect board +keywords:raspi5,asm,c,kernel,arm64 + +# Raspberry 5 baremetal detect board + +Baremetal code snippet on how to detect what raspi board you are running on + +```c +int get_raspi_board() +{ + unsigned int reg; + int ret=0; + + /* read the system register */ +#if __aarch64__ + asm volatile ("mrs %x0, midr_el1" : "=r" (reg)); +#else + asm volatile ("mrc p15,0,%0,c0,c0,0" : "=r" (reg)); +#endif + + /* get the PartNum, detect board and MMIO base address */ + switch ((reg >> 4) & 0xFFF) { + case 0xB76: + ret=1; + break; + case 0xC07: + ret=2; + break; + case 0xD03: + ret=3; + break; + case 0xD08: + ret=4; + break; + case 0xD0B: + ret=5; + default: + break; + } + return ret; +} + +``` + +## Links + +[1] https://wiki.osdev.org/Detecting_Raspberry_Pi_Board +[2] [/writeup/raspberry5_baremetal_helloworld.md](/writeup/raspberry5_baremetal_helloworld.md) +[3] https://github.com/DSERIOUSGUY/HobOS/blob/main/mmio.c
\ No newline at end of file |