在MPLAB中,我需要为PIC32MX795F512L使用bootloader。我能够将启动段编程到kseg启动内存中,直到0x8fc00000,并将应用程序代码编程到0x9d000000的kseg0_program_mem中。我可以使用jump to addr命令从bootloader跳转到应用程序,但是从应用程序跳转到bootloader时我遇到了问题。我试过跳转到addr(bootloader地址),但它没有工作。请帮助我
答案 0 :(得分:0)
只需使用reset命令,它会将您设置回处理器起始地址。检查POR位是否有SW复位,以查看是否导致复位或电路板是否刚刚上电。
答案 1 :(得分:0)
我在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,以便看门狗在其他所有方法都失败时重置设备。我也在我的异常处理程序中获得了这个代码(如果你正在使用Harmony,则为system_exceptions.c),当某些事情变得不稳定时(DMA灾难或你试图sprintf(foo_string,"%f" ,NAN)),设备将重置而不是成为一个镇纸。