我使用的是LPC845 Cortext M0+芯片。我能够从引导加载程序跳转到应用程序,再从应用程序跳转到引导加载程序。一旦微控制器第一次上电,它会检查应用程序是否存在,如果应用程序存在则跳转到应用程序。当我想跳回引导加载程序时,我使用相同的逻辑跳转到引导加载程序,并且效果很好。
现在,如果从应用程序执行引导加载程序,我想执行一些特定的任务。
有没有最好的方法来检查引导加载程序执行是否从应用程序启动或正常开机执行?
我可能会对多个控制器使用相同的技术,因此请建议执行上述任务的最佳方法
据我正确理解您的问题,您想知道一种从应用程序跳转到引导加载程序并因此在引导加载程序中执行特定操作的方法。
为了从应用程序跳转到引导加载程序,系统应执行软件重置。
为了知道系统是从正常启动进入Bootloader还是从应用程序进入Bootloader,应在公共RAM存储器的一部分定义一个标志。 该标志应是在两个链接器脚本中定义的部分的一部分,并且该部分应标记为“无初始化”。通过这样做,您将防止在重置之间进行任何重置/用 0 填充标志。 流程将类似于:
RAM 中定义为“.no init”一部分的部分可能会导致该标志值出现意外的值。建议对“1”使用特定模式。该模式应始终由应用程序编写。