樹莓派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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241415.html
標籤:其他
上一篇:YS13-3熒光管時鐘設計
