Software and Firmware

Development of programs and firmware

We have extensive experience in developing software for microcontrollers, FPGAs and PCs.

Modern development tools allow us to quickly and efficiently solve any problems.


The tasks we solve:

  • Develop software and firmware for CPU: Broadcom, Marvell, ST, TI, Atmel, Freescale, Analog Devices

  • Develop software and firmware for System-On-Modules: NVIDIA Jetson TX1, NVIDIA Jetson TX2, NVIDIA Nano, NVIDIA Xavier

  • Develop firmware for FPGA: Xilinx, Altera, Lattice

  • Develop drivers: Linux, FreeBSD, FreeRTOS, RTEMS

  • Develop Board Support Package (BSP)

  • Build and configure compilers, operating systems, and drivers

  • Develop of programs with a graphical interface for embedded systems

  • Development PC programs for testing and configuration devices


Our instruments:

  • Programming language – C, C++, Asm.

  • Hardware Description Language (HDL) – Verilog, VHDL, AHDL.

  • Software Development Kit (SDK) and Integrated development environment (IDE) – Qt, Eclipse, SlickEdit, Arm Keil, IAR Systems, CooCox and other.

  • FPGA design software – Quartus for Altera, Vivado for Xilinx and Diamond for Lattice.

  • Crosscompile systems – BuildRoot, OpenWRT, GCC, CrossTool-NG


Examples

Develop Board Support Package (BSP)

One of the main tasks is to develop platform support packages (BSPs).

The Board Support Package (BSP) includes:

  • Cross-compiler, libraries, and debugging tools
  • Operating system and drivers
  • File system with the necessary programs and libraries
  • The configuration files of the device
  • Primary and secondary boot loader
  • Scripts for partitioning, formatting, and writing memory

We have experience developing support packages (BSPs) for the following platforms:

  • NVIDIA Xavier Arm-V8
  • NVIDIA Jetson TX1 Cortex-A57
  • NVIDIA Jetson TX2 Cortex-A57
  • NVIDIA NanoBoard Cortex-A57
  • Marvell 88F6820 Arm-V7
  • Broadcom BCM53015A1 Cortex-A9
  • Freescale i.MX6 Cortex-A9
  • Atmel ATSAMA5D3 Cortex-A5
  • Atmel AT91SAM9G45 ARM9
  • ST STM32F3 Cortex-M4
  • ST STM32F4 Cortex-M4
  • ST STM32L1 Cortex-M3

Development of programs for testing devices

After the device is manufactured and the platform support package (BSP) is developed, it must be checked devices.
We develop a set of programs for testing devices.
The set of programs for testing is determined individually for each device:

  • Program for checking IO ports (GPIO, SPI, I2C, etc.)
  • Program for checking data transfer ports (Ethernet, USB, PCI, etc.)
  • Memory check program
  • Program for checking the display and calibrating the touch panel

Develop drivers

Some devices require driver development.
Driver development is a complex process that requires a lot of time and a highly qualified.
An improperly develop driver can cause serious errors in the operation of the device.
We have experience in developing the following drivers:

  • Driver for video sensor Sony IMX283
  • Driver for video sensor Sony IMX415
  • Driver for video sensor Sony IMX335
  • Driver for video sensor Sony IMX172

Develop firmware for MCU

For most devices, we use different types of microcontrollers.
For all the time we have developed a large number of programs of varying complexity.

Examples:

  • Reading and writing analog signals from sensors through ADC and DAC
  • Discrete device control via IO ports
  • Reading and writing data with microchips over serial buses: UART, SPI, I2C, PCIe, etc.
  •  Data exchange with other devices via wired protocols: Ethernet, USB, SFP, RS-232, RS-485, KNX, etc.
  • Data exchange with other devices via wireless protocols: Wi-Fi (802.11n, 802.11ac), Bluetooth, GSM, GPRS, 3G, LTE, NFC, RFID, Sub-1 GHz
  • Writing and reading from memory devices: SDcard, Flash, HDD, SSD, etc.
  • Information display on LCD and TFT displays
  • Development of logical and mathematical work algorithms

Develop firmware for FPGA

We use FPGAs for solve non-standard tasks.
The choice of the chip used depends on various parameters: cost, functionality, number of cells and etc.

Examples:

  • Develop firmware for the LVDS-to-MIPI CSI-2 converter, FPGA Lattice MachXO2
  • Develop firmware for Cypress STAR1000 video sensor, Altera Cyclone III FPGA
  • Develop firmware for the port expander RS-485, FPGA Altera MAX 2
  • Develop peripheral device control firmware, FPGA Xilinx Zynq-7000

Develop of programs with a graphical interface for embedded systems

For devices that need to display information on the screen, we develop programs with a graphical interface.
You can display any useful information on the screen: numbers, graphs, levels, etc.
The device can be controlled using the touch panel.

Examples:

  • The program for control the spirometric monitor . The program makes monitoring of respiratory indicators: pressure, flow, oxygen.
  • ECG monitor. The purpose of the program is to display the ECG on the screen of the mobile device and output data to the thermal printer.
  • GSM / GPRS modem management program. The purpose of the program-operational communication with the heart center and wireless transmission of cardiograms.

Development PC programs for testing and configuration devices

For configure and test devices, we develop programs for PCs.
PC programs allow you to display the results in the form of graphs, output intermediate data of algorithms and perform configuration and calibration of devices.
Without these programs, the development of a number of devices is almost impossible.

Examples:

  • Program for calibration and display of analog data in the form of graphs from the Board of amplification and processing of low-frequency analog signals
  • Program for calibration and display of analog data in the form of graphs from the spirometer monitor
  • Frame setup and display program for optical positioning device
  • Setup and testing program for GSM modems
  • Configuration and testing program for KNX TP2 modules
  • Testing program for USB — KNX TP2 and USB — TTL UART/RS-232/RS-485 converters