打印
[内存映射]

xintf所在的区域是物理片内存储?地址和on-Chip Memory一起编址?

[复制链接]
2966|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
虾米一代|  楼主 | 2015-4-7 23:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小白学的是DSP28335,对xintf有点不解:1.xintf所在的区域是物理片内存储?如果是物理存储,何必扩展RAM或者Flash?如果不是,图中又说:xintf接口与CPU某个存储空间相对应。2.地址和on-Chip Memory一起编址?图中编出的地址正好错开(图不清楚,麻烦看看28335的数据手册)
其实对xintf访问外设的过程也有点不清楚,如何片内地址访问通过xintf实现对外设数据的访问?(某些资料上写设置好就自动完成,这个过程有点不解)。谢谢

F28335地址映射.png (105.39 KB )

F28335地址映射.png

xintf.png (108.41 KB )

xintf.png

相关帖子

沙发
虾米一代|  楼主 | 2015-4-8 15:00 | 只看该作者
是不是这样的?假如用Zone6外扩RAM(256k*16):首先接线 /XZCS6--/CS,XRD--OE,XWE0--WE,XA[19:0]--A[19:0],XD[15:0]--D[15:0];然后init_xintf()(用于配置时序和ram通信);接着在cmd文件中,声明一段存储空间给Zone6(这里给的地址是和on-Chip Memory统一编址的)(片内空间不一定实实在在存在,直接映射到外部ram中了,所以当访问超过256k,就会出现错误);这样就可以实现访问外部ram就像是访问片内ram了,当访问Zone6时,/XZCS6会自动拉低。。以上是个人猜测,不知对不对

使用特权

评论回复
板凳
zhangmangui| | 2015-4-8 22:22 | 只看该作者
xintf这是一个映射关系    也就是你对这些映射空间操作   对应着对外部扩展存储器的操作
从硬件角度出发   你对XINTF对应的zone地址操作   相应的CS会拉低  
外扩的存储区就会被选中   

使用特权

评论回复
地板
虾米一代|  楼主 | 2015-4-9 09:59 | 只看该作者
zhangmangui 发表于 2015-4-8 22:22
xintf这是一个映射关系    也就是你对这些映射空间操作   对应着对外部扩展存储器的操作
从硬件角度出发    ...

非常专业正确的回答!
用示波器观察cs位,会被拉低,再高电平,说明对XINTF对应的zone地址操作,相应的CS会拉低;同时故意写超过外扩存储器的大小,会出现整个Zone区都被赋值,而存储器大小范围内时,则是写哪,那里就会被赋值,其他地方没变  
还有个小疑问:看了个例程
Uint16    *ExRamStart = (Uint16 *)0x100000;
InitXintf16Gpio();
然后就可以*(ExRamStart + 0x040000) = 0x5555;   这样操作外扩了,但是还没有初始化xintf的时序啊,怎么可以访问呢?(看了对应的存储区,是被改写了)

使用特权

评论回复
5
zhangmangui| | 2015-4-9 21:21 | 只看该作者
虾米一代 发表于 2015-4-9 09:59
非常专业正确的回答!
用示波器观察cs位,会被拉低,再高电平,说明对XINTF对应的zone地址操作,相应的CS ...

这个初始化  也可能在.GEL中完成    你找找看

使用特权

评论回复
6
lazyyjq| | 2015-8-10 08:57 | 只看该作者
两位的讨论让我获益很多,现在也在学Xintf

使用特权

评论回复
7
虾米一代|  楼主 | 2015-8-11 09:46 | 只看该作者
lazyyjq 发表于 2015-8-10 08:57
两位的讨论让我获益很多,现在也在学Xintf

其实我也不懂的,还在学

使用特权

评论回复
8
zhangmangui| | 2015-8-15 21:58 | 只看该作者
虾米一代 发表于 2015-8-11 09:46
其实我也不懂的,还在学

边学边分享啊   

使用特权

评论回复
9
虾米一代|  楼主 | 2015-8-16 10:54 | 只看该作者

是的是的

使用特权

评论回复
10
流星402| | 2016-2-26 10:52 | 只看该作者
虾米一代 发表于 2015-4-9 09:59
非常专业正确的回答!
用示波器观察cs位,会被拉低,再高电平,说明对XINTF对应的zone地址操作,相应的CS ...

你好,最近也在做28335的xintf,如你所说,初始化是按照例程intxintf()做的,uint16 *strlartexram=(uint16*)0x4000,应该是对zone0进行的读写,但是程序中向这个地址对应的区域这数据,这不进去,memory中输入0x4000,实际值为0,请教下,除了外接存储器(fpga)和其他的控制引脚,别的还需要怎么做啊

使用特权

评论回复
11
玄德| | 2016-2-26 11:09 | 只看该作者
流星402 发表于 2016-2-26 10:52
你好,最近也在做28335的xintf,如你所说,初始化是按照例程intxintf()做的,uint16 *strlartexram=(uint ...


检查所有的地址信号、控制信号。比较麻烦。


使用特权

评论回复
12
流星402| | 2016-2-26 11:25 | 只看该作者
玄德 发表于 2016-2-26 11:09
检查所有的地址信号、控制信号。比较麻烦。

是比较麻烦,关键是系统最早是别人设计的,dsp和fpga远用了bga的封装,很多信号没法测

使用特权

评论回复
13
玄德| | 2016-2-26 11:49 | 只看该作者

BGA会存在焊接问题。


使用特权

评论回复
14
虾米一代|  楼主 | 2016-3-15 17:05 | 只看该作者
本帖最后由 虾米一代 于 2016-3-15 17:08 编辑
流星402 发表于 2016-2-26 10:52
你好,最近也在做28335的xintf,如你所说,初始化是按照例程intxintf()做的,uint16 *strlartexram=(uint ...

好久以前的帖子了,搞忘了好多,这是调试好的程序,不知道有没有帮助

Example_2833xAdcToDMA(4路ad连续采转存到xintf).rar

15.34 KB

使用特权

评论回复
15
hmf1235789| | 2016-7-20 14:51 | 只看该作者
还有好多疑问啊,xintf不会搞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

72

帖子

0

粉丝