樹莓派4B 寄存器基地址查詢

樹莓派4B 寄存器基地址查詢

樹莓派4B的datasheet在我看來非常混亂複雜,尤其是地址映射方面。單datasheet就有兩個版本而且還自相矛盾。爲了查找到確定的物理地址,使用官方提供的函數進行讀取。
首先在應用層插入頭文件:

#include <bcm_host.h>

可用函數有如下選擇:

<1>	unsigned bcm_host_get_peripheral_address()	//讀取外設物理地址
<2> unsigned bcm_host_get_peripheral_size()
<3> unsigned bcm_host_get_sdram_address()

本例要求讀取外設物理地址,使用函數(1),代碼如下:

#include <stdio.h>
#include <bcm_host.h>

void main()
{
   
   
	unsigned t;
	t = bcm_host_get_peripheral_address();
	printf("baseadd = %x\n",t);
}

用下面的語句進行編譯,一定要在樹莓派上進行編譯運行

gcc test.c -I/opt/vc/include -L/opt/vc/lib -lbcm_host -o test

生成test文件,如下圖。運行test文件如下,可以看到此時樹莓派4B的基地址爲

baseadd=fe000000
在這裏插入圖片描述
這個很重要,是驅動開發的基礎,以此爲基地址相對偏移一個位置。如GPIO的設置。在這裏要特別注意相對偏移量。

GPFSEL0= (volatile unsigned int *)ioremap(0xfe200000,4);
GPSET0 = (volatile unsigned int *)ioremap(0xfe20001c,4);
GPCLR0 = (volatile unsigned int *)ioremap(0xfe200028,4);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章