(800) 806 - 4908
Software & Firmware Design
Post Office Box 235
Fort Garland, CO
81133-0235 USA
Direct (719) 206 - 2223

Software & Firmware Design

Code development is the primary focus of most engineering projects CDL has been involved with without exception. It is the functional heart of any design which uses simple state machines to supercomputer clusters and anything in between. Most embedded code is developed for a specific semiconductor device while software created for existing products like phones or pc's is usually developed to run in a specific operating system environment.

The software and firmware development strategy is defined by the applicable specification(s), development tools, processor & peripheral resources and available memory in the target system. Whenever possible, we use high level, object oriented languages such as C#. In certain single chip microcontroller environments, memory restrictions sometimes dictate that firmware be hand-coded in assembler.

Code is also created to program Field Programmable Gate Arrays (FPGA's) and Complex Programmable Logic Devices (CPLD's) These devices have generic arrays of logic cells connected to a programmable signal path matrix which allows the device to be configured with user defined functional hardware blocks. With these parts you can create application specific processors and accelerators. Sometimes you just have to do the math in hardware.

Source Code Management (SCM) and a Version Control Strategy (VCS) are critical tools in any development effort. It allows a designer or team to track and maintain changes to complex projects. CDL uses Git based VCS as a default and can easily adapt to clients using other VCS tools.

Software development languages that we support include, but are not limited to:

  • C, C++, C#
  • Java
  • JavaScript
  • Python
  • Visual Basic
  • VB Script
  • Vendor Specific Assembler & C/C++ Tools

A partial list of target device vendors we use can be found on our Technologies page.

Colorado Digital Labs has created software solutions for:

  • Embedded Applications
  • Network & Internet
  • Low Cost Consumer Products
  • Real-time Control Applications
  • Industrial Process Control
  • Motion Control & Robotics
  • Distributed Systems
  • Scientific & Medical Instrumentation
  • Data Acquisition
  • Man-Machine & Machine-Machine Interfaces (MMI)
  • Protocol Conversion
  • Diagnostics and Device Drivers
  • Windows & LINUX Based Instruments and Applications

All code that we create is structured, modular and extensively documented. All code is thoroughly tested before release and documentation within the code is typically 50-70% of the total content.

Code development issues are driven by client requirements, which can vary greatly and can have major impacts on schedules. Since this activity consumes the majority of time developing new products, or fixing existing ones, it's important to focus on achieving basic functionality first and getting end user input as soon as possible.