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.

[参考译文] 66AK2G12:是否可以将存储器配置为32位边界?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1247190/66ak2g12-is-it-possible-to-configure-memory-to-32bit-boundary

器件型号:66AK2G12

您好!

从 keystone-k2g-evm.dts 中、我们可以看到系统存储器从32位边界之外的0x800000000开始。

MEMORY@800000000
DEVICE_TYPE
 ="MEMORY";reg =<0x00000008 0x00000000 0x00000000 0x80000000>
}; 

我们有一个 PCIe 设备、并希望访问存储器以与 K2G 处理器交换数据。 众所周知、PCIe 是32位的、无法写入超出32位边界的内存地址。

好的、我想问、是否可以让 PCIe 器件访问64位地址存储器、或者我们是否可以将器件树中的存储器空间从64位更改为32位?

汤姆

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

    您好、Tom、

    如果您选中 K2G TRM 中的表2-1器件存储器映射、则0x8000 - 0000之间还有一个2GB 地址区域、也用于 DDR。

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

    您好、Bin、

    太棒了! 那么、我可以将系统存储器起始地址从0x8 0000 0000更改为0x8000 0000?

    MEMORY@80000000
    DEVICE_TYPE
     ="MEMORY";reg =<0x00000000 0x80000000 0x00000000 0x80000000>
    }; 
    

    汤姆

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

    如果可以将存储器更改为从0x8000 0000开始、那么我是否应该按照以下方式修改 DTS 中保留的存储器部分? 查看 elixir.bootlin.com/.../keystone-k2g-evm.dts 上的原 EVM K2G DTS

    保留存储器
    #address-cells =<1>
    #size-cells =<1>;ranges;
    
    
    dsp_common_memory:dsp-common-memory@81f80000
    compatible
     ="shared-dma-pool";reg =<0x81f80000 0x800000>
    
    ;可重复使用;状态="oke";
    };}; 
    

    顺便说一下、谁在使用
    EVM K2G 板上的 DSP-common-memory?

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

    您好、Tom、

    如果可以将内存更改为从0x8000 0000
    开始

    我认为这更适合如何在 u-boot 中配置 DDR 控制器以使用该0x8000 - 0000地址。 我会跟进我们的 EMIF 专家、并与您联系。 我想他目前不在办公室。

    顺便说一句,谁在 EVM K2G 板上使用 DSP-common-memory?

    它必须为 SDK 中的 DSP 应用保留。

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

    Tom、我认为您必须更改 MSMC 中的一些寄存器以将 DDR 开始地址从0x8_0000_0000映射到0x8000_0000。  我认为仅仅更改 DTS 文件不能实现这种目的。

     TRM 第7.1.3.3.2节讨论 SES_MPAXH 和 SES_MPAXL 寄存器。  我认为需要修改这些寄存器来重新映射外部地址空间。  有一组寄存器取决于 PrivID 和启用的区段数量。  您只需要根据 DDR 地址空间更改已启用的段。

    此致、

    詹姆斯

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

    嗯、很有趣。 uboot 中的 keystone-k2g-generic.dts 已使用32位地址:

       内存@8000000{
          device_type ="存储器";
          REG =<0x80000000 0x20000000>;
       };

    汤姆

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

    Tom、  

    很有趣。  如果是这样、您可能希望在 u-boot 提示符处停止启动并检查上面提到的寄存器配置。  然后将其与内核如何配置这些寄存器进行比较。  您可以将 u-boot 的功能复制到内核中。

    此致、

    詹姆斯