MicroCode

Imagine the Complexity

Radio - Hardware - Software - Firmware - Linux - 5G - Management - Testing

This work is MicroCode home base
Developing Embedded Software
for the High-Tech industry

Mobile 5G Radio Unit



Open Radio Access Network


The 5G Radio Unit (RU) is what makes 5G mobile technology so innovative. It enables hundreds of units across a city to be connected via fiber to a single, central hub.The RU is a standalone device that transmits wireless signals between the network and the air. It follows the O-RAN standard, which makes it interoperable among mobile vendors.Its development demands the best teams to work together in perfect harmony. At the heart of that effort, software leads the way.Our extensive experience in wireless broadband has allowed us to lead the development of a complete industry-leading O-RAN solution.This is a multi-year, high-level embedded systems project. It requires an unmatched understanding of every layer of the system.


"Good things come in small packages"


Micro Processors


Meet the hidden work of an embedded team: a clean product born from a complex maze of technologies. Whether you use a System on Module (SOM) or build with discrete components, the embedded team is deeply involved.We bring up the board and provide the final software platform. The result is a clean, reliable infrastructure that is completely independent of the underlying hardware.We work alongside hardware engineers, communicating effectively and bridging the gap between disciplines. Together, we are a complementary team that diagnoses issues in both hardware and software, ensuring a fast and smooth development cycle.We take full charge of the entire software, from initial specification and methodology to final implementation, bringing life and intelligence to the hardware.


Real-Time Programming

Real-time programming is a specialized expertise reserved for a select few. It involves creating deterministic programs that must execute at a precise time, every time.Unlike a standard task-driven system, real-time code is interrupt-driven and demands the precise management of multiple DMAs, interrupts, and timers. It often uses multi-core processors for parallelism and a math co-processor for high-speed computation.Due to the nature of this work, the visibility into the system is very low, making development and debugging incredibly challenging.Our Solution: The Simulation SkeletonWe overcome these challenges with our proprietary simulation skeleton. This unique framework allows all code to be written, tested, and verified on a Windows simulation environment before deployment on the embedded processor. We simulate various data inputs, enabling single-step debugging of functions and simultaneous execution across all cores.

An example of our work is a system that processes 1 GSa/s (billion per sec) of A/D samples, performs complex mathematical operations, and produces a verified output signal with flawless precision.This level of performance requires the kind of specialized skills and experience we bring to every project.


Linux


Linux is the best thing that can happen to an embedded system.
It boosts a device's capabilities many times over, turning it into a powerful computer.
While its vast ecosystem gives you everything you need, it comes with a cost:
it requires skilled adaptation.
We are masters of this adaptation, handling the complexities of hardware, libraries, and the kernel itself. We don't just use Linux; we build it from the source code.Our unique approach allows us to run Linux applications on a Windows environment, treating Linux as a powerful runtime, not just a development environment.The final result is a versatile device that is ready to be used by anyone, built with the power and flexibility that only a true embedded expert can deliver.


Software Maturity


At the core of our service is meticulous software design.
We don't just write code; we engineer solutions that are robust, scalable, and easy to maintain.
We build our solutions using Object-Oriented Programming (OOP) in C++ and C#, a methodology that ensures a solid foundation for the project. This approach leads to a smooth development process, with a high degree of predictability and a clear path for future growth.What truly sets our work apart is the clarity of our code. We take immense pride in writing visually clean and well-documented code with consistent naming conventions.Any developer can open a file from our project and confidently understand its function, ensuring a transparent and maintainable solution for years to come.



Our Services


We go far beyond traditional outsourcing,
we embed ourselves directly into your daily DevOps workflow.
We foster a fruitful collaboration and are
always ready to take the lead.



About Us


Founded in 2005 and incorporated as an LTD in 2011,
Microcode works behind the scenes for Israel's leading high-tech companies.
We provide crucial support to both major corporations and startups,
helping to accelerate new projects from concept to completion.
We are located at Modiin city, Israel.


Contact


[email protected]


O-RAN

The 5G Radio Unit is more advanced than a full 4G base station. It can be used indoors to create a private network for applications like industrial automation.Data is transferred as 10 Gbps IQ samples. This signal passes through a Linux system, over a PCI bus, to an SDR modem, and finally to the Radio Unit. This complex transfer chain involves a massive amount of software.Our extensive software development efforts have produced a robust, end-to-end solution. Key areas of focus include:Radio and Motherboard Development:
We developed and integrated drivers for radio and motherboard components, including bare-metal and Linux drivers for chips like DDR, PCI, I2C, and Ethernet. We also created testing utilities to ensure seamless integration and functionality.
O-RAN Application: We built a core O-RAN application that manages traffic flow from Ethernet to the modem and RF. This includes decoding and encoding the eCPRI protocol and extracting PTP timing. The application provides a user-friendly, Cisco-like CLI for management.Netconf and Software Management: We integrated the standard Netconf protocol to manage hundreds of system parameters over the network. Our team also designed a comprehensive software update system that creates download packages, manages multiple firmware images on eMMC, and provides a "back to factory default" recovery option.Modem and OS Integration: We integrated a third-party C source code for the modem, which primarily handles Fast Fourier Transforms (FFT), into a dedicated ALU. The main processor runs a customized version of Debian, where we’ve added our own kernel and driver modifications. We also provide real-time support using FreeRTOS on an external CPU.

MicroProcessors

We have completed numerous projects over the years, using a wide range of chip vendors. Our experience is built on these foundational technologies, including:

TypeExample
ProcessorsARM, Tensillica, Nxp e200
Small CPUTexas Instruments Tiva, STM32, Nxp Kinetis
Large CPUTexas Instruments Sitara, Nxp LS/LX cores
Free OSTI-RTOS, NXP-MQX, FreeRTOS, Linux
SBCBeagelBone, RaspberryPI, Nxp LS1046A-RDB

You can boost your project with a powerful real-time inexpensive ARM processor. For as little as $10, you can get a processor with a complete, royalty-free software stack, including a real-time OS, networking, USB, and more. We can turn this affordability into a competitive advantage for your project.We recently completed a major project using the NXP Layerscape LS1046A. This powerful processor, with its hardware-accelerated support for 10G traffic and IP routing, was the foundation for our custom Linux-based system.


New Projects

We handle complete project delivery from start to finish. Think of us as your on-demand development team .With our deep experience in the full software development lifecycle, we manage everything from gathering requirements and writing documentation to conducting feasibility studies, building simulations, and creating testing tools.Our role typically fits one of these scenarios:

TypeSituation
1You have a new concept but lack the team to build it.
2You need to show a working concept model in a very short period of time.
3Your team is focused on a current project, and you need a new, parallel project delivered quickly.
4You find outsourcing to be more cost-effective than training and hiring full-time employees.
5Your existing team needs to accelerate development with proven leadership and expertise.

From initial requirements to final completion, we take full responsibility and lead the entire process.


Project Enhancement

Need a temporary boost for your project? We're here to help.Whether you're facing an unexpected staff shortage, a tight deadline, or a new requirement, we can quickly integrate into your daily workflow.Our ramp-up time is swift, and we become fully productive fast. We understand development culture and communicate effectively with team members.You get the benefit of our experience without changing your team's existing hierarchy or task assignments.Here are few exaples:

TitleContent
Software UpgradeImplemented a secure software upgrade process via network or USB, with support for signed packages and multiple image partitions (backup, current, and default).
Model-View-Controller (MVC)Completely redesigned the display system using an MVC architecture, resulting in a cleaner, more robust, and easier-to-maintain user interface.
System RedundancyDeveloped a high-availability solution that allows for seamless, non-disruptive failover to a backup system.
Precise Time Protocol (PTP)Developed a custom servo algorithm to achieve nanosecond-level accuracy for PTP synchronization.
Production ToolsDeveloped production tools for board-level testing and programming of default images.
Microsoft Visual StudioIntroduced Visual Studio as the primary development environment for editing, compiling, and debugging. This also provided a unified platform for simulation and project management.


Technology Integration

Adopting new software technology is more complex than it appears.Whether a package is open-source or purchased, it's always in its own development phase and rarely works as expected. A lot of time is often wasted chasing phantom issues and false behaviors.Once you commit to a package, there's no turning back —you have to see it through, no matter the obstacles. Failure at this stage can put the entire project at risk.We are accustomed to this process and have extensive experience with large-scale packages. We quickly master the technology and communicate effectively with its creators.We don't just import and verify the software; we also integrate it into your existing infrastructure so it feels like it was always there .Some of our imports include:

TechnologyDescription
Linux Kernel UpgradeWe replaced the Linux kernel, ensuring all other system components remained unchanged.
Real-Time OSEmbed a real-time operating system (RTOS) like FreeRTOS or MQX into a secondary on-board CPU, creating a more mature and robust software structure.
OpenSSL MigrationReplaced the OpenSSL package and adapted all peripheral code to support new cryptographic ciphers.
NETCONF ManagementImported a complete NETCONF-based management system into the product using Netopeer. Netconf replaces the older SNMP, both created by IETF.
Chip ProvisioningWe prepare and bring programmable chips into service by downloading their firmware at runtime and verifying their operation. Examples include power management, clock, and Ethernet PHY chips.
Cisco-Style CLIGave the product a familiar user interface with a Cisco-like command-line menu.


Empower with SBC

Single-board computers (SBCs) are perfect for prototyping and low-volume projects. They let you start with a working project from day one.

Even though SBCs are fully functional, significant embedded software work remains.

ActivityDetails
💻 Manage project assetsPrepare the software environment: get all sources, customizing build scripts, centralizing sources on a Git repository.
🔍 Hardware and Driver AnalysisStudy the SBC's technical documentation. Focus on essential drivers as I2C, SPI, PCI.
⚡ FlashingSimplifying the process of flashing the OS and firmware onto the board's storage (e.g., eMMC or SD card).
✅ Quality and TestingExecute a comprehensive suite of test utilities to validate the platform's functionality.
⚙️ Application DevelopmentCreate the primary application software optimized for the SBC's resources, including its CPU, memory, and power consumption.

In a recent project, we integrated an industrial BeagleBone into a medical CT device. Our customer quickly rebranded their device and brought a competitive product to market.


Software Leadership

Team performance and code quality can degrade over time.We provide expert software leadership to counter this, implementing proven methodologies and best practices to your development process. Our approach is guided by the principle that great software is simple. We help your developers focus on building reusable components, rather than just building a final application.We identify your team's strengths and weaknesses, providing the leadership needed to reinforce software integrity and strengthen the group.We emphasize the importance of clean code delivery. An error injected at this stage can cost 100 times more to fix than one caught during development.We bring the science of software management to your team. This simplifies your work, reduces errors, and makes the entire development process faster and more efficient.


Board Bring-up

Hardware upgrades are a constant reality, driven by the need for newer designs, components, and features.While changing the hardware may seem straightforward, adapting the software to run on a new board can be a significant and time-consuming challenge.We provide a comprehensive Board Support Package (BSP) to bridge this gap. We get your new hardware up and running with a new bootloader and a new operating system (like Linux), ensuring it can run your existing application.This service allows your software team to stay focused on their current development schedule, as their work remains completely uninterrupted.