嵌入式开发者社区

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

作者: 小文木    时间: 2018-8-22 14:50
标题: 创龙提供的arm端emif例程问题
请问一下为什么用mmap映射emif后发送数据,为什么有时候地址线发送的地址不一样. _3 T' v6 ?& O( C

作者: human    时间: 2018-8-22 21:40
有具体的测试方法和对应现象吗?发上来看看。
作者: 小文木    时间: 2018-8-22 22:02
human 发表于 2018-8-22 21:40: E: u- a/ `+ Z% R8 p# b0 t5 m0 Y
有具体的测试方法和对应现象吗?发上来看看。
# G  p0 p9 @& U7 L: i
用贵公司提供的emif例程,刚开始用3.3的内核,地址线上测到的是一个地址,后来我把3.3的内核改了改,测到的地址线发出的地址是另一个地址。我想问一下用mmap使用emif时,地址线发出的地址应该是怎样的,有什么依据吗?
作者: 广州创龙莫工    时间: 2018-8-24 15:40
您在内核里做了什么修改?
作者: 小文木    时间: 2018-8-24 15:43
广州创龙莫工 发表于 2018-8-24 15:40/ ?$ C1 P( C8 U0 {4 l, u* _; {
您在内核里做了什么修改?

/ U  G; T, A' ^; t- k5 n就是加了个驱动。
作者: 广州创龙莫工    时间: 2018-8-24 16:20
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。
作者: 小文木    时间: 2018-8-24 16:29
广州创龙莫工 发表于 2018-8-24 16:203 W: [( n# {0 \; ]3 o7 _8 K
mmap是将物理地址映射为进程的虚拟地址,然后对这个虚拟地址进行读写操作,这个虚拟地址是不固定的。 ...

8 \# f& l4 h7 q4 T! ?你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把
作者: 小文木    时间: 2018-8-24 16:35
小文木 发表于 2018-8-24 16:29
4 o4 s4 g4 `  J你好,我知道虚拟地址是不固定的,但是EMIF地址线输出的不是mmap后得到的虚拟地址把 ...

5 u# y* D8 n5 m7 S3 c9 ]mmap得到的虚拟地址是36位的,而EMIF地址线却是14位的
作者: 广州创龙莫工    时间: 2018-8-24 16:35
FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地址映射为用户空间地址,就可以跟普通内存一样读写操作。
作者: 小文木    时间: 2018-8-24 16:38
广州创龙莫工 发表于 2018-8-24 16:35- j' O% S% W! j6 d, g
FPGA和EMIFA总线通信,对Linux系统而言,等效于外接内存,使用其进行读写操作时,只需通过mmap函数将物理地 ...

- @6 b( f# G& d' ]. K5 L8 J* l- z6 v你好,对普通内存操作也是需要地址的,所以我想知道EMIF地址线到底输出的地址到底是从什么开始的,是不是有固定值,还是说地址线输出的地址是随机的。
作者: 广州创龙廖工    时间: 2018-8-24 19:19
您好,0x6000 0000-0x61FF FFFF对应的是,CS2的异步接口
8 t" L# g# ]# u6 _如果要访问,挂在EMIFA总线上的异步设备,就不需要具体去读写寄存器,而是直接对地址线,进行操作就可以了
: y- Y1 C5 @, u; U例如,代码中,如果要对0x6000 0000地址,进行读操作,就是向挂在上面的EMIFA设备,发出控制请求了,对应设备的地址线,就会被拉低。如果是8位存储器的话,地址线的EMA_BA[0]就会等于1;如果要对0x6000 0001地址,进行读操作,EMA_BA[1]就会等于1,也是对应设备的地址线,全都拉低




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