fsyhrb
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1441回复:4

dsp c语言

楼主#
更多 发布于:2003-08-25 10:38
我用c语言作的dsp程序,在中断0中读外部的一个fifo,
发现只有在读fifo前加一个断点读回来的值才是正确的,而连续运行的时候读回来的值就不正确,不知道为什么,我在读前加了很多空操作还是不行。
程序如下:
volatile int *FifoIn=(volatile int*)FifoInAddress
int   CommandPoint;
。。。
。。。
CommandPoint=FifoIn[0];
mardux
驱动小牛
驱动小牛
  • 注册日期2002-11-21
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-28 14:59
看看反汇编的程序,是不是和流水线有关/
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-28 16:56
单步运行找出问题。
只有单步运行你才知道程序都做了些什么。
DM270
驱动牛犊
驱动牛犊
  • 注册日期2003-08-01
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-29 11:43
1,同流水线的关系应该不大,因为已经加若干空指令都不能解决问题。
2,单步运行更不能解决问题,因为加断点就能正确读出数据,单步运行同加端点的效果是一样的,肯定能正确读出数据。

建议:
在读指令之前加一个延迟,不用任何操作,也别加断点,如果延迟一段时间后去读数据的结果是正确的,那就需要从硬件上看看时序。

fsyhrb
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-29 16:43
解决了
原来的FifoInAddress是0x0c0a000
后来改成0x80a000就可以了,虽然好用了,但是不知道是因为什么?
谁能给解释一下
游客

返回顶部