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.

[参考译文] CCS/MSP-EXP430FR5969:如果 CCS 调试器访问 MSP430 FRAM 器件中受保护的 ROM BSL 区域、则调试的程序会失败

Guru**** 2587345 points
Other Parts Discussed in Thread: MSP-EXP430FR5969, MSP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/967219/ccs-msp-exp430fr5969-if-the-ccs-debugger-accesses-an-area-of-the-rom-bsl-in-a-msp430-fram-device-which-is-protected-the-debugged-program-fails

器件型号:MSP-EXP430FR5969
主题中讨论的其他器件: MSP430FR5969

工具/软件:Code Composer Studio

在引用的线程 中、Steve Wenner 遇到了一个问题、即使用 CCS 存储器浏览器检查信息 FRAM 的行为导致调试程序失败。

虽然我没有与 Steve 相同的程序和 MSP430 FRAM 器 件、但通过附加的示例、我能够获得 CCS 10.1.1.00004、以便在使用内存浏览器时使调试的程序失败。

步骤为:

1.将随附的程序下载到 MSP-EXP430FR5969。 这是一个简单的程序、具有:

a.计时器 B0中断溢出切换 P1.0上的绿色 LED

b:P4.6上的红色 LED 在初始化时亮起、S2按下时通过中断熄灭。  这可用于检测意外复位。

2.将程序设置为运行。 红色 LED 将亮起、绿色 LED 将缓慢切换。

3、此时两个 LED 都亮起、暂停程序。

4.打开内存浏览器,并将起始地址设置为0x01800 (信息内存的起始地址)。 两个 LED 都保持亮起。

5.在内存浏览器中,使用光标向上移动,因此起始地址从0x01800更改为0x017E8。 此时内存浏览器的起始地址被更改、两个 LED 都将关闭、即使 CCS 调试器指示程序仍处于暂停状态。

6.恢复程序,但两个 LED 都保持熄灭状态,表示程序已失败。

我意识 到、在 MSP430 FRAM 器件中、BSL 位于 ROM 中、大多数 BSL 地址都受到保护、不会防止错误的 BSL 执行。 例如、在 MSP430FR5969中、ROM BSL 位于地址 0x1000至0x17FF、BSL 之外仅可访问0x1000至0x100F。 为 MSP430FR5969创建测试程序以探测 BSL ROM 地址时、当正在运行的程序尝试访问地址0x1010至 0x17FF 时、会生成安全违规(PUC)、从而复位器件。

截至 CCS 10.1.1.00004、没有为 MSP430器件提供 GEL 文件、因此 CSS 调试器认为 MSP430的整个地址范围是可访问的。 我认为正在发生的情况是、如果 CCS 调试器尝试访问任何受保护的 BSL 地址、则器件会以某种方式进行部分复位。

在附加的工程中、有 一个包含以下内容的 msp430fr5969.gel 文件:

startup()
{
GEL_MapReset();
GEL_MapOff ();

/*默认整个地址空间为读取/写入、以匹配没有 GEL 文件的行为*/
//@TODO GEL_MapAdd 似乎认为 mspx 只有16个地址位
GEL_MapAdd (0、0、0x10000、1、1);

/*使 BSL ROM 中生成安全违例 PUC 的区域不可访问*/
GEL_MapAdd (0x1010、0、0x7F0、0、0);

GEL_MapOn();
} 

如果目标配置文件被修改为使用上述 GEL 文件、则 CCS 调试器被告知无法访问受保护的 BSL ROM 地址:

如果使用 CCS 存储器浏览器尝试访问0x1010至0x17FF 范围内的任何受保护 ROM BSL 地址、则会由于"存储器映射阻止读取"而显示"-"、并且调试的程序不再失败。

如果 MSP430 FRAM 器件的受保护 BSL ROM 地址标记为不可访问、CCS 是否应提供默认 GEL 文件、以防止调试器尝试访问这些地址时出现故障?

此外、 GEL_MapAddStr ()和 GEL_MapAdd ()函数似乎不允许使用 MSPXv2 CPU 为 MSP430FR5969指定任何地址>= 64KB、从而导致"MSP430:添加存储器映射范围时出错:结束地址超出目标存储器长度"错误。 我尚未确定 GEL 如何确定目标存储器长度。 对于 MSP CPU、地址空间为16位、而对于 mspx 和 MSPXv2 CPU、地址空间为20位。

MSP430TmFRAM 器    件引导加载程序(BSL)解释说,对于 FR26xx、FR25xx、FR24xx 和 FR23xx 器件,在0xFFC00至0xFFFFFFF 之间有一个高1KB 的 BSL ROM,因此看不出如何设置 GEL 内存映射以将地址0xFFC00至0xFFFFFFF 标记为不可访问。

e2e.ti.com/.../MSP430FR5969_5F00_memory_5F00_browser_5F00_security_5F00_violation.zip

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

    你(们)好

    是的、我可以重现您的现象、但恢复似乎不起作用。 但在对器件重新供电时、它工作良好。 因此代码已成功下载。 我将与 CCS 团队讨论该问题、看看他们是否知道恢复正常工作问题。

    此致

    Gary

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

    [引用 USER="Gary GAO]是的、我可以重现您的现象、并且恢复似乎不起作用。查看恢复失败时、当 GEL 文件使用时会发生什么情况:

    1.暂停程序。 显示从地址0x01800开始的存储器浏览器并显示 Timer0_B7寄存器:

    程序使用 TimerB、因此预期会有非零寄存器值。

    2.通过在视图中向上移动光标、将存储器浏览器中显示的第一个地址更改为0x017E8。 刷新寄存器视图会显示 Timer0_B7寄存器已归零:

    在此状态下、程序无法再恢复。 我还没有完全了解器件会发生什么情况、但是 CCS 调试器从0x01010访问任何 BSL ROM 受保护地址的行为... 0x017FF 似乎会破坏器件的状态。 例如、将某些外设寄存器置为零。

    而在使用 msp430fr5969.gel 文件时、创建该文件是为了阻止调试器访问 0x01010中 BSL ROM 受保护的地址。 如果存储器浏览器从地址0x017E8开始、0x017FF 就不再引起故障、因为 Timer0_B7寄存器保持其状态、程序可以恢复:

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

    你(们)好

    您可以右键添加 GEL 文件来限制对受保护区域的访问、这样可以避免此问题。 因此、在保护 BSL 区域的 MSP430FR5XX6XX 器件中会发生这种情况。 我认为这不会影响这个问题的正常调试过程? 感谢您的帮助。

    此致

    Gary