Hi everyone, can someone clear up something for me regarding the C# .NET UART Bootloader?
I make lots of use of the UART Bootloader, but now it's appeared to have disappeared from the Cypress site. Something about compatibility problems? Is anyone able to elaborate on what exactly the problem is?
For whatever reason, my customized UART Bootloader project for C# .NET is now refusing to bootload, always throwing a timeout exception. Even when I use the old unmodified version of the program (sending my "Enter Bootloader" command from a terminal) it still gives me the same error code.
This is a big problem, as I've built a custom application built off the old AN68272 project that I send to customers to load new firmware in the field, and now it suddenly no longer works.
However I did find that if I use the Bootloader Host built into Creator 4.1, it works just fine. I send my serial command to have the firmware call Bootloadable_Load() through a terminal, open up the Creator 4.1 Bootloader Host and it loads via UART with no trouble. The target project bootloader component version is 1.60.
Asking our customers to download and install PSoC Creator isn't really an ideal option. I'd like to get my application up and running again. I just want to know what the problem actually is before digging in there. Do I just build a new bootloader_utils library? If this is the case, isn't the bootloader host in creator using the same bootloader_utils since I built mine with presumably the same source (located at PSoC Creator\4.1\PSoC Creator\cybootloaderutils)? If so why is it working there but not in my application?
Am I just way off base with all of this?
I attached my project source code for the UART Bootloader Host (It's mostly the one that used to be available from AN68272 modified to send a command to enter the bootloader). What needs changing to get this up and running again?
I just re-built bootloader_utils.dll using the source files in the Creator 4.2 directory.
I now get an exception thrown when I attempt to call Bootload_Utils.CyBtldr_Program():
int result = Bootload_Utils.CyBtldr_Program(Chosen_File_Cyacd, ref comm_data, update);
System.AccessViolationException: 'Attempted to read or write protected memory. This is often an indication that other memory is corrupt.'
So something is going wonky in there.
UARTBootloaderHost.zip 153.0 K