6410 memory port0 片选问题

springdia 2011-08-11 09:34:27
我的6410memory port 0挂了多个设备,NANDFLASH和一个FPGA,我们就把FPGA当成内存,去访问他的寄存器。但是涉及到片选,看了6410的文档还是没明白
1.NANDFLASH里面放了文件系统,不知道FPGA读写的时候,会不会影响文件读写操作
2.MP0_CS_CFG的寄存器可以控制总线的片选吗?如何把FPGA挂到IROM bank0上面,是否挂到IROM bank0上面,我们就可以通过IROM bank0的地址0x1000 0000去访问FPGA的寄存器。

路过的帮我顶一下。谢谢大家!
...全文
565 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
我鲁班无敌 2013-11-14
  • 打赏
  • 举报
回复
引用 11 楼 springdia 的回复:
地址有虚拟转换,但是写的和读出来的不一样。 另外,XM0CSN0拉低的信号没有出来,我有对MEM0DRVCON的第四位置低
读出来的是不是ASCII码表?
jiangreat 2012-01-11
  • 打赏
  • 举报
回复
你的问题解决了没有,我现在也是外部挂载一个fpga,当做srom,问题跟你一样
时序好像是arm自己搞定的,就是我如何去读srom里面的数据?
springdia 2011-08-12
  • 打赏
  • 举报
回复
地址有虚拟转换,但是写的和读出来的不一样。
另外,XM0CSN0拉低的信号没有出来,我有对MEM0DRVCON的第四位置低
springdia 2011-08-12
  • 打赏
  • 举报
回复
MEM0DRVCON就是GPIO下的一个特殊端口控制寄存器,S3C6410手册上的说明是它的第11.10位是MEM0_WEn_OEn(存储器端口0 写使能、输出使能管脚(Xm0WEn,Xm0OEn)配置),那是不是应该对此控制器进行操作啊?
还有对XM0CSn0是怎么控制的啊?
zhenghn2010 2011-08-11
  • 打赏
  • 举报
回复
访问配置寄存器是一回事。这个寄存器代表的内存地址是另一回事。
springdia 2011-08-11
  • 打赏
  • 举报
回复
我映射到BANK5,地址应该是0X3800 0000, 但是通过这个地址访问寄存器的时候,出现了段错误。
难道这样直接访问不行?
当我遇上-你 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 springdia 的回复:]
我的6410memory port 0挂了多个设备,NANDFLASH和一个FPGA,我们就把FPGA当成内存,去访问他的寄存器。但是涉及到片选,看了6410的文档还是没明白
1.NANDFLASH里面放了文件系统,不知道FPGA读写的时候,会不会影响文件读写操作
2.MP0_CS_CFG的寄存器可以控制总线的片选吗?如何把FPGA挂到IROM bank0上面,是否挂到IROM ban……
[/Quote]
1,不会影响
2,确认好访问地址,具体的读写时序总线自己会搞定
zhenghn2010 2011-08-11
  • 打赏
  • 举报
回复
具体配置要看手册。但一般都这些寄存器配置的是该控制bank的属性和模式。比如你这个bank是要静态rom方式。

只有片选的产生,都是读写数据时自动产生的,应该不用你控制。

注意地址映射问题。
springdia 2011-08-11
  • 打赏
  • 举报
回复
我现在想把FPGA映射到SROM BANK5,Xm0CSn[5]应该拉低,表示片选上了。MP0_CS_CFG[5]=0,表示片选的是SROM BANK5.xm0CSN[5]如何控制呢?通过MEM0DRVCON来控制吗?
(*(volatile UINT32 *)(0x38000000 + addr)) = value;出现了如下错误
Exception 'Data Abort' (4): Thread-Id=00b00002(pth=8ff7730c), Proc-Id=00400002(pprc=82fe5308) 'NK.EXE', VM-active=02040002(pprc=8fa427b0) 'udevice.exe'
PC=d7c61764(s3c6410_psam.dll+0x00001764) RA=38000000(???+0x38000000) SP=d02fe934, BVA=38000000
Exception 'Raised Exception' (-1): Thread-Id=00b00002(pth=8ff7730c), Proc-Id=00400002(pprc=82fe5308) 'NK.EXE', VM-active=02040002(pprc=8fa427b0) 'udevice.exe'
PC=c003bd78(k.coredll.dll+0x0001bd78) RA=801322c0(kernel.dll+0x000062c0) SP=d02fe1d0, BVA=ffffffff
zhenghn2010 2011-08-11
  • 打赏
  • 举报
回复
片选 一般都是高几位地址线组合来分配一段内存给某个外设。
bank0一般都是确定了一段内存 比如64M给挂在在这个bank上的设备。你可以在这个基础上用其中的一些高位地址线再详细分给各个设备。
springdia 2011-08-11
  • 打赏
  • 举报
回复
刚才打错了,IROM BANK0 应该是SROM BANK0
当我遇上-你 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 springdia 的回复:]
我映射到BANK5,地址应该是0X3800 0000, 但是通过这个地址访问寄存器的时候,出现了段错误。
难道这样直接访问不行?
[/Quote]
映射到虚拟地址没?
springdia 2011-08-11
  • 打赏
  • 举报
回复
如何控制Xm0csn[5]来产生片选信号?
有谁了解?

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧