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.

[参考译文] RTOS/TDA3XEVM:缓存混乱

Guru**** 2614265 points
Other Parts Discussed in Thread: TMS320C6747, TMS320C6745, TMS320C6743, TMS320C6742, TMS320C6746, TMS320C6748, TMS320DM8148, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659318/rtos-tda3xevm-cache-mess

器件型号:TDA3XEVM
主题中讨论的其他器件:TMS320C6747TMS320C6745TMS320C6743OMAPL138TMS320C6742TMS320C6746TMS320C6748TMS320DM8148TMS320DM8168SYSBIOS

工具/软件:TI-RTOS

我尝试将 PDK 示例 DSS 传输到 CCS7、我添加了缓存功能、但遇到 M4中缺少缓存的情况:


****为项目 VencRT 构建配置调试****

"C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 all -O
gmake[1]:输入目录'C:/ti/Workspace/VencRT/Debug
'生成文件:./app.cfg '
'调用:XDCtools '
"c:/ti/xdctools_3_50_03_33_core/xs "--xdcpath="C:/ti/bios_6_50_01_12/packages ti.platforms.evmTDA3XX;C:/ti/edma3_lld_02_12_00_20/packages;C:/processor_sdk_vision_03_01_00_00/ti_compons/drivers/pdk_01_08_00_16;C:/ti/ccsv7/ccs_base;" xdc.tools.configuro configPkg -t compiltarget.arm.elf.m4 -p_debug_16;c:/ti/ccsv7/tools/compiler/ti-cgt-arm_17.9.0.STS -optimize.c"-c"-exc_debug/ecure.c -r_release -c -c -c -c -r"-c -c"-debug/ecurt_ecurt.c
正在制作 package.mak (由于 package.bld)...
正在为软件包 configPkg 生成接口(因为 package/package.xdc.inc 比 package.XDC 旧)...
从 package/cfg/app_pem4.cfg 配置 app.xem4 ...
指定器件(TDA3XX)不支持高速缓存。
仅 M4目标上的以下设备支持高速缓存:
TMS320TI816X
TMS320DA830
DM37XX
TMS320CDRA442
AWR16XX
TMS320DA802
TMS320DA803
TMS320DA804
TMS320DA805
TMS320DA807
TMS320DA808
TMS320DA810
TMS320DA828
TMS320C6747
TMS320C6745
TMS320C6743
OMAPL137
OMAPL108
OMAPL118
OMAPL138
TMS320DA840
TMS320DA850
TMS320C6742
TMS320C6746
TMS320C6748
北极
TMS320CDRA402
TMS320CDRA404
TMS320CDRA414
TMS320CDRA416
TMS320CDRA444
TMS320CDRA446
TMS320CDM740
TMS320C6A8168
TMS320TI811X
TMS320TI814X
TMS320DM8148
TMS320DM8168
TMS320C6A8149
IWR16XX
subdir_rules.mk:12:目标'Build-1175220767-InProc '的配方失败
JS:"c:/ti/bios_6_50_01_12/packages/ti/sysbios/family/c64p/Cache.xs、第435行:错误:设备上不支持缓存!
"C:/ti/bios_6_50_01_12/packages/ti/sysbios/family/c64p/Hwi.xs "、第130行
"C:/ti/bios_6_50_01_12/packages/ti/sysbios/family/c64p/EventCombiner.xs、第45行
gmake.exe:***[package/cfg/app_pem4.xdl]错误1
警告:封装路径上的目录"C:/processor_sdk_vision_03_01_00_00/ti_compons/drivers/pdk_01_08_00_16"具有一个"packages (软件包)"子目录-您是指这种情况吗?
JS:"c:/ti/xdctools_3_50_03_33_core/packages/xdc/tools/Cmdr.xs、第52行:错误:xdc.tools.configuro:由于先前的错误(状态= 2)、配置失败;已删除'linker.cmd'。
gmaking[1]:***[Build-1175220767-InProC]错误1.
gmake[1]:离开目录'C:/ti/Workspace/VencRT/Debug

因此 TDA3XX Cortex M4没有缓存。

如何解决此问题?

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

    TDA3xx M4具有缓存。 我将通过 ping BIOS 专家来帮助您。

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

    我必须给出一些评论... 最近、我从 BIOS cfg 文件中删除了所有缓存选项。 但错误"设备上不支持缓存!" 仍然有效-从 C:\ti\BIOS_6_50_01_12\packages/ti\SysBIOS\family\c64p\Cache。xs  脚本执行。 这似乎适用于 ARM A8内核、而不是 V7M4。

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

    您好、Alexander、  

    高速缓存配置用于许多具有 M4的 TDA3xx CCS 示例项目中。

    有关创建 BIOS 配置文件的信息、请参阅\ti_componENTs\NSP_xx_xx\packages/ti\NDK\tda3xx\examples_ipu1\client\client.cfg。 确保配置 Ammu 以使用缓存。

    VAR Cache    = xdc.useModule('ti.sysbios.hal.unicache.Cache');

    cache.enableCache = true;

    此外、请共享您的配置文件以供查看。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    /* XDC 模块*/
    VAR 默认值= xdc.useModule('xdc.runtime.Defaults');
    VAR 内存 = xdc.useModule('xdc.runtime.Memory');
    VAR 系统 = xdc.useModule('xdc.runtime.System');


    VAR 诊断 = xdc.useModule('xdc.runtime.Diags');
    VAR 错误 = xdc.useModule('xdc.runtime.Error');
    VAR 日志 = xdc.useModule('xdc.runtime.Log');
    VAR LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
    VAR 主要 = xdc.useModule('xdc.runtime.Main');
    VAR SysMin = xdc.useModule('xdc.runtime.SysMin');
    VAR 文本 = xdc.useModule('xdc.runtime.Text');

    VAR BIOS = xdc.useModule('ti.sysbios.BIOS');
    VAR 时钟 = xdc.useModule('ti.sysbios.knl.Clock');
    VAR Swi = xdc.useModule('ti.sysbios.knl.Swi');
    VAR 任务 = xdc.useModule('ti.sysbios.knl.Task');
    VAR 信标= xdc.useModule('ti.sysbios.knl.Semaphore');
    VAR Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
    VAR HalHwi = xdc.useModule('ti.sysbios.hal.Hwi');

    var ti_sysbios_io_gio = xdc.useModule('ti.sysbios.io.GIO');

    /var 高速缓存 = xdc.useModule('ti.sysbios.hal.Cache');
    //var xdc_runtime_KNL_Cache = xdc.useModule('xdc.runtime.knl.Cache');
    VAR 缓存 = xdc.useModule('ti.sysbios.hal.unicache.Cache');
    cache.enableCache = true;

    VAR HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
    VAR 核心 = xdc.useModule('ti.sysbios.family.arm.ducati.Core');
    VAR IntXbar = xdc.useModule('ti.sysbios.family.shared.vayu.IntXbar');
    VAR 加载 = xdc.useModule('ti.sysbios.utils.Load');
    VAR SysStd = xdc.useModule("xdc.runtime.SysStd");

    /*
    *取消注释此行以全局禁用断言。
    *所有模块继承'库'模块的默认值。 您
    *可以使用 Module.common$按模块覆盖这些默认值。
    *禁用断言将节省代码空间并提高运行时性能。
    Defaults.common$.diags_ASSERT = Diags.always_off;
    *

    /*
    *取消注释此行以防止模块名称加载到目标上。
    *模块名称字符串放置在.const 段中。 设置此值
    *将参数设置为 false 将节省.const 段中的空间。 误差和
    *断言消息将包含"未知模块"前缀
    实际模块名称的*。
    Defaults.common$.namedModule = false;
    *

    /*
    *最小化系统中的 EXIT 处理程序数组。 系统模块包括
    *向 System_atexit()注册的函数数数组
    *由 System_exit()调用。
    *
    System.maxAtexitHandlers = 4;

    /*
    *取消注释此行以禁用错误打印功能。
    *禁用此功能时,我们会丢失错误信息,因为错误是这样
    *未打印。 如果禁用 raiseHook、则会节省一些代码空间
    *由于 Error_print()函数,您的应用程序未使用 System_printf()
    *调用 System_printf()。
    error.raiseHook =空;
    *

    /*
    *取消注释此行以防止 Error、Assert 和 Log 字符串成为字符串
    *加载到目标上。 这些字符串放置在.const 段中。
    *将此参数设置为 false 将节省.const 段中的空间。
    *错误、断言和日志消息将打印原始 ID 和 args 而不是
    *格式化的邮件。
    text.isLoaded = false;
    *

    /*
    *取消注释此行以禁用 SysMin 的字符输出
    *程序退出时。 SysMin 向循环缓冲区写入字符。
    *可以使用 ROV 中的 SysMin Output 视图查看该缓冲器。
    SysMin。flushAtExit = false;
    *

    /*
    * BIOS 模块将为系统创建默认堆。
    *指定此默认堆的大小。
    *
    BIOS.heapSize = 0x1000;

    /*
    *从源构建自定义 SYS/BIOS 库。
    *
    BIOS.libType = BIOS.LibType_Custom;

    /*系统堆栈大小(由 ISR 和 Swi 使用)*/
    program.stack = 0x400;

    System_printf()的/*循环缓冲区大小*/
    SysMin。bufSize = 0x200;

    /*
    *为整个系统创建并安装记录器
    *
    var logerBufParams = new LoggerBuf.Params();
    LoggerBufParams.numEntry = 16;
    var logger0 = LoggerBuf.create (logerBufParams);
    Defaults.common$.logger = logger0;
    Main.common$.diags_INFO = Diags.always_on;

    System.SupportProxy = SysMin;
    Defaults.common$.diags_ASSERT = Diags.always_off;
    Defaults.common$.memoryPolicy = XDC.MODULE ("xdc.runtime.Types").STATIC_POLICY;
    Semaphore.supportsEvents = true;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Alexandar、

    您是否尝试使用 client.cfg 构建项目?

    有趣的是、我可以使用您的配置文件构建我的示例 M4应用。 您可以看到随附的构建日志。

    我想问题可能出在您的项目 RTSC 设置中。 在错误日志中可以看到 c64p 的高速缓存模块显示为要使用。

    C:/ti/bios_6_50_01_12/packages/ti/sysbios/family/c64p/Cache.x

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还可以!!! 最后进行编译!
    我把项目附在你的网站上,这是一个错误的网站,当然不是一个长期的网站。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../VencRT_5F00_CompOK.zip

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

    亚历山大

    由于包含路径已硬编码、该项目在我的设置中不起作用。 无论如何、我看到您将变量类型包括为"TDA3x"、而您可以尝试将其作为"Generic M4"

    此外、在您的配置文件中、您应该将 M4的 Hwi 模块更改为下面的模块

    VAR Hwi      = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、正如我看到的、我必须插入
    VAR Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');

    在 CONFIG 中、我仍然可以使用 TDA3XX ???
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    亚历山大

    是的、对于使用中断配置、您应该使用 SYSBIOS 的 m3.Hwi 模块。 此模块对于所有"v7m"架构都是通用的、如"BIOS_x_xx\packages/ti\SysBIOS\family\arm\m3\Hwi.xs"文件中所示。

    如果 TDA3xx 出现错误、您可以尝试使用"Generic M4"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在、TDA3XX 没有任何错误、因此我将继续进行...