关于C8051的 EMIF 工作模式选择?
如图:现在我的C8051F120外接4个rtl8019(同时连接的还有FPGA), 通过地址线控制, 假设(具体没看)四个网卡芯片对应的地址分别是0000-0FFF,1000-1FFF, 2000-2FFF, 3000-3FFF.
该如何选择上面的四个模式? 全部当做片外XRAM用? 我想的是第四种模式, 但是, 如果这样, 编译器将程序的变量和数组放在哪里? 片内有 8KB 的 XRAM, 但是会不会和上面的四个地址冲突(也就是片外XRAM地址冲突)?
同事问的, 我也不大明白, 不会解释, 希望前辈们解释一下.谢谢了. 本帖最后由 zpxa001 于 2013-1-8 14:49 编辑
C8051F120的数据空间包括片内256字节的IDATA RAM(如同传统51单片机)和片内8K字节的XRAM,所以选择第四种模式并不用担心编译器无法为变量分配空间,只是这种情况下片内的8K XRAM就不能用了,XRAM空间只保留给了连接的4个外围设备(RTL8019)。要想使用片内的8K XRAM,可使用模式2或模式3,当然此时4个外设的地址分配会有不同。 zpxa001 发表于 2013-1-8 14:48 static/image/common/back.gif
C8051F120的数据空间包括片内256字节的IDATA RAM(如同传统51单片机)和片内8K字节的XRAM,所以选择第四种模 ...
也就是说,模式2/3, 我保留0x2000(8KB)以内的地址共片内自带的XRAM用, 剩余空间供片外接的XRAM用? 这样, 内部自带的XRAM可用与程序数据的保存, 而且外部的地址(>0x2000)操作也不会和其冲突?
这样我就得将rtl8019的操作地址更改不让其在0x2000以内. 是吧? monkerman 发表于 2013-1-8 15:40 static/image/common/back.gif
也就是说,模式2/3, 我保留0x2000(8KB)以内的地址共片内自带的XRAM用, 剩余空间供片外接的XRAM用? 这样,...
是这样的,注意一下模式2和模式3的区别:前者是Split Mode without Bank Select,后者是Split Mode with Bank Select,这两种模式的区别仅仅是在使用XRAM空间@R0/@R1寻址时高8位地址的生成方式不同,其他并无区别。在使用C语言开发时,只要在开发环境(如Keil)中设置好存储器模式就行了,编译器会处理这些寻址问题。 zpxa001 发表于 2013-1-8 15:59 static/image/common/back.gif
是这样的,注意一下模式2和模式3的区别:前者是Split Mode without Bank Select,后者是Split Mode with...
知道了! 谢谢哈!{:handshake:} 不客气呵
页:
[1]