树莓派4B 寄存器基地址查询

   日期:2020-12-28     浏览:95    评论:0    
核心提示:树莓派4B 寄存器基地址查询树莓派4B的datasheet在我看来非常混乱复杂,尤其是地址映射方面。单datasheet就有两个版本而且还自相矛盾。为了查找到确定的物理地址,使用官方提供的函数进行读取。首先在应用层插入头文件:#include <bcm_host.h>可用函数有如下选择:<1> unsigned bcm_host_get_peripheral_address() //读取外设物理地址<2> unsigned bcm_host_get_peri

树莓派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);

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服