TI中文支持网
TI专业的中文技术问题搜集分享网站

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
}

noaming:

你好,两块芯片不是一个系列的。对于C6748,首先下面这个库应该不对的。

-l rts67plus.lib

应该使用rts674x.lib

这里有个链接说明这个的不同:

http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/t/37352

user1973786:

回复 noaming:

我将库改成了-l rts6740.lib,编译后两个不同函数中的atan的计算结果依旧是一个正确一个错误!

现在想先弄清两个问题:

1)-heap  0x7000和-stack 0x4000在分配的时候是分配到什么地址上的?

2)有没有关于6748或OMAP138的通用寄存器说明,比如说A1寄存器是做什么的,完成一个加法会改变哪些寄存器,这样的文档资料?也就是汇编语言的指导

赞(0)
未经允许不得转载:TI中文支持网 » CCS5.5 math库问题
分享到: 更多 (0)