![]() The breadth of it’s functionally is wide but the specific thing we need here is the -update-section parameter, which allows us to replace a named section in an object file with another object file. To abuse the metaphor, objcopy is a bit of a utility knife for object file manipulation. ![]() This method for bundling firmware images together will focus on a new tool in the GCC, objcopy. A typical compilation toolchain uses ld to string object files together, but there are other linker-adjacent tools which come in handy for playing havoc with the right kind of binary file. There’s more than one way to use the linker to stick binaries together - that’s its job after all. ![]() There were ultimately two options that fit the bill. The additional constraint was that the blending of the three firmware images (one carrier and two payload) needed to happen long after compile time, on a different system with a separate toolchain. I had chosen to bundle the payload firmware images into the binary for the intermediate microcontroller which was to carry out the update process. Just a few computers asking each other for an update over some serial busses. Recall, my system wasn’t a particularly novel one (see the block diagram below). How are those bytes assembled, and what are the tools that do the assembly? This is the problem I needed to solve. OK, maybe that’s a stretch, but there are certainly a plethora of ways to get those sweet update bytes into a target system. Images can fly through the air one a time, travel by sneaker or hitch a ride on other passing data. There are many ways to update an embedded system in the field.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |