嗨,我的Bootloader显示了一个Struts行为(至少对我来说)。我有一个引导加载程序和一个应用程序。当我使用统一的十六进制,由MPLABX创建时,一切都运行良好。引导加载程序启动、检查其条件并启动应用程序(基本上通过调用_RESET_ADDR中的地址)。在下一次重新启动时,将触发引导加载程序加载新的应用程序十六进制(不是统一十六进制,而是单个应用程序十六进制)并对闪存进行编程。它试图启动应用程序,但失败并进入重新启动循环。请注意,应用程序本身没有改变!这就是奇怪的部分:为什么应用程序在带有统一十六进制时启动时没有问题,而在闪烁“独立十六进制”时没有启动呢?两者应该有相同的内容,不是吗?到目前为止,我实际上是通过将EBASE地址放在KSG00SuffyTyMeM中来实现应用程序的工作。现在我需要理解为什么这样工作。有人能解释一下为什么ebase地址需要位于kseg0_._mem内部吗?我认为KSt00Studio MEM基本上是C程序。我也在这个
论坛上看到,eBASE可以从任何地方开始从和谐1.08。在大多数示例中(如在AN1388中),ebase是0x9d000000,而kseg0_._mem在此之后开始。*统一过程做什么?它可能会改变地址而不这样说。*当前配置是否正确(安全使用)?或者这只是巧合吗?我使用的是PIC32 MZ2048 EFM114。引导加载程序本身松散地基于H
ARMony加载程序,但是完全不同(但是它使用NVM.c来编程应用程序)。我确信十六进制的字节被正确地写到闪存中。这是我的bootloader.ld(引导加载程序被放置在引导内存中)和(不工作)applica
tion.ld:这是可以工作的application.ld(引导加载程序没有改变):