Diagnostic program

Last updated

A diagnostic program (also known as a Test Mode) is an automatic computer program sequence that determines the operational status within the software, hardware, or any combination thereof in a component, a system, or a network of systems. Diagnostic programs ideally provide the user with guidance regarding any issues or problems found during its operation.

Contents

Diagnostics programs may be simple or complex, operating unknowingly within everyday devices or awaiting their invocation to make more complex performance assessments. Everyday examples are a microwave oven that displays code F6 to warn of a shorted temperature probe [1] or a garage door opener that flashes its control board's LED four times warning of critically misaligned safety sensors and impending shutdown. [2]

Diagnostic programs are also inserted into consumer electronic products and electronic games. Sometimes if the owner of an electronic device asks the manufacturer how to access the hidden diagnostic program, they may reply to the consumer saying that the information is considered to be "proprietary" and cannot be shared.

History

Early diagnostics programs were procedural instructions performed by humans, not by computer programs. See Built-in test equipment that enabled system operators to perform testing and diagnostics.

As computers became smaller, more mobile, computer programs were used to perform diagnostics tasks. In the late 1960s, Volkswagen introduced the first on-board computer system with diagnostics provisions.

Methods of operation

The diagnostics program for a device or system may be independently located or integrated within. These Methods of Operation are arranged, more-or-less, in order of increasing complexity and their increasing value of diagnostics information.

  1. Background monitoring of system indicators, for statistical analysis of trends, and for recording abnormal events.
  2. Solution-based diagnostics, that test for known failure modes by identifying if their known symptoms are detected.
  3. Black box, which is testing of a mechanism without knowing how it works, and merely focusing on the accuracy of output data based on a known input.
  4. White box, which uses knowledge of a mechanism's inner functions for direct testing.
  5. Operation-oriented, a combination of both black and white box, with one or more black-box operations interleaved with one or more white-box operations. This mode of testing is not preferred, however, some complex systems do not have the necessary interfaces to perform one or the other type independently.
  6. Integrated background diagnostics, that perform testing of system components during idle-time of a system.
  7. Operation-interleaved diagnostics, that incorporate diagnostics into the normal operation of a system component, thus any marginal operating mode is immediately diagnosed. Examples of hardware components with features that assist a diagnostic program are:
    1. Modern hard drives have Self-Monitoring, Analysis and Reporting Technology (SMART) commands that provide information about internal error conditions, e.g., spin retry counts, bad sector counts, etc.
    2. Some systems may use Error Correcting Code (ECC) memory that logs memory failure events that were automatically corrected.

Architectures

Example diagnostics program applications

Related Research Articles

BIOS Firmware

BIOS is firmware used to perform hardware initialization during the booting process, and to provide runtime services for operating systems and programs. The BIOS firmware comes pre-installed on a personal computer's system board, and it is the first software to run when powered on. The name originates from the Basic Input/Output System used in the CP/M operating system in 1975. The BIOS originally proprietary to the IBM PC has been reverse engineered by some companies looking to create compatible systems. The interface of that original system serves as a de facto standard.

Software Non-tangible executable component of a computer

Computer software, or simply software, is a collection of data or computer instructions that tell the computer how to work. This is in contrast to physical hardware, from which the system is built and actually performs the work. In computer science and software engineering, computer software is all information processed by computer systems, programs and data. Computer software includes computer programs, libraries and related non-executable data, such as online documentation or digital media. Computer hardware and software require each other and neither can be realistically used on its own.

Computer program Instructions to be executed by a computer

A computer program is a collection of instructions that can be executed by a computer to perform a specific task.

Motherboard Main printed circuit board (PCB) for a computing device

A motherboard is the main printed circuit board (PCB) in general-purpose computers and other expandable systems. It holds and allows communication between many of the crucial electronic components of a system, such as the central processing unit (CPU) and memory, and provides connectors for other peripherals. Unlike a backplane, a motherboard usually contains significant sub-systems, such as the central processor, the chipset's input/output and memory controllers, interface connectors, and other components integrated for general use.

Operating system Software that manages computer hardware resources

An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.

In computing, booting is the process of starting a computer. It can be initiated by hardware such as a button press, or by a software command. After it is switched on, a computer's central processing unit (CPU) has no software in its main memory, so some process must load software into memory before it can be executed. This may be done by hardware or firmware in the CPU, or by a separate processor in the computer system.

Embedded system Computer system with a dedicated function within a larger mechanical or electrical system

An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electrical system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. Embedded systems control many devices in common use today. Ninety-eight percent of all microprocessors manufactured are used in embedded systems.

Crash (computing) When a computer program stops functioning properly and self-terminates

In computing, a crash, or system crash, occurs when a computer program such as a software application or an operating system stops functioning properly and exits. The program responsible may appear to hang until a crash reporting service reports the crash and any details relating to it. If the program is a critical part of the operating system, the entire system may crash or hang, often resulting in a kernel panic or fatal system error.

In-circuit emulation (ICE) is the use of a hardware device or in-circuit emulator used to debug the software of an embedded system. It operates by using a processor with the additional ability to support debugging operations, as well as to carry out the main function of the system. Particularly for older systems, with limited processors, this usually involved replacing the processor temporarily with a hardware emulator: a more powerful although more expensive version. It was historically in the form of bond-out processor which has many internal signals brought out for the purpose of debugging. These signals provide information about the state of the processor.

The Therac-25 was a computer-controlled radiation therapy machine produced by Atomic Energy of Canada Limited (AECL) in 1982 after the Therac-6 and Therac-20 units.

Hardware abstractions are sets of routines in software that provide programs with access to hardware resources through programming interfaces. The programming interface allows all devices in a particular class C of hardware devices to be accessed through identical interfaces even though C may contain different subclasses of devices that each provide a different hardware interface.

Watchdog timer electronic timer used to detect and recover from computer malfunctions

A watchdog timer is an electronic or software timer that is used to detect and recover from computer malfunctions. During normal operation, the computer regularly resets the watchdog timer to prevent it from elapsing, or "timing out". If, due to a hardware fault or program error, the computer fails to reset the watchdog, the timer will elapse and generate a timeout signal. The timeout signal is used to initiate corrective actions. The corrective actions typically include placing the computer system in a safe state and restoring normal system operation.

Unified Extensible Firmware Interface Specification that defines a software interface between an operating system and platform firmware

The Unified Extensible Firmware Interface (UEFI) is a specification that defines a software interface between an operating system and platform firmware. UEFI replaces the legacy Basic Input/Output System (BIOS) firmware interface originally present in all IBM PC-compatible personal computers, with most UEFI firmware implementations providing support for legacy BIOS services. UEFI can support remote diagnostics and repair of computers, even with no operating system installed.

Power-on self-test

A power-on self-test (POST) is a process performed by firmware or software routines immediately after a computer or other digital electronic device is powered on.

In a computer, the Advanced Configuration and Power Interface (ACPI) provides an open standard that operating systems can use to discover and configure computer hardware components, to perform power management by putting unused components to sleep, and to perform status monitoring. First released in December 1996, ACPI aims to replace Advanced Power Management (APM), the MultiProcessor Specification, and the Plug and Play BIOS (PnP) Specification. ACPI brings the power management under the control of the operating system, as opposed to the previous BIOS-centric system that relied on platform-specific firmware to determine power management and configuration policies. The specification is central to the Operating System-directed configuration and Power Management (OSPM) system, an implementation for ACPI which removes device management responsibilities from legacy firmware interfaces via a UI. ACPI defines a hardware abstraction interface between the system firmware and the operating systems.

In embedded systems, a board support package (BSP) is the layer of software containing hardware-specific drivers and other routines that allow a particular operating system to function in a particular hardware environment, integrated with the RTOS itself. Third-party hardware developers who wish to support a particular RTOS must create a BSP that allows that RTOS to run on their platform. In most cases the RTOS image and license, the BSP containing it, and the hardware are bundled together by the hardware vendor.

Protection ring Layer of protection in computer systems

In computer science, hierarchical protection domains, often called protection rings, are mechanisms to protect data and functionality from faults and malicious behavior. This approach is diametrically opposite to that of capability-based security.

Kernel (operating system) Core of a computer operating system

The kernel is a computer program at the core of a computer's operating system with complete control over everything in the system. It is an integral part of any operating system. It is the "portion of the operating system code that is always resident in memory". It facilitates interactions between hardware and software components. On most systems, it is one of the first programs loaded on startup. It handles the rest of startup as well as input/output (I/O) requests from software, translating them into data-processing instructions for the central processing unit. It handles memory and peripherals like keyboards, monitors, printers, and speakers.

In computing, rebooting is the process by which a running computer system is restarted, either intentionally or unintentionally. Reboots can be either "cold" where the power to the system is physically turned off and back on again, causing an initial boot of the machine, or warm where the system restarts without the need to interrupt the power. The term restart is used to refer to a reboot when the operating system closes all programs and finalizes all pending input and output operations before initiating a soft reboot.

In computer science, bare machine refers to a computer executing instructions directly on logic hardware without an intervening operating system. Modern operating systems evolved through various stages, from elementary to the present day complex, highly sensitive systems incorporating many services. After the development of programmable computers but prior to the development of operating systems, sequential instructions were executed on the computer hardware directly using machine language without any system software layer. This approach is termed the "bare machine" precursor to modern operating systems. Today it is mostly applicable to embedded systems and firmware generally with time-critical latency requirements, while conventional programs are run by a runtime system overlaid on an operating system.

References

  1. "Microwave Error, Fault or Function Codes". products.geappliances.com. Retrieved 27 April 2018.
  2. "Craftsman Garage Door Opener Error Codes". www.searspartsdirect.com. Retrieved 27 April 2018.
  3. "Error Codes - Refrigerator". www.lg.com/us/support/. Retrieved 29 April 2018.
  4. "HP PCs - Testing for Hardware Failures". support.hp.com/us-en/. Retrieved 29 April 2018.