嵌入式开发者社区

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

作者: 小文木    时间: 2018-8-22 14:50
标题: 创龙提供的arm端emif例程问题
请问一下为什么用mmap映射emif后发送数据,为什么有时候地址线发送的地址不一样
: I, u: A: B  H9 `1 ?$ M) V9 ?5 ^
作者: human    时间: 2018-8-22 21:40
有具体的测试方法和对应现象吗?发上来看看。
作者: 小文木    时间: 2018-8-22 22:02
human 发表于 2018-8-22 21:40
( e$ e$ i+ l: U6 e! q6 a有具体的测试方法和对应现象吗?发上来看看。

. b0 Y* x2 @9 r用贵公司提供的emif例程,刚开始用3.3的内核,地址线上测到的是一个地址,后来我把3.3的内核改了改,测到的地址线发出的地址是另一个地址。我想问一下用mmap使用emif时,地址线发出的地址应该是怎样的,有什么依据吗?
作者: 广州创龙莫工    时间: 2018-8-24 15:40
您在内核里做了什么修改?
作者: 小文木    时间: 2018-8-24 15:43
广州创龙莫工 发表于 2018-8-24 15:40: j& y6 q. y/ Y. Z7 `8 w9 g4 h6 l5 K0 |
您在内核里做了什么修改?
4 p+ [$ Q9 _  _, s) `; [
就是加了个驱动。
作者: 广州创龙莫工    时间: 2018-8-24 16:20
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。
作者: 小文木    时间: 2018-8-24 16:29
广州创龙莫工 发表于 2018-8-24 16:20; r; e7 T* ]7 L! |# O
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。 ...
. e0 U6 V% u' n% l
你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把
作者: 小文木    时间: 2018-8-24 16:35
小文木 发表于 2018-8-24 16:29
/ a4 `+ e$ c! i0 {0 N你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把 ...

* ^1 @% E, ?# E- M; W* Dmmap得到的虚拟地址是36位的,而EMIF地址线却是14位的
作者: 广州创龙莫工    时间: 2018-8-24 16:35
FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地址映射为用户空间地址,就可以跟普通内存一样读写操作。
作者: 小文木    时间: 2018-8-24 16:38
广州创龙莫工 发表于 2018-8-24 16:355 j8 e% ~! ^7 G* h  Q- ~
FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地 ...

0 Q* h' ~5 D; F" ?, s; Q你好,对普通内存操作也是需要地址的,所以我想知道EMIF地址线到底输出的地址到底是从什么开始的,是不是有固定值,还是说地址线输出的地址是随机的。
作者: 广州创龙廖工    时间: 2018-8-24 19:19
您好,0x6000 0000-0x61FF FFFF对应的是,CS2的异步接口6 F+ w+ u2 X6 l) G# `1 [( N
如果要访问,挂在EMIFA总线上的异步设备,就不需要具体去读写寄存器,而是直接对地址线,进行操作就可以了4 D6 F4 A7 g' b. F3 R- y5 T
例如,代码中,如果要对0x6000 0000地址,进行读操作,就是向挂在上面的EMIFA设备,发出控制请求了,对应设备的地址线,就会被拉低。如果是8位存储器的话,地址线的EMA_BA[0]就会等于1;如果要对0x6000 0001地址,进行读操作,EMA_BA[1]就会等于1,也是对应设备的地址线,全都拉低




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