主题中讨论的其他器件: 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位。
MSP430FRAM 器 件引导加载程序(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



