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.

[参考译文] [6638K2K]存储器保护和异常生成

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

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581462/6638k2k-memory-protection-and-exception-generation

Thread 中讨论的其他器件:SYSBIOS

您好!

我正在使用6638 K2K 定制板。 我在使用 DDR3进行数据处理的不同内核上运行不同的应用。 我需要启用存储器保护、以便一个内核无法访问其他内核数据部分。 在非法访问时、应引发异常、并调用挂钩函数。 我使用 MPAX 寄存器保护存储器的一部分、并拒绝本地处理器访问该存储器部分。 当本地处理器试图写入存储器的那个部分时、数据不会像预期的那样写入存储器、但不会产生故障。 下面是我所做的工作:

索引=4;
mpaxh.segSize =23;
mpaxh.bAddr = 0x90000;

CSL_XMC_setXMPAXH (索引、&mpaxh);

mpaxl.ux = 0;
mpaxl.uW = 0;
mpaxl.ur = 0;
mpaxl.sx = 0;
mpaxl.SW = 0;
mpaxl.SR = 0;

XX =(0x810 + coreNum * 0x01)<<12;

mpaxl.rAddr = xx;


CSL_XMC_setXMPAXL (索引、&mpaxl);

然后、我尝试写入存储器0x90000000、写入失败、但不会生成异常。 我检查了 FSR 寄存器、它显示0x0。

以下是 cfg:

VAR MemoryProtect = xdc.useModule('ti.sysbios.family.c64p.MemoryProtect');

exception.exceptionHook ="&My_ExceptionHandler";
Exception.internalHook ="&My_ExceptionHandler";
exception.externalHook ="&My_ExceptionHandler";
exception.nmiHook ="&My_ExceptionHandler";
异常.returnHook ="&My_ExceptionHandler";
exception.enableExternalMPC = true;
exception.enablePrint = true;

当我尝试访问空指针时、异常处理程序会正确执行。

请帮助我了解我遗漏的内容。

此致、Yunas

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

    您能否分享您使用的 SDK 版本?

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

    以下是我使用的版本:

    CCS:6.1.3.00033
    PDK 版本:pdk_k2hk _4_0_4
    BIOS 版本:6.46.1.38

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

    我已通知 RTOS 专家。 他们的反馈将在此处发布。

    在平均时间中、请查看第7.3.2节"存储器保护和地址扩展过程"和第10章"内核包用户指南"(www.ti.com/.../sprugw0c.pdf)。

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

    以下是故障寄存器的内容。 我可以看到故障报告正确、但程序继续正常执行、而不转至异常处理程序:

    XMC_xmpfar
    90000000
    XMC_xmpfssr
    00000110
    XMC_xmpfcr
    00000000

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

    这是我的建议
    查看存储器故障是否会产生中断(您正在寻找什么?) 请首先查看 www.ti.com/.../sprugw0c.pdf 的表9-2 、如果生成了故障、它在内核内部、因此内核应向内核生成信号。 因此、请查看我提到的表中的信号116至127 (查找显示这些信号的寄存器)。 如果在故障发生时未设置任何位、则代码应使用软件检查故障(即、查看您提到的故障寄存器的值、并在发生故障时做出决定。
    如果在发生故障时某个位置位、则可以将其连接到 ISR

    这对您有道理吗?

    已运行