嵌入式开发者社区

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

作者: 小文木    时间: 2018-8-22 14:50
标题: 创龙提供的arm端emif例程问题
请问一下为什么用mmap映射emif后发送数据,为什么有时候地址线发送的地址不一样- ~9 q3 N  D/ S5 f5 I* y

作者: human    时间: 2018-8-22 21:40
有具体的测试方法和对应现象吗?发上来看看。
作者: 小文木    时间: 2018-8-22 22:02
human 发表于 2018-8-22 21:40
: H4 j9 |) {  \9 r. L6 S4 g有具体的测试方法和对应现象吗?发上来看看。

  C2 @0 p1 B+ u3 i8 a用贵公司提供的emif例程,刚开始用3.3的内核,地址线上测到的是一个地址,后来我把3.3的内核改了改,测到的地址线发出的地址是另一个地址。我想问一下用mmap使用emif时,地址线发出的地址应该是怎样的,有什么依据吗?
作者: 广州创龙莫工    时间: 2018-8-24 15:40
您在内核里做了什么修改?
作者: 小文木    时间: 2018-8-24 15:43
广州创龙莫工 发表于 2018-8-24 15:40. r8 w0 P' v: p# ^1 T# W
您在内核里做了什么修改?

; x+ t# b, [) H# @' B! X5 [就是加了个驱动。
作者: 广州创龙莫工    时间: 2018-8-24 16:20
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。
作者: 小文木    时间: 2018-8-24 16:29
广州创龙莫工 发表于 2018-8-24 16:20
- c2 z( N7 v& [8 _mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。 ...
& Y! w6 d5 w% p' A+ A
你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把
作者: 小文木    时间: 2018-8-24 16:35
小文木 发表于 2018-8-24 16:29
3 M( `# R4 g- |  t9 b3 Q你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把 ...
5 V! |! p9 |8 e
mmap得到的虚拟地址是36位的,而EMIF地址线却是14位的
作者: 广州创龙莫工    时间: 2018-8-24 16:35
FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地址映射为用户空间地址,就可以跟普通内存一样读写操作。
作者: 小文木    时间: 2018-8-24 16:38
广州创龙莫工 发表于 2018-8-24 16:35
! i+ R9 y( }5 i: M( M; _+ W4 uFPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地 ...

3 u4 r1 i; P6 c3 q9 @: y你好,对普通内存操作也是需要地址的,所以我想知道EMIF地址线到底输出的地址到底是从什么开始的,是不是有固定值,还是说地址线输出的地址是随机的。
作者: 广州创龙廖工    时间: 2018-8-24 19:19
您好,0x6000 0000-0x61FF FFFF对应的是,CS2的异步接口. P8 ^, P# j( I; O" a, @. ?4 _
如果要访问,挂在EMIFA总线上的异步设备,就不需要具体去读写寄存器,而是直接对地址线,进行操作就可以了( M7 r. {  b0 A6 f  i# |
例如,代码中,如果要对0x6000 0000地址,进行读操作,就是向挂在上面的EMIFA设备,发出控制请求了,对应设备的地址线,就会被拉低。如果是8位存储器的话,地址线的EMA_BA[0]就会等于1;如果要对0x6000 0001地址,进行读操作,EMA_BA[1]就会等于1,也是对应设备的地址线,全都拉低




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