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.

[参考译文] TMS570LS3137:对 SDRAM 的未对齐访问

Guru**** 2589265 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1048491/tms570ls3137-unaligned-access-to-sdram

器件型号:TMS570LS3137
主题中讨论的其他器件: HALCOGEN

你好。

我已经通过 EMIF 连接了一个 SDRAM。

现在、我已经尝试了一些存储器配置、如果对 SDRAM 的未对齐写入工作正常(始终启用 MPU):

对于"严格排序"和"器件"配置、不能进行未对齐写入。

对于"可高速缓冲"、可以进行一个不带定位的写入。

此外、如果 MPU 被禁用、则不能进行未对齐写入。

但哪种存储器配置是正确的?

谢谢、BR

Christian

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

    尊敬的  Christian:

    TMS570LS3137器件没有缓存。 可高速缓存不适用于此器件。  

    您可以使用正常模式。  

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

    您好 QJ。

    如果使用可缓存、会发生什么情况? 因为未对齐的写入会起作用。 (对于紧凑结构来说很棒)

    谢谢你

    BR

    Christian

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

    不允许对严格排序存储器或器件存储器进行未对齐访问。  

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

    是的、我知道。 但是、如果我将存储器配置为 "可高速缓冲"、会发生什么情况? 因为这样、未对齐的访问就会起作用!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="106576" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1048491/tms570ls3137-unaligned-access-to-sdram/3880055 #3880055">如果使用可缓存,会发生什么情况? 因为未对齐的写入会起作用。 [/报价]

    从 ARM 文档中可以清楚地看出、只有 Normal Memory 类型 属性支持未对齐的访问。

    Cortex-R4和 Cortex-R4F 技术参考手册中 AXI 访问对存储器系统的影响 包含:

    [引用]但是、器件和严格排序的存储器始终不可高速缓存。 此外、对器件或严格排序存储器的任何未对齐访问都会生成对齐故障、因此不会导致任何 AXI 传输。 这意味着本章给出的访问示例绝不会显示对器件或严格排序存储器的未对齐访问。

      ARM v7-M 架构参考手册(ARM DDI 0403E.d)中的 A3.4.5正常存储器部分包含:

    [引用]正常存储器功能强大、这意味着它具有以下属性:
    •可以支持未对齐的访问。[/QUERP]

     由于 TMS570LS3137没有高速缓存、因此认为 EMIF 的 MPU 区域访问控制需要根据 Cortex-R4和 Cortex-R4F 技术参考手册中的以下内容将 TEX[2:0]、C 和 B 编码配置为"外部和内部不可高速缓存"和"正常"

    我尚未将上述设置跟踪到 HALCoGen GUI 配置选项。

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

    你(们)好。

    感谢您的详细回答。

    这是否也适用于内部 RAM?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="106576" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1048491/tms570ls3137-unaligned-access-to-sdram/3886336 #3886336"]这是否也适用于内部 RAM?

    考虑到通过 EMIF 访问内部 RAM 和 SDRAM 的  ARM 定义都是有效的、那么就正常存储器而言、是。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="91588" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1048491/tms570ls3137-unaligned-access-to-sdram/3886207 #3886207"]我尚未(尚未)将上述设置跟踪到 HALCoGen GUI 配置选项。

    我了解了为 RM48L952ZWT (具有 EMIF 的基于 Cortex-R4F 的器件)创建的 HALCoGen 项目。

    在项目初始化时创建的默认 MPU 设置中:

    a.在 HALCoGen R4-MPU-MPU 选项卡中、覆盖内部 RAM 的 MPU 区3具有一种"normal_OINC_Nonshared"(存储器类型 NORMAL 外部和内部不可连接和不共享)。

    b.覆盖 EMIF SDRAM 的 MPU 区6在 HALGoGen  R4-MPU-MPU 选项卡中有一种类型为"严格有序的可共享存储器"(存储器类型为严格排序的可共享存储器)。

    通过查看 sys_MPU.asm 来查看使用的 MPU 区访问控制寄存器设置、并基于 Cortex-R4F TRM 中的信息:

    键入 HALCoGen MPU 配置 MPU 区访问控制寄存器值(由  SYS_MPU.asm 设置) TEX S C B 说明 存储器类型 可共享?
    NORMAL OINC_NONSHARED 0x0308 b001 0 0 0 外部和内部不可高速缓存 正常   非共享
    严格排序_可共享 0x0300 b000 0 0 0 严格排序 严格排序 共享

    基于上述内容、如果要使用 EMIF SDRAM 区域来允许未对齐访问、则 应在 HALCoGen MPU 配置中选择 NORMAL OINC_NONSHARED 类型。