Professional Documents
Culture Documents
i. Page Header: A header on each page of the listing fi le which indicates the compiler
version number, source fi le name, date, time, and page number.
ii. Command Line: Represents the entire command line that was used for invoking the
compiler.
iii. Source Code: The source code listing outputs the line number as well as the source code
on that line. Special cross compiler directives can be used to include or exclude the
conditional codes (code in #if blocks) in the source code listings. Apart from the source code
lines, the list file will include the comments in the source fi le and depending on the list fi le
generation settings the entire contents of all include fi les may also be included. Special cross
compiler directives can be used to include the entire contents of the include file in the list
file.
v. Symbol Listing: The symbol listing contains symbolic information about the various
symbols present in the cross compiled source fi le. Symbol listing contains the sections
symbol name (NAME) symbol classification (CLASS (Special Function Register (SFR),
structure, typedef, static, public, auto, extern, etc.)), memory space (MSPACE (code memory
or data memory)), data type (TYPE (int, char, Procedure call, etc.)), offset ((OFFSET from
code memory start address)) and size in bytes (SIZE). Symbol listing in list fi le output can
be turned on or off by cross-compiler directives.
vi. Module Information: The module information provides the size of initialised and un-
initialised memory areas defined by the source file.
i. Page Header: A header on each page of the linker listing (MAP) fi le which indicates the
linker version number, date, time, and page number.
ii. Command Line: Represents the entire command line that was used for invoking the
linker
iv. Input Modules: This section includes the names of all object modules, and library fi les
and modules that are included in the linking process. This section can be checked for
ensuring all the required modules are lined in the linking process.
v. Memory Map: Memory map lists the starting address, length, relocation type and name of
each segment in the program.
vii. Inter Module Cross Reference: The cross reference listing includes the section name,
memory type and the name of the modules in which it is defined and all modules in which it
is accessed.
viii. Program Size: Program size information contain the size of various memory areas as well
as constant and code space for the entire application.
e.g. Program Size: data=30.1 xdata=0 code=1078
ix. Warnings and Errors: Errors and warnings generated while linking a program are written
to this section. It is very useful in debugging link errors.
1. Monitor program based firmware debugging is the first adopted invasive method for
firmware debugging (Fig. 13.39).
2. In this approach a monitor program which acts as a supervisor is developed. The monitor
program controls the downloading of user code into the code memory, inspects and
modifies register/memory locations; allows single stepping of source code, etc.
3. The monitor program implements the debug functions as per a pre-defined command set
from the debug application interface.
4. The monitor program always listens to the serial port of the target device and according to
the command received from the serial interface it performs command specific actions like
firmware downloading, memory inspection/modification, firmware single stepping and
sends the debug information (various register and memory contents) back to the main
debug program running on the development PC, etc.
5. The first step in any monitor program development is determining a set of commands for
performing various operations like firmware downloading, memory/ register
inspection/modification, single stepping, etc.
6. Once the commands for each operation is fixed, write the code for performing the actions
corresponding to these commands.
7. As mentioned earlier, the commands may be received through any of the external interface
of the target processor (e.g. RS-232C serial interface/ parallel interface/USB, etc.).
1. The terms ‘Simulator’ and ‘Emulator’ are little bit confusing and sounds similar. Though
their basic functionality is the same – “Debug the target firmware”, the way in which they
achieve this functionality is totally different.
2. As mentioned before, ‘Simulator’ is a software application that precisely duplicates
(mimics) the target CPU and simulates the various features and instructions supported by
the target CPU, whereas an ‘Emulator’ is a self-contained hardware device which emulates
the target CPU.
3. The emulator hardware contains necessary emulation logic and it is hooked to the
debugging application running on the development PC on one end and connects to the
target board through some interface on the other end. In summary, the simulator ‘simulates’
the target board CPU and the emulator ‘emulates’ the target board CPU.
4. Nowadays pure software applications which perform the functioning of a hardware
emulator is also called as ‘Emulators’ (though they are ‘Simulators’ in operation).
5. The emulator application for emulating the operation of a PDA phone for application
development is an example of a ‘Software Emulator’.
6. A hardware emulator is controlled by a debugger application running on the development
PC.
7. The debugger application may be part of the Integrated Development Environment (IDE)
or a third party supplied tool.
8. Most of the IDEs incorporate debugger support for some of the emulators commonly
available in the market. The emulators for different families of processors/controllers are
Device Adaptors
1. Device adaptors act as an interface between the target board and emulator POD.
2. Device adaptors are normally pin-to-pin compatible sockets which can be inserted/plugged
into the target board for routing the various signals from the pins assigned for the target
processor.
3. The device adaptor is usually connected to the emulator POD using ribbon cables.
4. The adaptor type varies depending on the target processor’s chip package. DIP, PLCC, etc.
are some commonly used adaptors.
5. The above-mentioned emulators are almost dedicated ones, meaning they are built for
emulating a specific target processor and have little or less support for emulating the
derivatives of the target processor for which the emulator is built.
B. Multimeter
1. A multimeter is used for measuring various electrical quantities like voltage (Both AC and
DC), current (DC as well as AC), resistance, capacitance, continuity checking, transistor
checking, cathode and anode identification of diode, etc.
2. Any multimeter will work over a specific range for each measurement.
3. A multimeter is the most valuable tool in the toolkit of an embedded hardware developer.
4. It is the primary debugging tool for physical contact based hardware debugging and almost
all developers start debugging the hardware with it.
5. In embedded hardware debugging it is mainly used for checking the circuit continuity
between different points on the board, measuring the supply voltage, checking the signal
value, polarity, etc.
6. Both analog and digital versions of a multimeter are available.
7. The digital version is preferred over analog the one for various reasons like readability,
accuracy, etc.
8. Fluke, Rishab, Philips, etc. are the manufacturers of commonly available high quality digital
multimeters.
C. Digital CRO
1. Cathode Ray Oscilloscope (CRO) is a little more sophisticated tool compared to a
multimeter.
2. CRO is a very good tool in analysing interference noise in the power supply line and other
signal lines.
D. Logic Analyser
1. A logic analyser is the big brother of digital CRO.
2. Logic analyser is used for capturing digital data (logic 1 and 0) from a digital circuitry
whereas CRO is employed in capturing all kinds of waves including logic signals.
3. Another major limitation of CRO is that the total number of logic signals/waveforms that can
be captured with a CRO is limited to the number of channels.
4. A logic analyser contains special connectors and clips which can be attached to the target
board for capturing digital data. In target board debugging applications, a logic analyser
captures the states of various port pins, address bus and data bus of the target processor/
controller, etc.
5. Logic analysers give an exact reflection of what happens when a particular line of firmware
is running. This is achieved by capturing the address line logic and data line logic of target
hardware.
6. Most modern logic analysers contain provisions for storing captured data, selecting a desired
region of the captured waveform, zooming selected region of the captured waveform, etc.
7. Tektronix, Agilent, etc. are the giants in the logic analyser market.
E. Function Generator
Definitions
Disassembler is a utility program which converts machine codes into target processor
specific Assembly codes/instructions.
Disassembling is the process of converting machine codes into Assembly code
Decompiler is the utility program for translating machine codes into corresponding high
level language instructions
Simulator is a software application that precisely duplicates (mimics) the target CPU and
simulates the various features and instructions supported by the target CPU
Emulator is a self-contained hardware device which emulates the target CPU. Emulator
hardware contains necessary emulation logic and it is hooked to the debugging application
running on the development PC on one end and connects to the target board through some
interface on the other end
BOUNDARY SCAN
1. As the complexity of the hardware increase, the number of chips present in the board and the
interconnection among them may also increase.
2. The device packages used in the PCB become miniature to reduce the total board space
occupied by them and multiple layers may be required to route the interconnections among
the chips.
1. Java being considered as the popular language for enterprise applications due to its platform
independent implementations, but when it comes to embedded application development
(firmware and software), it is not so popular due to its inherent shortcomings in real time
system development support.
2. In a basic java development, the java code is compiled by a java class compiler to platform
independent code called java bytecode.
3. The java bytecode is converted into processor specific object code by a utility called Java
Virtual Machine (JVM).
(OHA): The Open Handset Alliance (OHA) is a business alliance formed by various
handset manufacturers (HTC, Samsung, LG, Motorola etc), chip manufacturers (Intel,
Nvidia, Qualcomm, etc.), platform providers (Google, Wind River Systems, etc.) and carriers
(T-Mobile, China Mobile, Sprint Nextel, etc.) for developing open standards for mobile
devices. Please visit http://www.openhandsetalliance.com/ for more details on OHA.
2. Android: Android is an open source software platform and operating system for mobile
devices. It was developed by Google Corporation (www.google.com) and retained by the
Open Handset Alliance (OHA). The Android operating system is based on the Linux kernel.
BOTTLENECKS
Bottlenecks faced by the embedded industry today:
1. Performance, Power Optimisation and Thermal Management
Achieving the right balance between performance, power consumption and thermal
management is a real challenge in Embedded Design. Embedded products like smartphones,
portable media players, etc. in the consumer market segment are battery powered and they
should be capable of providing a reasonably good battery back-up without compromising on
the performance (e.g. No noticeable lag in response to user input like touch screen operations)
and aesthetics (slim and miniature design) of the product.
High performance requirements in a low cost design without using high end multi-core
processing units may require increasing the processor speed which will directly impact on the
power consumption.
This can be offsetted by increasing the battery size, which in turn may make the product bulky,
compromising on the product aesthetics. Handling increased power consumption on a small
PCB unit requires additional thermal management and cooling solutions.
Chip manufacturers are focusing on low power designs to address this.
Another area for improvement is enhancing the memory speeds to utilise the full potential
offered by the high performance Processors/Controllers, by reducing the latency and increasing
the bandwidth.