An FPGA or MCU development board may be the most common prototyping platform for embedded systems, but it isn't the only one.
It seems like just about everyone uses either an FPGA or MCU development board as an embedded system prototyping platform. Let's look beyond that.
Their low-cost, familiar development tool chain and availability of many standard plug-in boards for everything from digital video to GPS is a compelling combination. Add in some pre-developed drivers, middleware, RTOS, and hardware-independent APIs and you have a winning combination.
This seems fairly straightforward, but when prototyping you need more than just a hardware target and a code development tool chain. To create a robust test environment around the prototype, you typically need to send data to the prototype and capture return data. Does your embedded system connect to Ethernet? If so, how do you test out connectivity?
Maybe you are lucky enough to have a PCI express connector on your target embedded system and you can just plug it into a desktop PC as a simple test and debug environment. USB is another possible choice. You may even have a favorite test and debug environment you use over and over so you can leverage your work over multiple projects.
Many times you need to create some custom data packets to send to the prototype unit. If you have access to a suite of various data packets, that's great.
If not, how do you create them? Do you use a programming language like Python or C++ to generate test data sets? Perhaps you have a library of common functions, you can use to create network traffic, video data, audio data, or even send them through compression or encryption processes.
By now you should get the general idea. The hardware platform and the code development tool chain are typically the first elements we think of when planning for to prototype an embedded system or any system for that matter. They can be the most visible parts of the prototype environment, but they are certainly not the only elements or methodologies we use.
I'm interested in hearing from you about the other elements of your prototyping environment. Please leave a comment below.
Do you use any of the tools or methods I describe above? Do you have some of your own you want to share? Maybe you have some secrets you don't want to tell about in detail. You could at least give us a hint, right?