|
arm-elf-gcc在arm上的一个bug,如何绕开这个bug?
[复制链接]
经过多次测试,发现arm-elf-gcc编译器在格式带有浮点参数的字符串的时候会导致CPU(无论是arm9还是arm7)跑飞,gcc版本号为arm-elf-gcc 4.1.1,编译的批处理文件内容如下:
path=c:\windows;c:\windows\system32;E:\GNUARM\bin
arm-elf-as init.s -o .\obj\init.o
arm-elf-gcc -O3 -IE:\GNUARM\include -I..\inc -mlittle-endian -mcpu=arm7 -mhard-float -c main.c -o obj\main.o
arm-elf-ld -Tldscript -LE:\GNUARM\arm-elf\lib -LE:\GNUARM\lib\gcc\arm-elf\4.1.1 -L. -o FloatTest.elf obj\init.o obj\main.o -lAppApi -lc -lgcc
pause
应用程序的main.c文件内容如下:
#include
#include "AppInterface.h"
int main(void)
{
float fTemp;
char strTemp[2000];
(void)Lib_AppInit(); // 应用运行初始化,无须理会
Lib_LcdCls(); // 清液晶屏幕,无须理会
Lib_LcdGotoxy(0, 0); // 在显示指针指到(0,0)位置,无须理会
fTemp = 0.01f*12345.331f; // 浮点运算没问题,不会出错
Lib_Lcdprintf("ABC\n"); // 显示"ABC",没问题
Lib_KbGetCh(); // 等待用户按键
sprintf(strTemp, "%f", fTemp); // 在这里出问题
Lib_Lcdprintf("kk=%s", strTemp); // 程序在这里跑飞,无法往下运行
Lib_KbGetCh();
return 0;
}
能否找到一种解决的办法,绕开该问题?
|
|