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.

[参考译文] AM5726:不支持 DRA7XX 高速缓存

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1044514/am5726-dra7xx-cache-not-supported

器件型号:AM5726
Thread 中讨论的其他器件:SYSBIOS

您好!

我正在使用基于 evmAM572x 处理器 SDK 中的 GPIO_LedBlink_evmAM572x_c66xTestProject 示例创建的项目。 我按照 PSDK Linux 开发人员指南中的说明创建 IPC 项目、然后也向该项目添加了大数据缓冲区。 这一切都很好、但当我尝试启用缓存时、我收到一个编译错误、指出"指定器件(DRA7XX)不支持缓存"。  

DSP 的 L1和 L2缓存上有很多文档、因此我应该能够启用缓存。 我是否需要以某种方式重新配置?

以下是我的完整编译输出:

**** Build of configuration Debug for project GPIO_LedBlink_evmAM572x_c66xTestProject_with_ipc_proj_upd ****

"C:\\ti\\ccs930\\ccs\\utils\\bin\\gmake" -k -j 12 all -O 
 
Building file: "../Dsp1.cfg"
Invoking: XDCtools
"C:/ti/xdctools_3_55_02_22_core/xs" --xdcpath="C:/ti/bios_6_76_03_01/packages;C:/ti/pdk_am57xx_1_0_17/packages;C:/ti/edma3_lld_2_12_05_30E/packages;C:/ti/ipc_3_50_04_08/packages;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C66 -p ti.platforms.evmAM572X:dsp1 -r debug -b "C:/git/temp_checkouts/Klondike-B-Frame-Sitara/Core/bld/AM572x/GPIO_LedBlink_evmAM572x_c66xTestProject_with_ipc_proj_upd/config.bld" -c "C:/ti/ccs930/ccs/tools/compiler/ti-cgt-c6000_8.3.5" "../Dsp1.cfg"
making package.mak (because of package.bld) ...
configuring Dsp1.xe66 from package/cfg/Dsp1_pe66.cfg ...
	 SoC Type is 
	 SoC Type is 
Cache is not supported for the specified device (DRA7XX).
Cache is only supported for the following devices on the C66 target:
	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
	Arctic
	TMS320CDRA402
	TMS320CDRA404
	TMS320CDRA414
	TMS320CDRA416
	TMS320CDRA444
	TMS320CDRA446
	TMS320CDM740
	TMS320C6A8168
	TMS320TI811X
	TMS320TI814X
	TMS320DM8148
	TMS320DM8168
	TMS320C6A8149
	IWR16XX
	AWR18XX
	IWR18XX
	IWR68XX
subdir_rules.mk:26: recipe for target 'build-542487615-inproc' failed
js: "C:/ti/bios_6_76_03_01/packages/ti/sysbios/family/c64p/Cache.xs", line 438: Error: Cache unsupported on device!
gmake.exe: *** [package.mak:206: package/cfg/Dsp1_pe66.xdl] Error 1
js: "C:/ti/xdctools_3_55_02_22_core/packages/xdc/tools/Cmdr.xs", line 52: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.
gmake[1]: *** [build-542487615-inproc] Error 1
gmake: *** [build-542487615] Error 2
subdir_rules.mk:23: recipe for target 'build-542487615' failed
gmake: Target 'all' not remade because of errors.

**** Build Finished ****

谢谢、

Jon

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

    您好、Jon、

    可在 DSP 上启用高速缓存。

    但是、此特定示例不处理 内核之间的缓存一致性、因此如果启用缓存、则不起作用。

    这是示例 SW 中的一个限制。

    此致、

    斯坦利

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

    您好、Stanley、

    是否有任何指南或示例显示如何启用 DSP 高速缓存并保持高速缓存一致性? 我不确定从哪里开始、因为我甚至不确定导致此错误的构建过程的哪个部分或我将如何绕过它。

    谢谢、

    Jon

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

    您好、Jon、

    请仔细检查正在被拉入 cfg 文件的确切高速缓存模块。

    AM57xx/DRA7xx 具有 C66x 内核、而不是 C64P 内核。 SYS/BIOS 高速缓存模块在这两者之间是不同的。

    您应该使用的是通用器件

     xdc.useModule('ti.sysbios.hal.Cache');

       特定于 C66内核

     xdc.useModule('ti.sysbios.family.c66.Cache');

    您的构建将直接引入 ti.sysbios.family.c64p.cache、并确保模块和 DRA7xx/AM57xx SoC 不兼容。

    有关详细信息、请参阅两个模块的 SYS/BIOS API 文档。 MAR 设置仅可通过 C66特定模块使用、而前者仅提供基本 API。

    我们一直在使用高速缓存、但您在 IPC 3.x 代码库中提到的工具却可以正常使用。

    此致

    Suman

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

    尊敬的 Suman:

    我在我的 cfg 文件中包含了 C66高速缓存、但它编译得很好、尽管它以前不起作用。 当我更改文件夹结构时、我的项目文件自动包括 C64缓存出现问题、因此这可能会影响我包括其他缓存实现的能力。 如果问题再次出现、我将创建另一个 TT。

    您发布的文档非常棒、感谢您提供的链接! 您是否碰巧知道 SDK 中是否有任何代码示例? 我在任何.c 文件中对 cache_wait 进行了顶层搜索、以查看是否有任何现有代码正在使用 API、看起来好像没有任何 API 函数之外的调用。

    谢谢、

    Jon

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

    您好、Jon、

    我没有看到 cache_wait()用法。 这只是同步调用与异步调用之间的一个问题、您需要先对正在调用缓存 API 的缓冲区进行操作。

    您还可以在 SYS/BIOS 安装的 docs 文件夹下查找 BIOS_User_Guide.pdf。 有关一些使用信息,请参见 Memory->Cache Configuration 和 Hardware Abstraction Layer->Cache 模块。 在我之前发布的 API 文档中、基本解释或多或少是这样的。

    如果您使用 CCS 编译项目、则会有合适的版本。 文件夹  

    C66高速缓存设置通过 MAR 寄存器完成、其粒度为16 MB。  因此、您必须 相应地定义存储器映射、同时牢记这一点(在相同的16 MB 地址空间内不能有缓存和非缓存区域)。

    您可以在构建时在配置文件中静态执行这些操作、也可以在运行时使用缓存 API。  以下  IPC 3.x 测试文件中执行某些静态配置的示例。

    此致

    Suman