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.

[参考译文] RTOS/TMS320C6678:MSMC SRAM 的存储器保护

Guru**** 2611705 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/656109/rtos-tms320c6678-memory-protection-for-msmc-sram

器件型号:TMS320C6678
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我目前正在尝试对 MSMC SRAM 存储器区域实施存储器保护、以避免因一个内核写入其他内核存储器区域而导致的任何存储器损坏。 我不熟悉存储器保护领域、因此需要一些相同的指导。 为了理解这一概念,我已经介绍了一些文件,如 sprugw0c (CorePac)和 sprugw7a (MSMC)。 读取后、我添加了一些初始代码来执行地址转换、并为存储器范围提供初始权限、如下所示

mpaxh.bAddr =(0xC0000000 >> 12);
mpaxh.segSize =(MPAX_SEGSIZE = 4MB 和0x0000001F);
mpaxl.rAddr = 0x00c00000 >> 8;
mpaxl.SR = 1;
mpaxl.SW = 1;
mpaxl.sx = 1;
mpaxl.ur = 1;
mpaxl.uW = 1;
mpaxl.ux = 1;
CSL_XMC_setXMPAXH (3、&mpaxh);
CSL_XMC_setXMPAXL (3、&mpaxl);

现在、我想为上述的 MSMC SRAM 分配一个 size180 KB 的部分空间、并具有一些不同的权限、例如禁用用户写入和主管写入。 为此、我将使用 MemoryProtect_setPA 函数为 大小 为180KB 的0x0C000000地址位置设置存储器权限属性。 我的做法如下  

MASK = MemoryProtect_MPPA_local | MemoryProect_MPPA_SR | MemoryProect_MPPA_SX | MemoryProect_MPPA_UR | MemoryProect_MPPA_UX;

RET = MemoryProtect_setPA ((ptr) 0x0C000000、0x2CFFF、掩码);

但是、当我从 MemoryProtect_setPA 中检查"Ret"值时、它始终返回 false。 在浏览 MemoryProtect_setPA 函数的文档后、它说"如果地址不属于任何已配置的 MPC、则为 false、否则为 true、并且 PA 已写入 addr 的 MPPA 寄存器"。 如果我在设置内存权限属性时出现任何错误、我将无法获得。  

是否有人可以帮助我调试问题或提供一些解决问题的建议?

谢谢、此致、

Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

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

    您用于这些函数的软件版本是什么? 我在代码中看到了0xc000_0000、0x0c00_0000和0x00c0_0000、如果您尝试使用 MSMC、则基址为0x0c00_0000。

    这是一个 wiki: processors.wiki.ti.com/.../MemoryProtectionOnKeystoneDevices

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

    尊敬的 Eric:

    我们使用的是 SYSBIOS 版本  6.31.04.27。我们使用 0xc000_0000的 MSMC 存储器位置是一个虚拟地址、在内部使用。 有一个内部函  数将与0xc000_0000匹配的地址替换为实际 MSMC 物理地址0x0c00_0000。 因此我们不必担心它。

    我提到了您共享的 wiki 链接。 但仍然面临同样的问题。

    谢谢、此致、

    Rahul Singh