Skip to main content

+1 866 653-6233 LinkedIn Software Expert Witness Directory

About Us Contact Us

Barr Group Software Experts

Barr Group Software Experts

Main navigation

  • Expert Services
    • Consulting Experts in Software and Electronics
    • Expert Reports by Testifying Software Experts
    • Reverse Engineering and Forensic Analysis
    • Software Source Code Review and Analysis
  • Areas of Expertise
    • Left Side
      • Artificial Intelligence
      • Automotive Systems
      • Cloud Computing
      • Computer Security
      • Consumer Electronics
      • Electronic Circuits
      • Enterprise Software
      • Financial Technology
      • Firmware and IoT
    • Right Side
      • Industrial Controls
      • Mechanical Design
      • Medical Devices
      • Military & Aerospace
      • Mobile Devices & Apps
      • Optical Equipment
      • Renewable Energy
      • Signal Processing
      • Telecommunications
  • Matters & Venues
    • Patent Infringement and Invalidity Experts
    • Software Copyright and Trade Secrets Experts
    • Product Liability and Failure Analysis Experts
    • Contract Disputes and Software Project Failures
    • Venues and Clients
  • Directory
  • Case Studies
    • DirecTV Anti-Piracy
    • Samsung Software Copyright
    • Toyota Runaway Cars
  • Resources
    • Expert Witness Blog
    • Source Code Review in Litigation
    • Software Source Code Discovery

electronics

  1. Home
  2. electronics

electronics

How-to articles about hardware-software integration and electronics design.

U.S. District Court Source Code Review Rules

Posted November 24, 2020

The U.S. District Court of Delaware's "Default Standard for Access to Source Code" follows many but not all recommended best practices for source code discovery.  This month we consider potential areas for improvement in the default rules of this important venue for patent infringement and software copyright litigation.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Protect Non-Volatile Data

Posted May 04, 2016

Unexpected power loss and software bugs can undermine the reliability of non-volatile data. Fortunately, there are various ways to make non-volatile data resilient to such corruption.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Design Software-Friendly FPGAs and ASICs

Posted May 04, 2016

Designing firmware-accessible debugging resources into embedded systems provides a valuable supplement to hardware test and analysis tools.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Design a Software-Friendly DMA Module

Posted May 04, 2016

These built-in troubleshooting resources for direct memory access (DMA) controllers can pave the way for smoother embedded software integration.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Design by Contract for Embedded C

Posted May 04, 2016

What is the Design by Contract programming philosophy, what can it do for you, and why should all embedded software developers care?

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Reduce Power Consumption by Writing Better Software

Posted May 04, 2016

The way you write software can affect the power consumption of the resulting product. Here are four approaches to minimizing power consumption through software.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Framework for Safe Motion Control Firmware

Posted May 04, 2016

An object-oriented framework can be used to create safe, testable and tunable motion control systems.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Secure Consumable Components of Medical Devices and Other Embedded Systems

Posted September 01, 2015

A number of embedded systems, such as medical devices and printers, feature replaceable components designed to be installed new, consumed through one or more cycles of product use, and ultimately disposed.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Minimize Interrupt Service Routine (ISR) Overhead

Posted January 01, 2007

With all the automation available today, it's easy for programmers to overlook costly overhead introduced into machine code by the compiler. Interrupt handlers are one key area worthy of a closer inspection.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Use C's offsetof() Macro

Posted March 01, 2004

C's offsetof() macro can be a helpful addition to your bag of tricks, including for packing data structures and describing how EEPROM data are stored.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Portable Fixed-Width Integers in C

Posted January 01, 2004

For embedded software developers, the most significant improvements to the C programming language made in the ISO C99 standard update are in the new <stdint.h> header file. Learn the typedef names for the new fixed width integer data types, to make hardware interfacing in C easier. 

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Serial Communication Protocols: CAN vs. SPI

Posted May 01, 2003

Distributed systems require protocols for communication between microcontrollers. Controller Area Networks (CAN) and Serial Peripheral Interfaces (SPI) are two of the most common such protocols.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Optimal C Constructs for 8051 Microcontrollers

Posted October 01, 2002

The limitations of an 8-bit microcontroller (MCU) can sometimes make conventional C constructs produce suboptimal code. In this article we look at common problems on the 8051 family and discuss workarounds in C.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Introduction to Counter/Timer Hardware

Posted September 01, 2002

Counter units (aka, timer units) are crucial components of most embedded systems and included in many microcontrollers. Here's a primer on the hardware.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Introduction to Closed-Loop Control and PID

Posted August 01, 2002

Most control systems utilize feedback in some manner. Here's a look at several fundamental feedback mechanisms, culminating in a description of a basic PID controller.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How Endianness Works: Big-Endian vs. Little Endian

Posted January 01, 2002

Some human languages are read and written from left to right; others from right to left. A similar issue arises in the field of computers, involving the representation of numbers.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Introduction to Watchdog Timers

Posted October 01, 2001

For those embedded systems that can't be constantly watched by a human, watchdog timers may be the solution.

Most embedded systems need to be self-reliant. It's not usually possible to wait for someone to reboot them if the software hangs. Some embedded designs, such as space probes, are simply not accessible to human operators. If their software ever hangs, such systems are permanently disabled. In other cases, the speed with which a human operator might reset the system would be too slow to meet the uptime requirements of the product.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Introduction to Pulse Width Modulation (PWM)

Posted September 01, 2001

Pulse width modulation (PWM) is a powerful technique for controlling analog circuits with a processor's digital outputs. PWM is employed in a wide variety of applications, ranging from measurement and communications to power control and conversion.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Use C's volatile Keyword

Posted July 01, 2001

The proper use of C's volatile keyword is poorly understood by many programmers. This article will teach you the proper way to do it.

 

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Types of Memory in Embedded Systems

Posted May 01, 2001

SRAM or DRAM? EEPROM or flash? What types of memory will you use in your next embedded systems design?

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Design Safety into the Electro-Mechanical System Around Software

Posted February 01, 2001

When it comes to safety-critical applications, sometimes you have to protect users from the software. And sometimes you have to protect users from themselves.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Use Watchdog Timers Properly when Multitasking

Posted November 01, 2000

To keep a watchdog timer from resetting your system, you've got to kick it regularly. But that's not all there is to watchdog science. We will examine the use and testing of a watchdog, as well as the integration of a watchdog into a multitasking environment.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Fast Accurate Memory Test Code in C

Posted July 01, 2000

If ever there was a piece of embedded software ripe for reuse it's the memory test. This article shows how to test for the most common memory problems with a set of three efficient, portable, public-domain memory test functions.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Calibrate Mechanical Inputs in Software

Posted May 01, 2000

Embedded software developers operate in a perfect digital environment but must interact with the imperfect analog real world. To do this it's essential to know how to perform calibration of inputs and sensors.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Assembly vs. C: Which is Best for Microcontrollers?

Posted March 01, 2000

Given a particular programming problem, what language should you use to realize the solution? Your choice could very well affect the success or failure of the project. So you'd better choose wisely.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

RS-485 Transmit Enable Signal Control

Posted August 01, 1999

Quite a few embedded systems include multiple processors. Sometimes these processors stand in isolation, but more often they're required to communicate over a multidrop bus such as EIA RS-485 or RS-422.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How Programmable Logic Works

Posted June 01, 1999

In recent years, the line between hardware and software has blurred. Hardware now engineers create the bulk of their new digital circuitry in programming languages such as VHDL and Verilog. This article will help you make sense of programmable logic.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How to Create Jump Tables via Function Pointer Arrays in C and C++

Posted May 01, 1999

Jump tables, also called branch tables, are an efficient means of handling similar events in software. Here's a look at the use of arrays of function pointers in C/C++ as jump tables.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

How Reconfigurable Computing Works

Posted September 01, 1998

Designers of embedded systems face three significant challenges in today's ultra-competitive marketplace. Products must always: do more, cost less, and arrive to market faster. Fortunately, new flexible hardware design techniques are emerging from the study of reconfigurable computing.

  • Read more
  • Share
  • Facebook
  • Twitter
  • LinkedIn

Request an Expert

(866) 653-6233

Barr Group logo
Call us

Expert Services

  • Source Code Review Services
  • Expert Witness Directory
  • Reverse Engineering Services
  • Expert Reports & Testimony
  • How-To Technical Articles
  • Engineering Services

Latest Insights

  • Payment Processing and e-Payments Fraud
  • Albert Einstein Expert Witness
  • Medical Device Litigation and FDA 510(k)
  • Personality Traits of the Best Expert Witnesses

Website contents copyright © 2012-2025 by Barr Group. | Barr Group's logo is a U.S.-registered ® trademark.

SITEMAP  |  PRIVACY