Programmable components are used in almost every electronic product found on today’s market. Even if only a trivial logic function is requested, a microcontroller unit (MCU) is usually chosen to be used instead of discrete components such as diodes, transistors or operational amplifiers. Firmware development requires close cooperation with the customer, especially when dealing with user interfaces, in order to design the device functions according to customer wishes. We have been dealing with firmware design for several years, and we have expertise mainly in ST Microelectronics architecture (both 8 and 32 bit cores). However, if required, we are able to work with manufacturers such as Microchip, Atmel, NXP, or any other. We have tight partnership with all the big MCU players on the market and their vendors, which gives us direct access to the latest technology available. Firmware design is closely connected with hardware design. Therefore, the two processes often start parallel to each other, which considerably shortens development time. The timeline that is required for professionally done and thoroughly tested firmware design depends on the complexity of the desired product. For instance, a simple switching function that depends on user input can be done in weeks, while the development of a network with tens of nodes communicating with each other will take months. In order to optimise development time we have at our disposal a library of various ready-to-use solutions such as PWM control, analogue measurements, buck/boost regulation, communication interfaces (UART, I2C, SPI, etc.), communication protocols (DC-PLC, USB, DALI, TCP/IP, DMX, etc.) and others. To achieve the creation of efficient and safe firmware we are using the standard MISRA C:2012 during the design process.
The analysis of a firmware solution is a fundamental step in the final design. It results in the estimation of hardware requirements, MCU selection and a flow chart. Customers are required to provide a list of features they expect the firmware to incorporate, based upon which the firmware designer will decide if it is suitable to use an MCU. If so, the designer will go on to provide an analysis of the solution including an estimated memory size and details of any peripheral units that may be needed, such as communication interfaces, pulse width modulators, timers, analogue measurements, etc., as well as the size of the required MCU (the number of pins). The next step is to select a suitable MCU. At this point, the customer may request that a particular manufacturer be chosen. The final step is to prepare the firmware flow chart, which simply outlines the firmware solution, similar to the schematics of a hardware design.
Once the firmware solution has been analysed and all subsequent output prepared, the next phase is to design the firmware itself. This will result in a functional prototype that can be tested and all corresponding documentation. Firmware design can be compared to PCB routing in hardware design. The firmware designer uses ready-to-use functional blocks or creates completely new ones and then defines the relationships between the blocks. The outcome of this stage is functional firmware tested on a real prototype. Full documentation is now prepared, which includes source code, any necessary software tools and a comprehensive description of the design.
There is a world of difference between firmware designed for a prototype device and that needed for serial production. For production, it is necessary to also take into consideration the workflow needed for the programming of devices. We can either provide device programming within our own facilities or prepare for you a programming tool that you can use in your own production facilities. It is common that, during the first months of use, some ‘bugs’ will appear, and you may also have ideas about how to improve the product. For this reason, we are also happy to correct and update firmware according to your needs and desires.
Software is the most important part of an overall system design as this is the only part the customer really sees. There are hundreds of thousands of software programs on the market that can do almost anything you could desire, yet, these programs are so diversified and specified that it is near impossible to find one that does everything you need in one package, necessitating the creation of something precisely tailored to your needs. Our software design engineers have extensive and wide-ranging experience in the design of all types of software. We are able to design software for any PC or portable device platform and can provide truly tailored solutions for any kind of control software in cooperation with our hardware and firmware designers. Our quality outputs are characterised by their usability, portability, maintainability, reliability and security. Using smart programming approaches, we are able to develop qualitative software solutions within very short timeframes. Furthermore, we use proven design patterns to ensure best practice and rapid development. Alongside this, we use the Unified Modelling Language (UML) to allow us to combine techniques from data, object and component modelling. We also use refactoring to make future modifications updates easier and faster to implement.
Software brings added value to a product when it precisely meets customer needs, and can, if appropriate, be controlled and set-up remotely. Its effective design and operation will minimise hardware requirements and maximise performance.
Labware is a specific kind of software that automates operations in laboratories or in industry applications, controls machines and measuring instruments, and acquires data and process it. Our solutions are based on the LabVIEW development environment, which enables short development cycles, user-friendly GUI design and a large number of libraries for data acquisition, data processing, data generation, mathematics, statistics, etc. LabVIEW (Laboratory Virtual Instrument Engineering Workbench) is a development environment for a visual programming language from National Instruments. It is widely used for instrument control, data acquisition or industry automation. Another advantage is that all hardware provided by National Instruments is supported by LabVIEW and using this hardware, the development cycle is even shorter. LabVIEW-based applications are very useful in data acquisition, where data acquisition systems can be controlled via PC or can run as stand-alone applications. A large number of various measurement devices from different manufacturers can be integrated into the data acquisition system very effectively, making data processing a particular strongpoint of LabVIEW. A large set of functions for data processing and mathematical analyses enables fast implementation of the application. After acquisition and processing, data can be easily exported to reports. A very interesting option is connectivity with databases. To control fast processes, FPGA-based devices from National Instruments can be programmed by LabVIEW with outstanding performance. For industrial automation, LabVIEW offers machine control and machine vision. Another noteworthy possibility is the development of LabVIEW device drivers. With all these features, we are offering complete turnkey solutions for fully automated customer defined measurement and process units.
Data acquisition systems are responsible for measuring and sampling electrical or physical quantities and their consecutive processing. A complete data acquisition system is composed of sensors, measurement hardware and a computer with programmable software. Such a solution is powerful, flexible and cost effective.
Automatic measuring systems are useful when large numbers of electrical or physical quantities need to measured, necessitating the use of many different data acquisition devices. It is possible to synchronise the functions of all devices using a programming environment. The basic steps involved in this synchronisation are the setting of hardware parameters, acquisition of data, evaluation of that data and the creation of a measurement report.
Device drivers act as the software interface with the hardware device and should contain all the functions implemented within the device. The main purpose of the driver is to create a higher-level application without requiring that users have detailed knowledge of the device hardware.
Data acquisition is the term used for the process of manipulating data in various ways in order to obtain meaningful results. These manipulations include mathematical calculations, signal processing and report generation.
Machine vision is a technology used for automated inspection of and within industrial processes to achieve higher product quality. Other uses include the control of production processes and industrial robots. Machine control and vision ensures high industrial process throughput and reduced production costs.
Complete turnkey solutions can be realised in one project. The project includes the hardware, firmware programming of the designed hardware, development of a device driver to act as the interface between the hardware and higher-level application and development of the control application.