2017-08-02 75 views
2

在MPLAB中,我需要使用PIC32MX795F512L的引导加载程序。我能够将引导段编程到kseg引导内存中,直到0x8fc00000和应用程序代码放入0x9d000000处的kseg0_program_mem中。我可以使用跳转到addr命令从bootloader跳转到应用程序,但是我在从应用程序跳转到引导加载程序时遇到问题。我尝试跳转到地址(引导程序地址),但它不起作用。请帮助我嵌入式C,PIC32MX795F512L的引导加载程序配置

回答

0

只需使用重置命令,它会将您设置回处理器的起始地址。检查POR位是否有复位,以确定是否导致复位或电路板是否刚启动。

+0

检查了相同的程序。但它没有得到复位到引导程序地址 –

+0

使用:asm(“reset”);并在bootloader中检查是否(RCONbits.SWR)/ *我触发bootloader */ – blsmit5728

+0

它工作正常。谢谢 –

0

我发现这在许多PDF格式的我PIC32MX270之一,我相信这是对整个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); 

的同时(1)也将锁住的uC使看门狗,则应如果一切都失败,请重置设备。在异常处理程序中也有这个代码(system_exceptions.c,如果你使用Harmony的话),这样当某些东西变得不可思议时(DMA灾难或者你尝试sprintf(foo_string,“%f”,NAN)),设备将重置,而不是成为镇纸。