Software Development

Thomas Instrumentation, Inc. has been developing software for complex embedded systems since its establishment in 1971. We currently have 4 programmers whose software language experience includes but it not limited to Assembly, C, C++, C#, and JAVA. They’ve written programs for a wide variety of microprocessors and operating systems. Our team collaboration and experience are why we’re confident we can help you no matter what the software project entails. For an expanded list of software expertise, please either scroll to the end or click here.

Version Control

One of the most important parts of good software development is having a version control system. We understand how critical the software releases are for our customers. All our development and production software is managed through an SVN version control system. It is also backed-up to a redundant server at an external location reducing the risk of data loss. The way we’ve setup our SVN system makes it easy for us to quickly track down the latest software version released or even a version from 3 years ago in cases where the customer may have lost track of their copy. We can also work with Git or Mercurial version control systems if your software is currently stored on those platforms.

Upgrades

Our software development team is no stranger to a customer’s need for updated code. Whether it’s an update to the user interface, an added calculation, or feature, our programmers are prepared for in-field updates. If we’ve designed your PCB and written its code, then you’ll have a software bootloader and at least one way to update that software on your board. The typical methods of updating we use are USB, SD card, microSD card, Serial, CAN, I2C, Ethernet, and even wireless. In these cases, our programmers simply use that bootloader and one of those upgrade methods to load the new software release. If we didn’t design your board or software, then things get a little trickier. That said, we can usually make something work.

Working on Other’s Software

While most of our work focuses on products for which we wrote the original software, we do work on other’s programs too. In these cases, customer come to us with existing software and want us to either take it over, upgrade it, or just consult on some problems. These projects usually take more time as we must first familiarize ourselves with the project and coding style, but we do this often enough.

Test Software

If a customer has opted to have their product tested, then Thomas Instrumentation develops a custom test stand and test software. This custom software is written to verify that every input, output, sensor, motor driver, user interface, etc. is fully operational. When a customer goes this route, they know that every board they receive has passed a rigorous, functional software test.

The following is a sampling of our software department’s expertise:

Standard Microcontrollers

  • ARM® Cortex®-M4 LPC4088 – 32-Bit
  • ARM® Cortex®-M4/M0 LPC4357 – 32-Bit, Dual-Core
  • ARM (NXP) ARM7 – 32-bit microcontroller
  • HCS08 (Freescale) – 8-bit microcontroller
  • HC9S12 (Freescale) – 16-bit microcontroller
  • MSP430 (TI) – has a built in sub-GHz RF core (CC1101 radio)
  • SI1060 (Silicon Labs) – has a built in sub-GHz RF core (SI4463 radio)

Communication Protocols

  • CAN
  • Ethernet (TCP/IP)
  • Modbus (TCP/IP or RS485)
  • USB
  • Serial
  • DeviceNet
  • Profibus/ProfiNet
  • Zigbee WPAN
  • RF Wireless (Custom protocols in ISM band)
  • Bluetooth, WiFi, LoRa, Cellular

Operating Systems

  • Windows
  • Linux
  • Mac
  • iOS
  • Android

Software Languages

  • ANSI C
  • C++
  • C#
  • Java
  • Python
  • Assembly

Foreign Language Support

  • Segger emWin Font Converter – Changes any Window’s Font to “C” for use on embedded systems.
  • PO Files – text files in Windows font which contain foreign language translations for a project
  • Currently support systems in China, Germany, Poland, Spain, France, Italy, Czech, USA, & more

Touch Screen Displays

  • Segger emWin License – ability to personalize graphics for client’s display
  • Fine tune code for fast screen load times
  • Programmed for customizable responsiveness to touch