Other Parts Discussed in Thread: MSP430F5659, UNIFLASH
器件型号: MSP430F5659
Thread 中讨论的其他器件: UNIFLASH
我将 BSL-Scripter 与提供的示例脚本配合使用、通过 USB 在 MSP430F5659 中写入新固件。
我有固件,工作没有任何问题,和其他的不. 对于没有启动的闪存、程序根本不会在闪存后启动。 进行一些挖掘后、我注意到复位矢量(地址 0xFFFE)以值 0x0200(而不是预期的 0x0283)损坏。 我能够使用 Uniflash 进行确认并导出整个存储器。 请参阅上图、其中显示了输入文件与从 Uniflash 导出文件之间的差异。

导出的每个其他字节都与输入文件完全匹配、只有一个 0x00 字节错误。
我可以使用 CCS 以及 MSPFlasher 刷写完全相同的程序、而不会出现任何问题(通过 JTAG 刷写、而不是 USB 刷写)。
我提供了一个包含以下内容的 zip 文件: (仅供参考,这些文件不包含任何专有信息)
- Input_GOOD.txt
- 一个与 BSL-Scripter 和提供的示例脚本完美搭配的固件示例(TI-TXT 格式)。
- Input_BAD.txt
- 在使用完全相同的 BSL-Scripter 脚本时导致问题的固件示例(TI-TXT 格式)。 尽管如此、如果通过 JTAG (CCS 或 MSPFlasher) 进行了刷写、则其工作正常。
- EXPORT_Input_GOOD.txt
- 使用 BSL-Scripter 刷写 Input_GOOD.txt 后直接从 Uniflash 导出的存储器
- EXPORT_Input_BAD.txt
- 使用 BSL-Scripter 刷写 Input_BAD.txt 后直接从 Uniflash 导出的存储器
- Export_Input_bad_Data Flashed_From_JTAG.txt
- 使用 JTAG 刷写 Input_BAD.txt 后直接从 Uniflash 获取的导出存储器。 它与 Input_BAD.txt 文件完全匹配。 程序刷写后运行正常。
- 文件夹 BSL-Scripter
- BSL-Scripter 使用的所有文件(几乎只是 TI 提供的库存 5xx_USB 示例)
注:Input_Good 和 Input_Bad 都来自相同的代码库、只是代码的不同部分略有不同。 该差异与闪存或任何内容无关。 codebase 永远不会使用 flash 播放。 无论如何、根据我的理解、由于复位向量错误、代码永远不会运行。
我尝试将 Input_bad 固件文件修改为从@8000 到'q'(固件结束)的一个连续块、而不是具有不同的段@8000、@ffc6 等 它没有解决问题。
我还尝试添加@10000 段、以便在损坏的复位矢量 (@FFFE) 之后强制使用新段、它也没有解决问题。
我是否遗漏了一些明显的信息? 提前感谢。
ZIP 文件:
debug_BSL_Scripter.zip