This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6748: 工程在debug时,定义的部分静态变量和全局变量的值不能正确的在expressions窗口观测

Part Number: TMS320C6748


如下图所示,定义的全局变量lx在expressions的窗口一直显示0,但实际值已经置位为1,同时,软件可以进入当lx等于1时的if条件下的语句中,但语句内的静态变量赋值后再expressions窗口也不能正确显示值为1,而是一直保持0.请问如何处理?

  • 在往下执行呢,是否显示?在view memory是否能正确显示?

  • 非常感谢回复!继续往下执行也不会正确显示值,在view memory的与expressions的值一致;但同时定义的变量类型为char类型,多个变量存储在同时定义的第一个变量的地址空间内,仅第一个变量的值正确显示。

    经多次调试发现,工程中定义的全局变量过多,将大部分全局变量去除编译后,变量的值可以同时在view memory和expressions里正确显示,此时,变量的存储地址与不去除全局变量时一致,多个变量存储在同时定义的第一个变量的地址空间内。

    请问问什么全局变量过多会出现以上情况:定义的全局变量的大小有限制吗?如何取消对全局变量大小的限制?

    工程在cmd文件内没设置.bss段的大小,且工程中未使能任何cache,所有代码运行在DDR中。以上变量均定义为函数内部volatile static类型,第一次提问时定义为static和全局变量,但现象均一致。

  • 多个变量存储在同时定义的第一个变量的地址空间内,仅第一个变量的值正确显示。

    请问使用union定义这些变量的?

  • 未使用union定义变量,是一个函数内定义的独立的静态变量,变量类型有char和int、short类型,请问此项是因为程序编译的时候优化了吗?CCS未设定优化等级。全局变量和静态变量的值不能在调试窗口观测的原因已确定,是因为工程内定义了大量的全局变量导致,全局变量有9000个,查看memory内的存储每个变量占4byte空间;取消这些全局变量的编译后,可在expressions窗口正确观测变量的值。请问在CCS的哪里有设定调试时关于全局变量的观测相关设置吗?

  • 请问用的是ccs版本是多少?有尝试过其他ccs版本吗?

  • 谢谢回复,这个工程是CCS9.0.1的版本,还未尝试降版本编译。

  • 请尝试其他版本的ccs,看是否是ccs bug。