单片机/MCU论坛
直播中

李维嘉

8年用户 1513经验值
私信 关注

Tc387引导加载程序CAN不跳转到应用程序的原因?怎么解决?

我正在 Tc387 开发板上开发引导加载程序。应用程序通过引导加载程序主机编程到 Tc387 triborad 后,程序 CAN 不会跳转到0x80020000。我的JumpToMainApp函数代码如下,无论地址(Diagnosis_Mirror.MainAppEntryAddress)是0x80020000还是0x80020020或0xA0020000或0xA0020020, CAN 都不能跳转到APP。
void(*mainAppentryFunctrion)(voi
void jumptoMainApp (void)
{
布尔中断状态;
mainAppentryFunction = (void (*) (void)) diagnosis_mirror.mainappentryAddress;disgput
12 ();//rameTimersConders中断,防范跳跃到应用程序发未知中断状态 = ifxcpu_disableIntructrupts ();frame.id = 0x703;frame.length = 4;frame.data [3]



= diagnosis_mirror.mainappentryAddress 0xff;frame.data [2]   
= (diagnosis_mirror.mainappentryAddress 0xff00) 8; frame.dat   a [1] > >
= (diagnosis_mirror.mainappentryAddress 0xff0000) 16;frame.dat   a [0] > >
= (diagnosis_mirror.mainappentryAddress   0xff000000) > > 24;
//can_txData (0,Fr   ame);//ifx_ssw_ asm (ji A0);if (interruptState == TRUE)}
__setAddressReg(A0,0xA0020000);
    // __ " "

{
        CAN_TxData(0, Frame);
       // __asm("ja (0xA0020020)");
      //MainAppEntryFunction();
       (*MainAppEntryFunction)();
     }

UDS 11 服务后,主板将重置。 程序 CAN 不会跳转到0xA0020000。 程序已运行到 JumptoMainApp。 0x703 CAN发送CAN ID。但是软件还没有跳转到APP。
我的引导加载程序和应用程序项目都使用了 Tasking。 Lsl 文件如下所示。
       CAN 你帮我找到这个问题的原因吗?
                                                                                                                                                                                                                                                                                                                                                                                                        
                                                        

回帖(1)

孙成红

2024-1-31 09:14:28
有几个可能的原因导致引导加载程序无法跳转到应用程序:
1. 应用程序的入口地址被设置错误。确保引导加载程序正确地设置了应用程序的入口地址,以便正确跳转到应用程序的开始位置。
2. 引导加载程序未正确配置内存映射。确认引导加载程序正确配置了内存映射,以便应用程序位于正确的物理地址上。否则,即使设置了正确的地址,引导加载程序仍无法正确访问应用程序的代码。
3. 引导加载程序可能存在错误。检查引导加载程序的代码,确保它正确地执行跳转到应用程序的逻辑。可能存在错误的代码逻辑导致无法正确跳转。

要解决这个问题,可以采取以下步骤:
1. 检查应用程序的入口地址。确保应用程序在编程过程中的正确地址被传递给引导加载程序。可以通过打印或调试输出来确认传递给JumpToMainApp函数的地址是否正确。
2. 检查内存映射配置。确保引导加载程序正确配置了内存映射,以便应用程序被加载到正确的物理地址上。检查所用的链接脚本或配置文件,确保应用程序在正确的物理地址上。
3. 检查引导加载程序的代码。确保代码逻辑正确,没有错误或漏洞。可能需要添加适当的调试输出或日志以帮助追踪问题。

在解决问题时,可能需要使用调试工具或打印输出来帮助定位问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分