1
\$\begingroup\$

In LPC1759, I entered ISP through "reinvoke ISP" with the following steps

  1. Disable PLL
  2. Reset timer 1
  3. Re-map interrupt vectors
  4. Set watch dog timeout
  5. Reinvoke ISP

After entering into ISP, What exactly happens in the controller? How to check if it is in ISP Mode? After entering ISP, How to get out?

void init(void){

Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT);

Chip_TIMER_Reset(LPC_TIMER1);

Chip_SYSCTL_Map(REMAP_BOOT_LOADER_MODE);

}

int main(void)
 {

uint32_t wdtFreq;
wdtFreq = Chip_Clock_GetPeripheralClockRate(SYSCTL_PCLK_WDT) / 4;

init();

Chip_WWDT_Init(LPC_WWDT);

Chip_WWDT_SetTimeOut(LPC_WWDT, wdtFreq / 10);

Chip_IAP_ReinvokeISP();


DEBUGSTR("HELLO\n\r");

return 0;
}
\$\endgroup\$
0
\$\begingroup\$

When you enter ISP, you "give control" to bootloader code in ROM. You can interact with it through UART interface (possibly also USB or something else, depending on the chip).

You might be able to regain control from code in the MCU itself if you use a watchdog. I'm not sure that's documented/guaranteed to work.

You need to use something that speaks this ISP protocol (e.g. lpc21isp), and you'll be able to issue commands such at detect, write flash, reboot.

\$\endgroup\$
0
\$\begingroup\$

Thanks for the info domen, that was helpful.

So do we give control to the primary bootloader ROM or do we need a secondary bootloader ROM?

Do we actually need a secondary bootloader for ISP?

Can this ISP be done through a single controller?

\$\endgroup\$
  • \$\begingroup\$ Not really. Depends what you're trying to do and what your requirements are. ISP protocol is quite simple, progremmer side is normally on a PC, but it could also be another microcontroller. \$\endgroup\$ – domen Feb 11 at 9:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.