linux FPGA设备物理地址和寄存器地址

红茶加红糖 2011-06-09 11:02:07

AD采集信号输入FPGA设备,FPGA设备经过处理后,传输给ARM。
(FPGA设备与ARM之间通过8跟地址线、数据线连接)

linux内核中,我分配0x20000000 - 0x40000000物理地址区间给FPGA设备。
我想问:
1、FPGA设备连接ARM后,得到的具体的物理地址(即0x20000000 - 0x40000000之间的一个值,如0x30000000),还是整个物理地址的空间(0x20000000 - 0x40000000)??

2、我要写FPGA设备的寄存器,寄存器的地址怎么得到?有多少个寄存器?能不能自己定义寄存器地址?

最后0x00000000u,u是什么意思??

谢谢大家~~~~
...全文
800 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
红茶加红糖 2011-06-12
  • 打赏
  • 举报
回复
谢谢~~
bluesea87 2011-06-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hahahaha_hax4 的回复:]
0x00000000u,u is for unsigned number

As for the address space, when FPGA is connected to ARM, FPGA is supposed to respond to any r/w when the address is between 0x20000000 and 0x40000000. In other ……
[/Quote]

+1
fontlose 2011-06-11
  • 打赏
  • 举报
回复


寻址时只要设备片选线选中,地址线只用到8根,真实地址才256个,地址0x20000000 - 0x40000000很多看来是重复的。寻址这些地址都是访问FPGA只是每个地址作用不一样这个可以自己定义。

一个整形常数后加u认为是unsigned类型的,
哈皮歪詩 2011-06-11
  • 打赏
  • 举报
回复
0x00000000u,u is for unsigned number

As for the address space, when FPGA is connected to ARM, FPGA is supposed to respond to any r/w when the address is between 0x20000000 and 0x40000000. In other words, the FPGA's base address is 0x20000000. However, you have to ask your FPGA designer to see how many registers are defined by him, and the detailed address mapping and bit definition for each register.

For example, if your FPGA designer defined 3 registers, at 0x0000, 0x0004, 0x0008, then you should access them from ARM at 0x20000000, 0x20000004, 0x20000008
红茶加红糖 2011-06-10
  • 打赏
  • 举报
回复
自己顶一下
在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。设备树的overlay功能是指可以在系统运行期间动态修改设备树。一般情况下,如上图所示,设备树经过DTC编译器编译为二进制的hello.dtb文件,加载到内存,随Linux内核一起启动后,一般就无法更改了。如果我们想修改设备树,需要修改hello.dts文件文件,重新编译成二进制文件:hello.dtb,然后重新启动内核,重新解析。有了设备树的overlay功能,省去了设备树的重新编译和内核重启,我们可以直接编写一个设备树插件:overlay.dts,编译成overlay.dtbo后,直接给设备树“打补丁”,在运行期间就可以动态添加节点、修改节点...设备树的overlay功能,在很多场合都会用得到,会让我们的开发更加方便:外界插拔设备,无法在设备树中预先描述:耳机树莓派 + FPGA开发板基于I2C的温度传感器管脚的重新配置:PIN multiplexing修改bootcmd、分区...设备树的overlay功能,目前还没有加入到内核mainline(linux-5.10.x),但目前有些开发板和配套的BSP已经支持了,支持在系统运行期间动态修改设备树文件。如果你手头的开发板或内核平台还没有支持device tree overlay,可以学习本期课程,学习内核中设备树overlay的实现原理,如何给内核打补丁,使内核支持设备树的overlay功能。有了本期课程的学习基础,明白了设备树overlay的实现原理和运行机制,你就可以尝试在自己的开发板平台上实现这个功能了。本期课程的主要内容如下:在开发板上如何实现设备树的overlay功能Configfs文件系统的配置与挂载Configfs编程接口如何编写设备树 overlay插件设备树 overlay的编译和运行设备树overlay运行机制分析本期课程适合哪些人学习:嵌入式驱动工程师嵌入式BSP工程师嵌入式软件工程师想从事嵌入式开发的同学全网首家讲解设备树overlay的视频教程。   

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧