主题中讨论的其他器件:C2000WARE
我需要有关使用 CLAsin ()函数的指导。 尽管我提到了 CLA_MATH_LIB_UG.pdf、但我有以下问题
在我添加 具有第一优先级的"F2837xRevB_c1bootROM_CLADataROMSymbols_fpu32.lib"之前、我的程序显示了创建 CLAMathTable 的警告。 添加之后,我的警告消失了, 但 CLAsin ()函数在我的 CLA 任务中仍然不起作用。 我正在使用控制卡、因此我在我的 cmd 中使用 RAM。 我应该修改我的 cmd 文件吗?
以下是我的 cmd 文件
//如果使用
// CLA C 编译器
//项目属性-> C2000链接器->高级选项->命令文件
//预处理->--,用户必须在项目链接器设置中定义 CLA_C define
#ifdef CLA_C
//定义
将由 CLA 编译器用于局部符号和 temps 的 CLA 暂存区的大小
//还强制引用标记
了//暂存区的特殊符号。
CLA_暂 存区_size = 0x100;
--undef_sym=__cla_scratchpad 结束
--undef_sym=__cla_scratchpad 开始
#endif //cla_C
MEMORY
{
PAGE 0:
/* begin 用于"引导至 SARAM"引导加载程序模式*/
begin:origin = 0x000000,length = 0x000002
RAMM0:origin = 0x000123,length = 0x0002DD
RAMD0:origin = 0x00B000、length = 0x000800
RAMD1 :origin = 0x00B800,length = 0x000800
// RAMLS4:origin = 0x00A000、length = 0x000800 */
/* RAMLS5 :origin = 0x00A800、length = 0x000800 */
RAMLS4_5 :origin = 0x00A000、length = 0x001000
reset:origin = 0x3FFFC0,length = 0x000002
page 1:
boot_RSVD :origin = 0x000002、length = 0x000121 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1 :origin = 0x000400、length = 0x0003F8 /*片上 RAM 块 M1 *//
RAMM1_RSVD :origin = 0x0007F8,length = 0x000008 /*根据勘误咨询"内存:有效内存之外的预取"来保留和不用于代码*/*
RAMLS0:origin = 0x008000、length = 0x000800*/
EPWM1ISR_LS0:origin = 0x008000、length = 0x000050
ECAP1ISR_LS0:origin = 0x008050、length = 0x000050
RAMLS0:origin = 0x080A0,length = 0x000760
RAMLS1:origin = 0x008800,length = 0x000800
RAMLS2:origin = 0x009000、length = 0x000800
RAMLS3:origin = 0x009800,length = 0x000800
RAMGS0 :origin = 0x00C000、length = 0x001000
RAMGS1 :origin = 0x00D000、length = 0x001000
RAMGS2 :origin = 0x00E000、length = 0x001000
RAMGS3 :origin = 0x00F000、length = 0x001000
RAMGS4 :origin = 0x010000,length = 0x001000
RAMGS5 :origin = 0x011000,length = 0x001000
RAMGS6 :origin = 0x012000,length = 0x001000
RAMGS7 :origin = 0x013000、length = 0x001000
RAMGS8 :origin = 0x014000、length = 0x001000
RAMGS9 :origin = 0x015000,length = 0x001000
RAMGS10 :origin = 0x016000,length = 0x001000
// RAMGS11 :origin = 0x017000、length = 0x000FF8 //取消对 F28374D、F28376D 器件的注释*//
RAMGS11_RSVD:origin = 0x017FF8,length = 0x000008 //根据勘误表中的“Memory:Prepetching Beyond valid Memory”*/
RAMGS11保留并不用于代码 :origin = 0x017000、length = 0x001000 /*仅在 F28379D、F28377D、F28375D 器件上可用。 移除其他设备上的线路。 */
RAMGS12 :origin = 0x018000、length = 0x001000 /*仅在 F28379D、F28377D、F28375D 器件上可用。 移除其他设备上的线路。 */
RAMGS13 :origin = 0x019000、length = 0x001000 /*仅在 F28379D、F28377D、F28375D 器件上可用。 移除其他设备上的线路。 */
RAMGS14 :origin = 0x01A000、length = 0x001000 /*仅在 F28379D、F28377D、F28375D 器件上可用。 移除其他设备上的线路。 */
RAMGS15 :origin = 0x01B000、length = 0x000FF8 /*仅在 F28379D、F28377D、F28375D 器件上可用。 移除其他设备上的线路。 //
RAMGS15_RSVD:origin = 0x01BFF8,length = 0x000008 //根据勘误咨询“Memory:Prepetching Beyond valid Memory”(内存:超出有效内存的预取)来保留代码且不用于代码*/
/*仅在 F28379D、F28377D、F28375D 器件上。 移除其他设备上的线路。 *
/ EMIF1_CS0n :origin = 0x8000000、length = 0x10000000
EMIF1_CS2n :origin = 0x00100000、length = 0x00200000
EMIF1_CS3n :origin = 0x00300000、length = 0x00080000
EMIF1_CS4n :origin = 0x00380000、length = 0x00060000
EMIF2_CS0n :origin = 0x90000000、length = 0x10000000
EMIF2_CS2n :origin = 0x00002000、length = 0x00001000
CANA_MSG_RAM :origin = 0x049000、length = 0x000800
CANB_MSG_RAM :origin = 0x04B000、length = 0x000800
CLA1_MSGRAMLOW:origin = 0x001480、length = 0x000080
CLA1_MSGRAMIGH:origin = 0x001500、length = 0x000080
CPU2TOCPU1RAM:origin = 0x03F800、length = 0x000400
CPU1TOCPU2TOCPU2FC00:origin = 0x000400
SECTIONS
:origin = 0x03FRAM :>开始, PAGE = 0.text
:>> RAMD0 | RAMD1 | RAMLS4_5,page = 0.cinit
:> RAMM0, PAGE = 0.switch
:> RAMM0, PAGE = 0.reset
:>重置, PAGE = 0、TYPE = DSECT /*未使用、*/
.stack :> RAMM1, PAGE = 1
#if defined (_TI_EABI _)
.bss :> RAMLS2,页= 1.bss
:输出 :> RAMLS2,page = 1
.init_array :> RAMM0, PAGE = 0
.const :> RAMLS3,page = 1.data
:> RAMLS3,page = 1
.sysmem :> RAMLS3,page = 1#else
.pinit :> RAMM0, PAGE = 0
.ebss :> RAMLS2,PAGE = 1.econst
:> RAMLS3,page = 1
.esysmem :> RAMLS3,page = 1
#endif
Filter_RegsFile:> RAMGS0,PAGE = 1
.em1_cs0 :> EMIF1_CS0n,PAGE = 1.em1_CS2
:> EMIF1_CS2n,PAGE = 1.em1_CS3
:> EMIF1_CS3n,page = 1.em1_CS4
:> EMIF1_CS4n,PAGE = 1.EM2_cs0
:> EMIF2_CS0n,PAGE = 1.EM2_CS2
:> EMIF2_CS2n,PAGE = 1
/* CLA 特定部分*/
Cla1Prog :>RAMLS4_5,PAGE=0
CLADataLS0:>RAMLS0,PAGE=1
CLADataLS1:>RAMLS1,PAGE=1
ePWM_INT_ISR:>EPWM1ISR_LS0,PAGE = 1
ECAP1_ISR:>ECAP1ISR_LS0,PAGE = 1
CPU2TOCLUSB1
:>CLMSOM_CLUSB1:1:1 CLUSCMPOIN_CL1:1:1 CLMLS1:1 CLUSCOLUM_CLPM1_CLUSB1:1:1:1:CLMLS1:CLMLS1:CLMLS1:CLUSCO_CLMLS1 >CLA1_MSGRAMHIGH、PAGE = 1
/*以下段定义适用于 SDFM 示例*/
Filter1_RegsFile:>RAMGS1、PAGE = 1、fill=0x1111
Filter2_RegsFile:>RAMGS2、PAGE = 1、fill=0x2222
Filter3_RegsFile:>RAMGS3、PAGE = 0x4_RegsFile
: > RAMGS4、PAGE = 1、fill=0x4444
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{}>RAMM0, PAGE = 0
#else
ramfuncs:>RAMM0 PAGE = 0
#endif
#endif
#ifdef CLA_C
/* CLA C 编译器段*/
//
////必须分配给 CLA 具有写入访问
权限的内存
:
{*。obj (CLAscratch)
。 += CLA_ScratchPad_size;
*。obj (CLAscratch_end)}> RAMLS1、page = 1
.scratchpad :> RAMLS1、 PAGE = 1.bss_cla
:> RAMLS1、 PAGE = 1.CONST_CLA
:> RAMLS1、 PAGE = 1
#endif //cla_C
组:> CPU1TOCPU2RAM,PAGE = 1
{
PUTBUFFER
PUTWRITEIDX
GETREADIDX
}
组:> CPU2TOCPU1RAM,PAGE = 1
{
GETBUFFER:TYPE = DSECT
GETWRITEIDX:TYPE = DSECT
PUTREADIDX:TYPE = DSECT
}
}
2.即使我使用的是 CLA 库、我也应该将 CLA 汇编源文件包含在我的项目中吗?
3.当我添加"CLAsin.asm"源文件时、在原子模式下显示添加"CLAeabi.asm"时出错、但我正在使用 COFF 输出格式。 帮助