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.

[参考译文] CCS/TMS320F28035:C2000 CLA sqrt 示例不起作用

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/622410/ccs-tms320f28035-c2000-cla-sqrt-sample-not-working

器件型号:TMS320F28035
Thread 中讨论的其他器件:controlSUITE

工具/软件:Code Composer Studio

C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_cla_ccsv5\sqrt

当我尝试计算除2个示例代码 以外的 sqrt 时、CLA 的上述示例代码中的值。 我使用的是 Code Composer Studio 版本:7.2.0.0001。  

void test_run (void)

fVal = 2;                 
Cla1ForceTask1andWait();

#if 0
Cla1ForceTask2andWait();

Cla1ForceTask3andWait();

Cla1ForceTask4andWait();

Cla1ForceTask5andWait();

Cla1ForceTask6andWait();

Cla1ForceTask7andWait();

Cla1ForceTask8andWait();
#endif

void test_report (void)


if (fResult < 1.4143 && fResult > 1.4141)
PUT ("pass\n");
其他
printf (“失败,fResult =%f\n",fResult);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    像 printf 例程这样的 loks 为什么???????????????
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    /*
    //######################################################################################################################
    //
    //文件:F28035_CLA_C.cmd
    //
    //标题:F28035器件的链接器命令文件
    //
    //######################################################################################################################
    //$TI 版本:F2803x C/C++头文件和外设示例 V130 $
    //$Release Date:2015年5月8日$
    //版权所有:版权所有(C) 2009-2015 Texas Instruments Incorporated -
    // http://www.ti.com/ 保留所有权利$
    //######################################################################################################################
    *

    /*===================================================================
    //适用于 Code Composer Studio V2.2和更高版本
    //--------------------------------------------------------
    //除了该内存链接器命令文件外,
    //将头文件链接器命令文件直接添加到工程中。
    //链接时需要标头链接器命令文件
    //将外设结构设置到内部的适当位置
    //存储器映射。
    //
    //在中找到了头文件链接器文件 \DSP2803x_Headers\cmd
    //
    //对于 BIOS 应用程序,添加: DSP2803x_Headers_BIOS.cmd
    //对于非 BIOS 应用程序添加:DSP2803x_Headers_nonBIOS.cmd
    =================================================================================================== *

    /*===================================================================
    //对于 V2.2之前的 Code Composer Studio
    //--------------------------------------------------------
    // 1)使用以下-l 语句之一来包含
    //项目中的头链接器命令文件。 头文件链接器
    //将外设结构链接到正确的文件
    //存储器映射中的位置 *

    /*取消注释此行以仅包括非 BIOS 应用程序的文件*/
    /*-l DSP2803x_Headers_nonBIOS.cmd */

    /*取消注释此行以仅包括 BIOS 应用程序的文件*/
    /*-l DSP2803x_Headers_BIOS.cmd */

    /* 2)在项目中添加路径 \DSP2803x_headers\cmd 至
    库搜索路径位于 project->build options、linker tab、
    库搜索路径(-I)。
    /*================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *

    /*定义 F28035的内存块开始/长度
    PAGE 0将用于组织程序段
    第1页将用于组织数据段

    注:
    F2803x 上的存储器块是一致的(也是相同的
    物理存储器)。
    不应该是相同的存储器区域
    同时为 PAGE 0和 PAGE 1定义。
    这样做将导致程序损坏
    和/或数据。

    L0存储器块被镜像-即
    它可以在高内存或低内存中访问。
    为简单起见、其中仅使用了一个实例
    链接器文件。

    可以是连续的 SARAM 存储器块或闪存扇区
    组合在一起以创建更大的存储器块。
    *
    _Cla1Prog_Start =_Cla1funcsRunStart;
    堆0x200
    -stack 0x200

    //为将要使用的 CLA 暂存区定义大小
    //由 CLA 编译器生成局部符号和 temps
    //还强制引用标记的特殊符号
    //暂存区是。
    // CLA_暂 存器_size = 0x100;
    --undef_sym=__cla_scratchpad_end
    --undef_sym=__cla_scratchpad_start

    存储器

    第0页:/*程序内存*/
    /*内存(RAM/FLASH/OTP)块可移动到第1页进行数据分配*/
    RAMM0 :origin = 0x000050、length = 0x0003B0 /*片上 RAM 块 M0 */
    RAML3. :origin = 0x009000,length = 0x001000 /*片上 RAM 块 L3 */
    OTP :origin = 0x3D7800,length = 0x000400 /*片上 OTP */
    FLASHH :origin = 0x3E8000、length = 0x002000 /*片上闪存*/
    FLASHG :origin = 0x3EA000、length = 0x002000 /*片上闪存*/
    FLASHF :origin = 0x3EC000、length = 0x002000 /*片上闪存*/
    FLASHE :origin = 0x3EE000、length = 0x002000 /*片上闪存*/
    FLASHD :origin = 0x3F0000、length = 0x002000 /*片上闪存*/
    FLASHC :origin = 0x3F2000、length = 0x002000 /*片上闪存*/
    FLASHA :origin = 0x3F6000,length = 0x001F80 /*片上闪存*/
    csm_RSVD:origin = 0x3F7F80,length = 0x000076 /* FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 *
    开始 :origin = 0x3F7FF6,length = 0x000002 /* FLASHA 的一部分。 用于"引导至闪存"引导加载程序模式。 *
    CSM_PWL_P0:origin = 0x3F7FF8,length = 0x000008 /* FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/

    IQTABLES:origin = 0x3FE000,length = 0x000B50 /*引导 ROM 中的 IQMath 表*/
    IQTABLES2:origin = 0x3FEB50,length = 0x00008C /*引导 ROM 中的 IQMath 表*/
    IQTABLES3:origin = 0x3FEBDC,length = 0x0000AA/*引导 ROM 中的 IQMath 表*/

    ROM :origin = 0x3FF27C、length = 0x000D44 /*引导 ROM */
    复位 :origin = 0x3FFFC0,length = 0x000002 /*引导 ROM 的一部分*/
    矢量 :origin = 0x3FFFC2,length = 0x00003E /*引导 ROM 的一部分*/

    第1页:/*数据存储器*/
    /*内存(RAM/FLASK/OTP)块可被移动至 PAGE0以进行程序分配*/
    /*寄存器保留在第1页上 *
    BOOT_RSVD:origin = 0x000000,length = 0x000050 // M0的一部分,引导 ROM 将此用于堆栈*/
    RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */
    RAML0 :origin = 0x008000、length = 0x000800 /*片上 RAM 块 L0 */
    CLARAM0 :origin = 0x008800,length = 0x000400
    CLARAM1 :origin = 0x008C00,length = 0x000400

    CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
    CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080

    FLASHB :origin = 0x3F4000,length = 0x002000 /*片上闪存*/



    /*将段分配给内存块。
    注:
    DSP28_CodeStartBranch.asm 中用于重定向代码的 codestart 用户定义段
    闪存时执行
    ramfuncs 用户定义的段来存储将从闪存复制到 RAM 中的函数
    *

    部分


    /*分配计划领域:*/
    .cinit :> FLASHA PAGE = 0
    .pinit :> FLASHA、 PAGE = 0
    .text :>> FLASHC | FLASHE PAGE = 0
    codestart :>开始 PAGE = 0
    ramfuncs :LOAD = FLASHD,
    运行= RAMM0、
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    run_start (_RamfuncsRunStart)、
    PAGE = 0

    csmpasswds :>csm_PWL_P0 page = 0
    csm_rsvd :>csm_RSVD page = 0

    /*分配未初始化的数据段:*/
    堆栈 :> RAMM1 PAGE = 1.
    .cio :>> RAML0 | RAMM1 PAGE = 1.
    sysmem :> RAMM1 PAGE = 1.
    ebss :> RAML0 PAGE = 1.
    等斯梅姆 :> RAML0 PAGE = 1.


    /*初始化段进入闪存*/
    /*要使 SDFlash 对这些内容进行编程、必须将它们分配到第0页*/
    .econst :> FLASHA PAGE = 0
    切换 :> FLASHA PAGE = 0

    /*分配 IQ 数学区域:*/
    IQMath :> FLASHA PAGE = 0 /*数学代码*/
    IQmathTables :> IQTABLES,PAGE = 0,TYPE = NOLOAD

    .bss_cla:> CLARAM0,PAGE = 1
    暂存区 :> CLARAM0,PAGE = 1

    Cla1Prog :LOAD = FLASHD,
    运行= RAML3、
    load_start (_Cla1funcsLoadStart)、
    load_end (_Cla1funcsLoadEnd)、
    run_start (_Cla1funcsRunStart)、
    load_size (_Cla1funcsLoadSize)、
    PAGE = 0

    Cla1ToCpuMsgRAM :> CLA1_MSGRAMLOW,PAGE = 1
    CpuToCla1MsgRAM :> CLA1_MSGRAMHIGH,PAGE = 1
    Cla1DataRam0:> CLARAM0,PAGE = 1
    Cla1DataRam1:> CLARAM1,PAGE = 1

    组:LOAD = FLASHB、
    运行= CLARAM1、
    Load_start (_Cla1mathTablesLoadStart)、
    Load_End (_Cla1mathTablesLoadEnd)、
    run_start (_Cla1mathTablesRunStart)、
    load_size (_Cla1mathTablesLoadSize)、
    PAGE = 1.


    CLA1mathTables
    .const_cla


    CLAscratch :
    {*。obj (CLAscratch)
    。 += CLA_ScratchPad_size;
    *。obj (CLAscratch_end)}> CLARAM0、
    PAGE = 1.

    /*如果调用 IQNexp()或 IQexp(),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    *
    /*
    IQmathTables2:> IQTABLES2,PAGE = 0,TYPE = NOLOAD


    IQMath.lib (IQmathTablesRam)


    *
    /*如果调用 IQNasin ()或 IQasin (),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    *
    /*
    IQmathTables3:> IQTABLES3,PAGE = 0,TYPE = NOLOAD


    IQMath.lib (IQmathTablesRam)


    *

    /*.reset 是编译器使用的标准段。 它包含*/
    /* C 代码_c_int00起始地址。 /*
    /*当使用引导 ROM 时,此部分和 CPU 矢量*/
    /*不需要表。 因此、默认类型设置为*/
    /* DSECT */
    复位 :>重置, PAGE = 0、TYPE = DSECT
    矢量 :>引导程序 PAGE = 0、TYPE = DSECT



    /*
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //文件结束。
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请澄清您的问题。 此外、请尝试运行其他 CLA 示例。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请查找有关 printf 的 wiki 页面和其他 E2E 论坛主题。

    SAL