Software & Firmware Design
|
Post Office Box 235
Fort Garland, CO 81133-0235 USA Direct (719) 206 - 2223 |
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:
Colorado Digital Labs has created software solutions for:
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.