下面是我们在软仿真调试6711代码时出现的现象描述。 在软仿真下调试时发现,Load完out文件后,点击Debug下的go main,想让程序直接跳转到main()处,但发现需要很长时间才能跳转到到该处,后暂停代码运行时发现,代码停留在rts6700.lib库文件中的_memcpy62该函数处,也就是说程序一直在调用该函数,导致用时过长。同时发现,即使程序最终跳转到main()处后,下面代码中涉及到大量数组运算时,如FFT运算,也出现运算相当慢的情况。检查代码时,发现在main()函数的文件中定义了相当的大的数组用于存放所需信号信息。调试时发现,该数组越大,Load完out文件后,点击Debug下的go main,程序直接跳转到main()处所费时间也越长。 但同样的代码,在仿真器硬件调试下就没有这种现象,很快就能跳转到main()处,且后面进行FFT运算时也很快完成。 想咨询出现这种现象,是什么原因,是否是因为运行环境变量没有设置正确的原因?
Tony Tang:
软件仿真比硬件仿真慢是正常现象,因为软件仿真是在PC上用软件模拟芯片,如果电脑配置好,速度会提高。
你提到的数据是全局变量的初始化:从cinit拷贝到.bss段。
Jacob1:
回复 Tony Tang:
你好,感谢您的回答。其实我就是想了解,如果研究算法的时候,没有硬件只能仿真的话,仿真的结果是否还是与实际硬件调试差别很大呢?
Jacob1:
回复 Tony Tang:
你好,感谢您的回复,学习很多。
之前有人说过,软件仿真的cycle数与硬件仿真的cycle数差很多,看来软件仿真比较还是模拟的,在保证算法正确以及优化下,还是重点在硬件上仿真,看实际的效果。
感谢!