We are specialists in software development at IntelliDesign with broad ranging experience across diverse hardware platforms. Our software engineers work seamlessly with our electronics engineers and industrial designers to create embedded firmware and software that will exceed your expectations.
From board support packages, bare metal firmware and custom device drivers to embedded Linux applications and graphical user interfaces our diverse range of software engineers will help you bring your next product to life.
Specialists in embedded software for electronics
Certified software for medical devices under ISO 13485
Ensuring products survive in remote and harsh environments
Certified design process to aerospace standards
IntelliDesign have customers in medical, mining, industrial, defence and aerospace industries, so the team has developed specialist skills and knowledge in the development of robust software solutions for rugged devices that are used in these mission critical applications. These include highly regulated products that operate for extended periods in harsh environments with long-term in-service reliability, and low power battery operated IoT devices that operate autonomously and send wireless data to cloud servers.
Typically characterised by their low power or real time performance requirements software running on embedded devices can be found on everything from medical devices to pool chlorinators to satellite battery management systems to V2X fleet management systems.
IntelliDesigns team of software engineers are experts in embedded device software development having designed and delivered many of these products.
Firmware bridges the gap between hardware and software. Firmware runs extremely close to the electronic architecture and requires an expert understanding of memory management, hardware capabilities and communication protocols.
At IntelliDesign our engineers have years of experience supporting a variety of peripherals, sensors and actuators by creating customised or new device drivers for bare metal or Real Time Operating System (RTOS) based applications.
We have experience with various architectures including ARM,PowerPC, x86,STM32, ESP32, NVIDIA Jetson, Nordic NRF91, NXP i.MX, PowerQuicc. We can also quickly prototype solutions using Arduinos or Raspberry Pi’s.
We can create custom drivers and APIs for these devices to enable WiFi, Bluetooth Low Energy (BLE), ZigBee, LoRaWan and HaLoW wifi.
We have developed many devices that have a Human Machine Interface (HMI) or some type of graphical user interface (GUI) that enables intuitive and visually appealing interfaces for touchscreens and monitors. We have experience in the development and implementation of these user – centric GUIs guided by our user experience (UX) process based on customer needs, and the use wireframing and interactive prototyping.
GUI development also extends to PC applications, and front-end web page development for cloud-based solutions requiring a web interface for interaction with back end database management tools.
A Board Support Package (BSP) is crucial for embedded system development as it provides the foundational software required for the operating system and applications to interact with the hardware effectively. It contains a layer of software with the operating systems including boot drivers and tools for the application software. The BSP acts as a bridge between the hardware and the higher-level software, ensuring that the operating system can interact correctly with the hardware components.
We regularly use tools such as Yocto for creating custom board support packages and also develop custom builds of OpenWRT to suit proprietary hardware.
Embedded systems usually operate on strictly limited resources for processing power, so we use concise programming languages to develop streamlined and effective application software, where each line of code helps to boost the system’s performance.
We specialise in classical low-level systems languages such as C, C++, VHDL and also support newer languages such as Rust. We can also program in Python and JavaScript if required.
We have experience in developing cross platform applications creating an efficient use of code. Re-use saving time and money.
IntelliDesign can create software applications that run on mobile devices such as smartphones and tablets. Mobile application development is a dynamic and ever-evolving field but include native apps that run on Android and iOS using platform-specific languages and are downloaded from the app stores, or web apps which are mobile-optimised websites that look and feel like an app but run in a browser with a URL link.
The IntelliDesign Software Development Lifecycle (SDLC) is a structured process for developing software applications. It encompasses a series of phases, each with specific activities and deliverables, aimed at producing high-quality software that meets or exceeds customer expectations. The SDLC provides a framework for planning, creating, testing, and deploying software applications.
We use a combination of approaches to SDLC including agile methodology with planning, development, and testing in short sprint cycles featuring scrum and kanban approaches. This agile methodology is used within our traditional stage gated system but also incorporates and iterative approach where we are continually refining and expanding the software through repeated cycles, each iteration building on the previous one with customer feedback loops to ensure that we are delivering a product that meets the expectations.
We provide Bootloaders that load the main firmware into the MCU/MPU during startup and the ability to update firmware remotely through over-the-air (OTA) updates. We can also include tools for monitoring system performance and diagnosing issues in the field.
IntelliDesign’s software engineers use a layered approach to software verification, using automated work flows we ensure quality at every stage of development.
The software landscape is evolving at a rapid pace and at IntelliDesign we promote a culture of constant learning. Keeping pace with software evolution requires a proactive and adaptive approach to remain responsive to changing requirements, be competitive and maintain customer expectations. We encourage our team to stay on the forefront of new technologies and embrace innovation in new methodologies, tools and methods.
We use artificial intelligence (AI) in our development process including Github Copilot to increase the productivity and efficiency of our developers.
For a complete list see our
Want to drop us a line? You can get in touch by filling out the form below and we’ll get back to you as soon as possible!