理清逻辑并重写:正如标题所示,当我在应用程序代码中启用 eMCEM_1 时,使用官方引导加载程序下载应用程序失败。如果我不擦除芯片,我就无法再次进入启动状态,即使重新启动也无法解决问题。我怀疑重新启动后,启动程序跳转到了应用程序,但应用程序没有运行。禁用 eMCEM_1 后,此问题不会出现。启用 eMCEM_1 后,如何使用启动 来刷写应用程序?
嗨@XPW ,
问题描述不够清晰。
如果应用程序是通过引导加载程序进行编程的,则应用程序中包含的 eMCEM_1 配置不应影响编程过程本身,因为应用程序在下载期间不会执行,它只是一个二进制文件。
只有在引导加载程序将执行权移交给应用程序之后,与 eMCEM/FCCU 相关的配置才会变得重要,此时检查以下内容会很有帮助:
根据目前的描述,尚不清楚是编程操作失败,还是编程成功但问题在应用程序开始执行后才出现。
您能详细说明一下事件的具体顺序吗?
此致,
丹尼尔
经过调查,我发现启用
请选择部分进行解释:
首先,当我没有启用目标时
RTD 文件中的 Clock_ip.c 文件
电源IP。c 在 RTD 文件下
可以正确初始化。
但是,当我激活它时:
RTD 文件中的 Clock_ip.c 文件
RTD 文件中的 Power_ip.c
全局变量初始化失败。
请问是否有更好的解决方案?
嗨@XPW ,
根据截图来看,变量最初初始化是正确的。但是,在 eMCEM 初始化之后,Clock_Ip_pfkNotificationsCallback 包含一个无效指针。
eMCEM 并不会神奇地改变指针值。这看起来更像是以下几种问题之一:
您能否使用 SPD 演示项目中的链接器文件进行测试?
BR,丹尼尔
链接文件已修改如下。
我定义了三个全局变量:
我发现当未启用
它似乎已按 4 字节对齐并正确赋值。
但是当我启用
它似乎没有对齐。
这种现象的原因是什么?我应该如何调查和解决它?
嗨@XPW ,
根据截图来看,我并不认为变量初始化本身存在问题。variable_a 是一个 8 位变量,启用 eMCEM 会引入其他变量,这可能会改变 .data 的布局。部分。因此,看到变量处于不同的偏移量是正常的,这本身并不表示存在数据损坏。
我认为关键问题是,当应用程序独立组网 \\(SA\\)时会出现此问题,还是只有在通过引导加载程序编程和启动时才会出现此问题。
能否在不使用引导加载程序的情况下,直接使用调试器对应用程序进行编程并运行该程序,从而重现该问题?如果问题仅在通过引导加载程序加载应用程序后出现,则调查应集中在引导加载程序编程过程、映像布局或引导加载程序交接上,而不是应用程序本身。
BR,丹尼尔