EQware is more than just a collection of talented software engineers. We have proven ourselves to be high-quality system engineers and product developers. Our skills represent our team's combined experiences and education.
EQware engineers are well versed in many real-time programming methods. We have applied these skills in product development, using wireless and multimedia technologies, time synchronization and synchronized sensor sampling.
Thread Synchronization & Scheduling — Multi-threading is essential to real-time programming, providing the flexibility needed to carry out the program's core functions while remaining responsive to outside events. But threads introduce new kinds of problems as well: deadlocks and race conditions. EQware designers are expert at crafting interrupt-driven architectures to maximize responsiveness and using synchronization primitives to safely coordinate multi-threaded operations.
RTOSs — Our engineers have experience with several types of real-time operating systems, from small OSs such as ThreadX and FreeRTOS, to full-scale and custom. While EQware has performed extensive development using embedded Linux on handheld devices, current expectations are that smartphones should be able to replace such devices. By leveraging deep knowledge of iOS and Android, we have made these expectations reality.
CPU/Memory Usage — EQware understands resource constraints of embedded systems, and that these resources are stressed the most when certain events collide or other exhausting conditions are combined. Creating the correct software architecture is key; identifying interrupt-level work, shared data, task breakdown and relative priorities are all important aspects of a solid real-time design.
Multimedia — Streaming audio and video are some of the places where real-time programming skills become noticeable to the user. Video glitches, audio hiccups, and general buffering delays are easy for users to detect. Often, these streaming operations are quite complicated, using sophisticated SoCs, acceleration hardware, software codecs, and consuming lots of CPU resources.
Wireless Synchronization — EQware has deep experience developing devices that depend on time division multiplexed protocols to receive and/or transmit wireless packets on specific frequencies. We have done this to reduce power consumption and to synchronize sensor sampling across devices.
EQware is ready with the skills to help you bring your product to market quickly and with full assurance of quality. Put us to work for you!
Extensive Product Experience — Engage with EQware and find someone who understands how to create a product and can work at any level to reduce your development cycle. We can easily interface with your marketing, sales, production, service, and engineering teams, and can help you make the key decisions critical to the smooth development and deployment of your product.
Software Languages, Tools, and Technologies — New and exciting technologies make your product the best it can be. EQware works with all of the top software languages and IDEs to bring your embedded product to market efficiently and effectively.
Operating Systems — From the bootloaders, to the kernel, to the rest of your operating system, EQware has been there. If your product needs an operating system, EQware has a wealth of experience and can bring operating systems—even custom ones—to new platforms. Our engineers have created, ported, and extended numerous device drivers for many popular embedded OSs and nearly every category of device.
Multimedia — Portable multimedia devices continue to emerge in the market place. EQware has the experience to harness the performance and low power capabilities you will need to create a winning product. Whether you need special hardware, OS, device driver, or codec support, EQware can help.
Communication Protocols — Hardware components need to talk to one another. We have implemented existing protocols and designed new ones, for both wired and wireless environments, supporting connectivity for every environment, from modules on the same board, to wireless devices on networks with thousands of nodes. We can connect your mobile app to your embedded device.
Critical Product Features — Most, if not all, embedded products have special functional needs required to differentiate your product from others and reach its full potential. Getting hardware to work is one thing; getting the most out of it is something else. We are proven experts, with the patience and know-how to make your hardware perform to its fullest. From shorter development cycles to optimizing battery life, our experience gets us out in front of many issues, making your product reliable, efficient and elegant.
Software Build Systems — A major part of creating product software is reproducibility—you must be able to repeat the build of your software or there will be quality issues. We have extensive experience at using many different build systems, including Poky and Yocto. These and other build systems can make sure your bootloaders, kernels, run-times, applications, installers and updaters—will be the same today, and tomorrow.
Quality Assurance — EQ stands for Embedded Quality, and it's no idle boast. We have extensive experience at producing quality embedded products. We can provide your product with whatever level of QA you need, from basic module-level test, up through full regression suites based on custom test systems, production testing and tools, or anything in between.
Test Tools — Product development requires special tools for many stakeholders: marketing and sales, developers, quality assurance personnel, production and servicing technicians. EQware understands all these needs and can support any tools you need.
Board Designs — EQware can design electronic sub-assemblies to meet your product's physical and marketing specifications, and aid you in creating those specs. We can execute all phases of development, from prototype implementation through hardware validation, and hand-off the finished design to manufacturing.
Twenty-first century products are normally network-aware, more often than not employing some form of wireless communications. EQware has been deeply involved in wireless solutions for many years, from early paging protocols to the latest BLE developments. Many customers now require that iOS and Android devices work seamlessly with their products, using various wireless technologies and cloud support. EQware has the skill set to handle all of your networking and wireless needs.
Network Stacks — EQware has experience at every layer of the network stack. From low-level NIC interfaces to IEEE 802 specifications, we have you covered. EQware engineers spent several years developing a proprietary one-way communications protocol based on the layered OSI model. This gave us a unique perspective on the popular TCP/IP and Bluetooth protocols which followed. Timely sensor sampling and reduced power conservation can lead to unique solutions such as custom 2.4 GHz protocols.
WiFi & WiFi Direct — Do you have a device that needs WiFi support? Are you blocked by a critical networking bug? We can analyze the system, and push the WiFi communications to their limits. For example, a WiFi module in your product might require better firmware, or perhaps a driver patch from the public domain needs to be ported and tested. WiFi Direct can be a good solution for passing moderately sized pieces of data peer-to-peer. Our developers understand how to leverage various network stacks, and arrive at reliable, simple solutions. EQware has also worked on a popular open-source router, specifically in filtering packets.
Bluetooth & BLE — Bluetooth and BLE are becoming ever more popular. EQware has strong skills in designing entirely new Bluetooth/BLE features from the ground up on various platforms, and we're ready to assist with debugging and testing to get your product streamlined and stable. We know BLE in great detail, and we have developed BLE firmware for various vendors and SDKs, and BLE applications for several computer and cell phone operating systems. EQware can also support your audio streaming needs over Bluetooth EDR.
Packet Radio — Sometimes you need a more creative approach for your wireless project. EQware can design and implement custom radio protocols that get your devices talking to each other seamlessly. Our designs are tailored to your priorities and hardware, and we provide extensive documentation so that you have all your bases covered. We've worked on custom ICs for packet demodulation and time-accurate framing, as well as on soft radios for extreme timing and location accuracy.
Zigbee — The Zigbee specification opens up new possibilities for low-power mesh networks. EQware can help you harness its features, bringing down your product costs without sacrificing quality. We've prototyped and studied these mesh systems on occasion, albeit without ever actually finding a customer who wanted to go this way.
EQware has the specialized skills needed for many extraordinary projects. Not every task can be done without a critical understanding of the underlying technology. These skills have been acquired through many years of projects, and are among some of our favorite areas to work.
Time Synchronization & Wireless Sensors — EQware engineers have experience developing wireless solutions that demand extreme time accuracy. We developed key aspects of a proprietary FTDM protocol, allowing all wristwatch pagers in that worldwide system to be time-synchronized before GPS was widely available. This solution was further enhanced by crystal oscillator compensation. In another project, we used soft radios to prove extreme time and position accuracy based on satellite transmissions.
EQware has also delivered wireless, time-synchronized sensor sampling. One case involved 2.4GHz packet radios, a custom protocol and a synchronizing beacon. Another accomplished this goal using regular BLE across many host platforms/operating systems.
Linux Kernel Porting — EQware has ported the Linux kernel many times, including several device drivers. Often, the Linux "future" holds promise of bug fixes in many areas. We will commonly reach into the future to back-port specific fixes. This can become a dependency nightmare if trying to back-port larger drivers, written to underlying Linux frameworks that have changed. But EQware is not inclined to port kernels just for the sake of porting; we expect actual benefits to community development when porting kernels forward. We've executed several large porting projects in concert with associated ports in the Yocto version.
Low Power Systems — Achieving low power in a handheld device can be incredibly complicated. Some ARM SoCs have entire subsystems dedicated to control of internal clock and power domains. Some chips even contain sophisticated dynamic voltage/frequency control features. The main board will usually have a PMIC chip that manages board power, and can also be quite complex with stored queues of power operations, and core signal connections to the CPU. These systems are connected to operating system power management policies, and define the various power scenarios for the product. Some products will also require battery chargers, fuel gauges, and such to form a complete solution. EQware is well versed in all these areas.
Toolchains — Tools have always been one of EQware's core competencies and toolchains are the jewel in the crown. These complex and sophisticated tools are key to the development of software for all CPUs. Whether it's GNU or LLVM toolchain, or GNU Debugger, or remote debug agent on an embedded device EQware has the expertise.
Performance Analysis & Tuning — Getting the most out of limited and hard-to-upgrade embedded products calls for a deep understanding of the hardware and software, and knowledge of the available tools and techniques for measuring, analyzing and reporting on system behavior. EQware has been pushing the limits of embedded systems for decades, using existing tools where available and creating custom tools as needed to bring balky devices up to their full potential.
High Performance Computing — As Moore's Law appears to be losing ground, the super computing and high performance computing industries have become the new hope for increased compute power at lower energy. EQware has developed toolchain and runtime support for new exascale compute engines creating bare-metal pthread, OpenMP, MPI and MPI capabilities. We also participated in Open Community Runtime scheduling and memory allocation research using Xeon Phi and other exascale architectures.
System Simulation — EQware has the knowledge and experience to simulate a system, large or small. Our experience includes the completion of a discrete event simulation of product RF performance, comparing targeted algorithms based on user scenarios such as driving at highway speed through a large metropolitan area. This simulation used 3D mapping data for terrain and selection of RF power for the overlapping coverage areas.
Commercial Energy Management — The advent of high-power battery systems certified for installation at commercial and residential sites has created an exciting new market, combining state-of-the art inverters, batteries and PV (solar cells) to achieve new power management goals, gain rate and tax incentives. EQware engineers have experience creating algorithms to perform peak power clipping and PV-smoothing, support utility-mandated demand /response programs, and provide site-wide battery backup (microgrid) for essential services.
EQware has worked with so many hardware platforms, SoCs, components, and interfaces that it would be difficult to list them all! Let's just say we know how to digest complicated chip specs, schematics, and existing code so that quality firmware can be developed. Firmware development is often an exercise of incrementally bringing hardware circuits to life, and testing interfaces for proper operation. EQware can support your hardware design, or create a prototype from scratch.
Prototypes/Board Bring-up — EQware is experienced in board bring-up, creating “probe code” and exercising new circuitry as quickly and simply as possible. We bring reference designs to life, creating BSPs that allow silicon manufacturers to validate their designs and OEM customers to create product prototypes. EQware also supports processor selection for embedded systems, and leverages processor evaluation kits and/or hobby kits such as Beagleboards and Raspberry Pi to quickly prototype products. These front-end project efforts typically establish the bootloader(s), operating system, and manufacturing load & test methods used throughout the product lifespan.
Platforms/CPUs — From custom 4-bit microprocessors to HPC clusters with 1000s of cores, we've worked on it. We've developed vast amounts of software for numerous x86, ARM, and PPC processors as well as other CPU architectures, and have executed cross-building for embedded targets, from the command line, or by using a build framework such as Yocto.
Devices/Interfaces/Protocols — Processors need to communicate with devices, on and off the platform. EQware developers already know how to harness the most common physical interfaces. However, this is just the start. These interfaces often connect to other devices: processors, networking interfaces, memories, disk drives, LCD panels, and sensors. The drivers for these devices are more closely related to the application needs but are often hidden behind layers of middleware. EQware is well versed in all sorts of device drivers as well as any other layer of the software stack up to and including the application.
Power Management — Embedded products are often battery powered. EQware understands the importance of suspending various hardware components when not being used. This can be a complicated balance of disabling power and clock domains, yet allowing certain wake events to be possible. Understanding how to use power management controllers to serve system power sources as required, while saving power at other times, is essential. We know how to implement suspend-resume hooks for appropriate power management, and can integrate a fuel gauge or battery charger circuit into the system.
Wireless Communications — EQware’s extensive experience in various wireless technologies separates us from other firmware development companies. Our engineers were able to achieve a year-long product battery life for one customer by creating a custom IC and using a proprietary protocol. We have deep experience developing BLE solutions, peripheral and central roles across many platforms. Whether you need a custom 2.4GHz solution, or an off-the-shelf WiFi/Bluetooth module to be harnessed, we can get the job done.
Circuit Board Design — EQware is experienced and qualified to lead and manage all aspects of product development, and has close relationships with outside hardware consultants. While many of our projects are software-oriented, we are more than happy to help bring your design ideas from napkin to manufactured product.
Debuggers & Test Tools — Using the right tools to use to capture bus transfers, or otherwise monitor interfaces is key. We know the right tools for the job, whether sniffing BLE, capturing SPI on a logic analyzer, or tracing code execution; whatever is needed to best analyze firmware behavior. EQware also knows how to use in-circuit emulators, debuggers and performance analyzers to their full potential, and can even update the tool chain to support new processors or extensions.
Every piece of hardware needs software to make it work. Our engineers can see your product through every phase of the software development life-cycle, from requirements and design, all the way though testing. We know how to deliver high-performance software; tuned and optimized for your hardware.
Development Tools — EQware has familiarity and experience with the tools needed to develop products and test our work. Our engineers have used these tools, including the latest IDEs, from Atmel Studio to Xcode. If you are not using a standard architecture, don't worry! We've ported all kinds of tools before, to non-standard architectures, emulators, and custom runtimes. We know how to use debuggers, ICEs, and even GPIOs to monitor the firmware. Whether we leverage existing tools or create custom tools, EQware knows what is needed for the job.
SDKs — Some products may require the use of vendor specific IDEs or Software Development Kits. EQware engineers will be able to start at full speed. We have years of experience with these types of kits, and can move quickly through development.
Applications — Many embedded products require some kind of application support. EQware can help connect a product with such an application. We have worked on both mobile and desktop applications, and we can help connect products to their application counterparts.
Multimedia & Communications — EQware has extensive experience supporting multi-media devices, networking devices wirelessly and ensuring long battery life; our engineers are Bluetooth, Bluetooth Low Energy, and WiFi experts.
Languages — Every product has specific needs and EQware knows how to utilize language features to ensure maximum efficiency, for both speed and memory. EQware can help optimize your code to make it reach its required standards. Our engineers have worked in dozens of languages, including C, C++, Python, Java, and Swift, and can quickly learn the languages needed to support any product.
OSs, Runtimes & Libraries — EQware has worked with many different OSs, platforms, and CPUs, making sure products are portable to each required system. We've often created runtimes from scratch or adjusted existing runtimes to fit the goal. EQware engineers have written and adjusted bootloaders for these projects, too, and have put runtimes in everything from tiny development boards to custom HPC systems. We have added support for libc, OpenMP, MPI, and many others. EQware can help optimize these libraries for any architecture, to make sure every product functions at peak efficiency.
Drivers — Some of our engineers' favorite work is with device drivers, which act as the interface between the hardware and application level software. EQware has experience creating, porting, and optimizing numerous different drivers, for many different OSs.