Part Number:TMS320C6748
如下图所示,定义的全局变量lx在expressions的窗口一直显示0,但实际值已经置位为1,同时,软件可以进入当lx等于1时的if条件下的语句中,但语句内的静态变量赋值后再expressions窗口也不能正确显示值为1,而是一直保持0.请问如何处理?
Shine:
在往下执行呢,是否显示?在view memory是否能正确显示?
,
Xi Liu:
非常感谢回复!继续往下执行也不会正确显示值,在view memory的与expressions的值一致;但同时定义的变量类型为char类型,多个变量存储在同时定义的第一个变量的地址空间内,仅第一个变量的值正确显示。
经多次调试发现,工程中定义的全局变量过多,将大部分全局变量去除编译后,变量的值可以同时在view memory和expressions里正确显示,此时,变量的存储地址与不去除全局变量时一致,多个变量存储在同时定义的第一个变量的地址空间内。
请问问什么全局变量过多会出现以上情况:定义的全局变量的大小有限制吗?如何取消对全局变量大小的限制?
工程在cmd文件内没设置.bss段的大小,且工程中未使能任何cache,所有代码运行在DDR中。以上变量均定义为函数内部volatile static类型,第一次提问时定义为static和全局变量,但现象均一致。
,
Shine:
Xi Liu 说:多个变量存储在同时定义的第一个变量的地址空间内,仅第一个变量的值正确显示。
请问使用union定义这些变量的?
,
Xi Liu:
未使用union定义变量,是一个函数内定义的独立的静态变量,变量类型有char和int、short类型,请问此项是因为程序编译的时候优化了吗?CCS未设定优化等级。全局变量和静态变量的值不能在调试窗口观测的原因已确定,是因为工程内定义了大量的全局变量导致,全局变量有9000个,查看memory内的存储每个变量占4byte空间;取消这些全局变量的编译后,可在expressions窗口正确观测变量的值。请问在CCS的哪里有设定调试时关于全局变量的观测相关设置吗?
,
Shine:
请问用的是ccs版本是多少?有尝试过其他ccs版本吗?
,
Xi Liu:
谢谢回复,这个工程是CCS9.0.1的版本,还未尝试降版本编译。
,
Shine:
请尝试其他版本的ccs,看是否是ccs bug。