嵌入式开发者社区

标题: 创龙提供的arm端emif例程问题 [打印本页]

作者: 小文木    时间: 2018-8-22 14:50
标题: 创龙提供的arm端emif例程问题
请问一下为什么用mmap映射emif后发送数据,为什么有时候地址线发送的地址不一样# |; C, L# y! `6 S

作者: human    时间: 2018-8-22 21:40
有具体的测试方法和对应现象吗?发上来看看。
作者: 小文木    时间: 2018-8-22 22:02
human 发表于 2018-8-22 21:40
% Y9 G0 f; c6 H) ^* L有具体的测试方法和对应现象吗?发上来看看。

6 f/ E1 ]+ l- H. O5 ]1 O7 G' O* ^4 ]. |用贵公司提供的emif例程,刚开始用3.3的内核,地址线上测到的是一个地址,后来我把3.3的内核改了改,测到的地址线发出的地址是另一个地址。我想问一下用mmap使用emif时,地址线发出的地址应该是怎样的,有什么依据吗?
作者: 广州创龙莫工    时间: 2018-8-24 15:40
您在内核里做了什么修改?
作者: 小文木    时间: 2018-8-24 15:43
广州创龙莫工 发表于 2018-8-24 15:40
+ [! Q* [* h0 e- X+ K# w您在内核里做了什么修改?
8 u- R& _+ y* a- l# g+ \
就是加了个驱动。
作者: 广州创龙莫工    时间: 2018-8-24 16:20
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。
作者: 小文木    时间: 2018-8-24 16:29
广州创龙莫工 发表于 2018-8-24 16:209 A! W! k0 P1 X: {- t! H& F
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。 ...

& v- [1 M, n7 V! q) G2 E: a& W) S你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把
作者: 小文木    时间: 2018-8-24 16:35
小文木 发表于 2018-8-24 16:29
- I5 L5 J9 n+ t* E( O  f& m. j你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把 ...
. x3 }4 M9 w9 F: Y+ z0 ^% W
mmap得到的虚拟地址是36位的,而EMIF地址线却是14位的
作者: 广州创龙莫工    时间: 2018-8-24 16:35
FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地址映射为用户空间地址,就可以跟普通内存一样读写操作。
作者: 小文木    时间: 2018-8-24 16:38
广州创龙莫工 发表于 2018-8-24 16:35
+ F9 p' D1 n5 _% x/ g$ G3 FFPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地 ...
* H) U( \) i: h* Q$ O0 @2 ^0 ^1 V
你好,对普通内存操作也是需要地址的,所以我想知道EMIF地址线到底输出的地址到底是从什么开始的,是不是有固定值,还是说地址线输出的地址是随机的。
作者: 广州创龙廖工    时间: 2018-8-24 19:19
您好,0x6000 0000-0x61FF FFFF对应的是,CS2的异步接口) U. c% V! k5 ~6 B
如果要访问,挂在EMIFA总线上的异步设备,就不需要具体去读写寄存器,而是直接对地址线,进行操作就可以了3 ~5 o- C: o5 o$ k# ^/ \! n+ L
例如,代码中,如果要对0x6000 0000地址,进行读操作,就是向挂在上面的EMIFA设备,发出控制请求了,对应设备的地址线,就会被拉低。如果是8位存储器的话,地址线的EMA_BA[0]就会等于1;如果要对0x6000 0001地址,进行读操作,EMA_BA[1]就会等于1,也是对应设备的地址线,全都拉低




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4