在做CCS2.2向CCS5.5的程序移植,直接由5.5打开2.2工程,新工程直接编译和仿真结果都是正确的!
但是在更换了CPU(6713换成了6748)后,新旧程序的结果就不一致了,6748中函数A:elev = atan(enu[2]/sqrt(enu[0]*enu[0] + enu[1]*enu[1])) /PI;该语句的返回值与原程序不同,但enu数组中的值都是一样的!在另一个函数B中dElevation = atan(enu[2]/sqrt(enu[0]*enu[0] + enu[1]*enu[1]));这个结果是正确的!
这个相同的math库函数却得到两种不同的结果这可能会是什么原因呢?会不会是我的函数A中变量太多,导致内存溢出?程序中的函数嵌套也就最多4~5层,如果真的是溢出,这样不应该编译不通过吗……
6748的CMD文件如下:
-l rts67plus.lib
-c
-heap 0x7000
-stack 0x4000
MEMORY
{
VECS: ORIGIN = 0x11800000 LENGTH = 0x00000200
ROM_PMEM: ORIGIN = 0x11800200 LENGTH = 0x0002FE00
ROM_CINIT: ORIGIN = 0x11830000 LENGTH = 0x00010000
STACKHEAP: ORIGIN = 0x80000000 LENGTH = 0x00020000 //shared ram
BMEM: ORIGIN = 0x80020000 LENGTH = 0x00020000
DDR2: ORIGIN = 0xC0000000 LENGTH = 0x08000000
}
SECTIONS
{
.vectors > VECS
.text > ROM_PMEM
.tables > BMEM
.data > BMEM
.bss > BMEM
.cinit : load = ROM_CINIT
.const : load = ROM_CINIT
.switch : load = ROM_CINIT
.com_data > DDR2
.cio > BMEM
.far > BMEM
.stack > STACKHEAP
.sysmem > STACKHEAP
}