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/AM5728:AM5728 DSP 穿孔测试与 DM8148

Guru**** 2540720 points
Other Parts Discussed in Thread: AM5728, MATHLIB, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/737059/ccs-am5728-am5728-dsp-performence-test-vs-dm8148

器件型号:AM5728
主题中讨论的其他器件: MATHLIBSYSBIOS

工具/软件:Code Composer Studio

我使用 AM5728和 DM8148 DSP 内核进行了性能测试。 结果表明、在处理浮点 时、AM5728 DSP 比 DM8148快得多、但在交错计算中则慢得多。

有人能解释一下这种情况。  

或者我的测试甲氧不正确?

================================================================================

这是结果和测试代码

---------------------------------------- libfunc ---------- 双------ 整数

AM5728(CCS7、MATHLIB_C66X_3_1):1,744,127us  447,785us  124,152us
DM8148 (CCS5、MATHLIB_C674x_3_1):3、082、345us  55、836us  113、848us

void mathTest()
{
静态 int mTestCycle = 1000000;
int i、j、k、total;
double var1、var2、var3;
int varint1、varint2、varint3;
MFTimer_Sample_Clear (1);
MFTimer_Sample_Start (1);
总计=0;
for (j=0;j<10;j++)
{
for (i=1;i "math="" mathfunc="" used="" time="" :="" %d="" us",total="" );="" for(j="0;j" for(i="1;i" double="" cal="" float="" int="" varint1="i*100;" varint2="varint1*10;" varint3="varint1/10;" }

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

    DM8148包含 C674x DSP,AM5728包含 C66x DSP。 由于在架构中添加了额外的浮点汇编和流水线汇编指令、C66x 浮点性能预计会更好、但在某些情况下、代码通过软件流水线更好地使用寄存器集、整数性能应该相同或更好。

    我们有一些比较 C674x 和 C66x 的 DSP 内核基准。 您是否见过它们?
    www.ti.com/.../core-benchmarks.html

    是否有一个特定的 MATHLIB 函数、您可以在该函数中注意到差异。 您是否还可以共享编译器设置、高速缓存设置以及代码是否从 DSP 的 L2存储器运行?

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

    mathlib 已从您提供的页面下载。

    这是我的 BLD 和 cfg 文件。 我找不到任何有关缓存或 L2存储器的字。 您能帮我进行配置吗

    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

    /**
    *\file gpio_test_evmAM572x.cfg
    *
    *\brief 针对 AM572X EVM EVM 上的 GPIO C66X 测试项目的 SYSBIOS 配置文件。
    *
    *

    /*
    *版权所有(C) 2015 Texas Instruments Incorporated - http://www.ti.com/
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    *源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    *二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随提供的文档和/或其他材料
    *分发。
    *
    *德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者提供
    *"按原样"以及任何明示或暗示的保证、包括但不包括
    *仅限于对适销性和适用性的暗示保证
    *一项特定目的不予承认。 在任何情况下、版权均不得
    *所有者或贡献者应对任何直接、间接、偶然或
    *特殊、惩戒性或后果性损害(包括但不包括)
    *仅限于采购替代货物或服务;丧失使用、
    *数据或利润;或业务中断)
    *责任理论、无论是合同责任、严格责任还是侵权行为
    *(包括疏忽或其他)因使用而以任何方式产生
    *、即使被告知可能会发生此类损坏。
    *
    *

    //BWC,添加程序 var
    /*配置对象模型的根*/
    VAR 计划= xdc.useModule('xdc.cfg.Program');


    /*========================= 常规配置=================== *
    VAR 内存= xdc.useModule('xdc.runtime.Memory');
    VAR HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
    VAR HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf');
    VAR 日志= xdc.useModule('xdc.runtime.Log');
    VAR 任务= xdc.useModule('ti.sysbios.knl.Task');
    VAR 信标= xdc.useModule('ti.sysbios.knl.Semaphore');
    VAR Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
    VAR 系统= xdc.useModule('xdc.runtime.System');
    SysStd = xdc.useModule('xdc.runtime.SysStd');

    VAR EDMA = XDC.loadPackage ("ti.sdo.EDMA3.drv.sample");
    var drv = xdc.loadPackage ("ti.sdo.EDMA3.drv");
    var rm = XDC.loadPackage ("ti.sdo.EDMA3.rm");
    VAR 时钟= xdc.useModule('ti.sysbios.knl.Clock');

    System.SupportProxy = SysStd;
    /*添加共享区域模块*/
    VAR SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
    //SharedRegion.cacheLineSize = 32;
    //SharedRegion.numEntry = 4;
    //SharedRegion.translate = true;
    /*使用 ti.BIOS.HeapMem 创建默认系统堆。 *
    var heapMemParams1 =新 HeapMem.Params;
    heapMemParams1.size = 8192 * 25;
    heapMemParams1.sectionName ="systemHeap (系统堆)";
    program.global.heap0 = HeapMem.create (heapMemParam1);

    /*这是默认的内存堆。 *
    Memory.defaultHeapInstance = Program.global.heap0;

    Program.sectMap["systemHeap"]= Program.platform.stackMemory;

    /*
    *在此处启用事件组并完成特定 GEM INTC 的 ISR 注册
    *使用 EventCombiner_dispatchPlug()和 Hwi_EventMap() API
    *
    VAR 异常= xdc.useModule('ti.sysbios.family.c64p.Exception');
    exception.enablePrint = true;

    /*========================= BIOS 配置=================== *

    VAR BIOS = xdc.useModule('ti.sysbios.BIOS');

    /*启用 BIOS 任务调度程序*/
    BIOS.taskEnabled = true;

    /*========================= 任务配置=================== *

    /*不执行运行时堆栈检查*/
    Task.checkStackFlag = false;


    /*减少任务优先级的数量*/
    Task.numPriorities = 4;

    /*
    VAR task0Params = new Task.Params();
    task0Params.instance.name ="回波";
    task0Params.STACKSIZE = 0x1000;
    program.global.echo = Task.create ("&GPIO_test"、task0Params);
    *


    /*========================= 驱动程序配置=================== *

    /*加载 OSAL 封装*/
    var osType ="tirtos";
    VAR OSAL = XDC.loadPackage ('ti.osal');
    OSAL.Settings.osType = osType;


    /*加载电路板封装并设置电路板名称*/
    VAR 板= XDC.loadPackage ('ti.board');
    board.Settings.boardName ="evmAM572x";

    /*========================= 内存段配置=================== *
    //BWC,对以下三行进行评论
    //Program.sectMap[".text"]="EXT_RAM";
    //Program.sectMap[".const"]="EXT_RAM";
    //Program.sectMap[".plt"]="EXT_RAM";
    /* Program.sectMap["BOARD_IO_DELAY_DATA"]="OCMC_RAM1";*/
    /* Program.sectMap["BOARD_IO_DELAY_CODE"]="OCMC_RAM1";*/
    /*分配 config-params 对象*/
    VAR HeapParam =新 HeapMem.Params;

    /*可选择分配每个实例的配置*/
    //HeapParam.size = 200000;
    HeapParam.size = 0x100000;
    //HeapParam.sectionName ="L2_SRAM"
    //HeapParam.sectionName ="OCMC_RAM1"
    /*创建实例对象*/
    program.global.myHeap = HeapMem.create (HeapParam);

    /*
    VAR task0Params = new Task.Params();
    task0Params.priority = 3;
    task0Params.instance.name ="task_audio";
    program.global.task0 = Task.create ("&Audio_echo_Task"、task0Params);
    *

    /*
    *版权所有(c) 2013-2015 Texas Instruments Incorporated - http://www.ti.com
    *保留所有权利。
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    **源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    **二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随分发提供的文档和/或其他材料。
    *
    **德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *以及任何明示或暗示的保证、包括但不限于:
    *特定适销性和适用性的隐含保证
    *不承认目的。 在任何情况下、版权所有者不得或
    *派遣国应对任何直接、间接、偶然、特殊、
    *典型或必然的损害(包括但不限于
    *采购替代货物或服务;丧失使用、数据或利润;
    *或业务中断)、无论原因是什么以及任何责任理论、
    *无论是合同、严格责任还是侵权行为(包括疏忽或)
    *否则)因使用本软件而以任何方式产生、
    *即使被告知可能会发生此类损坏。
    *

    /*
    *==== Dsp1.cfg ===========
    *平台:DRA7XX_Linux_elf
    *目标:TI.targets.elf.c66
    *

    /*配置对象模型的根*/
    VAR 计划= xdc.useModule('xdc.cfg.Program');

    /*应用程序使用以下模块和软件包*/
    xdc.useModule('xdc.runtime.Assert');
    xdc.useModule('xdc.runtime.Diags');
    xdc.useModule('xdc.runtime.Error');
    xdc.useModule('xdc.runtime.Log');
    xdc.useModule('xdc.runtime.Registry');

    xdc.useModule('ti.sysbios.knl.Semaphore');
    xdc.useModule('ti.sysbios.knl.Task');

    /*
    *==== IPC 配置====
    *
    xdc.useModule('ti.ipc.ipcmgr.IpcMgr');

    /*加载跨内核共享的配置*/
    Program.global.procName ="DSP1";
    //BWC、不再具有共享文件夹
    /var ipc_cfg = xdc.loadCapsule ("../shared/ipc.cfg.xs);
    var ipc_cfg = xdc.loadCapsule ("ipc.cfg.xs");
    VAR 时间戳= xdc.useModule('xdc.runtime.Timestamp');

    VAR BIOS = xdc.useModule('ti.sysbios.BIOS');
    /BWC 的评论,将从 main 调用
    //BIOS.addUserStartupFunction ('&IpcMgr_ipcStartup');
    bios.cpufreq.lo = 700000000;

    /*
    *==== SYS/BIOS 配置====
    *
    if (Program.build.profile =>"debug"){
    BIOS.libType = BIOS.LibType_Debug;
    }否则{
    BIOS.libType = BIOS.LibType_Custom;

    /*无 RTS 堆*/
    program.argSize = 100;/*最小大小*/
    //BWC 增加堆栈大小
    //Program.stack = 0x1000;
    program.stack = 0x8000;

    VAR 任务= xdc.useModule('ti.sysbios.knl.Task');
    Task.common$.namedInstance = true;

    /*默认内存堆*/
    VAR 内存= xdc.useModule('xdc.runtime.Memory');
    VAR HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
    var heapMemParams = new HeapMem.Params();
    heapMemParams.size = 0x8000;
    Memory.defaultHeapInstance = HeapMem.create (heapMemParams);

    /*为 MessageQ 消息创建堆*/
    VAR HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf');
    var params = new HeapBuf.Params;
    params.align = 8;
    params.blocksize = 512;
    params.numBlocks = 256;
    var msgHeap = HeapBuf.create (params);

    VAR MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ');
    MessageQ.registerHeapMeta (msgHeap、0);

    /*设置 MessageQ 传输*/
    VAR VirtioSetup = xdc.useModule('ti.ipc.transports.TransportRpmsgSetup');
    MessageQ.SetupTransportProxy = VirtioSetup;

    /*安装名称服务器远程代理*/
    var nameserver = xdc.useModule("ti.sdo.utils.NameServer");
    VAR NsRemote = xdc.useModule("ti.ipc.namesrv.NameServerRemoteRpmsg");
    nameserver.SetupProxy = NsRemote;

    /*启用在 BIOS 资源表上运行的内存转换模块*/
    VAR 资源= xdc.useModule('ti.ipc.remoteproc.Resource');
    resource.loadSegment ="EXT_CODE";

    /*使用 SysMin、因为 Linux/QNX 需要跟踪缓冲区地址
    *跟踪调试驱动程序、加提供更好的性能。
    *
    VAR 系统= xdc.useModule('xdc.runtime.System');
    VAR SysMin = xdc.useModule('ti.trace.SysMin');
    System.SupportProxy = SysMin;
    SysMin。bufSize = 0x8000;

    Program.sectMap[".tracebuf"]="trace_BUF";
    Program.sectMap[".errorbuf"]="EXC_DATA";
    //Program.sectMap["BOARD_IO_DELAY_DATA"]="OCMC_RAM1";
    //Program.sectMap["BOARD_IO_DELAY_CODE"]="OCMC_RAM1";

    /*-------------------- 勾选---------------------------------------- *
    //BWC 注释掉此 whle tick 部分
    // var Clock = xdc.useModule('ti.sysbios.knl.Clock');
    // Clock.tickSource = Clock.tickSource_NULL;
    ////Clock.tickSource = Clock.tickSource_user;
    //////*将 BIOS 时钟源配置为 GPTimer5 */
    ////Clock.timerId = 0;
    //
    // var 计时器= xdc.useModule('ti.sysbios.timers.dmtimer.Timer');
    //
    //////*跳过计时器频率验证检查。 需要稍后删除*
    // Timer.checkFrequency = false;
    //
    //////*将其与为 dmTimers 提供时钟的 SYS_CLK 频率相匹配。
    //*一旦 SYS/BIOS 系列设置被更新、就不需要。 *
    // Timer.intFreq.hi = 0;
    // Timer.intFreq.lo = 19200000;
    //
    /////var/var timerParams = new Timer.Params ();
    ///////timerParams.period = Clock.tickPeriod;
    ////timerParams.periodType = Timer.piodType_microsecs;
    ///*关闭软件重置以使以下设置生效*/
    /////timerParams.tiocpCfg.softreset = 0x0;
    //////*智能空闲唤醒功能模式*/
    /////timerParams.tiocpCfg.idlemode = 0x3;
    //////*溢出唤醒生成*/
    ////timerParams.twer.OVF WUP_ENA = 0x1;
    ////Timer.create (Clock.timerId、Clock.doTick、timerParams);
    //
    // var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    // var Deh = xdc.useModule('ti.deh.Deh');
    //
    ///*必须置于电源管理之前*/
    // Idle.addFunc ('&ti_deh_deh_idleBegin');
    /*
    *==== 仪表配置====
    *

    /*系统记录器*/
    VAR LoggerSys = xdc.useModule('xdc.runtime.LoggerSys');
    VAR LoggerSysParams = new LoggerSys.Params();
    VAR 默认值= xdc.useModule('xdc.runtime.Defaults');
    Defaults.common$.logger = LoggerSys.create (LoggerSysParams);

    /*为非 XDC 规范模块启用运行时 Diags_setMask()*/
    VAR 诊断= xdc.useModule('xdc.runtime.Diags');
    Diags.setMaskEnabled = true;

    /*覆盖选定模块的诊断掩码*/
    xdc.useModule('xdc.runtime.Main');
    Diags.setMaskMeta("xdc.runtime.Main"、
    diags.entry | Diags.exit | Diags.info、Diags.RUNTIME_ON);

    VAR 注册表= xdc.useModule('xdc.runtime.Registry');
    Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF;
    Registry.common$.diags_EXIT = Diags.RUNTIME_OFF;
    Registry.common$.diags_INFO = Diags.RUNTIME_OFF;
    Registry.common$.diags_USER1 = Diags.RUNTIME_OFF;
    Registry.common$.diags_LIFECYCLE = Diags.RUNTIME_OFF;
    Registry.common$.diags_STATUS = Diags.RUNTIME_OFF;

    VAR Main = xdc.useModule('xdc.runtime.Main');
    Main.common$.diags_ASSERT = Diags.always_on;
    Main.common$.diags_INTERNAL = Diags.always_on;


    //BWC、已添加以使用自定义资源表
    /*使用我自己的*/覆盖默认资源表
    //var Resource = xdc.useModule('ti.ipc.remoteproc.Resource');
    resource.customTable = true;

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================


    /*
    *==== CONFIG.BRD =====
    *
    *
    VAR Build = xdc.useModule('xdc.bld.BuildEnvironment');

    ti.platforms.evmDRA7XX:dsp1和 ti.platforms.evmDRA7XX:dsp2的/*内存映射
    *
    *--外部存储器--
    *虚拟物理大小注释
    *******************************************************************************************************
    * 9500_4000????????? 10_0000 (~1MB) EXT_CODE
    * 9510_0000????????? 10_0000 (1MB) EXT_DATA
    * 9520_0000????????? 30_0000 (3MB) EXT_HEAP
    * 9F00_0000 9F00_0000 6_0000 (384KB) TRACE_BUF
    * 9F06_0000 9F06_0000 1_0000 (64KB) EXC_DATA
    * 9F07_0000 9F07_0000 2_0000 (128KB) PM_DATA (电源管理)
    *
    var evmDRA7XX_ExtMemMapDsp ={
    EXT_CODE:{
    名称:"EXT_CODE"、
    基地址:0x95000000、
    Len:0x00A00000、
    太空:"代码"、
    访问:"rwx"
    }、
    EXT_DATA:{
    名称:"EXT_DATA"、
    基地址:0x95A00000、
    Len:0x01000000、
    太空:"数据"、
    访问:"RW"
    }、
    EXT_HEAP:{
    名称:"EXT_HEAP "、
    基地址:0x96A00000、
    Len:0x00600000、
    太空:"数据"、
    访问:"RW"
    }、
    EXT_SHARE:{
    名称:"EXT_SHARE"、
    基地址:0x97000000、
    Len:0x01000000、
    太空:"数据"、
    访问:"RW"
    }、
    TRACE_BUF:{
    名称:"trace_BUF"、
    基地址:0x9F000000、
    Len:0x00060000、
    太空:"数据"、
    访问:"RW"
    }、
    EXC_DATA:{
    名称:"EXC_DATA"、
    基地址:0x9F060000、
    Len:0x00010000、
    太空:"数据"、
    访问:"RW"
    }、
    PM_DATA:{
    名称:"PM_DATA"、
    基地址:0x9F070000、
    Len:0x00020000、
    太空:"数据"、
    访问:"rwx"/*这是否应该具有执行 perm? *
    }、
    };

    Build.platformTable["ti.platforms.evmDRA7XX:dsp1"]={
    externalMemoryMap:[
    ["EXT_CODE"、evmDRA7XX_ExtMemMapDsp.EXT_CODE ]、
    ["EXT_DATA"、evmDRA7XX_ExtMemMapDsp.EXT_DATA ]、
    ["EXT_HEAP "、evmDRA7XX_ExtMemMapDsp.EXT_HEAP ]、
    ["EXT_SHARE"、evmDRA7XX_ExtMemMapDsp.EXT_SHARE ]、
    ["trace_BUF"、evmDRA7XX_ExtMemMapDsp.trace_BUF ]、
    ["EXC_DATA"、evmDRA7XX_ExtMemMapDsp.EXC_DATA ]、
    ["PM_DATA"、evmDRA7XX_ExtMemMapDsp.PM_DATA]、
    ]、
    代码内存:"EXT_CODE"、
    dataMemory:"EXT_DATA"、
    stackMemory:"EXT_DATA"、
    };
    Build.platformTable["ti.platforms.evmDRA7XX:dsp2"]=
    Build.platformTable["ti.platforms.evmDRA7XX:dsp1"];

    ti.platforms.evmDRA7XX:ipu2的/*内存映射
    *
    *--外部存储器--
    *虚拟物理大小注释
    *******************************************************************************************************
    * 0000_4000?????????? 5F_C000 (~6 MB) EXT_CODE
    * 8000_0000???????? 60_0000 (6 MB) EXT_DATA
    * 8060_0000????????? 960_0000 (86MB) EXT_HEAP
    * 9F00_0000 9F00_0000 6_0000 (384KB) TRACE_BUF
    * 9F06_0000 9F06_0000 1_0000 (64KB) EXC_DATA
    * 9F07_0000 9F07_0000 2_0000 (128KB) PM_DATA (电源管理)
    *
    var evmDRA7XX_ExtMemMapIpu2 ={
    EXT_CODE:{
    名称:"EXT_CODE"、
    基地址:0x00004000、
    Len:0x005FC000、
    太空:"代码"、
    访问:"rwx"
    }、
    EXT_DATA:{
    名称:"EXT_DATA"、
    基地址:0x8000000、
    Len:0x00600000、
    太空:"数据"、
    访问:"RW"
    }、
    EXT_HEAP:{
    名称:"EXT_HEAP "、
    基地址:0x80600000、
    Len:0x09600000、
    太空:"数据"、
    访问:"RW"
    }、
    TRACE_BUF:{
    名称:"trace_BUF"、
    基地址:0x9F000000、
    Len:0x00060000、
    太空:"数据"、
    访问:"RW"
    }、
    EXC_DATA:{
    名称:"EXC_DATA"、
    基地址:0x9F060000、
    Len:0x00010000、
    太空:"数据"、
    访问:"RW"
    }、
    PM_DATA:{
    名称:"PM_DATA"、
    基地址:0x9F070000、
    Len:0x00020000、
    太空:"数据"、
    访问:"rwx"/*这是否应该具有执行 perm? *

    };

    Build.platformTable["ti.platforms.evmDRA7XX:ipu2"]={
    externalMemoryMap:[
    ["EXT_CODE"、evmDRA7XX_ExtMemMapIpu2.EXT_CODE ]、
    ["EXT_DATA"、evmDRA7XX_ExtMemMapIpu2.EXT_DATA ]、
    ["EXT_HEAP "、evmDRA7XX_ExtMemMapIpu2.EXT_HEAP ]、
    ["trace_BUF"、evmDRA7XX_ExtMemMapIpu2.trace_BUF ]、
    ["EXC_DATA"、evmDRA7XX_ExtMemMapIpu2.EXC_DATA ]、
    ["PM_DATA"、evmDRA7XX_ExtMemMapIpu2.PM_DATA]
    ]、
    代码内存:"EXT_CODE"、
    dataMemory:"EXT_DATA"、
    stackMemory:"EXT_DATA"、
    };

    ti.platforms.evmDRA7XX:ipu1的/*内存映射
    *
    *--外部存储器--
    *虚拟物理大小注释
    *******************************************************************************************************
    * 0000_4000?????????? F_C000 (~1 MB) EXT_CODE
    * 8000_0000???????? 20_0000 (2MB) EXT_DATA
    * 8020_0000????????? 30_0000 (3MB) EXT_HEAP
    * 9F00_0000 9F00_0000 6_0000 (384KB) TRACE_BUF
    * 9F06_0000 9F06_0000 1_0000 (64KB) EXC_DATA
    * 9F07_0000 9F07_0000 2_0000 (128KB) PM_DATA (电源管理)
    *
    var evmDRA7XX_ExtMemMapIpu1 ={
    EXT_CODE:{
    名称:"EXT_CODE"、
    基地址:0x00004000、
    Len:0x000FC000、
    太空:"代码"、
    访问:"rwx"
    }、
    EXT_DATA:{
    名称:"EXT_DATA"、
    基地址:0x8000000、
    Len:0x00200000、
    太空:"数据"、
    访问:"RW"
    }、
    EXT_HEAP:{
    名称:"EXT_HEAP "、
    基地址:0x80200000、
    Len:0x00300000、
    太空:"数据"、
    访问:"RW"
    }、
    TRACE_BUF:{
    名称:"trace_BUF"、
    基地址:0x9F000000、
    Len:0x00060000、
    太空:"数据"、
    访问:"RW"
    }、
    EXC_DATA:{
    名称:"EXC_DATA"、
    基地址:0x9F060000、
    Len:0x00010000、
    太空:"数据"、
    访问:"RW"
    }、
    PM_DATA:{
    名称:"PM_DATA"、
    基地址:0x9F070000、
    Len:0x00020000、
    太空:"数据"、
    访问:"rwx"/*这是否应该具有执行 perm? *

    };

    Build.platformTable["ti.platforms.evmDRA7XX:ipu1"]={
    externalMemoryMap:[
    ["EXT_CODE"、evmDRA7XX_ExtMemMapIpu1.EXT_CODE ]、
    ["EXT_DATA"、evmDRA7XX_ExtMemMapIpu1.EXT_DATA ]、
    ["EXT_HEAP "、evmDRA7XX_ExtMemMapIpu1.EXT_HEAP ]、
    ["trace_BUF"、evmDRA7XX_ExtMemMapIpu1.trace_BUF ]、
    ["EXC_DATA"、evmDRA7XX_ExtMemMapIpu1.EXC_DATA ]、
    ["PM_DATA"、evmDRA7XX_ExtMemMapIpu1.PM_DATA]
    ]、
    代码内存:"EXT_CODE"、
    dataMemory:"EXT_DATA"、
    stackMemory:"EXT_DATA"、
    };

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

    我找不到链接器的编译文件。以下是我的项目的编译设置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于编译器和链接器标志、请单击"te C6000 Compiler"和"Linker"、查看编译器和链接器设置的摘要。 查看代码在存储器中的放置方式的一种简单方法是引用在工程结束时编译的.map 文件。 它将位于.out 文件或应用程序文件所在的相同位置。

    n`t L2存储器中的代码、那么您不需要担心打开缓存、因为 BIOS 启用 L1缓存并允许用户将 L2用作 SRAM。 如果代码放置在 DDR 或 OCRAM 中、则需要确保 L2配置为高速缓存并启用该高速缓存。

    可以使用 CSL API 调用或使用 BIOS 高速缓存模块启用 L2高速缓存。 让我们知道您的代码是从 OCRAM 还是 DDR 运行、我们可以提供 CSL 设置来打开高速缓存。

    查看您的 BIOS 设置,您是否可以确认您正在将其与 IPC 一起使用。 您是否使用 IPC 和 RTOS 设置在 DM8148上运行了相同的代码?

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

    很抱歉 、我的池知识。 我不熟悉 DSP 编程。

    我找到 linker.cmd 文件 debug/configpkg dir. 它显示:
    ===================================================================================================
    存储器

    L2SRAM (rwx):org = 0x800000,len = 0x40000
    OCMC_RAM1 (RWX):org = 0x40300000,len = 0x80000
    OCMC_RAM2 (RWX):org = 0x40400000,len = 0x100000
    OCMC_RAM3 (rwx):org = 0x4050000,len = 0x100000
    EXT_CODE (RWX):org = 0x95000000,len = 0xa00000
    EXT_DATA (RW):org = 0x95a00000,len = 0x1000000
    EXT_HEAP (RW):org = 0x96a00000、len = 0x600000
    EXT_SHARE (RW):org = 0x97000000,len = 0x1000000
    trace_BUF (RW):org = 0x9f000000,len = 0x60000
    EXC_DATA (RW):org = 0x9f060000,len = 0x10000
    PM_DATA (rwx):org = 0x9f070000,len = 0x20000

    TI_SYSBIOS_family_C66_Cache_l1dSize = 32768;
    TI_SYSBIOS_family_C66_Cache_l1pSize = 32768;
    TI_SYSBIOS_family_C66_Cache_l2Size = 0;
    ===================================================================================================
    因此,未启用 L2高速缓存,对吧?

    请帮助我启用 L2Cache。 我想使用 BIOS 高速缓存模块来执行此操作(我尝试使用 sprugy8.pdf 的 CSL 库执行代码,但它不能链接 CSL 高速缓存函数)。
    我在配置文件中设置了 IPC,但仅用于加载 DSP 代码和自定义资源表。 DSP 是否需要运行?
    在 DM8148中,我使用 syslink 模块,IPC 也包括在内,但我们不使用输出代码中的 IPC 函数。

    我曾尝试使用代码 int sprugy8.pdf、但 IT 链接器无法找到以下功能:
    #include
    #include

    cache_enableCaching (cache_CE00);
    cache_setL2Size (cache_256KCACHE);

    我在 ti/pdk_am57xx_1_0_7中找到了 CSL 软件包,但找不到库文件。 如何在我的项目中使用 CSL 库?

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

    器件型号:AM5728

    工具/软件:Code Composer Studio

    在我的预览问题中、我发现我的 BIOS 项目没有将 L2 RAM 用作高速缓存、在这种情况下、DSP 的运行速度比使用相同代码的 DM8148慢  

    我曾尝试通过我在 spruvy8.pdf 中使用的代码将 L2存储器用作缓存 fllow、但它不起作用。

    #include

    #include
    (笑声)
    cache_enableCaching (cache_CE00);
    CACHEsetL2Size (cache_256KCACHE);

    它通过了编译,但链接器找不到函数。 我在 PDK 安装目录中找到了 CSL dir。  

    我最好在 BISO 配置文件中使用 L2缓存,是否可以实现?

    我找到链接并尝试其代码,但它对我无效

    e2e.ti.com/.../2640776

    .map 文件显示 L2缓存仍设置为 SRAM

    存储器配置

    名称源长度使用未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    L2SRAM 00800000 00040000 00000000 00040000 RW X
    OCMC_RAM1 40300000 00080000 00000000 00080000 RW X
    OCMC_RAM2 40400000 00100000 00000000 00100000 RW X
    OCMC_RAM3 40500000 00100000 00000000 00100000 RW X
    EXT_CODE 95000000 00a00000 00020220 009dfde0 RW X
    EXT_DATA 95a00000 01000000 001b57ba 00e4a846 RW
    EXT_HEAP 96a00000 00600000 00000000 00600000 RW
    EXT_SHARE 97000000 01000000 01000000 01000000 RW
    TRACE_BUF 9f000000 00060000 00008004 00057ffc RW
    EXC_DATA 9f060000 00010000 00000000 00010000 RW
    PM_DATA 9f070000 00020000 00000000 00020000 RW X