在2812的平台上使用IQmath的库函数(_IQdiv、_IQsinPU、_IQcosPU)的时候系统直接跳入非法中断,注释掉相应代码就可以正常运行了;
本人主要从库函数的更新和cmd文件的配置两个方面考虑,但还是没有解决问题,现陈述如下:
1、库函数使用的IQmath.h为最新的controlsuit中的数学库及对应的头文件。
2、软件平台为刚从CCS3.3倒腾到CCS6.2,现在的编译器版本号为TI v15.12.x.LTS(x=3,4,5,6);
3、cmd文件如下所示:
-stack 0x400
MEMORY
{
PAGE 0: /* Program Memory */
ZONE0 : origin = 0x002000, length = 0x002000 /* XINTF zone 0 */
ZONE1 : origin = 0x004000, length = 0x002000 /* XINTF zone 1 */
ZONE2 : origin = 0x080000, length = 0x080000 /* XINTF zone 2 */
ZONE6 : origin = 0x100000, length = 0x080000 /* XINTF zone 6 */
OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
FLASH_IJ : origin = 0x3D8000, length = 0x004000 /* on-chip FLASH */
FLASH_GH : origin = 0x3DC000, length = 0x008000 /* on-chip FLASH */
FLASH_EF : origin = 0x3E4000, length = 0x008000 /* on-chip FLASH */
FLASH_CD : origin = 0x3EC000, length = 0x004000 /* on-chip FLASH */
FLASH_AB : origin = 0x3F0000, length = 0x007F80 /* on-chip FLASH */
CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Reserved when CSM is in use. */
BEGIN_FLASH : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to flash" bootloader mode. */
PASSWORDS : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */
BEGIN_H0 : origin = 0x3F8000, length = 0x000002 /* Part of H0SARAM. Used for "boot to H0" bootloader mode. */
H0SARAM : origin = 0x3F8002, length = 0x000FFD /* 8Kw H0 SARAM */
H1SARAM : origin = 0x3F9000, length = 0x1000
BOOTROM : origin = 0x3FF000, length = 0x000FC0 /* boot ROM available if MP/MCn=0 */
RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */
VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */
PAGE 1 : /* Data Memory */
M0SARAM : origin = 0x000000, length = 0x000400 /* 1Kw M0 SARAM */
M1SARAM : origin = 0x000400, length = 0x000400 /* 1Kw M1 SARAM */
L1SARAM : origin = 0x009000, length = 0x001000 /* 4Kw L1 SARAM */
L0SARAM : origin = 0x008000, length = 0x001000 /* 4Kw L0 SARAM */
/* Peripheral Frame 0: */
DEV_EMU : origin = 0x000880, length = 0x000180
FLASH_REGS : origin = 0x000A80, length = 0x000060
CSM : origin = 0x000AE0, length = 0x000010
XINTF : origin = 0x000B20, length = 0x000020
CPU_TIMER0 : origin = 0x000C00, length = 0x000008
CPU_TIMER1 : origin = 0x000C08, length = 0x000008
CPU_TIMER2 : origin = 0x000C10, length = 0x000008
PIE_CTRL : origin = 0x000CE0, length = 0x000020
PIE_VECT : origin = 0x000D00, length = 0x000100
/* Peripheral Frame 1: */
ECAN_A : origin = 0x006000, length = 0x000100
ECAN_AMBOX : origin = 0x006100, length = 0x000100
/* Peripheral Frame 2: */
SYSTEM : origin = 0x007010, length = 0x000020
SPI_A : origin = 0x007040, length = 0x000010
SCI_A : origin = 0x007050, length = 0x000010
XINTRUPT : origin = 0x007070, length = 0x000010
GPIOMUX : origin = 0x0070C0, length = 0x000020
GPIODAT : origin = 0x0070E0, length = 0x000020
ADC : origin = 0x007100, length = 0x000020
EV_A : origin = 0x007400, length = 0x000040
EV_B : origin = 0x007500, length = 0x000040
SPI_B : origin = 0x007740, length = 0x000010
SCI_B : origin = 0x007750, length = 0x000010
MCBSP_A : origin = 0x007800, length = 0x000040
/* CSM Password Locations */
CSM_PWL : origin = 0x3F7FF8, length = 0x000008
}
SECTIONS
{
......
secureRamFuncs : LOAD = FLASH_CD, PAGE = 0
RUN = H0SARAM, PAGE = 0
LOAD_START(_secureRamFuncs_loadstart),
LOAD_END(_secureRamFuncs_loadend),
RUN_START(_secureRamFuncs_runstart)
......
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1
PieVectTable : > PIE_VECT, PAGE = 1
......
IQmathTables : load = BOOTROM, type = NOLOAD, PAGE = 0
IQmath : load = FLASH_AB, PAGE = 0
RUN = H1SARAM, PAGE = 0
LOAD_START(_IQmathFuncs_loadstart),
LOAD_END(_IQmathFuncs_loadend),
RUN_START(_IQmathFuncs_runstart)
}
4、编译过程中出现的报警信息如下:
Description Resource Path Location Type
#16002-D build attribute vendor section TI missing in "../lib/IQmath.lib<IQ24cosPU.obj>": compatibility cannot be determined SVPMSM_ZKF C/C++ Problem
#16002-D build attribute vendor section TI missing in "../lib/IQmath.lib<IQ24div.obj>": compatibility cannot be determined SVPMSM_ZKF C/C++ Problem
#16002-D build attribute vendor section TI missing in "../lib/IQmath.lib<IQ24sinPU.obj>": compatibility cannot be determined SVPMSM_ZKF C/C++ Problem
#16002-D build attribute vendor section TI missing in "../lib/IQmath.lib<IQmathTables.obj>": compatibility cannot be determined SVPMSM_ZKF C/C++ Problem
综上所述,请工程师高手帮助参详分析,谢谢大家了.