PIC32MX795F512L 的嵌入式 C、引导加载程序配置

Embedded C, Bootloader configuration for PIC32MX795F512L

在MPLAB中,我需要为PIC32MX795F512L使用bootloader。我能够将引导部分编程到 kseg 引导内存中,直到 0x8fc00000,并将应用程序代码编程到 0x9d000000 处的 kseg0_program_mem。我可以使用 jump to addr 命令从引导加载程序跳转到应用程序,但是我在从应用程序跳转到引导加载程序时遇到问题。我试过跳转到 addr(引导加载程序地址),但它不起作用。请帮助我

只需使用重置命令,它会将您设置回处理器起始地址。检查 SW 复位的 POR 位,看看是您引起了复位还是电路板刚刚通电。

我在我的 PIC32MX270 的众多 pdf 之一中找到了这个,我相信它对整个 PIC32MX 系列都是一致的:

/* The following code illustrates a software Reset */
// assume interrupts are disabled
// assume the DMA controller is suspended
// assume the device is locked
/* perform a system unlock sequence */
// starting critical sequence
SYSKEY = 0x00000000; //write invalid key to force lock
SYSKEY = 0xAA996655; //write key1 to SYSKEY
SYSKEY = 0x556699AA; //write key2 to SYSKEY
// OSCCON is now unlocked
/* set SWRST bit to arm reset */
RSWRSTSET = 1;
/* read RSWRST register to trigger reset */
_excep_code = RSWRST;
/* prevent any unwanted code execution until reset occurs*/
while(1);

while(1) 也会锁定 uC,以便看门狗在所有其他方法都失败时重置设备。我的异常处理程序中也有这段代码(system_exceptions.c 如果您使用的是 Harmony),这样当出现问题时(DMA 灾难或您尝试 sprintf(foo_string, "%f", NAN)), 设备将重置而不是成为镇纸。