We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I am trying to get an LPC2368 to reinvoke the ISP from user code, and although there is a good application note for the LPC2100 chips, I can't find anything for the LPC2300 ones.
I have found some code for an LPC2458 (below), but I'm not sure what compiler it's for, (it doesn't compile in uVision MDK-ARM V4.10), and I'm not sure it's even suitable for the LPC2368. I have read that the SP is not writeable in inline assembly... So I'm quite lost.
I've read the UM, and it makes it sound quite simple; one command does it all, but it seems like I still need to use inline assy to run said command.
I was hoping to find a code snippet online; I'd imagine the 'reinvoke-isp' function to be highly re-usable for any LPC2300 application..? But no luck..
If anyone has managed to get it going, I'd really appreciate a pointer (no pun intended), or even a function to copy & paste (I can dream..).
Thanks in advance
Nat
=========================================
LPC2458 Code:
void iap_cmd_reinvoke_isp(void) { // Ensure fast I/O is supported. SCS |= 1;
// Disconnect PLL. PLLCON = 0x00; PLLFEED = 0xAA; PLLFEED = 0x55;
// Set IRC as the clock source. CLKSRCSEL = 0x00; // CCLK divider = 0 (CCLK = 4MHz) CCLKCFG = 0x00;
__asm("ldr r0, =spval\n\t" /* Set the stack pointer */ "ldr sp, [r0]\n\t" /* to the end of (SRAM - 32) */ "ldr r0, =iapcommand\n\t" /* Enter ISP mode (via IAP) */ "ldr r2, =iapentry\n\t" "ldr r2, [r2]\n\t" "bx r2\n\n" "spval: .word 0x40007FE0\n\t" /* SRAM - 32 */ "iapentry: .word 0x7FFFFFF1\n\t" /* Address of IAP function (Thumb) */ "iapcommand: .word 57"); /* IAP command 57 (Reinvoke ISP) */ }