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.

[参考译文] AM2634:CCS:存储器配置器正在将代码块放入闪存中?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1460454/am2634-ccs-memory-configurator-putting-code-blocks-into-flash

器件型号:AM2634
主题中讨论的其他器件: SysConfig

工具与软件:

您好、我正在检查 AM2634并在 CCS 20.0.1.4中配置了示例项目。

当我进入系统配置程序时、默认配置是闪存中有一个具有属性"Read、Write、Execute、Initialize"的存储器区域。

我想知道、为什么我可以将.text 和.rodata 段移至闪存、"Memory Allocation"视图显示这些段仅在闪存中分配、而不是在 OCRAM 中分配。 我选择了"运行代码存储器"和"只读数据"作为闪存(见下图)。

根据我从 AM2634的数据表和 TRM 中了解到的、该器件不支持从闪存执行代码、因此应在执行之前复制到 RAM 中、并在 OCRAM 中分配存储器。

它难道也不应该出现在"Memory Allocation"视图的 OCRAM 部分中、或者是否可以在不进行复制的情况下直接从闪存执行该部分?

您能在这里帮我吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它不应该也出现在内存分配视图的 OCRAM 部分中、或者是否可以在不复制之前直接从闪存执行此部分?

    我不确定我是否 完全理解这个问题、但我想您想知道为什么可以为.text 和.rodata 选择闪存区域。 如果是、那么答案是存储器配置器不会检查这是否对您的器件是明智的决定。 您可以选择它、但它无法正常工作。

    如果您进行此选择对 TI 来说至关重要、是否会对您构成挑战。

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

    您好、Thomas:

    我 可以确认您的理解是正确的 - AM2634不支持 从闪存直接执行代码。 CCS 内存配置 视图看起来存在错误、应在下一版本中修复。

    下面是应该发生的情况:

    •  CCS 中的闪存"执行"属性可能表示 该段包含可执行代码、而不是 直接从闪存执行。

    在引导期间:

    • 代码段(.text)存储在闪存中

    • 引导代码会将这些段复制到 OCRAM 中

    •  从 OCRAM 执行

    • Memory Allocation 视图显示的是加载时分配(其中段存储在闪存中)、而非运行时位置(OCRAM)。

    考虑 CCS 行为:

    • 工具可能会抽象复制过程

    • 显示 逻辑映射而不是物理映射
    • 这 似乎是一个工具可视化问题、而不是一个 实际的从闪存执行配置。 无论 CCS 如何显示分配、硬件仍应确保代码从 OCRAM 运行。

    更深入地探究存储器属性:

    • 关于闪存上的"读取、写入、执行、初始化"的问题

    • 仅具有"读取和初始化"功能

    •  应为 OCRAM 保留 EXECUTE

    能否在这里详细说明用例、以及运行程序时得到的输出? 我想确认这是否只是视觉和 SysConfig 问题、或者是否也存在功能问题。

    谢谢。此致、
    Akshit