阅读:1441回复:4
dsp c语言
我用c语言作的dsp程序,在中断0中读外部的一个fifo,
发现只有在读fifo前加一个断点读回来的值才是正确的,而连续运行的时候读回来的值就不正确,不知道为什么,我在读前加了很多空操作还是不行。 程序如下: volatile int *FifoIn=(volatile int*)FifoInAddress int CommandPoint; 。。。 。。。 CommandPoint=FifoIn[0]; |
|
沙发#
发布于:2003-08-28 14:59
看看反汇编的程序,是不是和流水线有关/
|
|
板凳#
发布于:2003-08-28 16:56
单步运行找出问题。
只有单步运行你才知道程序都做了些什么。 |
|
地板#
发布于:2003-08-29 11:43
1,同流水线的关系应该不大,因为已经加若干空指令都不能解决问题。
2,单步运行更不能解决问题,因为加断点就能正确读出数据,单步运行同加端点的效果是一样的,肯定能正确读出数据。 建议: 在读指令之前加一个延迟,不用任何操作,也别加断点,如果延迟一段时间后去读数据的结果是正确的,那就需要从硬件上看看时序。 |
|
地下室#
发布于:2003-08-29 16:43
解决了
原来的FifoInAddress是0x0c0a000 后来改成0x80a000就可以了,虽然好用了,但是不知道是因为什么? 谁能给解释一下 |
|