liangyurongde 发表于 2014-6-30 15:37:58

NIOS下char数组的疑问?

本帖最后由 liangyurongde 于 2014-6-30 20:50 编辑

各位坛友,我在NIOS下调试SDRAM里char数组出现了这样一个奇怪现象。
我的程序是这样的:

而我得到的结果是这样的:

调试的结果是01 01 03 03 ... 23 23 24
而我要的结果01 02 03 04 ... 22 23 24
我想问一下各位,SDRAM里是不是不能直接操作char型数组的?

我的NIOS版本是12.0SP2。

liangyurongde 发表于 2014-7-1 07:52:27

期待高手的回复!

nibia 发表于 2014-7-1 10:25:00

应该是没有问题的,你可以给数组赋值后在printf出来看看。
我的nios调试不能用,你用的工具是正版的?

liangyurongde 发表于 2014-7-1 11:23:36

nibia 发表于 2014-7-1 10:25
应该是没有问题的,你可以给数组赋值后在printf出来看看。
我的nios调试不能用,你用的工具是正版的? ...

不是正版的。
我就是printf时出现了类拟的现象才问的。
我printf的内容是abcdef,调试时得到的结果是bbddff。后来我调试时发现就是发送的内容在复制到发送缓存时出现了问题。所以才单独写一个小程序来调试。

chun2495 发表于 2014-7-4 12:09:24

打印printf和调试debug都没有问题。是这样的:你的调试结果本应该显示0,1,2.....但是显示的是1,3.....那是因为debug是按16位数据来打印的(你的Sdram是16位),而你定义的是unsigned char 所以只是没有打印全而已,正确的打印应该是“000001\002003\004005...”相当于读第一个地址时,读到了000001,但是显示的只有低八位,读第二个地址时,读到的还是000001,显示低八位。估计是显示的bug吧 但程序没有错误。不知楼主是否明白

liangyurongde 发表于 2014-7-4 16:12:07

chun2495 发表于 2014-7-4 12:09
打印printf和调试debug都没有问题。是这样的:你的调试结果本应该显示0,1,2.....但是显示的是1,3.....那是 ...

我看了Cortex-M3后,找到了解决的方法,原来是我用的CPU是NIOS II/s这个CPU只有指令cache,没有数据cache。我用了NIOS II/f后一切正常,也得到我需要的数据。
现在我又有一个新的问题,我把程序固化到EPCS后,sof部份运行正常,ELF部份不能运行,我看了论坛的大牛有解决过类似的问题,但没有写解决方法。
跟http://www.amobbs.com/forum.php?mod=viewthread&tid=5577397&highlight=epcs这个情况差不多。我是用QSYS,没有用SOPC。

chun2495 发表于 2014-7-5 14:56:06

liangyurongde 发表于 2014-7-4 16:12
我看了Cortex-M3后,找到了解决的方法,原来是我用的CPU是NIOS II/s这个CPU只有指令cache,没有数据cache ...

我也遇见过这种情况,当时用qsys建立的片内ram当内存,然后nios就是跑不起来。后来换成sdram也是一样。然后就没用过qsys了。另外11.0还有nios,到12.0后就只有Eclipse了,更摸不到头脑。我觉得吧,sopc经历了这么久已经很稳定了。现在项目都是用它。
页: [1]
查看完整版本: NIOS下char数组的疑问?