- c2000 linker command files - c2000 is class of microcontrollers (this is what the control cards have) - https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html - good writeup on general syntax for linker command files - google drive docs - bool WRC_bootloaderProgramRequest (relevant function in WR_can.c) - compiled hex file structured according to linker table - slice up hex file into 8 byte messages - send that over CAN to the c2000 - bootloader running on c2000 will take the data and reassemble them into program flash area (wherever the user code lives) - Check out: linker table, general bootloader knowledge - Came across something known as C2Prog. Do not know how it works or what it does. It says it has support for CAN communication ### What is a bootloader anyway? - Piece of code that executes at or near boot time - Used to load or execute main application - In embedded systems, it is a small piece of code for erasure/programming of board with a program - Typically reside in - Single flash sector - ROM - Separate from main application - Bootloader must never be erased - Flash may only be erased a sector at a time - Flash may be programmed a word/byte at a time ### Pieces of bootloader ### Debugging - The docs mention the usage of the following MCU: TMS320F28069MPZT (https://www.ti.com/product/TMS320F28069M/part-details/TMS320F28069MPZT) - The circuit actually has the following MCU: https://www.ti.com/product/TMS320F280049-Q1/part-details/F280049PZQ (F280049PZQ) - They're both C2000 series but they are different in some aspects so I wonder if that is the issue - TMS320F28004x Real-Time Microcontrollers (current) vs. TMS320F2806x Real-Time Microcontrollers (past) ### Update So, it turns out that the bootloader code was given to us and no changes can be made to it. The issue with flashing over CAN stems from somewhere else and I haven't been able to figure out where exactly this issue is occurring.