Alex @ obddiag.net has published a new open source OBD adapter which provides you a serial interface using the ELM327 command set and supports all OBD-II standards.
The adapter kit schematic is shown here. It is built around NXP LPC1517 Cortex-M3 microprocessor with 64 kB program memory, but can accommodate another chip from same family like LPC1549 with 256 kB if required. The NXP chips has a ROM-based bootloader that supports loading a binary image into its flash memory using USART or CAN. All the software is written in C++ for NXP LPCXpresso IDE which is essentially using GNU toolchain for ARM Cortex-M processors. However, it can be compiled with other pre-built GNU toolchain, like GCC ARM Embedded or even with Keil uVision IDE.
Open-source OBD adapter – [Link]