Power on Revolution
There is a new revolution underway, and it is not the kind with protests in the street over a fixed election. This is an embedded revolution changing how we bring new embedded devices to life. I am talking about the latest generation of processors that are burning software into silicon, making it easier to bring new processors to life. Now this may seem like a small and subtle change, but it has significant advantages and Kozio is right in the middle of this revolution.
A Brief History
My experience in embedded systems is predominately with 32-bit processors. The main processor would read stored instructions, or programs, from non-volatile memory, in other words, the stored data survives power cycles much like when using a hard disk. The most commonly used non-volatile memory is flash memory. On a brand new system, in order to get the first program on the flash part, we would use a flash programmer. In the old days, the main circuit board would have a socket with a single flash device. We would remove the flash part, program it on an expensive flash programmer, replace it, and then power on the system to run our newly updated program. On the production line, we used in-system programmers that were available from in-circuit test fixtures, or we would purchase the flash part with our programs already “burned” into them.
Over time we switched to a new standard from the Joint Test Action Group, most commonly called JTAG, which allowed us to readily update flash memory without using a socket. This had several benefits, but also required that each of us have a JTAG box in order to connect a PC to our embedded device. With a PC, a JTAG box, and special software, we could quickly update the flash memory on an embedded device. This was a significant improvement over past methods and provided a known good method for burning new firmware.
The main software that we burned into flash memory was called a boot loader. This boot loader had two key features. First, it initialized all memories at power on, loaded the main operating system and application software into fast SDRAM memory, and then began executing the application software. Second, it enabled a user to transfer new software images from a PC over a standard connection and reprogram flash memory. The second feature provided a fast and easy mechanism for updating flash without a JTAG box. This enabled many more users to update the embedded software in the lab, in production, or possibly at a remote location.
A New Way
In the past years a new generation of embedded processors have emerged that incorporate software directly in the silicon. This new generation of processors “burns” in software into read-only memory (ROM). When the processor is powered on the burned-in software executes. One application we have seen is that the silicon comes with a first-stage boot loader. This first-stage boot loader reads a hardware configuration signal and then communicates over a few standard interfaces. The interfaces may include Serial, USB, or a MultiMediaCard (MMC). The MMC is a flash memory card and may be a removable card, such as an SD Card, or mounted directly on the circuit board, commonly called eMMC.
The purpose of this new code is to read or load a second-stage boot loader from one of the storage devices or interfaces listed above. The second-stage boot loader then performs the steps previously mentioned as a generic boot loader. This new technique has the enormous benefit of being able to bring brand-new devices to life by running software that is loaded, without having to program flash memory first. A user can bring a raw board, one with no software programmed into it, to life using standard tools available to all embedded developers with a PC and a Serial or USB cable.
In the Heat of this New Revolution
Kozio delivers a unique embedded software application that provides a significant jump start for designers bringing any hardware to life. The Kozio application, which we call VTOS, is delivered to customers already configured to run on any supported processor. This embedded software/firmware application provides a second-stage boot loader and a main application boot loader that enables a user to begin running new software on brand new devices in minutes.
Once the Kozio firmware application is running, the user can perform a variety of useful functions, such as engineering verification and test and transfer new software from a PC to the embedded device and program flash memory or any programmable logic on the board. These steps can also be automated on the production line saving time per device, or they can be executed in the field to recover failed units.
Imagine! You can now load VTOS onto an SD Card and boot up an embedded device that doesn’t have flash memory programmed. And with VTOS running, you can test and program flash memory, skipping the cumbersome methods used in the early days of embedded systems.
Now that is a revolution worth taking part in. We have a number of ideas of where we could go next, what are your thoughts?