您好!
我对 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存储器保护故障。 我认为这是因为这些寄存器未在器件中实现。
我的问题是:
- 我是否正确理解了这一点、RBL 期间存储器保护故障的原因是对 MPPA 寄存器32-63的访问? 我想这不会对器件造成任何损害、对此我什么也不能做?
- 如果是、我是否更正了如果我要监控自己代码中的存储器保护故障、我需要在次级(中间)引导加载程序的开头清除 L2MPFSR 和 L1DMPFSR 寄存器?
提前感谢!
此致、
Dave