Code

Much of my recent work has been released as open source. The largest collection of original and contributary work is on my github page, with a few projects still on SourceForge.

Complete Projects

BSPACM

BSPACM is a C framework for developing applications on Arm Cortex-M microcontrollers. It serves a similar role to BSP430, providing abstractions that allow source to be shared across vendors and MCUs. It leverages ARM’s CMSIS interface, preferring the control provided by direct manipulation of module register structures over the “convenience” of vendor-specific wrapper functions. It is made available under BSD-3-Clause.

BSP430

BSP430 is a C framework for developing applications on Texas Instruments MSP430 microcontrollers. Similar to TI’s “MSP430Ware”, BSP430 covers a wider range of MSP430 families and supports a higher-level interface abstraction. It is made available under BSD-3-Clause.

PyXB

PyXB is a pure Python tool and library for Python bindings generated from XML Schema documents. It can generate bindings for highly complex schemas across multiple namespaces, and supports customization of the bindings for specific applications. It was designed to support validation of parsed and generated documents against the schema, helping to ensure interoperability.

MSPGCC

MSPGCC is a suite of patches and packages that provide a complete oolchain for TI MSP430 microcontroller application development, covering assembler/linker (binutils), compiler (gcc), debugger (gdb), C library (msp430-libc), and chip-specific headers (msp430mcu). Originally created in 2001 by Chris Liechti and Dmitry Diky and supported by dozens of contributors over its first decade, I took over evolution and maintenance in spring 2010, refactoring and validating the implementation and adding the first complete open-source support for MSP430 applications using 20-bit–aware code and data. Though MSPGCC entered end-of-life in late 2012 when Texas Instruments and Red Hat teamed to provide a clean-room implementation suitable for merging into upstream GCC, as of early 2014 it remains the most robust, complete, and space-optimized open source MSP430 toolchain available.

Minor Works

CoAPy is a second-generation reference implementation of the IETF Constrained Restful Environments Constrained Application Protocol for machine-to-machine command and control applications. It remains unfinished due to architectural ambiguities in the underlying specification that make it difficult to implement without support from committed stakeholders.

fragpool is a memory management library designed for processing packetized data in a network stack that uses stream-oriented data/link layer communications. Designed originally for HDLC support in a PPP implementation contributed to TinyOS, it is also the basis of internal work on wireless sensor networks.

embtextf is a refactored and repackaged version of the *printf(3c) capability of msp430-libc, suitable for use in embedded applications where the standard C library is newlib (e.g. GCC ARM and upstream MSP430). It substitutes complete formatted text support at a cost of less than 3 KB code, compared with more than 20 KB when the native newlib libraries are used.