嵌入式开发者社区

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

作者: 小文木    时间: 2018-8-22 14:50
标题: 创龙提供的arm端emif例程问题
请问一下为什么用mmap映射emif后发送数据,为什么有时候地址线发送的地址不一样$ y' S* ]$ o  C. J( p- i

作者: human    时间: 2018-8-22 21:40
有具体的测试方法和对应现象吗?发上来看看。
作者: 小文木    时间: 2018-8-22 22:02
human 发表于 2018-8-22 21:408 i' `! u1 W% J2 p# T# v
有具体的测试方法和对应现象吗?发上来看看。
2 B/ ^8 l$ Z2 r
用贵公司提供的emif例程,刚开始用3.3的内核,地址线上测到的是一个地址,后来我把3.3的内核改了改,测到的地址线发出的地址是另一个地址。我想问一下用mmap使用emif时,地址线发出的地址应该是怎样的,有什么依据吗?
作者: 广州创龙莫工    时间: 2018-8-24 15:40
您在内核里做了什么修改?
作者: 小文木    时间: 2018-8-24 15:43
广州创龙莫工 发表于 2018-8-24 15:404 H1 ]0 x& N' N" h1 |4 b" p( i
您在内核里做了什么修改?
/ j$ r+ D% K' _* b
就是加了个驱动。
作者: 广州创龙莫工    时间: 2018-8-24 16:20
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。
作者: 小文木    时间: 2018-8-24 16:29
广州创龙莫工 发表于 2018-8-24 16:20# l0 l( C: Z: {' X
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。 ...
$ h! i( I9 a; g5 a  G
你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把
作者: 小文木    时间: 2018-8-24 16:35
小文木 发表于 2018-8-24 16:29! E: J% r- @/ F5 c
你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把 ...

6 Y  |: E, S' mmmap得到的虚拟地址是36位的,而EMIF地址线却是14位的
作者: 广州创龙莫工    时间: 2018-8-24 16:35
FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地址映射为用户空间地址,就可以跟普通内存一样读写操作。
作者: 小文木    时间: 2018-8-24 16:38
广州创龙莫工 发表于 2018-8-24 16:35
. L4 t# b' v" f- T8 s  `FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地 ...
7 `: _0 f3 C5 U5 Q9 f$ @
你好,对普通内存操作也是需要地址的,所以我想知道EMIF地址线到底输出的地址到底是从什么开始的,是不是有固定值,还是说地址线输出的地址是随机的。
作者: 广州创龙廖工    时间: 2018-8-24 19:19
您好,0x6000 0000-0x61FF FFFF对应的是,CS2的异步接口
; ~6 [. \$ i: g$ ^! T如果要访问,挂在EMIFA总线上的异步设备,就不需要具体去读写寄存器,而是直接对地址线,进行操作就可以了
1 f% k' v9 A4 l3 G- j6 B4 V3 [* h. f! R例如,代码中,如果要对0x6000 0000地址,进行读操作,就是向挂在上面的EMIFA设备,发出控制请求了,对应设备的地址线,就会被拉低。如果是8位存储器的话,地址线的EMA_BA[0]就会等于1;如果要对0x6000 0001地址,进行读操作,EMA_BA[1]就会等于1,也是对应设备的地址线,全都拉低




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