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.

[参考译文] TMS320F2.8377万S:如何在cmd链接器文件中映射IQsin和IQcos函数?

Guru**** 2487425 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/642109/tms320f28377s-how-con-i-map-iqsin-and-iqcos-function-in-cmd-linker-file

部件号:TMS320F2.8377万S
主题中讨论的其他部件: controlSUITEC2000WARE

您好,

      目前 我正在使用tms320f2.8377万s控制器,我开发了不同的微控制代码,即定点控制器,我要在浮点控制器(即TMS320F2.8337万S)中使用相同的代码  

    但IQsin和IQcos函数不能提供正确的输出。

   请参阅控制台文件 和cmd链接器文件...

调用:C2000 Linker
c:\ti/ccsv6/tools/compiler/ti-CGT-2000_VGT_VGT_VGT.5.LTS/bin/cl2000"<xmt-block0>2000 16.9 -ml -mt --float_support=softlib -O2 --fp_mode=strict --fp_reassoc=off --advice:performance_alls=all --define=cpu_c1=flash -g -g_lib_lip_lib_cscdi_l=-cscdi_l_sup_-/r.zh-/ip-/-/-express-/ip-f-/ip-/ip-express-/ip-/ip-/ip-express-/ip_exip-/ip-/ip-/ip-/ip-cscr-ex-ex-/ip_l_l_ex-/ip-/ip-/ip-/ip-/ip-express-/ip-/ip-ex-ex-/ip_ex-ex-/ip_ex-ex-ex-express-ex-/ip_l_ex-/ip_ex-c_ 16.9 16.9  
链接>
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmatx.lib<IQ15div.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmath.lib<IQ15isqrt.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmatx.lib<IQ15rumpy.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmatx.lib<IQ15rsmpy.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmatx.lib<IQ15sqrt.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmatx.lib<IQ24cs.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmatx.lib<IQ24div.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmatx.lib<IQ24sin.obj>":无法确定兼容性
警告#1.6002万-D:内部缺少构建属性供应商部分TI
  "../IQmath.lib<IQmathTables.obj>":无法确定兼容性
'完成构建目标:atil_3phINV.out '
''

 命令链接程序文件。

内存

第0页:/* 程序存储器*/
         /*内存(RAM/flash)块可移动到Page1以进行数据分配*/
         /* BEGIN用于“引导至闪存”引导加载程序模式  */

  BEGIN             :Origin = 0x8万,length = 0x0.0002万
  RAMM0             :原点= 0x0.0122万,长度= 0x0002DE
  RAMD0             :原点= 0x00B000,长度= 0x0.08万
  RAMLS0            :原点= 0x0.8万,长度= 0x0.08万
  RAMLS1            :原点= 0x0.88万,长度= 0x0.08万
  RAMLS2           :原点= 0x0.9万,长度= 0x0.08万
  RAMLS3           :原点= 0x0.98万,长度= 0x0.08万
  RAMLS4           :原点= 0x00A000,长度= 0x0.08万
  RAMGS14          :原点= 0x01A000,长度= 0x001FFE
 /* RAMGS15          :原点= 0x01B000,长度= 0x0.1万*/
  重置             :原始= 0x3FFFC0,长度= 0x0.0002万
  引导程序         :原始= 0x3FFFC2,长度= 0x0.0003万E
  IQTABLES       :原点= 0x3FE000,长度= 0x000b50
  FPUTABLES      :原点= 0x3FEBDC,长度= 0x0006A0

  /*闪存扇区*/
  FLASHA          :原点= 0x8.0002万,长度= 0x001FFE   /*片上闪存*/
  FLASHB          :Origin = 0x8.2万,length = 0x0.2万   /*片上闪存*/
  FLASHC          :原点= 0x8.4万,长度= 0x0.2万   /*片上闪存*/
  FLASHD          :原点= 0x8.6万,长度= 0x0.2万   /*片上闪存*/
  FLASHE          :原点= 0x8.8万,长度= 0x0.8万   /*片上闪存*/
  FLASHF          :原始= 0x9万,长度= 0x0.8万   /*片上闪存*/
  FLASHG          :原点= 0x9.8万,长度= 0x0.8万   /*片上闪存*/
  FLASHH          : Origin = 0x0A0000,length = 0x0.8万   /*片上闪存*/
  FLASHI          :原点= 0x0A8000,长度= 0x0.8万   /*片上闪存*/
  FLASHJ          :Origin = 0x0B0000,length = 0x0.8万   /*片上闪存*/
  FLASHK          : Origin = 0x0B8000,length = 0x0.2万   /*片上闪存*/
  FLASHL          :原点= 0x0BA000,长度= 0x0.2万   /*片上闪存*/
  FLASHM          : Origin = 0x0BC000,length = 0x0.2万   /*片上闪存*/
  FLASHN          : Origin = 0x0BE000,length = 0x0.2万   /*片上闪存*/
  FLASHO          :原点= 0x0C0000,长度= 0x0.2万   /*片上闪存*/
  FLASHP          :原点= 0x0C2000,长度= 0x0.2万   /*片上闪存*/
  FLASHQ          :原始= 0x0C4000,长度= 0x0.2万   /*片上闪存*/   
  FLASHR          :原点= 0x0C6000,长度= 0x0.2万   /*片上闪存*/
  FLASHS          :原点= 0x0C8000,长度= 0x0.8万   /*片上闪存*/
  FLASHT          :原点= 0x0D0000,长度= 0x0.8万   /*片上闪存*/   
  FLASHU          :原点= 0x0D8000,长度= 0x0.8万   /*片上闪存*/   
  FLASHV          :原点= 0x0E0000,长度= 0x0.8万   /*片上闪存*/   
  FLASHW          : Origin = 0x0E8000,length = 0x0.8万   /*片上闪存*/   
  FLASHX          : Origin = 0x0F0000,length = 0x0.8万   /*片上闪存*/
  flashy          :origin = 0x0F8000,length = 0x0.2万   /*片上闪存*/
  FLASHZ          :原点= 0x0FA000,长度= 0x0.2万   /*片上闪存*/
  FLASHAA         :原点= 0x0FC000,长度= 0x0.2万   /*片上闪存*/   
  FLASHAB         :原点= 0x0FE000,长度= 0x0.2万   /*片上闪存*/

第1页:/*数据存储器*/
        /*内存(RAM/flash)块可移动到PAGE0以进行程序分配*/

  BOOT_RSVD      :Origin = 0x0.0002万,length = 0x0.012万    /* M0的一部分,boot ROM将使用此堆栈*/
  RAMM1          :原点= 0x0.04万,长度= 0x0.04万    /*片上RAM块M1 */
  RAMD1          :原点= 0x00B800,长度= 0x0.08万

  RAMLS5     :原点= 0x00A800,长度= 0x0.08万

  RAMGS0     :原点= 0x00C000,长度= 0x0.1万
  RAMGS1     :原点= 0x00D000,长度= 0x0.1万
  RAMGS2     :原点= 0x00E000,长度= 0x0.1万
  RAMGS3     :原点= 0x00F000,长度= 0x0.1万
  RAMGS4     :原点= 0x1万,长度= 0x0.1万
  RAMGS5     :原点= 0x1.1万,长度= 0x0.1万
  RAMGS6     :原点= 0x1.2万,长度= 0x0.1万
  RAMGS7     :原点= 0x1.3万,长度= 0x0.1万
  RAMGS8     :原点= 0x1.4万,长度= 0x0.1万
  RAMGS9     :原点= 0x1.5万,长度= 0x0.1万
  RAMGS10    :原点= 0x1.6万,长度= 0x0.1万
  RAMGS11    :原点= 0x1.7万,长度= 0x0.1万
  RAMGS12    :原点= 0x1.8万,长度= 0x0.1万
  RAMGS13    :原点= 0x1.9万,长度= 0x0.1万
  
}


章节

  /*分配方案领域:*/
  .cinit             :> FLASHB     page =0,align(4)
  .Pinit             :> FLASHB,    第页=0,对齐(4)
  text              :>> FLASHB | FLASHC | FLASHD | FLASHE     PAGE =0,align(4)
  codegstart          :> BEGIN      PAGE =0,align(4)(代码开始:>开始页=0,对齐(4))


   .TI.ramfunc:{} load = FLASHE,
                        RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3 | RAMLS4 | RAMGS14,
                        load_start(_RamfuncsLoadStart),
                        load_size (_RamfuncsLoadSize),
                        load_end (_RamfuncsLoadEnd),
                        run_start(_RamfuncsRunStart),
                        Run_Size (_RamfuncsRunSize),
                        Run_End(_RamfuncsRunEnd),
                        页面= 0,对齐(4)

                  
  /*分配未初始化的数据段:*/
  .stack             :> RAMM1       page = 1
  .ebss              :>> RAMLS5 | RAMGS0 | RAMGS1      page = 1.
  esysmem           :> RAMLS5      page = 1.

  /*初始化部分进入Flash */
  econst            :>> FLASHF | FLASHG | FLASHH     page =0,align(4)
  .switch            :> FLASHB     page = 0,align(4)
  

  /*分配IQ数学领域:*/
  IQMath           :LOAD = FLASHE,
                   RUN = RAMLS0,
                   load_start(_IQfuncsLoadStart),
                   load_end (_IQfuncsLoadEnd),
                   run_start(_IQfuncsRunStart),
                   页面= 0,对齐(4)

  IQmathTables     :> IQTABLES    PAGE =0 TYPE = NoLoad  /* ROM */中的数学表

 /* FPUmathTables    :> FPUTABLES   PAGE =0  TYPE = NoLoad*/

  .reset             :> reset,    page =0,type = dsect
  引导            程序:>引导    程序页=0,类型= DSECT
  CNTL_COEFER_RAM   :>   RAMGS2  页面=1.
  CNTL_var_RAM   :> RAMGS2      page =1.

}

请建议我如何 正确访问TMS320F2.8377万S控制器中的IQmath查找表。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    达塔

    实际上,您只需要为IQmath表分配内存,具体取决于您是希望它们在闪存中还是在RAM中。  C2000Ware中有一些示例链接器文件。  如果将其安装在硬盘驱动器的默认位置,.cmd文件将位于:

    C:\Aa07\c2000\software\demoF28379D\cmd</s>2.8379万

    您似乎是从闪存运行的,因此只需将链接程序分配更改为类似以下内容:

     IQMath:> FLASHB,页面=0,对齐(4)

     IQmathTables:> FLASHC,page =0,align(4)

    我认为这都是错误的。  我在具有上述分配的设备上看到了正确的IQsin和IQcos结果。  如果不起作用,请告诉我们。

    您可以安全地忽略“不能确定兼容性”链接程序警告。  此链接说明原因:

    此致,

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    达塔

    是否现在要在浮点或定点运行代码?

    F2.8377万S具有TMU,启用后,您不需要IQsin和cos表,只需在处理器选项下启用FPU支持和TMU支持,然后在数学类型中选择IQmath头文件中的浮点。

    但是,一旦完成此更改,整个代码将使用浮点而不是定点,性能可能会有所不同

    -Manish
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Richard先生:

    感谢您的宝贵响应,根据您的建议,我已对.cmd文件进行了更改,现在它工作正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Manish先生:

    感谢您的宝贵响应。根据您的建议,我已更改了编译器设置,即float_support=fpu32 --tMU_support=tmu0和Math_type为float模式,但_IQsin和_IQcos函数给出了错误的结果。