Integration and Testing of Embedded Hardware & Firmware

 

# Hardware includes the physical parts. (body)
# Firmware is a software program or a set of instructions on a hardware device. (brain)

Hardware and Firmware are developed and tested independently. (Unit Testing)
  • Hardware parts are tested by small utility programs
  • Firmware is tested by simulators.    

Integration of Hardware and Firmware

  • Integration of hardware and firmware deals with the embedding of firmware into the target hardware board.
  • It is the process of ‘Embedding Intelligence’ to the product.
  • We have two types of an embedded system,
Operating System based
Non-Operating System based

Firmware embedding techniques for non- Operating system based embedded system

  • Out of Circuit Programing
  • In System Programing
  • In Application Programing

Out of Circuit Programing (OCP)

  • Out-of-circuit programming is performed outside the target board. 
  • The processor or memory chip into which the firmware needs to embedded is taken out of the target board and it is programmed with the help of programming device. 

In System Programming (ISP)

  • The firmware is embedded into the target device without removing it from the target board. 
  • It is a flexible and easy way of firmware embedding. 
  • The only pre-requisite is that the device must have an ISP support.
  • Apart from target board, PC, ISP utility and ISP cable, no other additional hardware is required for ISP.

In Application Programing (IAP)

  • In Application Programming (IAP) is a technique used by the firmware running on the target device for modifying a selected portion of the code memory.
  •  It is not a technique for the first time embedding of user written firmware. 
  • It modifies the program code memory under the control of the embedded application. 
  • Updating calibration data, look-up tables, etc., which are stored in the code memory, are typical examples of IAP.

Firmware embedding techniques for Operating system based embedded system

  • USe of FActory Programmed Chips - for example, Calculator.

Embedded System Development Environment 

The primary components:
  • host system
  • target system
  • connecting tools between host and target (like, IDE, Compilers,...)

IDEs (Integrated Development Environment)

  • In Embedded System, IDE stands for an integrated environment for developing and debugging the target processor specific embedded firmware. 
  • An IDE is also known as integrated design environment or integrated debugging environment. IDE is a software package which bundles a “Text Editor”, “Cross-compiler”, ”Linker” and a “Debugger”.
  • IDEs can either command-line based or GUI based. 
  • IDE consists of,
1. Text Editor or Source code editor
2. A compiler and an interpreter
3. Build automation tools
4. Debugger
5. Simulators
6. Emulators and logic analyzer
  • An example of IDE is Turbo C/C++ which provides a platform on windows for development of application programs with command-line interface. 
  • The other category of IDE is known as Visual IDE which provides the platform for the visual development environment, for example,  Microsoft Visual C++. 
  • IDEs used in Embedded firmware are slightly different from the generic IDE used for high-level language-based development in desktop applications. 
  • In Embedded applications, the IDE is either supplied by the target processor/controller manufacturer or by third-party vendors or as Open source.

Cross Compilers

  • A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running.
  •  For example, a compiler that runs on a Windows 7 PC but generates code that runs on Android smartphone is a cross compiler. 
  • A cross compiler is necessary to compile (High-level lang-> Machine level lang) code for multiple platforms from one development host. 
  • The fundamental use of a cross compiler is to separate the built environment from the target environment. This is useful in several situations like,
# Embedded computers where a device has extremely limited resources.
# Compiling for multiple machines.
# Compiling on a server farm.
# Bootstrapping to a new platform

Disassemblers

  • A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. 

Decompilers

  • A decompiler is a computer program that takes an executable file as input and attempts to create a high-level source file which can be recompiled successfully.
  •  It is, therefore, the opposite of a compiler, which takes a source file and makes an executable. 
  • Decompilers are usually unable to perfectly reconstruct the original source code, and as such, will frequently produce obfuscated code.
  • Nonetheless, decompilers remain an important tool in the reverse engineering of computer software.
 Simulators
  • Simulators are a less complex application that simulates the internal behaviour of a device.
  • They are written in a high-level language.
  • Simulators can be difficult for debugging purposes.
  • IDE provides simulators support.
  • Example: iOS Simulator.
Emulators 

  • A hardware or software that enabled one computer system to behave like another computer system.
  • It is written in machine language.
  • They are more suitable for debugging.
  • Example: Android(SDK) Emulators.
Debuggers

  • A computer program that is used to test and debug other programs or target programs.
  • It helps to identify errors in a computer program and to fix them.



No comments:

Post a Comment

Monk and Inversions

using System; public class Solution { public static void Main () { int T = Convert . ToInt32 ( Console . ReadLine...