As we saw in this chapter, developers are able to go into the MicroPython kernel and customize it for their applications. These customizations can be as simple as adjusting the names of the pins on the development board or adjusting the startup states of the GPIO pins, or as complex as communicating with an external device. We also saw that we can save space and increase the execution efficiency of our applications by converting modules into frozen modules, which are then built into the MicroPython kernel. If we need to update those modules, we can also cross-compile them using mpy-cross and deploy a precompiled bytecode version of the module onto our filesystem.
Now that we have a solid foundation on how to develop MicroPython applications and how we can customize the kernel, in the next chapter, we will examine how we can create our own custom debugging tools, which...