Wong: How did you manage to cut the boot time by almost two orders of magnitude?
Larson: We do a number of things. This includes optimization of the bootloader and linux kernel. We prioritize mission-critical drivers so they are loaded first. We also deploy the application GUI as soon as possible. In the process, we delay all non-essential tasks until after the target application is fully running. This allows the system to respond within a second with less critical operations available later in the sequence.
Wong: So reordering the boot and load sequence provided the performance gains. How did you come up with the optimum sequence and how many non-essential tasks wind up starting later?
Larson: The approach is to identify which features the user of the product considers essential, focus on loading all the predecessors to those, and postpone everything else. For example, if the customer wants the GUI up and running, the system needs to load the LCD drivers, touch drivers, and everything in the kernel to support those. The number of non-essential tasks is different on every application, but you can count them up quickly, USB drivers, Ethernet drivers, stacks to support communication over the top of these drivers, etc.