Hey All,
I'm looking at implementing a boot loader in to project. The communication interfaces that i will be using are RS-485 and Ethernet. The specific MCU i'm using is a LPC1788 from NXP. I have looked around forums to find a boot loader that i could use but i have had no luck. If someone could give me example code or point me in the write direction for implementing it this would be much appreciated.
Matt
What I mean is "AS LONG AS YOU SET YOUR UART CORRECTLY", meaning from the hardware and software side.
the UART is only to transfer data, you can use any UART to do this, has no impact on IAP.
"Technically this is true. You can just place the program counter at the beginning of the new firmware. But do you really want to?"
I'm not too savvy and most likely there are better ways of doing this than the way I do it, but for me setting the vector table and jumping to user application seems to work fine.
"the UART is only to transfer data, you can use any UART to do this, has no impact on IAP."
Yes, but you have to be very clear about the difference between IAP and ISP.
You talk about IAP.
But the OP asked about ISP.
It's the first UART that is hard-coded as ISP interface for the built-in boot loader in the chip.
If the chip is given a secondary boot loader (which requires JTAG or ISP-programming using UART0), then that secondary boot loader can receive data on any UART, CAN, SPI, Ethernet, USB, I2C or whatever interface the processor has. A secondary boot loader can then use IAP to program the chip.
The important distinction here is that if the factory wants to use ISP to program the chip initially, they either needs to use JTAG or (if using FlashMagic with serial port) the UART0 port. Because of this, it's quite useful to consider UART0 as "the" UART to use for software updates.