Our Services

Embedded Firmware Engineering

Embedded firmware is low-level code that initializes, manages, and interfaces hardware. Firmware is vital in embedded devices for performance, reliability, and security.

Trego specializes in all the following aspects of embedded firmware engineering.

Foundational Embedded Firmware

Foundational firmware provides essential tools and services necessary for embedded device operation.

  • Bootloaders: UEFI, MCUBoot, uboot, ST Open Boot, OpenBLT, TianoCore, Flash Bootloader
  • Secure Boot
  • Custom Drivers: Chips, FPGAs, modules, cards
  • Hardware Security: TPM 2.0; ARM Trusted Firmware, TEE, TrustZone
  • Linux Boot: GRUB, SYSLINUX, rEFInd, systemd-boot
  • Optimizations: Performance, memory, power consumption
  • Protocols: CAN, Zigbee, BLE, and others
  • Hardware Initialization
  • OTA Updates: Firmware, OS, Applications

Custom Device Drivers

Hardware devices require drivers for initialization, control, and interface to OS’s and higher-layer code. When novel hardware devices must be used, new or customized drivers are required.

  • GSML
  • FPDLink
  • MIPI-CS2
  • SERDES drivers (TI 960/954/953, Maxim 96717/96716)
  • GStreamer 
  • OpenMAX
  • FFmpeg
  • Live555
  • NVIDIA V4L2 path

Baseboard Management Controller (BMC)

BMCs bring remote management and monitoring to servers and embedded devices. Trego engineers innovative BMC solutions with the latest open-source code and SoCs.

  • OpenBMC
  • Nuvoton SoCs
  • Redfish
  • RunBMC
  • DC-SCM
  • Customizing and integrating open-source packages
  • Custom driver development
  • Hardware security module development
  • Kernel and user space development
  • Docker environment

Important Things You Should Know

QUESTIONS & ANSWERS

Embedded software engineering is the process of creating software that is optimized to perform specifically-defined functions as an integral part of some larger product. Embedded software engineering also frequently entails optimizations for code size, performance, memory, storage, and other operational characteristics to meet resource constraints that are imposed by the hardware device it is running on. 

Embedded software engineering usually involves the testing and validation of the code as part of the overall device, in its interactions with real-world processes or functions it is responsible for.

Embedded software engineering differs from embedded software development in the scope of its services and the nature of issues it considers. Software development is primarily coding, while software engineering looks at the embedded system holistically and the software as part of that.

Embedded software is code that runs on fixed-function devices not typically thought of as computers. Embedded software performs specifically-defined functions as part of some larger device or product. Embedded software is the only code running on the device, and it cannot be replaced by the user with different code. 

Embedded software is written and optimized for the specific hardware it runs on, and oftentimes the hardware is resource limited in terms of memory, storage, or processor speed. Lastly, embedded software often must dynamically manage power consumption and provide remote management capabilities so that the device can be managed without IT or support personnel on site.

Sometimes there is confusion between these terms, and they are sometimes used to mean the same thing. However, in reality, embedded firmware is much closer to the hardware then embedded software. Firmware acts as a bridge or abstraction layer for the hardware. It also runs right after the hardware comes out of reset and before the OS is executed to perform tasks such as booting, hardware configuration, OS loading, and hardware attestation and authentication. Firmware is often invisible to users and it is the base all other software relies on.

Embedded software on the other hand implements user-visible features. It usually runs on top of an OS.

Trego’s primary OS expertise is in embedded Linux. Specific distributions where we have experience are Yocto, Debian, Fedora, Buildroot, OpenWRT, and Ubuntu.

Trego offers two main financial models to our customers—Hourly and turnkey project pricing. Further, we can work as part of your team, or we can provide a complete turnkey development program as an independent effort.

Yes! Trego offers software and product architecture services, where we offer a full array of early development services from initial ideation and specification through development, testing, and deployment. Trego is accustomed to working to customers ranging from those with large and highly capable internal software teams to startups or lean organizations with no internal development resources at all.

Trego’s developers are experts in embedded systems with years of experience and demonstrated records of technical achievement and customer satisfaction. The majority of our developers are located in Israel, and others are located in Eastern Europe.

Each question and answer are an item in a Toggle Widget. Change the number of items and customize their content in the editor panel.