(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 programmed devices from 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 & environment, processor & peripheral resources and available memory resources in the target system. Whenever possible, we use high level, object oriented languages such as C/C++, Java and others. In certain single chip microcontroller environments, memory restrictions sometimes dictate that firmware be hand-coded in assembler. Code created for PLC based applications is usually developed with tools the PLC vendor provides.

Code is also created to program semiconductor devices called 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 as a custom functional hardware block. With these parts you can create custom processors and accelerators. Sometimes you just have to do the math in hardware.

Source code Version Control Strategy (VCS) is an important tool in any development effort. It allows a designer or team to track and maintain changes to complex coding 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
  • Java Script
  • Python
  • Visual Basic
  • VB Script
  • Vendor Specific Assembler & C/C++ Tools

A partial list of target devices we have used 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 and Logging
  • Man Machine Interface (MMI)
  • Data Communications & Protocol Conversion
  • Diagnostics and Device Drivers
  • Windows & LINUX Based Instruments and Applications

All code that we create is structured, modular and extensively documented. Our design process emphasizes creating software development strategies and planning before coding efforts begin. 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. MVP as a strategy is a good thing.