This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS5.5 math库问题



  在做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
}