Part Number:TMS320C6678
串口打印程序中将待打印的参数写至数组中
void serialPrintf (const char *fmt, …)
{
char printbuffer[512];
va_list args;
。。。。
va_start (args, fmt);
vsprintf(printbuffer,fmt, args);
va_end (args);
。。。。
}
在CCS5.5中调试,发现程序va_start运行至<stdarg.h>中COFF ABI convention:, 但在CCS10中程序运行至ELF ABI convention:
编译设置都是输出eabi(ELF).
是由于软件版本的问题导致这种情况发生?
该如何修复
Shine:
请看一下在两个版本的ccs里工程属性里是否定义的pre-define the symbol一样?请看一下下面的网站说明。Conditional Compilation Using a Predefined Symbolhttps://software-dl.ti.com/ccs/esd/documents/C2000_c28x_migration_from_coff_to_eabi.html
,
Jerry:
是一样的
,
Shine:
请尝试在ccs10里用和ccs 5.5一样的compiler版本编译。
,
Jerry:
编译器是一样的,问题还是会出现
,
Shine:
代码是Import到ccs10的吗? 移植的时候,有做什么修改吗?
,
Jerry:
没有更改,使用了NDK,CCS10.4默认使用了miniPrintf,但是CCS5没有用miniprintf。将vsprintf换成vsnprintf好了
,
Shine:
非常感谢分享解决方法!