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.

[参考译文] TMS320C6674:ROM 引导加载程序(RBL)中的 MEM 保护故障

Guru**** 2614265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/658719/tms320c6674-mem-protection-fault-in-rom-bootloader-rbl

器件型号:TMS320C6674

您好!

我对 C6674 ROM 引导加载程序(RBL)有疑问。 我注意到、当 RBL 分支到我的次级(中间)引导加载程序时、CorePac 0中已经存在两个存储器保护故障:

  • 地址0x0184A004 (L2MPFSR)的值为0x110 (本地监控器写请求)
  • 地址0x0184AC04 (L1DMPFSR)的值为0x120 (本地监控器读取请求)

我正在单步执行 RBL 汇编(从0x20b00000开始)、并将其与 TI wiki 上发布的一些 RBL 源代码进行比较。 我可以说、当 RBL 为 L2存储器初始化 MPPA 寄存器时、会发生存储器保护故障。 根据我拥有的 RBL 源代码、逻辑正在尝试初始化64页 L2的存储器保护(请参阅 RBL 源代码中 nysh.c 中名为 l2Mppa 的数组)。 但是、C6674/8只有32页的 L2 (数据表第5.2节)。 因此、当我单步执行汇编时、我发现、一旦前32个 L2 MPPA 寄存器(地址0x0184A200至0x0184A27c)被写入、当进一步的 MPPA 寄存器被读取时、我就会开始看到 L1D 存储器保护故障、 和 L2存储器保护故障。 我认为这是因为这些寄存器未在器件中实现。

我的问题是:

  1. 我是否正确理解了这一点、RBL 期间存储器保护故障的原因是对 MPPA 寄存器32-63的访问? 我想这不会对器件造成任何损害、对此我什么也不能做?
  2. 如果是、我是否更正了如果我要监控自己代码中的存储器保护故障、我需要在次级(中间)引导加载程序的开头清除 L2MPFSR 和 L1DMPFSR 寄存器?

提前感谢!

此致、
Dave

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

    Dave、

    感谢您提供有关您观察到的问题的足够详细信息、并提供基于调试的见解。

    我已确认您怀疑由于 RBL 中的 MPPA 32-63编程而发生存储器保护错误。 ROM 引导加载程序作者指出、该器件上的引导 ROM 源是根据具有64个域的 C6455上使用的代码库构建的。 当代码移植到 C66x 平台时、未能做到这一点。 存储器故障不应对器件造成任何损害。 解决此问题的方法是清除 应用程序初始化代码中的 L2MPFSR 和 L1DMPFSR 寄存器、如您所示。  

    我已提交一个文献错误、将此问题作为使用说明添加到 C6678勘误表中、但2018年上半年未计划进行更新、因此可能需要更长时间才能在我们的文档中进行反映。

    此致、

    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rahul,一如既往地感谢您的及时和明智的答复。 我将继续在我的次级引导加载程序代码的开头清除寄存器。

    此致、
    Dave