TIwilliam hill官网
直播中

易里更

7年用户 192经验值
私信 关注
[问答]

OMAP-L138中ARM和UPP同时访问DDR2会产生冲突吗

我的板子上是这样的:
       在OMAP-L138中ARM里面跑系统,通过DSP控制UPP通过EDMA将外部数据存到DDR2中,但是每次ARM读这段空间中的数据的时候发现都是0,也就是没写进去。
      后来改成DSP控制UPP通过EDMA将外部数据存到内部共享内存(128K)里面,然后ARM就可以在这里面正确的读数据了。
       以前看过几个帖子,说可能是ARM和DSP共用一个总线可能造成冲突的问题,但是不明白怎么设置,还是UPP和ARM的优先级的问题?我的寄存器PBBPR=0X20
谢谢

回帖(10)

李峰

2018-6-21 15:19:49
你好,
分配给ARM侧的操作系统,占用了多少的DDR2内存?建议你保留一部分内存,不分配给Linux OS,然后用DSP在这部分DDR2上写数据,试试看。
ARM和DSP是共享外设的,由内部进行仲裁。
举报

易里更

2018-6-21 15:35:35
引用: kingnet_52004 发表于 2018-6-21 15:19
你好,
分配给ARM侧的操作系统,占用了多少的DDR2内存?建议你保留一部分内存,不分配给Linux OS,然后用DSP在这部分DDR2上写数据,试试看。
ARM和DSP是共享外设的,由内部进行仲裁。

你好
     我的板子上DDR2共有256M空间,给DSP的是专门分配的36M空间(2M的DSPLINK空间和34M的DSP空间),还有供内核的空间等都是按照开发板上WINCE6.0的BSP的地址分配的。
     现在的问题是DSP控制的UPP往DSP专用的那34M空间写数,之后ARM去读发现全是0,而不往那个空间写,往L138的共享内存上写,ARM就可以读出来。不知道是UPP与ARM冲突了还是DSP与ARM冲突了?
举报

李峰

2018-6-21 15:52:05
引用: loujie39 发表于 2018-6-21 15:35
你好
     我的板子上DDR2共有256M空间,给DSP的是专门分配的36M空间(2M的DSPLINK空间和34M的DSP空间),还有供内核的空间等都是按照开发板上WINCE6.0的BSP的地址分配的。
     现在的问题是DSP控制的UPP往DSP专用的那34M空间写数,之后ARM去读发现全是0,而不往那个空间写,往L138的共享内存上写,ARM就可以读出 ...

你好,
DSP控制的UPP往DSP专用的那34M空间写数,你可以在DSP端用打印函数查看一下,写的是否正确?应该是已经写上去了。可能是Linux端读DSP专用的那34M空间出的问题。
举报

易里更

2018-6-21 15:59:14
引用: kingnet_52004 发表于 2018-6-21 15:52
你好,
DSP控制的UPP往DSP专用的那34M空间写数,你可以在DSP端用打印函数查看一下,写的是否正确?应该是已经写上去了。可能是Linux端读DSP专用的那34M空间出的问题。

你好,
    谢谢你的答复。
    目前问题已经得到解决。我参考TI英文william hill官网 上的一个帖子《uPP Problem after receiving first package
》,发现我的问题跟他的很类似,然后我按照Joe Coombs 的提示对cache进行了修改,然后就好了。
   但是关于这个还是不是很明白,为什么UPP有自己的DMA,就要在读数的时候关闭cache呢?这两者有什么冲突?麻烦哪位能不能简单的介绍一下这两者的关系。谢谢!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分