@ jbutler483 - I think the feature you’re looking for is called In-Field Update (IFU). This allows you to update your managed code using RS232 or SD card. Very useful if you need to patch software on boards that are already with customers in the field. You need to convert your binary application into SREC/HEX format to do this.
There are many topics on the forum regarding IFU.
Here’s some code I use for the Panda II to allow customers to update their code in the field via microSD card:
// User-defined program responsible for performing application updates.
public class Program
/// This is the filename that the program will check to determine if a program update is available.
public static string UpdateFileName = "Application.hex";
private static PersistentStorage sd;
private static string updateFilePath;
private static FileStream file;
public static void Main()
// Assume SD card is already inserted
sd = new PersistentStorage("SD");
updateFilePath = "\\SD\\" + UpdateFileName;
// Check for presence of update file
if (File.Exists(updateFilePath) == false)
// Return to application if update file not found
file = new FileStream(updateFilePath, FileMode.Open, FileAccess.Read);
// If an exception occurs at this point, the application region has not yet been touched and should
// still be intact, so we can return to it.
// *************************** POINT OF NO RETURN *******************************
// The application region will be modified at this point. The bootloader MUST successfully finish its work,
// or else the application will be corrupted. Any exceptions that occur after this point are intentionally
// uncaught so they can terminate the bootloader, giving a chance to attempt another update during the
// next reboot.
// Start update
// Read the file in chunks
byte buffer = new byte[10 * 1024];
length = file.Read(buffer, 0, buffer.Length);
SystemUpdate.ApplicationUpdate.Write(buffer, 0, length);
} while (length == buffer.Length);
// End update
// Remove the update file to ensure that the update process doesn't start again when the normal application runs
// The update file will only truly be deleted when we unmount the file system. If we forget to do this, the
// file will remain.
// Access the application