Thread 中讨论的其他器件:C2000WARE
工具与软件:
你好
我遇到了一个奇怪的问题。 我有一个引导加载程序在前两个闪存扇区中闪存并从闪存运行。 然后、我将剩余几个扇区为空。 实际上、它们被保留用于第二个引导加载程序、但它们目前是空的。 然后、在闪存中有一个用于主应用程序的位置。
考虑以下因素:
在引导加载程序代码中、我进行了一项微小的更改、仅获取两个不同的校验和(我只更改已定义宏的值、这个宏甚至没有在代码中使用)。 我会获得两个不同版本的引导加载程序。 我们将其称为 BL0_v1和 BL0_v2
我在 DSP 上逐个刷写(没有其他内容已刷写、只有该引导加载程序。 无应用)。 两者都正常运行。
案例1:BL0_v1 => 可以
案例2:BL0_v2 => 正常
在另一种情况下、除了引导加载程序之外、我还闪存主应用程序。 在这种情况下、对于其中一个 bootloader、即使在下电上电后也无法启动 DSP!
案例3:bl0_v1 + app =>正常
案例4:bl0_v2 + app =>不会运行!!
我再次重申、Blv_v1和 BL0_v2之间的差异无关紧要。 所以造成这一问题的原因不是这个微小变化的内容。 它随机发生,它也发生在代码的其他部分的小更改。
我的质询是、这问题可能是甚么原因呢? 为什么会随机发生? 如果引导加载程序代码 BL0_v2有问题 (这不是这样、因为 v2本质上与 v1相同)、为什么只有当应用程序也存在而没有应用程序时才会发生该问题?
我开发了两级引导加载程序、我在测试过程中注意到了这个问题。 此 BL_0实际上是第一级加载器。
起初、我认为问题出在开发的第二级引导加载程序上、因为在我的开发过程中、有时仅仅通过对第2级引导加载程序进行少量更改就会发生类似的情况、DSP 也会在复位后消失。 (在这些测试期间、我未更改 BL0)。 然后我注意到、即使 BL_0发生了一些更改、没有第二阶段 BL、也可能会发生这种问题。 我感谢有关这个问题的原因的任何想法。