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.

[参考译文] AM2612-Q1:AM261 OCSRAM 问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1584089/am2612-q1-am261-ocsram-questions

器件型号: AM2612-Q1

尊敬的专家:

 

美好的一天! 我向客户询问 OCSRAM 问题。 在其应用中、AM261 在 QSPI 模式下运行。

  1. 现在客户发现他们的 SBL 和应用占用 SBL 和 APP 的 OCSRAM.Address 0x70040000-0x70071FFF 重叠的相同部分。 客户想知道 SBL 和 APP 使用相同的 RAM 地址时是否存在风险。 IMG_0721.jpegIMG_0722.jpeg
  2. 客户想知道 OCSRAM 与外部闪存的地址如何匹配? 例如、如果客户想要将变量固定到外部闪存的 0x1000 地址中、哪个地址应该在 OCSRAM 中分配?  

 

谢谢!

此致

Kita

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在、客户发现他们的 SBL 和应用程序占用 SBL 和 APP 的 OCSRAM.Address 0x70040000-0x70071FFF 重叠部分。 客户想知道 SBL 和应用使用相同的 RAM 地址时是否存在风险。

    尊敬的 Kita:

    否、这是安全和预期行为。  仅在加载 HSMRT 后、才将应用程序从闪存置于 RAM 中。 通过“加载 HSMRT“、意味着将 HSMRT 固件从 OCRAM 置于 HSM_RAM 中。 因此、覆盖这应该不是问题。

    如果客户想要将变量存储在闪存中的特定地址、请按照以下步骤操作:

    指定  链接器命令文件 (.cmd) 下、使用所需的闪存地址定义一个新的内存区域:

    移动数据

    /*标准存储器区域*/
    OCSRAM:origin = 0x70000000、length = 0x80000
    Flash:origin = 0x60100000、length = 0x800000

    /*特定地址处的自定义闪存区域*/
    flash_FIXED_variable:origin = 0x6010xxxx、length = 0x1000 /*将 xxxx 替换为偏移*/
    }

    在中 很重要 链接器文件的一部分:

    很重要

    /*标准段*/
    .text :{}> OCSRAM
    .data :{}> OCSRAM
    .bss :{}> OCSRAM

    /*映射到特定闪存地址的自定义段*/
    .flash_code:{}> flash_FIXED_variable
    }

    中的一个 C 源代码 、使用 section 属性将变量/函数放入自定义闪存部分:

    __attribute__((section(“.flash_code")“)))
    const uint32_t myFixedVariable = 0x12345678;

    此致、

    Mayank Shadwani

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

    尊敬的 Mayank:

    客户使用此方法进行了测试 、以修复 RAM 上的变量。

    现在、他们想修复 RAM 0x70002100 上的结构。 从.map 客户可以看到此结构是 在 RAM 0x70002100 上固定的。 但根据生成的 tiimage、这是 0x7C9 闪存地址上的固定值。 客户还尝试使用 ospi 函数来读取此闪存地址 0x7C9、它也可以与客户修复的结构相匹配。

    因此、客户想知道 RAM 地址 (0x70002100) 和闪存地址 (0x7C9) 之间的关系。 如何计算特定 RAM 地址上固定的变量的闪存地址?  

    谢谢!

    此致

    Kita

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

    嗨、当同一个变量复制到内部存储器时、为什么他们要从闪存读取变量?  

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

    您好、Sannmveg:  

    因为客户希望将其软件版本信息存储在 RAM 和闪存的固定地址中。 如果 MCU 出现故障、则可以使用其他器件读取闪存地址、直接确认软件版本。

    此致

    Kita

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

    在这种情况下、计算地址然后从闪存读取将不是一种稳定的方法。 这是因为、闪存中的地址可能会随每个构建而变化。 更好的方法是 在闪存中显式修复变量的地址、同时修复 RAM 中的地址。

    我认为客户可以使用  在链接器文件中指定加载和运行地址。