System and Embedded Software

Nuvation offers a full range of embedded software development services ranging from simple bare metal solutions to sophisticated distributed embedded systems. We provide embedded software development as a standalone service, or integrated with our custom hardware and FPGA design services. Our software development methodologies have been perfected over 20 years and 800+ electronic design projects and are supported by a broad suite of leading software development toolsets. We are seasoned and well versed in modern software technologies and best practices such as agile methodology, continuous integration, comprehensive testing, and strict branching workflow. Our extensive experience with software design and development includes:

  • Design documentation – specifying the work to be done before implementation, during which we engage in:
    • Prototyping as needed to test feasibility
    • Researching off-the-shelf tools and technologies to reduce project costs and accelerate schedules
  • Design implementation – primary coding, code re-use, vendor code library integration, peer reviews
  • Design validation – unit testing, system testing, integration

Software Expertise

Embedded Device

  • Bare metal and embedded OS, e.g. Linux, Android, Free RTOS, MQX RTOS, QNX, OpenEmbedded
  • Processor Families, e.g. ST Micro STM32, Texas Instruments MSP430, Atmel AT-SAM, NXP i.MX, Microchip PIC, Nordic nRF5x, Dialog DA146xx
  • Custom bootloaders and board support packages – drivers and API

Communication Protocols

  • Network protocols, e.g. Modbus TCP/RTU, UDP, TCP/IP, DHCP, HTTP, SDP, RTP, RTSP, RTCP
  • Wireless protocols, e.g. Wi-Fi, Bluetooth, Bluetooth Low Energy (BLE), SimpliciTI, ZigBee
  • Communication buses, e.g. UART, SPI, I2C, CAN, MODBUS, PCIe, USB UVC

High Performance

  • Real-time execution over multiple processors
  • Multi-threaded / multi-processor systems
  • Low-latency designs for video (including streaming with H.264) and other quick-response applications

High Reliability

  • Distributed monitoring and control firmware for large-scale distributed systems
  • Critical applications in the medical, defense, and aerospace industries

Low Power

  • Battery-powered, e.g. wearable devices
  • Energy harvesting
  • Dynamic power scaling

System Integration

  • Human Machine Interface (HMI)
    • LCD / AMOLED displays
    • Resistive / touchscreen
    • Wireless remote
    • Buttons / keypads
  • Sensor Integration with optional feature extraction
    • Audio
    • Video
    • Analog / Signal
    • Digital Signal Processing
    • Inertial Measurement Unit (IMU)
  • Bluetooth LE Profiles and Services (standard and / or custom)
  • State Machines (FSM)
  • Resource Management (e.g. power, peripherals, memory, DMA, etc.)
  • Battery Management Systems (embedded)
  • Clock and Power Management
  • Firmware Update Service (Over-the-air / Over-the-wire)
  • Non-volatile Persistent Storage solutions
    • Wear leveling
    • Standard or custom file system

Mobile and Web (Full Stack) Services

  • Native app development for iOS and Android
  • Cross-platform app development using Cordova
  • App deployment to App Store for iOS and Android
  • Architecture and design of commercial and industrial systems
  • Distributed computing for Internet of Things devices and wireless sensing applications
  • Experience developing and using custom server architecture
  • Development of REST web services and web servers with Java, Ruby, and Node.js
  • Database development – small-scale as well as cloud-based
  • Cloud computing solutions that are highly scalable, optimized for performance, reliable and secure
  • 3rd party API integration
  • Testing with jUnit, Selenium, Appium, and Robot

Manufacturing Test

  • Design of testing process
  • Coding of test fixture software
  • Coding of cooperating test software within Device Under Test (DUT)

Development Tools

GNU development tools (Make/GCC/GDB/G++), Code Composer Studio, MPLAB, Microsoft Visual Studio, Keil uVision, Eclipse, IAR Embedded Workbench, Atmel Studio, Code Warrior, LabVIEW, MATLAB/Simulink, BitBake (e.g. OpenEmbedded, Yocto), buildroot (e.g. OpenWrt, DD-WRT), Java SDK.

Technologies

Nuvation uses the technologies that are best suited to your needs. We have experience with Obejctive C/C++, Python, Swift, Node.js, JavaScript (Angular, DoJo), HTML5 and PHP, like Amazon Web Services, Hibernate, Spring, and more.