The electronics industry has continued to experience rapid technological advancements that have resulted in smaller and faster electronic devices which are simultaneously able to support a greater number of increasingly complex and sophisticated functions. Such advancements have enabled the manufacture of powerful mobile computing devices such as single-board computers. Generally, single-board computers provide a complete set of common computer components integrated onto a single circuit board. For example, a single-board computer may include a processor, memory, input/output (I/O) interfaces, as well as other appropriate features. Single-board computers may be embedded within a variety of devices such as robots, drones, security monitoring devices, medical devices, industrial equipment, or other types of devices. In some cases, single-board computers may also be used for educational purposes, for example, to teach students computer programming.
Regardless of the particular application, single-board computers may from time to time need to be programmed or reprogrammed by having a sequence of instructions (computer code) written to a memory of and executed by the single-board computer. In some examples, a single-board computer may be programmed locally by providing persistent physical access to the single-board computer (e.g., using a keyboard and/or mouse). Such persistent physical access can be difficult, for example, when the single-board computer is embedded within another device or located in a remote area. In another example, a physical cable, such as a universal serial bus (USB) cable, may be used to connect a personal computer to the single-board computer. In some cases, short-range wireless communication (e.g., Bluetooth®) may also be used to provide the connection between the personal computer and the single-board computer. Whether using a physical cable or short-range wireless communication, physical proximity to the single-board computer is required and can be challenging when the single-board computer is embedded within another device or located in a remote area. In other cases, a user may write code on their personal computer, copy the code to a memory device (e.g., such as a USB flash drive or an SD card), and manually provide the code to the single-board computer using the memory device by connecting the memory device to an I/O interface of the single-board computer. In this example, while the personal computer may not have to remain in physical proximity to the single-board computer, transferring the code from the memory device to the single-board computer would nevertheless require physical access to the single-board computer. This could also result in a significant time delay, for example, from when the code is written (e.g., at the personal computer) to when the code is delivered (e.g., via the memory device) to the single-board computer. Thus, existing methods for programming single-board computers have not proved entirely satisfactory in all respects.