Hardware Reference
In-Depth Information
We have seen some of these benefits with the Wiring language and integrated develop-
ment environment (IDE), which were created by Hernando Barragan and extended by the
Arduino project. To date, Wiring has been ported to more than a dozen different micro-
controller architectures, along with many IDEs for the different microcontroller families.
As a consequence, people can move between microcontrollers with greater ease and
products that are programmable with Wiring are ripe for porting to different microcontrol-
lers. This work is still quite fragmented, as there are many individual forks of the Wiring
project, but these efforts hint at the demand for unified programming environments and
libraries that work across multiple microcontrollers.
Behind the scenes, standard compilers have played a big role in unifying programming
environments and libraries. Microcontrollers often require special language extensions to
support programming languages like C/C++, and each microcontroller architecture re-
quires changes to existing compilers in the form of a new “backend.” Without standard
open source compilers, such as GCC and LLVM, it would not be possible to truly write
once and deploy anywhere.
Bootloaders and Programming Tools: Making Traditional
Firmware Softer
As mentioned earlier, the term “firmware” is a double entendre pointing to software that
runs on hardware (i.e., soft + hard = firm), and highlighting the fact that it is usually harder
toupdatethangeneral-purposesoftwareonceaproductisdeployedtoendusers.Ofcourse,
open source hardware is all about letting users modify the products they use. Thus getting
new software onto your open source hardware device should be made as easy as possible.
While many electronic products may be programmable during production, or possibly
in the field with expensive specialty equipment, it is important that microcontroller-based
open source hardware should be easily programmable with common tools. By employing
a USB-based bootloader, a microcontroller can be programmed in-system by simply plug-
ging in a standard USB cable and connecting to a computer. If you really want to enable
your end users, care should be taken to simplify the setup of the host computer, including
drivers or software to run there.
Search WWH ::




Custom Search