原CCS3.3工程采用的是汇编和C语言混合编程,汇编变量按规划好的地址在一个头文件中进行定义,汇编程序中调用这些变量,对于一些C语言也需要用到的汇编变量,即其中一些在汇编头文件中定义的C语言和汇编共用变量部分,在汇编头文件中采用.global声明为全局变量,并且在C语言头文件中extern+变量加下划线的形式声明为全局变量,以此实现C语言调用。
目前用CCS6.1导入后,经过通用的导入处理流程后,编译已经通过,C语言对外通信接口部分可正常运行,但是汇编部分运行不正常,经排查发现汇编定义变量中,采用.global声明同时在C语言头文件中external声明的全局变量的部分,在Map文件中可以找到声明的变量及对应的地址;但是仅在汇编头文件中定义,仅在汇编程序文件中调用,未.global声明为全局变量,也未在C语言中调用的变量,在Map文件中无法找到相关变量及地址,也就是说这些变量在编译的时候被丢弃了。
该工程在原CCS3.3编译环境下,汇编定义变量无论是否声明为C语言可调用变量,均可在Map文件编译进去,可以找到相关变量和对应地址,可以正常运行。
现在的问题是:
1)CCS6.1是否支持上述形式原CCS3.3支持的汇编和C混合编译的工程形式。
2)出现上述CCS6.1中,仅在汇编头文件中声明的变量,未能正常编译进入Map文件内的现象,是CCS6.1环境升级后不支持CCS3.3的部分设定,还是说需要在普通导入流程后,修改相关的设置。
3)目前出现上述问题,要想让该汇编和C语言混合编译的工程在CCS6.1的环境下正常运行,有什么样的解决方法。
烦请有经验的大神不吝赐教,谢谢!