This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Cortex-M3 Bootloader

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

Parents Reply Children
  • Yes, as long it doesn't overlap the bootloader flash area.

    Technically this is true. You can just place the program counter at the beginning of the new firmware. But do you really want to?

  • 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.