diff options
Diffstat (limited to 'md/writeup')
| -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  | 
