你好
我现在调试的一块OMAP-L138的板子的功能是通过UPP上传外部ADC的数据到DDR中,然后利用DSP处理这些数据。
整个UPP模块的初始化及配置都在DSP程序中完成,首先我通过
仿真器单独调试DSP程序,发现能够正常的通过UPP将数据写到DDR的某块区域,然后DSP数据处理一切正常。随后不使用仿真器,把DSP程序加上DSPLINK功能后通过在
ARM端跑的WINCE系统载入到内存中运行,然后发现很多时候DDR的那块区域写入的都是0,通过寄存器查看写入地址的变化,发现地址没错,确实到了写入的最后一个数据的地址上,但是就是写入的那块地址空间发现大多数都是0(正常不是这样).
我的UPP模块没有使用upp_START和upp_WAIT,ENABLE信号由外部
FPGA控制,只有在写入数据的时刻才打开。不使用UPP中断功能。
所以,有几个问题想问一下:
1,为什么同样的DSP程序通过仿真器可以运行,但是系统单独调用的时候UPP往指定地址写入的数据都是0?我的程序中DSPLINK功能没有问题,通过实验已经验证过。
2,是不是DSP和ARM都对DDR操作导致冲突?也就是说DSP指定UPP把数据写到DDR的某块区域上后,ARM会不会在这块区域操作导致将其改写?因为我单独通过仿真器调试DSP程序没有问题。
3,由于我是要多次重复的采数据,为了保证下次写入的数据不是沿着上次的地址往后写,我每次重新采集数据之前都把UPP模块重新配置一下(从复位的步骤开始到每个寄存器的配置),但是感觉很繁琐,有没有更好的办法使数据重新从我设定的地址开始写数?因为一条曲线的数据我要重复采集上万次,所以每次采集前这么操作感觉很浪费时间。
谢谢!