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.

[参考译文] AM5716:AM5716 的 DSP c66x 视图中的存储器映射

Guru**** 2667985 points

Other Parts Discussed in Thread: AM5716

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1583108/am5716-memory-mapping-from-dsp-c66x-view-of-am5716

器件型号: AM5716

尊敬的 TI 团队:

我在 TI ICSS EMAC 测试代码中找到了以下 DSP 源代码。

pdk_am57xx_1_0_21/packages/ti/drv/ICSS_EMAC/test/sys/main_dsp.c src

#ifdef _TMS320C6X
    /* Clear pre-fetch bit in MAR to make OCMC un-cacheable */
    Cache_setMar((xdc_Ptr)0x4b000000U, 0x10000U, 0);
    Cache_setMar((xdc_Ptr)0x40000000U, 0x10000U, 0);
#endif
 
根据注释、似乎将存储器范围设置为不可缓存。 这两个范围至少包括片上 SRAM 的一部分。
 
但我阅读了 AM5716 的参考手册、OCSC 范围为 L3 MAIN 地址 0x4030 0000~0x4037 FFFF。
它不在 0x4000 0000、0x4001 0000 范围内;  
 
我阅读了 手册中的“-SP Internal and External Memory Views“内容、并找到以下信息:
0x2000_0000 0xffffffffff_FFFF 3584 MIB MDMA(缓存)DSP1 MDMA 启动器(缓存)到 L3_MAIN(通过 DSP1_MMU0)
在第 2 章(存储器映射)中:
L3_MAIN 映射 0x1400 0000 0xFFFF FFFF 3GiB、8GiB 请参阅表 2-1。
 
将地址从 DSP 视图映射到 L3_MAIN 的方案是什么?
 
谢谢。
 
 
 
 
 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Thomas、

    请查看 TRM 第 5 部分 (5.3.10)。

    相关主题:  

    - Josue

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

    你好 Josue、

    感谢您的迅速回复。

    相关主题提到了文档 http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_ ipc.html#ipc-for- am57xx  现在无法访问该文档。  我在 TI 网站上搜索过、但没有找到。  你知道新的 URI,以便我可以进一步研究它吗?  谢谢。  

    我回顾了第 5 节。 这些地址路由到 EDMA、也可选、转换 DSP-MU0 来访问 L3-MAIN。

    我不知道如何检查 MMU0 的配置以及管理页面翻译条目的代码在哪里。

    (在 Linux 中、iommu 驱动程序会 在加载 DSP 固件时将内核空间虚拟地址映射到物理 DSP 存储器)

    您能以为例吗   Cache_setMar((xdc_Ptr)0x40000000U, 0x10000U, 0);  to show how to confirm what such address range is? 

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

    我发现 DSP 固件中的资源表部分将指导 Linux 远程 proc 在 iommu 中映射内存范围。

    但 资源表定义中不包含 0x4000 0000、0x4001 0000。  

    测试代码 pdk_am57xx_1_0_21/packages/ti/drv/ICSS_EMAC/test/main_dsp.c 是否有误 src?

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

    尊敬的 Thomas:

    IPC 部分是我们 Foundational_Components_文档的一部分: https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/linux/ipc.html#ipc-for-am57xx

    我仍然不确定您使用的是什么软件。 代码片段属于 TI RTOS SDK。

    代码片段特别仅适用于用于缓存操作的 CorePac 存储器、请参阅 https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/6_41_04_54/exports/bios_6_41_04_54/docs/cdoc/index.html#ti/sysbios/family/c66/Cache.html#set.Mar

    上面的链接有一个在 Firefox 上工作的索引。

    此致、

    Josue

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

    您好 Josue、

    感谢您提供文档链接。 我正在使用 RTOS 和 Linux 的 SDK am57xx.09.02.00。

    是的、此代码片段正在为存储器范围配置高速缓存。  

    那么、这两个存储器范围的用途是什么?   

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

    Thomas、

    请阅读 API 指南和 TRM。

    目前我的带宽非常低。

    Josue

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

    您好 Josue、

    因为我在发布这个线程之前就已经阅读过它们。

    保留 0x4000 0000 0x402F FFFF 3MIB 保留

    这是保留内容。 那么、为什么测试代码设置了此类范围而未缓存呢?  

    您能帮助检查一下吗?

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

    Thomas、

    我看看这个。 请预计响应会延迟。

    -Josue

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

    Thomas、

    我看了看这条线和这些线

    #ifdef _TMS320C6x /*清除 MAR 中的预取位以使 OCMC 不可缓存*/ CACHE_setMar ((XDC_PTR) 0x4b000000U、0x10000U、0); CACHE_setMar ((XDC_PTR) 0x40000000U、0x10000U、0); #endif

    以修复 AM571x IDK 电路板上崩溃的示例。

    当进行进一步挖掘时、可以看到这些区域将会是什么:

    src / cslr_soc_dsp_baseaddress.h soc

    此致、

    Josue

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

    感谢 Josue 的帮助。

    参考手册中未介绍这两个存储器区域。

    1) DSP_SHA2MD5_1 地址是什么?  它是否与代码注释中所述的 OCMC 相关?

    2) 如果仔细查看、您可以看到  在 cslr_soc_dsp_baseaddress.h 中未找到地址 0x40000000  。因此我仍然不知道它是什么。

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

    Thomas、

    确定这些内存位置的目的是什么?

    如果仔细查看、您可以看到  在 cslr_soc_dsp_baseaddress.h 中找不到地址 0x40000000  。因此我仍然不知道它是什么。

    我分享了一张分配此存储器地址的图片 — DSP EMIF1 等

    如果我使用 grep:

    processor_sdk_rtos_am57xx_09_03_00_00$ grep 0x40000000 ./pdk_am57xx_1_0_21/packages/ti/csl/soc/am571x/src/cslr_soc_dsp_baseaddress.h
    #define CSL_DSP_EMIF1_SDRAM_CS0_SIZE                                            (0x40000000U)
    #define CSL_DSP_EMIF1_SDRAM_CS1_SIZE                                            (0x40000000U)

    所以我不同意你的说法。

    另外、如果您检查 TRM、这里还提到了这些地址:

    -Josue

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

    您好 Josue、

    [引用 userid=“504839" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1583108/am5716-memory-mapping-from-dsp-c66x-view-of-am5716/6132922 ]我认为排除这些地址是有目的的。 确切的功能受保密协议约束。

    好的。  我放弃了。  目的是、我需要确认是否 应将此代码片段包含在我的 DSP 应用中。

    [报价 userid=“504839" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1583108/am5716-memory-mapping-from-dsp-c66x-view-of-am5716/6132922

    如果我使用 grep:

    全屏
    1.
    2.
    3.
    processor_sdk_rtos_am57xx_09_03_00_00$ grep 0x40000000 soc src cslr_soc_dsp_baseaddress.h
    #define CSL_DSP_EMIF1_SDRAM_CS0_SIZE (0x40000000U)
    #define CSL_DSP_EMIF1_SDRAM_CS1_SIZE (0x40000000U)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    所以我不同意你的说法。

    [/报价]

    这两个定义是 SDRAM 的“SIM",“,但、但不是地址。  

    总之、我会 在 DSP 应用中包含这些内部黑盒代码。

    感谢你的帮助。

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

    您好:

    我因为美国节假日而离开办公室、直至 12 月 1 日。

    预计响应会延迟。

    -Josue

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

    Thomas、

    确定。  我放弃了。  目的是、我需要确认是否 应将此代码片段包含在我的 DSP 应用中。 [/报价]

    是的、如果您尝试在 AM571x IDK 上运行同样的测试。 如果需要、我建议进行试验。 不幸的是,完成这些变化的人不再可用,所以上面提出的证据是我们唯一的参考。

    此致、

    Josue