Announcements

Equip yourself to optimize PSoc4 MCUs for Evs at the EV Webinar. Click here to register.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

PSoC™ 4 Forum Discussions

AjCh_4325501
Level 1
Level 1

Is it possible to put MCU in bootloader mode using UART commands instead of an external bootloader switch press and hold during the power reset?

Something like Arduino board firmware update by Arduino IDE.

0 Likes
1 Solution

Hi.

Yes, you are heading down the correct path.  Very good!

In the Bootloadable main.c, that's where you'll check for the UART message to invoke Bootloader_1.  You can call the function Bootloadable_1_Load() or you can call Bootloader_1_Start().  I've never really figured out the difference.  They both seem to do the same thing.

In the Bootloader project, find the menu for Build Settings.  Change the Application Type to Bootloader.

In the Bootloadable project, find the menu for Build Settings.  Change the Application Type to Bootloadable.

BTW, a reference document I find handy to read:

AN68272  UART Bootloader.  It also has code examples.

And, you can look at the Bootloader/Bootloadable component datasheet for more info.  You'll see a button for "Datasheet" in the Bootloader component config window, bottom left corner of window.

View solution in original post

0 Likes
3 Replies
BiBi_1928986
Level 7
Level 7
500 replies posted 250 replies posted 250 sign-ins

Hello AjCH.

Yes, the application can receive command from UART and call Bootloader_Start() to jump into Bootloader code.  You'll setup the UART and define the unique command to invoke the Bootloader.

See AN73854.

AN73854 - PSoC® - Introduction to Bootloaders (cypress.com

Good luck with your project.

0 Likes

Hi,

In Bootloader Program

schematic-

pastedImage_6.png

main.c

pastedImage_3.png

In the Application program-

Bootloadable block add bootloader hex and ELF file-

pastedImage_9.png

main.c

Is this process correct? If no then please let me know the correct procedure.

Which function of Bootloadable block needs to be called when specific command received on UART in the Application program?

0 Likes

Hi.

Yes, you are heading down the correct path.  Very good!

In the Bootloadable main.c, that's where you'll check for the UART message to invoke Bootloader_1.  You can call the function Bootloadable_1_Load() or you can call Bootloader_1_Start().  I've never really figured out the difference.  They both seem to do the same thing.

In the Bootloader project, find the menu for Build Settings.  Change the Application Type to Bootloader.

In the Bootloadable project, find the menu for Build Settings.  Change the Application Type to Bootloadable.

BTW, a reference document I find handy to read:

AN68272  UART Bootloader.  It also has code examples.

And, you can look at the Bootloader/Bootloadable component datasheet for more info.  You'll see a button for "Datasheet" in the Bootloader component config window, bottom left corner of window.

0 Likes