Embedded System Design
Embedded System Design
Department of Electronics and Communication Sri Bhagawan Mahaveer Jain College of Engineering Jain University 2011-2012
2011/2012-ECE Department,SBMJCE
Unit 1
INTRODUCTION TO EMBEDDED SYSTEM
GENERAL PURPOSE PC: The following figure gives a generic architecture of a general purpose PC.
Large Scale Embedded Systems also will have similar structures as of a general purpose PC, Which is shown above. But, one basic difference in the hardware of a PC and an embedded system is that, in an embedded system there won't be any unwanted parts (generic parts, which are not used by the specific purpose for which the system is designed for). Some examples from the above figure are Graphics interface, Audio/Video interface etc.
2 Embedded System Design 2011/2012-ECE Department,SBMJCE
SYSTEM DESIGN VS SYSTEM ANALYSIS: The difference between these could be understood clearly from the following figure
We can represent the existence of any system as per the above figure. The system generates certain outputs from certain inputs in certain environmemental conditions. Now, if you have Input, output and the environmemental condition then, obtaining the system is System Design. Rather, if you have Input, System and Environmemental condition, then obtaining the Output is System Analysis.
Many components are common In a PC, we need to write application specific programs for the purpose that we want An Embedded System is a system whose main function is not computational, but which is controlled by a computer embedded within it
General purpose PC with extra components will not make an Embedded System. But it would be an embedded system if it is converted permanently into an identifiable system and customized such that its sole purpose is to control a specific system.
Range of products which falls into this category is too much - It ranges from Toys to Space crafts. Embedded systems find applications in many areas like Toys, House utilities (Air Conditioner, Washing Machine, Oven, Burglar alarms etc.), Vehicle Industry (Car control etc), Industries (Networking, Other control systems, Factory automation etc), In simple words, anything that uses a microprocessor/microcontroller other than a general purpose PC is an embedded system. But one interesting point among all these is that the user may not be aware that a processor/controller is present in that.
3 Embedded System Design 2011/2012-ECE Department,SBMJCE
EMBEDDED SYSTEM We can define embedded system as; it is a system that has embedded software and computer hardware, which makes it a system dedicated for a specific part of an application. Some of examples of an embedded system are in home utilities, office and in vehicles
REAL TIME SYSTEMS An operation within a larger dynamic system is called a real-time operation if the combined reaction- and operation-time of a task operating on current events or input, is no longer than the maximum delay allowed, in view of circumstances outside the operation is called a realtime systems.
2011/2012-ECE Department,SBMJCE
REAL TIME EMBEDDED SYSTEM RTES is precisely the union of subsystems to discharge a specific task coherently. RTES as a generic term may mean a wide variety of systems in the real world. A number of systems coexist to discharge a specific function in real time. EMBEDDED SYSTEM HARDWARE
Different parts/components of embedded system hardware are shown in the above block diagram.
2011/2012-ECE Department,SBMJCE
1. PROCESSOR Processor is generally used to control/configure other parts of the system. Embedded systems are
controlled by one or more main processing cores that are typically Microcontroller, Microprocessor, DSP, Single Purpose Processor and Application-specific processors. General-purpose Microprocessors Must add RAM, ROM, I/O ports, and timers externally to make them functional Make the system bulkier and much more expensive Have the advantage of versatility on the amount of RAM, ROM, and I/O ports
Microcontroller The fixed amount of on-chip ROM, RAM, and number of I/O ports makes them ideal for many applications in which cost and space are critical In many applications, the space it takes, the power it consumes, and the price per unit are much more critical considerations than the computing power.
2011/2012-ECE Department,SBMJCE
Single-purpose processors A single-purpose processor is a digital circuit designed to execute exactly one program. For example, consider the digital camera. All of the components other than the microcontroller are single-purpose processors. The JPEG codec, for example, executes a single program that compresses and decompresses video frames. An embedded system designer creates a singlepurpose processor by designing a custom digital circuit. Using a single-purpose processor in an embedded system results in several design metric benefits and drawbacks, which are essentially the inverse of those for general purpose processors. Performance may be fast, size and power may be small, and unit-cost may be low for large quantities, while design time and NRE costs may be high, flexibility is low, unit cost may be high for small quantities, and performance may not match general-purpose processors for some applications. Application-specific processors An application-specific instruction-set processor (or ASIP) can serve as a compromise between the above processor options. An ASIP is designed for a particular class of applications with common characteristics, such as digital-signal processing, telecommunications, embedded control, etc. The designer of such a processor can optimize the datapath for the application class, perhaps adding special functional units for common operations, and eliminating other infrequently used units.
7 Embedded System Design 2011/2012-ECE Department,SBMJCE
Using an ASIP in an embedded system can provide the benefit of flexibility while still achieving good performance, power and size.
Digital-signal processors (DSPs) are a common class of ASIP, so demand special mention. A DSP is a processor designed to perform common operations on digital signals, which are the digital encodings of analog signals like video and audio. These operations carry out common signal processing tasks like signal filtering, transformation, or combination.
2. POWER SUPPLY Rectifiers, Regulators, Battery are the main power sources used. It generates specific voltages required by different parts of the system. There would be more than one voltage. Proper isolation to be provided between different power supplies. Voltage and current requirements vary according to the logic families used in the system. It should be of very high efficiency. It should support features like Power Sequencing, Power Redundancy, Hot swap Capacity, Inrush Current control etc. Normally there would be a Poweronreset generation circuit along with the power supply circuit. There should be methods for power saving operation
2011/2012-ECE Department,SBMJCE
Rectifier - converts AC to DC, but the DC output is varying. Smoothing - smoothes the DC from varying greatly to a small ripple. Regulator - eliminates ripple by setting DC output to a fixed voltage. 3. RESET CIRCUITRY: It is used to reset the system initially or during some fault situations. Different types of reset a) Power-on Reset (POR) b) External Reset -MCLR Reset during normal operation -MCLR Reset during SLEEP c) Watchdog Timer (WDT) Reset d) Software RESET When the microcontroller powers up, it must start running its program from its. This will only happen if explicit circuitry is built in to detect power-up and force the Program Counter to zero. A Power-on Reset pulse is generated on-chip when VDD rise is detected. To take advantage of the POR circuitry, just tie the MCLR pin directly (or through a resistor) to VDD. This will eliminate external RC components usually needed to create a Power-on Reset delay. A minimum rise rate for VDD is specified.
(a) Power-on Reset (b) Power-on Reset, with discharge diode and protective resistor. (c) User Reset button.
2011/2012-ECE Department,SBMJCE
WATCHDOG TIMER The watchdog timer is designed to automatically reset the MCU if the program malfunctions, by stopping or getting stuck in loop. This could be caused by an undetected bug in the program, an unplanned sequence of inputs or supply fault. A separate internal oscillator and counter automatically generate a reset about every 18 ms, unless this is disabled in the configuration word. If the watchdog timer is enabled, it should be regularly reset by an instruction in the program loop to prevent the reset. If the program hangs, and the watchdog timer reset instruction not executed, the MCU will restart, and (possibly) continue correctly, depending on the nature of the fault.
4. CLOCK/OSCILATOR It generates timing for the entire system. Clock would be generated by using crystal, oscillator circuits, components like resistor,
Capacitor along with some circuit inside the processor. Accuracy, stability, Noise etc are some of the parameters to be looked into. Clock frequency, duty cycle, rise and fall time, jitter etc are some factors affecting the System operation.
Oscillator Types The main oscillator in microcontrollers can be a i) ii) iii) Crystal oscillator RC oscillator An external clock.
Some devices also have an internal RC oscillator. Increasing the oscillator frequency shortens the length of the machine cycles and therefore the time needed for executing instructions, but also increases power consumption. The types of oscillator can be selected by the configuration bits. These also select specific modes of operation for crystal or ceramic oscillators.
10 Embedded System Design 2011/2012-ECE Department,SBMJCE
If greater precision is required, especially if the program uses the hardware timers to make accurate measurements or generate precise output signals, a crystal (XTAL-Y1) oscillator is needed.
ii). RC OSCILLATOR MODE
The RC oscillator frequency is a function of the supply voltage, the resistor (R1) and capacitor (C1) values and the operating temperature. In addition to this, the
types
will also
affect
the
oscillation
oscillator frequency will vary from unit to unit due to normal process parameter variation. Further -more, the difference in lead frame capacitance between package
OSC1 pin. The feedback device between OSC1 and OSC2 is turned off in these modes to save current.
5. MEMORY It is an important part of a microcontroller system, can be classified into two types: program memory and data memory. Program memory stores the program written by the programmer and is usually nonvolatile. Data memory stores the temporary data used in a program and is usually volatile There are basically 6 types of memories, 3 are summarized as follows: i) RAM
RAM, random access memory, is a general purpose memory that usually stores the user data in a program. RAM memory is volatile in the sense that it cannot retain data in the absence of power i.e., data is lost after the power is turned off. Most microcontrollers have some amount of internal RAM, 256 bytes being a common amount, although some microcontrollers have more, some less. Memory can usually be extended by adding external memory chips.
ii) ROM
ROM, read only memory, usually holds program or fixed user data. ROM is nonvolatile. If power is removed from ROM and then reapplied, the original data will still be there. ROM memory is programmed during the manufacturing process, and the user cannot change its contents. ROM memory is only useful if you have developed a program and wish to create several thousand copies of it.
6. TIMERS Timers are important parts of any microcontroller. A timer is basically a counter which is driven from either an external clock pulse or the microcontrollers internal oscillator. A timer can be 8 bits or 16 bits wide. Data can be loaded into a timer under program control, and the timer
12 Embedded System Design 2011/2012-ECE Department,SBMJCE
can be stopped or started by program control. Most timers can be configured to generate an interrupt when they reach a certain count usually when they overflow. The user program can use an interrupt to carry out accurate timing-related Operations inside the microcontroller. 7. INTERRUPTS Interrupts are an important concept in microcontrollers. An interrupt causes the microcontroller to respond to external and internal (e.g., a timer) events very quickly. When an interrupt occurs, the microcontroller leaves its normal flow of program execution and jumps to a special part of the program known as the interrupt service routine (ISR). The program code inside the ISR is executed, and upon return from the ISR the program resumes its normal flow of execution. 8. REAL-TIME CLOCK A real-time clock enables a microcontroller to receive absolute date and time information continuously. Built-in real-time clocks are not common in most microcontrollers, since the same function can easily be implemented by either a dedicated real-time clock chip or a program written for this purpose. It keeps the "real time", which would be used by certain processes in the system. It is basically a timer circuit. It should keep the time even without system power. Main requirement for this is the power availability even if the system is powered down. Small batteries, high value capacitors can be used for this. Charge storage capacity of the battery/capacitor and power dissipation of the circuitry decides the time for which the circuit works without system power.
9. INPUT, OUTPUT, I/O INTERFACES These are used for reading data, controlling some outputs, interacting with some other systems etc. Could be parallel or serial.
13 Embedded System Design 2011/2012-ECE Department,SBMJCE
Normally implemented as general purpose ports. Could be internal or external to the processor. If external, extra hardware is required to implement. There would be switches, LEDs, Relays, Connectors Safety (User safety as well as system safety) is a major concern of this design as this is the part which has a direct contact with the user.
There would be ports for system control, Network connectivity, debugging code downloading etc.
10. INTERRUPT HANDLER As the name implies, it handles different interrupts in the system. As in the previous cases, it also could be internal or external to the processor and external hardware is required if it is external. This should control Interrupt Priority, masking, Vector etc.
11. APPLICATION SPECIFIC ICS (ASICS) Used for special applications. May need Special Controls/Configurations etc. Processor would do these.
(1) The human learns machine code. This is what programmers used to do sometimes in the very early days, laboriously writing each instruction in the binary code of the computer, exactly as the computer would then read it. This is incredibly slow, tedious and error-prone, but at least the programmer relates directly to the needs and capabilities of the computer. Machine code The instruction is in a language that is understood by that particular microprocessor. The binary code that is understood by the microprocessor is called machine code and consists of streams of binary bits. They are fed from the RAM or ROM memory chips in blocks of 8, 16, 32 or 64 depending on the microprocessor in use.
14 Embedded System Design 2011/2012-ECE Department,SBMJCE
The program is not friendly: 11000110 00010101 hardly compares with Add 15H to the number 25H for easy understanding. There is nothing about 11000110 which reminds us of its meaning add the following number to the number stored in the accumulator so a program would need to be laboriously decoded byte by byte. Assembly language, the second generation language
Assembly language was designed to do the same work as machine code but be much easier to use. It replaced all the ones and zeros wit letters that were easier to remember but it is still a low-level language. The assembly equivalent of our machine code example 11000110 00010101 is the code ADD A, m. This means add any number, m to the value stored in the accumulator. We can see immediately that it would be far easier to guess the meaning of ADD A, m than 11000110 00010101 and so it makes programming much easier. If we had to choose letters to represent the add command, ADD A, m was obviously a good choice. The code ADD A, m is called a mnemonic.
15
2011/2012-ECE Department,SBMJCE
Assembler: An assembler is a software tool designed to simplify the task of writing computer programs. It translates symbolic code into executable object code. This object code may then be programmed into a microcontroller and executed. Assembly language programs translate directly into CPU instructions which instruct the processor what operations to perform. Therefore, to effectively write assembly programs, you should be familiar with both the microcomputer architecture and the assembly language. This is a compromise position. Every one of the computers instructions set is given a mnemonic. This is usually a three- or four-letter word that can be used to represent directly one instruction from the instruction set. The programmer then writes the program using the instruction mnemonics. The programmer has to think at the level of the computer, as he/she is working directly with its instructions, but at least the programmer has the mnemonics to use, rather than actually working with the computer machine code. Assembly and machine code are not portable. This means that they are designed to be used on a particular microprocessor and are generally not able to be used on another type. They also require the programmer to have knowledge of the internal layout or architecture of the microprocessor. Third-generation languages The third-generation languages were intended to make life easier. They were designed to improve the readability by using English words which would make it easier to understand and to sort out any faults (bugs) in the program. The process of removing bugs is called debugging. In addition, they should relieve the programmer of any need to understand the internal architecture of the microprocessor and so the program should be totally portable. Ideally the programmer should not even need to know what processor is being used. These languages are called highlevel and are all procedural. This is as if we go some way to asking the computer to learn our language. In an HLL, instructions are written in a form that relates in a recognizable way to our own language. Another computer program, either a compiler or an interpreter, then converts that program into the machine code that the computer can comprehend. The programmer now has a much easier time and can write very sophisticated programs. The following figure shows overview of generation of languages from first generation to third generation
16 Embedded System Design 2011/2012-ECE Department,SBMJCE
User is now, however, separated from the resources of the computer, and the program may be comparatively inefficient in terms of its use of memory and in its execution speed. Compilers In assembly language, we used an assembler program to convert the mnemonics to machine code. We usually refer to the conversions being from source code to object code but it means the same thing. In any high-level language, we use a compiler to produce the machine code. The compiler will also carry out the useful extras like error and syntax checking that we met with the assemblers. Compilers and assemblers are both software that is, they are programs designed to do a specific job. If we were using a PIC Microcontroller, and wished to program it using a particular language, say C, then we would have to purchase a C18 compiler. It would do just this job and nothing else. We could not adapt it in any way to accept a different high-level language or target it at different controllers.
17
2011/2012-ECE Department,SBMJCE
When the designer has struggled through the process of devising assembly code for a particularly nasty formula it would make sense to store the answer away to allow its use on another occasion. A collection of these solutions is called a library LINKERS Slotting these ready-made library routines into the main programs is performed by a linker which is another piece of software. The linker therefore joins or links together many separate pieces of code into one program ready for use. LOADERS The last job to be done is to load it into some RAM ready for use. Another piece of software is used to determine which addresses in the microprocessor system memory are available. This is called a loader. A loader also converts labels to their final addresses.
18 Embedded System Design 2011/2012-ECE Department,SBMJCE
Characteristics of Embedded systems: 1) Single-functioned: An embedded system usually executes only one program, repeatedly. For example, a pager is always a pager. In contrast, a desktop system executes a variety of programs, like spreadsheets, word processors, and video games, with new programs added frequently. 2) Tightly constrained: All computing systems have constraints on design metrics, but those on embedded systems can be especially tight. A design metric is a measure of an implementations features, such as cost, size, Performance and power. Embedded systems often must cost just a few dollars, must be sized to fit on a single chip, must perform fast enough to process data in real-time, and must consume minimum power to extend battery life or prevent the necessity of a cooling fan. 3) Reactive and real-time: Many embedded systems must continually react to changes in the systems environment, and must compute certain results in real time without delay. For example, a car's cruise controller continually monitors and reacts to speed and brake sensors. It must compute acceleration or decelerations amounts repeatedly
19 Embedded System Design 2011/2012-ECE Department,SBMJCE
within a limited time; a delayed computation result could result in a failure to maintain control of the car. In contrast, a desktop system typically focuses on computations, with relatively infrequent reactions to input devices. In addition, a delay in those computations, while perhaps inconvenient to the computer user, typically does not result in a system
failure.
Design challenge optimizing design metrics The embedded-system designer must of course construct an implementation that fulfills desired functionality, Unit cost: The monetary cost of manufacturing each copy of the system, excluding NRE cost. NRE cost (Non-Recurring Engineering cost): The monetary cost of designing the system. Once the system is designed, any number of units can be manufactured without incurring any additional design cost. Size: The physical space required by the system, often measured in bytes for software, and gates or transistors for hardware. Performance: The execution time or throughput of the system. Power: The amount of power consumed by the system, which determines the lifetime of a battery, or the cooling requirements of the IC, since more power means more heat. Flexibility: The ability to change the functionality of the system without incurring heavy NRE cost. Software is typically considered very flexible. Time-to-market: The amount of time required to design and manufactures the system to the point the system can be sold to customers. Time-to-prototype: The amount of time to build a working version of the system, which may be bigger or more expensive than the final system implementation, but can be used to verify the systems usefulness and correctness and to refine the system's functionality.
20 Embedded System Design 2011/2012-ECE Department,SBMJCE
Correctness: Our confidence that we have implemented the systems functionality correctly. We can check the functionality throughout the process of designing the system, and we can insert test circuitry to check that manufacturing was correct. Safety: The probability that the system will not cause harm.
DESIGN PROCESSES
1. 2. 3. 4. 5. 6. 7. Abstraction Hardware and Software architecture Extra functional Properties System Related Family designs Modular Design Mapping User Interfaces Design 8. Refinements
1. Abstraction: Each problem component first abstracted. Application software abstracted as concurrently running multiple threads and interrupt service threads 2. Hardware and Software architecture Assumed to consists multiple layers Each architectural layer be well understood before a design
3. Extra functional Properties Extra functionalities required in the system being developed be well understood from the design 4. System Related Family designs Families of related systems developed earlier taken into consideration during designing 5. Modular Design
21
Modules should be such that they can be composed (coupled or integrated) later. Effective Modular design should ensure effective function independence, cohesion and Coupling.
Be clearly understood and maintain continuity. Appropriate protection strategies are necessary for each module. A module is not permitted to change or modify module functionality.
For example, protection from a device driver modifying the configuration of another device
6. Mapping Mapping into various representations done considering the software requirements. For example, data flow in the same path during the program flow can be mapped together as a single entity. Transform and transaction mapping
7. User Interfaces Design Designed as per user requirements, analysis of the environment and system functions. Interface design validation- Customer validation
8. Refinements Each component and module design needs to be refined iteratively till it becomes the most appropriate for implementation by the software team
Five levels of abstraction from top level to bottom level in the design process
1. Requirements 2. Specifications 3. Architecture 4. Components 5. System Integration
22
2011/2012-ECE Department,SBMJCE
1. Requirements
Complete clarity of required purpose, inputs, outputs, functioning, design metrics and Validation requirements for finally developed systems specifications. Consistency in the requirements
2. Specifications Clear specifications of Customer expectations from the product. Needs specifications for hardware, for example, peripherals, devices processor and memory specifications data types and processing specifications 3. Architecture data flow graphs program models software architecture layers and hardware architecture interfaces design system integration
Software architectural layers How the different elements -Data structures, databases, algorithms, control functions, state transition functions, process, data and program flow are to be organized What shall be design of data structures and databases that would be most appropriate for the given problem? Whether data organized as a tree- like structure will be appropriate? What will be the design of the components in the data?
4. Components
23
Memory RAM, ROM or internal and external flash or secondary memory in the system
Peripherals and devices internal and external to the system Ports and buses in the system Power source or battery in the system
5. System Integration System integration is the bringing together of the component subsystems into one system and ensuring that the subsystems function together as a system
SoC as a complex integrated circuit, or integrated chipset, which combines the major functional elements or subsystems of a complete end product into a single entity. All interesting SoC designs include at least one programmable processor, and very often a combination of at least one RISC control processor and one DSP. They also include on-chip communications structures - processor bus (es), peripheral bus (es), and perhaps a high-speed system bus. Multi-Processor Systems-on-Chip (MPSoC), which combine the advantages of parallel processing with the high integration levels of SoCs, emerged as a viable solution to meet the demand for computational power required by applications such as network and media processors. The design of MPSoC typically involves integration of heterogeneous hardware and software IP components. The SoC world from SoC implementations using custom, ASIC or Application-Specific Standard Part (ASSP) design approaches, to include the design and use of complex reconfigurable logic parts with embedded processors and other application-oriented blocks of intellectual property. These complex FPGAs (Field-Programmable Gate Arrays) are offered by several vendors, including Xilinx (Virtex-II PRO Platform FPGA) and Altera (SOPC), but are referred to by several names: highly programmable SoCs, system-on-a-programmable-chip, embedded FPGAs.
24
2011/2012-ECE Department,SBMJCE
We can define; embedded systems are being designed on a single chip, called system on chip (SoC). SoC is a new design innovation for embedded systems.
A SoC is embedded with the following components: o o o o o o o o o o Multiple processors Memories Multiple standard source solutions (IP-Intellectual property) Cores and Other logic analog units A SoC may also have a network protocol embedded in to it. It may embed an encryption function unit. It can embed discrete cosine transforms for signal processing applications. It may also embedded FPGA cores (Field programmable Gate Array)
Recently exemplary GPPs called ARM 7, ARM 9 which embeds onto a VLSI chip, have been developed by ARM & Texas Instruments.
IC technology & VLSI circuits design technology Every processor must eventually be implemented on an IC. IC technology involves the manner in which we map a digital (gate-level) implementation onto an IC. An IC (Integrated Circuit), often called a chip, is a semiconductor device consisting of a set of connected transistors and other devices. A number of different processes exist to build semiconductors, the most popular of which is CMOS.IC technology is independent from processor technology; any type of processor can be mapped to any type of IC technology, semiconductors consist of numerous layers. The bottom layers form the transistors. The middle layers form logic gates. The top layers connect these gates with wires.
i) Full-custom/VLSI
25
2011/2012-ECE Department,SBMJCE
Full-custom/VLSI
In a full-custom IC technology, we optimize all layers for our particular embedded systems digital implementation. Such optimization includes placing the transistors to minimize interconnection lengths, sizing the transistors to optimize signal transmissions and routing wires among the transistors. Once we complete all the masks, we send the mask specifications to a fabrication plant that builds the actual ICs. Full-custom IC design, often referred to as VLSI (Very Large Scale Integration) design VLSI Levels of Abstraction
Semi-custom ASIC
In Semi-custom ASIC (Application-Specific IC) technology, the lower layers are fully or partially built, leaving us to finish the upper layers. In a gate array technology, the masks for the transistor and gate levels are already built. The remaining task is to connect these gates to achieve our particular implementation. In a standard cell technology, logic-level cells have their mask portions pre-designed, usually by hand.
26
2011/2012-ECE Department,SBMJCE
Classification and Development Skills Requirements for the Embedded Systems Some of the criteria used in the classification of embedded systems are 1. 2. 3. 4. 5. Based on Generation Based on functionality and performance requirements Based on Complexity requirements Based on deterministic behavior Based on triggering
Based on functionality and performance requirements, embedded systems are classified as Stand-alone Embedded Systems Real-time Embedded Systems Networked Information Appliances Mobile Devices
Based on Complexity requirements, embedded systems are classified as 1. Small Scale Embedded Systems 2. Median Scale Embedded Systems 3. Large Scale Embedded Systems
]
27
2011/2012-ECE Department,SBMJCE
1. Small Scale Embedded Systems Designed with a single 8- or 16-bit microcontroller; Little hardware and software complexities and involve board-level design. Tools for development of embedded software Editor, assembler and cross assembler, integrated development environment (ISE) specific to the microcontroller or processor used C or Java used for developing C program compilation is done into the assembly, and executable codes are then appropriately located in the system memory. Software fits within the memory available and keeps in view the need to limit power dissipation when system is running continuously. Skills required for Small Scale Embedded System Designer Full understanding of a microcontroller with a basic knowledge of computer architecture, digital electronic design, software engineering, data communication, control engineering, motors and actuators, sensors and measurements, analog electronic design and IC design and manufacture. Specific skills will be needed in specific situations. For example, control engineering knowledge will be needed for design of control systems and analog electronic design knowledge will be needed when designing the system interfaces. Computer architecture and organization. Interfacing the memories. Burning the executable machine codes in PROM or ROM. Use of decoders and demultiplexers. Use of Direct memory accesses. Use of Ports and device-drivers. Device drivers in assembly. Simple and sophisticated buses. Timers. Interrupt servicing mechanism. C programming elements. Memory optimization. Selection of hardware and microcontroller. Use of ICE (In-Circuit-Emulators), cross assemblers and testing equipment. Debugging the software and hardware bugs by using test vectors. Basic knowledge in the other areas-software engineering, data communication, control engineering, motors and actuators, sensors and measurements, analog electronic design and IC design and manufacture
2. Median Scale Embedded Systems Designed with a single or few 16- or 32- bit microcontrollers or DSPs or Reduced Instruction Set Computers (RISCs).
28 Embedded System Design 2011/2012-ECE Department,SBMJCE
Employs the readily available single purpose processors. Employ the readily available IPs for the various functionsfor example, for the bus interfacing, Both hardware and software complexities Programming tools: C/C++/Visual, C++/Java, RTOS, and Source code engineering tool, Simulator, Debugger and Integrated Development Environment (IDE). Software tools provide the solutions to the hardware complexities.
Skills required for Median Scale Embedded System Designer 'C'/C++/Java programming and RTOS programming and program modeling skills Programming the Tasks or threads and their scheduling by RTOS. Programming priorities and Cooperative and preemptive scheduling Use of Inter processor communication functions. Use of shared data, and programming the critical sections and re-entrant functions. Use of semaphores, mailboxes, queues, sockets and pipes. Handling of interrupt-latencies and meeting task deadlines. Use of various RTOS functions. Use of physical and virtual device drivers. Designer must have access to an RTOS programming tool with Application Programming Interfaces (APIs) for the specific microcontroller to be used
3. Large Scale Embedded Systems Enormous hardware and software complexities and may need scalable processors or configurable processors and programmable logic arrays. Used for cutting edge applications that need hardware and software co-design and components integration in the final system Constrained by the processing speeds available in their hardware units. Certain software functions such as encryption and deciphering algorithms, discrete cosine transformation and inverse transformation algorithms, TCP/IP protocol stacking and network driver functions implemented in the hardware to obtain additional speeds by saving time Software implements some of the functions of the hardware resources in the system. Development tools for these systems may not be readily available at a reasonable cost or may not be available at all. In some cases, a compiler or retargetable compiler might have to be developed for these.
29
2011/2012-ECE Department,SBMJCE
Skills required for Large Scale Embedded System Designer Team is needed to co-design and solve the high level complexities of the hardware and software design. An embedded system hardware engineer should have full skills in hardware units and basic knowledge of 'C'/C++ and Java, RTOS and other programming tools. Software engineer should have basic knowledge in hardware and a thorough knowledge of 'C', RTOS and other programming tools. A final optimum design solution is then obtained by system integration.
EMBEDDED SYSTEM APPLICATIONS We can categorize applications of Embedded System into various categories as mentioned 1. Aerospace-Navigation Systems, Automatic landing systems, Flight altitude controls, engine controls, space exploration etc.. 2. Automotive-Fuel Injection Control, Passenger environmental controls, antilock braking systems, air bag controls, GPS mapping, Music system, Air conditioner etc 3. Home Utilities-Ovens, Washing Machine, Digital Watch, Security Alarm, Sound Recorder etc 4. Industrial- Elevator Controls, Robots, Engine Control etc.. 5. Medical- Imaging Systems, Patient monitors, Heart pacers, ECG etc.. 6. Office Automation- FAX machines, Telephones, Cash Registers 7. Communications- Switches, Hubs, pagers, cellular phones, cable TV terminals, fax and transreceivers, video games and so on. 8. Computer Peripherals- Printers, scanners, displays, modems, Hard Disk Drives, CDROM drives 9. Military Applications 10. Industrial Instrumentation Process controller, DC motor controller, robotic systems, CNC machine controller, close loop engine controller, industrial moisture recorder cum controller. 11. Scientific digital storage system, CRT display controller, spectrum analyzer.
30
2011/2012-ECE Department,SBMJCE
Types of Input and Output Devices Input and output devices can be classified into the following I/O types. i Synchronous Serial I/O devices ii Serial UART I/O devices iii Parallel Port I/O devices Synchronous Serial I/O devices Synchronous Serial communication is defined as a Byte or a Frame of data is transmitted or received at constant time intervals with uniform phase differences. Synchronous serial Input Devices . Synchronous serial Output Devices
Synchronous Serial Input Device (Serial Bits and a clock signal used for synchronization of a port input)
31
2011/2012-ECE Department,SBMJCE
Synchronous Serial Output Device (Device Serial Bits and synchronization clock signal at a port output)
Serial UART I/O devices The serial UART communicate may be defined as a Byte or frame of data transmitted or received at variable time intervals Asynchronous Serial UART input Asynchronous Serial UART output Parallel Port I/O devices In this communication any number of ports could be connected with the device and the data communication is bidirectional in nature. i. Single Bit Input and Output a. Parallel Port Single Bit Input b. Parallel Port Single Bit Output ii. Parallel Port input and Output a. Parallel Port Input b. Parallel Port Output
32 Embedded System Design 2011/2012-ECE Department,SBMJCE
Examples
SYNCHRONOUS, ISO-SYNCHRONOUS AND ASYNCHRONOUS COMMUNICATIONS FROM SERIAL DEVICES. Synchronous Communication In this means of communication byte or frame of data received or transmitted at constant time intervals with uniform phase differences. Bits of a data frame are sent in a fixed maximum time intervals. Handshaking between sender and receiver is not provided during communication. Example Frames sent over LAN. Characteristics The main features of the synchronous communication are Bytes maintain a constant phase difference. No sending of bytes at random time intervals.
33 Embedded System Design 2011/2012-ECE Department,SBMJCE
A clock must be present at transmitter to send the data. Moreover, the clock information is sent to the receiver (i.e.) it is not always implicit to the receiver.
Communication Protocols used Most often synchronous serial communication is used for data is transmission between physical devices. It can be complex and has to be as per the communication protocol followed. Example HDLC (High Level Data Link Control) Synchronization ways Ten ways by which the synchronous signals with the clocking info transmitted from transmitter to the receiver are as shown below.
Iso-Synchronous Iso-synchronous communication is a special case of synchronous communication. In contrast with the synchronous communication where bits of data frame are sent in a fixed maximum time interval, the Iso-synchronous communication may have varied maximum time intervals.
34
2011/2012-ECE Department,SBMJCE
Asynchronous In the asynchronous communication Byte or a Frame of data is received or sent at variable time intervals with phase difference. The asynchronous communication technique is a transmission technique which is most widely used by personal computers to provide connectivity to printer, modems fax machines etc. This allows a series of bytes to be sent along a single wire (actually a ground wire is required to complete the circuit). The data is sent as a series of bits. A shift registers (in either hardware or software) is used to serialize each information byte into the series of bits which are then sent on the wire using an I/O port and a bus driver to connect to the cable.
Characteristics Bytes or Frames of data is sent or received at variable time intervals. Handshaking between sender and receiver is provided during communication. A clock is needed at the transmitter to send the data The clock data is not sent to the receiver (i.e.) it is always implicit to the receiver. UART (Universal Asynchronous Receiver Transmitter) The Universal Asynchronous receiver Transmitter (UART) controller is the key component of the serial communication subsystem of a computer. The UART takes bytes of data and transmits the individual bits in a sequential fashion. At the destination, a second UART reassembles the bits into complex bytes.
Asynchronous transmission allows data to be transmitted without the sender having to send a clock signal to the receiver. Instead, the sender and receiver must agree on timing parameters in advance and special bits are added to each word which is used to synchronized the sending and receiving bits. When a word is given to the UART for Asynchronous transmissions, a bit called the "Start Bit" is added to the beginning of each word that is to be transmitted. After the Start Bit, the individual bits of the word of data are sent, with the Least Significant Bit (LSB) being sent first. Each bit in the transmission is transmitted for exactly the same amount of time as all of the other bits and the receiver *looks" at the wire at approximately halfway through the period assigned to each bit to determine if the bit is l or 0. The sender does not know when the receiver has "looked" at the value of the bit. The sender only knows when the clock says o begin transmitting the next bit of the word. When the entire data word has been sent, the transmitter may add a Parity Bit that the transmitter generates. The Parity Bit may be used by the receiver to perform simple error checking. Then at least one Stop Bit is sent by the transmitter.
When the receiver has received all of the bits in the data word. It may check for the Parity Bits (both sender and receiver must agree on whether a Parity Bit is to be used) and then the receiver looks for a Stop Bit. If the Stop bit does not appear when it is supposed to the UART considers the entire word to be garbled and will report a Framing Error to the host processor when the data word is read. The usual cause of a Framing Error is that the sender and receiver clocks were not running at the same speed, or that the signal was interrupted. Regardless of whether that data was received correctly or not the UART automatically discards the Start, Parity and Stop bits. If the sender and receiver are configured identically, these bits are not passed to the host.
No shared clock RS232C Connector Can be simpler 9 pin and 25-pin in case of IBM COM port
TxD: - This pin carries data from the computer to the serial device RXD: - This pin carries data from the serial device to the computer DTR signals: - DTR is used by the computer to signal that it is ready to communicate with the serial device like modem. In other words, DTR indicates to the Dataset (i.e., the modem or DSU/CSU) that the DTE (computer) is ON. DSR: - Similarly to DTR, Data set ready (DSR) is an indication from the Dataset that it is ON. DCD: - Data Carrier Detect (DCD) indicates that carrier for the transmit data is ON. RTS: - This pin is used to request clearance to send data to a modem CTS: - This pin is used by the serial device to acknowledge the computer's RTS Signal. In most situations, RTS and CTS are constantly on throughout the communication session. Clock signals (TC, RC, and XTC): - The clock signals are only used for synchronous communications. The modem or DSU extracts the clock from the data stream and provides a
37 Embedded System Design 2011/2012-ECE Department,SBMJCE
steady clock signal to the DTE. Note that the transmit and receive clock signals do not have to be the same, or even at the same baud rate.
VOLTAGE LEVELS It does not use the conventional 0 and 5 volt levels implemented in TTL and CMOS designs. Drivers have to supply +5 to +15 volts for a logic 0 and 5 to 15 volts for a logic 1. This means that extra power supplies are needed to drive the RS232 voltage levels. Typically, a +12 volt and a 12 volt power supply are used to drive the RS232 outputs MAXIMUM DATA RATE The standard defines a maximum data rate of 20k bits/second. This is unnecessarily slow for many of todays applications. RS232 products manufactured by Dallas Semiconductor guarantee up to 250k bits/second and typically can communicate up to 350k bits/second. MAXIMUM CABLE LENGTH RS232 standard has been replaced by a maximum load capacitance specification of 2500 pF. To determine the total length of cable allowed, one must determine the total line capacitance.. the maximum cable length is approximately 80 feet. If a longer cable length is required, the user would need to find a cable with a smaller mutual capacitance.
38
2011/2012-ECE Department,SBMJCE
HDLC (HIGH LEVEL DATA LINK CONTROL) The HDLC protocol is a general purpose protocol which operates at the data link layer of the OSI reference model. The protocol uses the service of a physical layer, and provides either a best effort or reliable communications path between the transmitter and receiver (i.e. with acknowledged data transfer) the type of service provided depends upon the HDLC mode which is used. Each piece of data is encapsulated in an HDLC frame by adding a trailer and a header. The header contains an HDLC address and 4n HDLC field. The trailer is founds the end of the frame, and contains Cyclic Redundancy check (CRC) which detects any errors which may occur during transmission. The frames are separated by HDLC flag sequence which are transmitted between each frame and whenever there is no data to be transmitted.
39
2011/2012-ECE Department,SBMJCE
Modes of operation The HDLC protocol is a general data link control protocol capable of supporting a range of modes of operation. The two most prevalent modes are The best effort or datagram service In this mode, the packets are carried in a UI frame, and a best effort delivery is performed (i.e., there is no guarantee that the packet carried by the frame will be delivered). The link layer does not provide error recovery of lost frames. This mode is used for point to point links carrying a network protocol which itself uses datagram packets (example IP), The control field of HDLC follows the address field and is the second part of all HDLC frames. The Asynchronous Balanced Mode (ABM). This provides a reliable data point to point data link service and may be used to provide a service which supports either a datagram or reliable network protocol. In this mode, the packets are carried in numbered frames which are acknowledged by the receiver using numbered supervisory frames. Error recovery (example, checkpoint or go back n error recovery) is employed to ensure a well ordered and reliable flow of frames. The HDLC Address field The first byte(s) of a frame transmitted using the High Level Control (HDLC) Protocol is used to carry an address field. This field is typically a single byte, but extension is possible allowing a number of byes to be used. The address format is shown in the figure below
The address consists of three parts A Service Access Point (SAP) which is usually set to zero, but used in some variants of HDLC to identify one of the number of data link protocol entities. A Command/Response bit to indicate whether the frame relates to information frame (Iframes) being sent from the node or received by the node. An address extension 6ir which is usually set to true to indicate that the address is of length one byte. When set to false it indicates an additional byte follows. The address field is mainly used when HDLC issued in a mode which provides reliable data transfer using numbered control frames.
40
2011/2012-ECE Department,SBMJCE
Control Field of HDLC The control field of HDLC follows the address field and is the Second part of all HDLC frames. The best effort service is provided through the use of U (un-numbered) frames consisting of a single byte. All frames carry a field of size I bit is known as the "poll/final" bit and is used by the check pointing procedure to verify correct transmission.
HDLC defines currently two formats for frames which carry sequence numbers. These types of frames are used to provide the reliable data link service. Two types of numbered frames are supported. S (supervisory) frames containing only an acknowledge number (N(R)). I (information) frame carrying data and containing both a send sequence number (N(S)) and acknowledgment number (N(R)). Flags HDLC is a data link protocol which uses a unique bit sequence to delimit the start and end of each PDU transported by the data link layer service. In HDLC, frames are delimited by a sequence of bits known as a flag. The flag sequence is a unique 8 bit sequence of the for 0111 1110. The way in which this is performed is described in the text and diagrams which follow.
41
2011/2012-ECE Department,SBMJCE
SerDes subunit:
42
Device for I/O may integrate a SerDes (serialization and De-serialization) Subunit. SerDes is a standard subunit at in a device where the bytes placed at 'transmit holding buffer' serialize on transmission and once the bits are received these de-serialize.
Embedded System Design 2011/2012-ECE Department,SBMJCE
PMA subunit:
File transfer, Boot Protocols TELNET (Tele network), FTP (file transfer protocol), DNS (domain network server), IMAP 4 (Internet Message Exchange Application Protocol) and Bootp (Bootstrap protocol).
44
2011/2012-ECE Department,SBMJCE
Internet appliances application protocols and Web protocols HTTP (hyper texttransfer protocol), HTTPS (hyper text transfer protocol Secure Socket Layer), SMTP (Simple Mail Transfer Protocol), POP3 (Post office Protocol version 3), ESMTP (Extended SMTP),
SERIAL BUS COMMUNICATION PROTOCOLS 1-Wire protocol SPI I2C CAN USB FireWire IEEE 1394 Bus
WIRELESS AND MOBILE SYSTEM PROTOCOL IrDA (Infrared Data Association) Bluetooth 2.4 GHz 802.11 WLAN 802.11b Wi-Fi
ZigBee 900 MHz
45
2011/2012-ECE Department,SBMJCE
o SCLK: Serial Clock o MOSI: Master Out Slave In -Data from Master to Slave o MISO: Master In Slave Out -Data from Slave to Master o SS: Slave Select
All lines on the SPI bus are unidirectional: The signal on the clock line (SCLK) is generated by the master and is primarily used to synchronize data transfer. The master-out, slave-in (MOSI) line carries data from the master to the slave and the master-in, slave-out (MISO) line carries data from the slave to the master. Each slave device is selected by the master via individual select lines. Information on the SPI bus can be transferred at a rate of near zero bits per second to 1 Mbits per second. Data transfer is usually performed in eight/sixteen bit blocks. All data transfer is synchronized by the serial clock (SCLK). One bit of data is transferred for each clock cycle. Four clock modes are defined for the SPI bus by the value of the clock polarity and the clock phase bits. The clock polarity determines the level of the clock idle state and the clock phase determines which clock edge places new data on the bus.
47
2011/2012-ECE Department,SBMJCE
SPI Communication
SPI creates a data loop between two devices. Data leaving the master exits on the SDO (serial data output) line. Data entering the master enters on the serial data input, SDI line. A clock (SCK) is generated by the master device. It controls when and how quickly data is exchanged between the two devices. allows the possibility of having more than one slave and simplifies the communications. When the SS signal goes low at a slave device, only that slave is accessed by SPI.
SS allows a master device to control when a particular slave is being addressed. This
When operating in SPI mode, module uses 4 registers: SSPSTAT - status register SSPCON - control register SSPBUF - buffer register SSPSR - shift register The first three registers are writable/readable and can be changed at any moment, while the forth register, since not available, is used for converting data into serial format
48
2011/2012-ECE Department,SBMJCE
SSPSR - shift register Shift register (SSPRS) is directly connected to the microcontroller pins and used for data transmission in serial format. The SSPRS register has its input and output and shifts the data in and out of device.
In other words, each bit appearing on input (receive line) simultaneously shifts
another bit toward output (transmit line) i.e., the data travels in a loop to the next shift register. The data is shifted out the SDO pin of one device and into the SDI pin of the other. SSPBUF register The SSPBUF register (Buffer) is a part of memory used to temporarily hold the data written to the SSPRS until the received data is ready. Upon receiving all 8 bits of data, that byte is moved to the SSPBUF register. This double buffering of the received data (SSPBUF) allows the next byte to start reception before reading the data that was just received. Any write to the SSPBUF register during transmission/reception of data will be ignored. Since having been the most accessed, this register is considered the most important from the programmers point of view. Control register The control block determines when an SPI transfer can take place. When referring to the master device this section transmits a clock and slave select signal. The Slave device waits for these signals and uses them when processing the SPI data. In the master device, the slave select signal must be controlled by your code. It is a standard I/O line that is brought low when you wish to initiate an SPI transfer. When you finish the transfer, return the I/O line to the high state. A transfer is usually one byte long.
Step-2
This data is now moved to the SSPSR register and the SSPBUF register is not cleared.
49
2011/2012-ECE Department,SBMJCE
Step 3
Synchronized with clock signal, this data is shifted to the output pin (MSB bit first) while the register is simultaneously being filled with bits through input pin. In Master mode, the Microcontroller itself generates clock, while the Slave mode uses external clock (pin SCK). Step 4. The SSPSR register is full once the 8 bits of data have been received. It is indicated by setting the BF and SSPIF bits. The received data (that byte) is automatically moved from the SSPSR register to the SSPBUF register. Since data transfer via serial communication is performed automatically, the rest of the program is normally executed while data transfer is in progress. In that case, the function of the SSPIF bit is to generate interrupt when one byte transmission is completed. Step 5. At last, the data stored in the SSPBUF register is ready for use and moved to any register available.
50
2011/2012-ECE Department,SBMJCE
51
2011/2012-ECE Department,SBMJCE
2. Daisy Chain Configuration In this configuration CS and SCK lines connected in parallel, and each SDO pin of previous chip is connected to SDI pin. Daisy Chaining simplifies the connection by reducing the length and connections of the data lines, but restricts access to a single device in chain. In other words, all the devices in chain will be involved in a write or read operation. We can consider that every device in the chain is a portion of one big shift register, where serial data is shifted out on each clock going through all the Slaves, from Slave0 to slave1 and all the way down to the last Slave (N-1) in this chain as shown in figure.
52
2011/2012-ECE Department,SBMJCE
IC
2 2 2
I C is an Inter-IC Serial bus. Originally I C Bus developed by Philips in the 80s, the I C bus was designed to link a small number of devices on a single card, such as to manage the tuning of a car radio or TV. The maximum allowable capacitance was set at 400 pF to allow proper rise and fall times for optimum clock and data signal integrity with a top speed of 100 kbps. In 1992 the standard bus speed was increased to 400 kbps, to keep up with the everincreasing performance requirements of new ICs.
2
All I C devices are designed to be able to communicate together on the same two-wire bus and system functional architecture is limited only by the imagination of the designer. But while its application to bus lengths within the confines of consumer products such as PCs, cellular phones, car radios or TV sets grew quickly, only a few system integrators were using it to span a room or a building.
2
The I C bus is now being increasingly used in multiple card systems, such as a blade
2
servers, where the I C bus to each card needs to be isolatable to allow for card insertion and removal while the rest of the system is in operation, or in systems where many more devices need to be located onto the same card, where the total device and trace capacitance would have exceeded 400 pF.
2
New bus extension & control devices help expand the I C bus beyond the 400 pF limit of about 20 devices and allow control of more devices, even those with the same address. These new devices are popular with designers as they continue to expand and increase the
2
53
2011/2012-ECE Department,SBMJCE
Each device connected to the bus is software addressable by a unique address and simple master/slave relationships exist at all times; masters can operate as master-transmitters or as master-receivers.
Its a true multi-master bus including collision detection and arbitration to prevent data corruption if two or more masters simultaneously initiate data transfer.
Serial, 8-bit oriented, bi-directional data transfers can be made at up to 100 kbit/s in the Standard-mode, up to 400 kbit/s in the Fast-mode, up to 3.4 Mbit/s in the High-speed mode.
On-chip filtering (50 ns) rejects spikes on the bus data line to preserve data integrity. The number of ICs that can be connected to the same bus segment is limited only by the maximum bus capacitive loading of 400 pF.
The I2C-bus supports any IC fabrication process (NMOS, CMOS, bipolar). Two wires, serial data (SDA) and serial clock (SCL), carry information between the devices connected to the bus. Each device is recognized by a unique address (whether its a microcontroller, LCD driver, memory or keyboard interface) and can operate as either a transmitter or receiver, depending on the function of the device. Obviously an LCD driver is only a receiver, whereas a memory can both receive and transmit data. In addition to transmitters and receivers, devices can also be considered as masters or slaves when performing data transfers. A master is the device which initiates a data transfer on the bus and generates the clock signals to permit that transfer. At that time, any device addressed is considered a slave.
54
2011/2012-ECE Department,SBMJCE
HARDWARE CONFIGURATION The bus wires are named SDA (serial data) and SCL (serial clock). These two bus wires have the same configuration. They are pulled-up to the logic high level by resistors connected to a single positive supply, usually +3.3 V or +5 V but designers are now moving to +2.5 V and towards 1.8 V in the near future. All the connected devices have open-collector (open-drain for CMOS - both terms mean only the lower transistor is included) driver stages that can transmit data by pulling the bus low, and high impedance sense amplifiers that monitor the bus voltage to receive data. Unless devices are communicating by turning on the lower transistor to pull the bus low, both bus lines remain high. To initiate communication a chip pulls the SDA line low. It then has the responsibility to drive the SCL line with clock pulses, until it has finished, and is called the bus master.
2
1) Wait until it sees no activity on the I C bus. SDA and SCL are both high. The bus is 'free'.
55
2011/2012-ECE Department,SBMJCE
2) Put a message on the bus that says 'its mine' - I have STARTED to use the bus. All other ICs then LISTEN to the bus data to see whether they might be the one who will be called up (addressed). 3) Provide on the CLOCK (SCL) wire a clock signal. It will be used by all the ICs as the reference time at which each bit of DATA on the data (SDA) wire will be correct (valid) and can be used. The data on the data wire (SDA) must be valid at the time the clock wire (SCL) switches from 'low' to 'high' voltage. 4) Put out in serial form the unique binary 'address' (name) of the IC that it wants to communicate with. 5) Put a message (one bit) on the bus telling whether it wants to SEND or RECEIVE data from the other chip. 6) ask the other IC to ACKNOWLEDGE (using one bit) that it recognized its address and is ready to communicate. 7) After the other IC acknowledges all is OK, data can be transferred. 8) The first IC sends or receives as many 8-bit words of data as it wants. After every 8-bit data word the sending IC expects the receiving IC to acknowledge the transfer is going OK. 9) When all the data is finished the first chip must free up the bus and it does that by a special message called 'STOP'. It is just one bit of information transferred by a special 'wiggling' of the SDA/SCL wires of the bus.
56
2011/2012-ECE Department,SBMJCE
Within the procedure of the I2C-bus, unique situations arise which are defined as START (S) and STOP (P) conditions A HIGH to LOW transition on the SDA line while SCL is HIGH is one such unique case. This situation indicates a START condition. A LOW to HIGH transition on the SDA line while SCL is HIGH defines a STOP condition. START and STOP conditions are always generated by the master. The bus is considered to be busy after the START condition. The bus is considered to be free again a certain time after the STOP condition.
The first seven bits of the first byte make up the slave address. The eighth bit is the LSB (least significant bit). It determines the direction of the message. A zero in the least significant position of the first byte means that the master will write information to a selected slave. A one in this position means that the master will read information from the slave. When an address is sent, each device in a system compares the first seven bits after the START condition with its address. If they match, the device considers itself addressed by the master as a slave-receiver or Slave-transmitter, depending on the R/W bit.
57
2011/2012-ECE Department,SBMJCE
I2C Read
58
2011/2012-ECE Department,SBMJCE
CLOCK GENERATION
All masters generate their own clock on the SCL line to transfer messages on the I2Cbus. Data is only valid during the HIGH period of the clock. A defined clock is therefore needed for the bit-by-bit arbitration procedure to tak place. Clock synchronization is performed using the wired-AND connection of I2C interfaces to the SCL line. This means that a HIGH to LOW transition on the SCL line will cause the devices concerned to start counting off their LOW period and, once a device clock has gone LOW, it will hold the SCL line in that state until the clock HIGH state is reached However, the LOW to HIGH transition of this clock may not change the state of the SCL line if another clock is still within its LOW period. The SCL line will therefore be held LOW by the device with the longest LOW period. Devices with shorter LOW periods enter a HIGH wait-state during this time. When all devices concerned have counted off their LOW period, the clock line will be released and go HIGH.
59 Embedded System Design 2011/2012-ECE Department,SBMJCE
There will then be no difference between the device clocks and the state of the SCL line, and all the devices will start counting their HIGH periods.
The first device to complete its HIGH period will again pull the SCL line LOW. In this way, a synchronized SCL clock is generated with its LOW period determined by the device with the longest clock LOW period, and its HIGH period determined by the one with the shortest clock HIGH period.
BUS ARBITRATION
A master may start a transfer only if the bus is free. Two or more masters may generate a START condition within the minimum hold time of the START condition which results in a defined START condition to the bus. Arbitration takes place on the SDA line, while the SCL line is at the HIGH level, in such a way that the master which transmits a HIGH level, while another master is transmitting a LOW level will switch off its DATA output stage because the level on the bus doesnt correspond to its own level. Arbitration can continue for many bits. Its first stage is comparison of the address bits. to address the same device, arbitration continues with comparison of the data-bits if they are master-transmitter, or acknowledge-bits if they are master-receiver. Because address and data information on the I2C-bus is determined by the winning master, no information is lost during the arbitration process. A master that loses the arbitration can generate clock pulses until the end of the byte in which it loses the arbitration. If a master also incorporates slave function and it loses
60
2011/2012-ECE Department,SBMJCE
arbitration during the addressing stage, its possible that the winning master is trying to address it. The losing master must therefore switch over immediately to its slave mode.
Figure shows the arbitration procedure for two masters. Of course, more may be involved (depending on how many masters are connected to the bus). The moment there is a difference between the internal data level of the master generating DATA 1 and the actual level on the SDA line, its data output is switched off, which means that a HIGH output level is then connected to the bus. This will not affect the data transfer initiated by the winning master. Since control of the I2C-bus is decided solely on the address or master code and data sent by competing masters, there is no central master, nor any order of priority on the bus. A complete data transfer:
61
2011/2012-ECE Department,SBMJCE
The Controller Area Network (CAN) is a serial bus communications protocol developed by Bosch (an electrical equipment manufacturer in Germany) in the early 1980s. Thereafter, CAN was standardized as ISO-11898 and ISO-11519, establishing itself as the standard protocol for in-vehicle networking in the auto industry. In the early days of the automotive industry, localized stand-alone controllers had been used to manage various actuators and electromechanical subsystems. By networking the electronics in vehicles with CAN, however, they could be controlled from a central point, the engine control unit (ECU), thus increasing functionality, adding modularity, and making diagnostic processes more efficient. Early CAN development was mainly supported by the vehicle industry, as it was used in Passenger cars, boats, trucks, and other types of vehicles. Today the CAN protocol is used in many other fields in applications that call for networked embedded control, including industrial automation, medical applications, building automation, weaving machines, and production machinery. CAN offer an efficient communication protocol between sensors, actuators, controllers, and other nodes in real-time applications, and is known for its simplicity, reliability, and high performance. The CAN protocol is based on a bus topology, and only two wires are needed for communication over a CAN bus (CANH and CANL). The bus has a multimaster structure where each device on the bus can send or receive data. Only one device can send data at any time while all the others listen. If two or more devices attempt to send data at the same time, the one with the highest priority is allowed to send its data while the others return to receive mode.
62
2011/2012-ECE Department,SBMJCE
The above figure shows a CAN bus with n nodes. The CAN protocol is based on CSMA/ CD/AMP (Carrier-Sense Multiple Access/Collision Detection with Arbitration on Message Priority) protocol, which is similar to the protocol used in Ethernet LAN. When Ethernet detects a collision, the sending nodes simply stop transmitting and waits random amount of time before trying to send again. CAN protocol, however, solve the collision problem using the principle of arbitration, where only the highest priority node is given the right to send its data.
63
2011/2012-ECE Department,SBMJCE
CAN bus communication speed is not fixed. Any communication speed can be set for the devices attached to a bus.
All devices on the bus can detect an error. The device that has detected an error immediately notifies all other devices.
Multiple devices can be connected to the bus at the same time, and there are no logical limits to the number of devices that can be connected. In practice, the number of units that can be attached to a bus is limited by the buss delay time and electrical load.
BUS Termination
A CAN bus is terminated to minimize signal reflections on the bus. The ISO-11898 requires that the bus has a characteristic impedance of 120 ohms. The bus can be terminated by one of the following methods: Standard termination Split termination Biased split termination
64 Embedded System Design 2011/2012-ECE Department,SBMJCE
The Physical Layer defines how signals are actually transmitted. Within this specification the physical layer is not defined so as to allow transmission medium and signal level implementations to be optimized for their application.
The Transfer Layer represents the kernel of the CAN protocol. It presents messages received to the object layer and accepts messages to be transmitted from the object layer. The transfer layer is responsible for bit timing and synchronization, message framing, arbitration, acknowledgement, error detection and signaling, and fault confinement.
The Object Layer is concerned with message filtering as well as status and message handling.
65
2011/2012-ECE Department,SBMJCE
Messages: Information on the bus is sent in fixed format messages of different but limited length. When the bus is free any connected unit may start to transmit a new message. Information Routing: In CAN systems a CAN node does not make use of any information about the system configuration (e.g. station addresses). This has several important consequences. System Flexibility: Nodes can be added to the CAN network without requiring any change in the software or hardware of any node and application layer. Message Routing: The content of a message is named by an IDENTIFIER. The IDENTIFIER does not indicate the destination of the message, but describes the meaning of the data, so that all nodes in the network are able to decide by MESSAGE FILTERING whether the data is to be acted upon by them or not. Multicast: As a consequence of the concept of MESSAGE FILTERING any number of nodes can receive and simultaneously act upon the same message. Data Consistency: Within a CAN network it is guaranteed that a message is simultaneously accepted either by all nodes or by no node. Thus data consistency of a system is achieved by the concepts of multicast and by error handling. Bit rate The speed of CAN may be different in different systems. However, in a given system the bit-rate is uniform and fixed. Priorities: The IDENTIFIER defines a static message priority during bus access. Remote Data Request: By sending a REMOTE FRAME a node requiring data may request another node to send the corresponding DATA FRAME. The DATA FRAME and the corresponding REMOTE FRAME are named by the same IDENTIFIER. Multimaster: When the bus is free any unit may start to transmit a message. The unit with the message of highest priority to be transmitted gains bus access.
Arbitration: Whenever the bus is free, any unit may start to transmit a message. If 2 or more units start transmitting messages at the same time, the bus access conflict is resolved by bitwise arbitration using the IDENTIFIER. The mechanism of arbitration guarantees that neither information nor time is lost. If a DATA FRAME and a REMOTE FRAME with the same IDENTIFIER are initiated at the same time, the DATA FRAME prevails over the REMOTE
66 Embedded System Design 2011/2012-ECE Department,SBMJCE
FRAME. During arbitration every transmitter compares the level of the bit transmitted with the level that is monitored on the bus. If these levels are equal the unit may continue to send. When a recessive level is sent and a dominant level is monitored, the unit has lost arbitration and must withdraw without sending one more bit. Safety: In order to achieve the utmost safety of data transfer, powerful measures for error detection, signaling and self-checking are implemented in every CAN node. Error Detection: For detecting errors the following measures have been taken: Monitoring (transmitters compare the bit levels to be transmitted with the bit levels detected on the bus) Cyclic Redundancy Check Bit Stuffing Message Frame Check
Performance of Error Detection The error detection mechanisms have the following properties: All global errors are detected. All local errors at transmitters are detected. Up to 5 randomly distributed errors in a message are detected. Burst errors of length less than 15 in a message are detected. Errors of any odd number in a message are detected.
Fault Confinement CAN nodes are able to distinguish short disturbances from permanent failures. Defective nodes are switched off. Connections The CAN serial communication link is a bus to which a number of units may be connected. This number has no theoretical limit. Practically the total number of units will be limited by delay times and/or electrical loads on the bus line. Single Channel The bus consists of a single bidirectional channel that carries bits. From this data resynchronization information can be derived. The way in which this channel is implemented is not fixed in this specification. E.g. single wire (plus ground), two differential wires, optical fibres, etc.
67 Embedded System Design 2011/2012-ECE Department,SBMJCE
Bus values The bus can have one of two complementary logical values: dominant or recessive. During simultaneous transmission of dominant and recessive bits, the resulting bus value will be dominant. For example, in case of a wired-AND implementation of the bus, the dominant level would be represented by a logical 0 and the recessive level by a logical 1. Physical states (e.g. electrical voltage, light) that represent the logical levels Acknowledgement All receivers check the consistency of the message being received and will acknowledge a consistent message and flag an inconsistent message.
MESSAGE TRANSFER
Frame Types
Message transfer is manifested and controlled by four different frame types: 1. A DATA FRAME carries data from a transmitter to the receivers. 2. A REMOTE FRAME is transmitted by a bus unit to request the transmission of the DATA FRAME with the same IDENTIFIER. 3. An ERROR FRAME is transmitted by any unit on detecting a bus error. 4. An OVERLOAD FRAME is used to provide for an extra delay between the preceding and the succeeding DATA or REMOTE FRAMEs
DATA FRAME The data frame is in two formats: standard (having an 11-bit ID) and extended (having a 29-bit ID). The data frame is used by the transmitting device to send data to the receiving device, and the data frame is the most important frame handled by the user. Figure shows the data frames structure. A standard data frame starts with the start of frame (SOF) bit, which is followed by an 11-bit identifier and the remote transmission request (RTR) bit. The identifier and the RTR form the 12-bit arbitration field. The control field is 6 bits wide and indicates how many bytes of data are in the data field. The data field can be 0 to 8 bytes. The data field is followed by the CRC field, which checks whether or not the received bit sequence is corrupted. The ACK field is 2 bits and is used by the transmitter to receive acknowledgment of a valid
68 Embedded System Design 2011/2012-ECE Department,SBMJCE
frame from any receiver. The end of the message is indicated by a 7-bit end of frame (EOF) field.
Start of Frame (SOF) The start of frame field indicates the beginning of a data frame and is common to both standard and extended formats. Arbitration Field Arbitration is used to resolve bus conflicts that occur when several devices at once start sending messages on the bus. The arbitration field indicates the priority of a frame, and it is different in the standard and extended formats. In the standard format there are 11 bits, and up to 2032 IDs can be set. The extended format ID consists of 11 base IDs plus 18 extended IDs. Up to 2032 x 218 discrete IDs can be set. During the arbitration phase, each transmitting device transmits its identifier and compares it with the level on the bus. If the levels are equal, the device continues to transmit. If the device detects a dominant level on the bus while it is trying to transmit a recessive level, it quits transmitting and becomes a receiving device. After arbitration only one transmitter is left on the bus, and this transmitter continues to send its control field, data field, and other data.
69 Embedded System Design 2011/2012-ECE Department,SBMJCE
The process of arbitration is illustrated in below figure by an example consisting of three nodes having identifiers: Node 1: 11100110011 Node 2: 11100111111 Node 3: 11100110001
Assuming the recessive level corresponds to 1 and the dominant level to 0, the arbitration is performed as follows: All the nodes start transmitting simultaneously, first sending SOF bits. Then they send their identifier bits. The 8th bit of Node 2 is in the recessive state, while the corresponding bits of Nodes 1 and 3 are in the dominant state. Therefore Node 2 stops transmitting and returns to receive mode. The receiving phase is indicated by a gray field. The 10th bit of Node 1 is in the recessive state, while the same bit of Node 3 is in dominant state. Thus Node 1 stops transmitting and returns to receive mode. The bus is now left to Node 3, which can send its control and data fields freely.
70
2011/2012-ECE Department,SBMJCE
Control Field The control field is 6 bits wide, consisting of 2 reserved bits and 4 data length code (DLC) bits, and indicates the number of data bytes in the message being transmitted. This field is coded as shown in Table, where up to 8 transmit bytes can be coded with 6 bits.
Data Field The data field carries the actual content of the message. The data size can vary from 0 to 8 bytes. The data is transmitted with the MSB first. CRC Field The CRC field, consisting of a 15-bit CRC sequence and a 1-bit CRC delimiter, is used to check the frame for a transmission error. The CRC calculation includes the start of frame, arbitration field, control field, and data field. The calculated CRC and the received CRC sequence are compared, and if they do not match, an error is assumed. ACK Field The ACK field indicates that the frame has been received normally. This field consists of 2 bits, one for ACK slot and one for ACK delimiter.
71
2011/2012-ECE Department,SBMJCE
Applications of CAN
1. Automotive Application 2. Industrial Applications 3. Embedded Applications Automotive Application: The automotive industry uses CAN as the in vehicle network (IVN) for the Engine management the body electronics like doors and roof control, air conditioning, lighting control, as well as the entertainment control. Industrial Applications: The CAN based warehouse automation system. The dataflow, flow of goods etc are implemented using CAN CAN is used in Fluid packaging Machines. Embedded Applications: CAN can be used in Coffee Machines CAN used in sports action camera CAN network is embedded in boilers and solar power systems CAN based measurement systems are used in petrol pumps
USB
The Universal Serial Bus (USB) is one of the most common interfaces used in electronic consumer products today, including PCs, cameras, GPS devices, MP3 players, modems, printers, and scanners, to name a few. The USB was originally developed by Compaq, Microsoft, Intel, and NEC, and later by Hewlett-Packard, Lucent, and Philips as well. The USB is a high-speed serial interface that can also provide power to devices, connected to it. A USB bus supports up to 127 devices (limited by the 7-bit address) connected through a four-wire serial cable of up to three or even five meters in length. Many USB devices can be connected to the same bus with hubs, which can have 4, 8, or even 16 ports. A device can be plugged into a hub which is plugged into another hub, and so on. According to the specification, the maximum distance of a device from its host is about thirty meters.
72
The maximum power available to an external device is limited to about 100mA at 5.0V. Two types of connectors are specified and used: Type A and Type B
Embedded System Design 2011/2012-ECE Department,SBMJCE
Two of the pins, Data+ and Data-, form a twisted pair and carry differential data signals and some single-ended data states.
USB signals are bi-phase, and signals are sent from the host computer using the NRZI (non-return to zero inverted) data encoding technique. In this technique, the signal level is inverted for each change to logic 0. The signal level for logic 1 is not changed. A 0 bit is stuffed after every six consecutive ones in the data stream to make the data dynamic (this is called bit stuffing because the extra bit lengthens the data stream).
NRZI data
A packet of data transmitted by the host is sent to every device connected to the bus, traveling downward through the chain of hubs. All the devices receive the signal, but
73 Embedded System Design 2011/2012-ECE Department,SBMJCE
only one of them, the addressed one, accepts the data. Conversely, only one device at any time can transmit to the host, and the data travels upward through the chain of hubs until it reaches the host. USB devices attached to the bus may be full-custom devices, requiring a full-custom device driver, or they may belong to a device class. Device classes enable the same device driver to be used for several devices having similar functionalities. For example, a printer device has the device class 0X07, and most printers use drivers of this type
When no device is plugged in, the host will see both data lines as low. Connecting a device to the bus will pull either the D+ or the D- line to logic high, and the host will know that a device is plugged into the bus. The speed of the device is determined by observing which line is pulled high.
USB States
Some of the USB bus states are: Idle: The bus is in idle state when the pulled-up line is high and the other line is low. This is the state of the lines before and after a packet transmission. Detached: When no device is connected to the bus, the host sees both lines as low. Attached: When a device is connected to the bus, the host sees either D+ or D- go to logic high, which means a device has been plugged in.
74
2011/2012-ECE Department,SBMJCE
Packets
Data is transmitted on a USB bus in packets. A packet starts with a sync pattern to allow the receiver clock to synchronize with the data. The data bytes of the packet follow, ending with an end of packet signal. A packet identifier (PID) byte immediately follows the sync field of every USB packet. A PID itself is 4 bits long, and the 4 bits are repeated in a complemented form. There are seventeen different PID values
There are four packet formats, based on which PID is at the start of the packet: Token packets, Data packets, Handshake packets, and Special packets.
Figure shows the format of a token packet, which is used for OUT, IN, SOF (start of frame), and SETUP. The packet contains a 7-bit address, a 4-bit ENDP (endpoint number), a 5-bit CRC checksum, and an EOP (end of packet).
A data packet is used for DATA0, DATA1, DATA2, and MDATA data transactions. The packet format is shown in Figure and consists of the PID, 01024 bytes of data, a 2-byte CRC checksum, and an EOP.
75
2011/2012-ECE Department,SBMJCE
1. bulk transfer, 2. interrupt transfer, 3. isochronous transfer, and 4. Control transfer. Bulk transfers are designed to transfer large amounts of data with error-free delivery and no guarantee of bandwidth. If an OUT endpoint is defined as using bulk transfers, then the host will transfer data to it using OUT transactions. Similarly, if an IN endpoint is defined as using bulk transfers, then the host will transfer data from it using IN transactions. In general, bulk transfers are used where a slow rate of transfer is not a problem. The maximum packet size in a bulk transfer is 8 to 64 packets at full speed, and 512 packets at high speed (bulk transfers are not allowed at low speeds). Interrupt transfers are used to transfer small amounts of data with a high bandwidth where the data must be transferred as quickly as possible with no delay. Note that interrupt transfers have nothing to do with interrupts in computer systems. Interrupt packets can range in size from 1 to 8 bytes at low speed, from 1 to 64 bytes at full speed, and up to 1024 bytes at high speed. Isochronous transfers have a guaranteed bandwidth, but error-free delivery is not guaranteed. This type of transfer is generally used in applications, such as audio data transfer, where speed is important but the loss or corruption of some data is not. An isochronous packet may contain 1023 bytes at full speed or up to 1024 bytes at high speed (isochronous transfers are not allowed at low speeds). A control transfer is a bidirectional data transfer, using both IN and OUT endpoints. Control transfers are generally used for initial configuration of a device by the host. The maximum packet size is 8 bytes at low speed, 8 to 64 bytes at full speed, and 64 bytes at high speed. A control transfer is carried out in three stages: SETUP, DATA, and STATUS.
76
2011/2012-ECE Department,SBMJCE
Enumeration:
When a device is plugged into a USB bus, it becomes known to the host through a process called enumeration. The steps of enumeration are: When a device is plugged in, the host becomes aware of it because one of the data
lines (D+ or D-) becomes logic high. The host sends a USB reset signal to the device to place the device in a known state. The reset device responds to address 0. The host sends a request on address 0 to the device to find out its maximum packet size using a Get Descriptor command. The device responds by sending a small portion of the device descriptor. The host sends a USB reset again. The host assigns a unique address to the device and sends a Set Address request to the device. After the request is completed, the device assumes the new address. At this point the host is free to reset any other newly plugged-in devices on the bus. The host sends a Get Device Descriptor request to retrieve the complete device descriptor, gathering information such as manufacturer, type of device, and maximum control packet size. The host sends a Get Configuration Descriptors request to receive the devices configuration data, such as power requirements and the types and number of interfaces supported. The host may request any additional descriptors from the device. The initial communication between the host and the device is carried out using the control transfer type of data flow. Initially, the device is addressed, but it is in an unconfigured state. After the host gathers enough information about the device, it loads a suitable device driver which configures the device by sending it a Set Configuration request. At this point the device has been configured, and it is ready to respond to device-specific requests (i.e., it can receive data from and send data to the host).
77
2011/2012-ECE Department,SBMJCE
Descriptors All USB devices have a hierarchy of descriptors that describe various features of the device: the manufacturer ID, the version of the device, the version of USB it supports, what the device is, its power requirements, the number and type of endpoints, and so forth. The most common USB descriptors are: Device descriptors Configuration descriptors Interface descriptors HID descriptors Endpoint descriptors
Different versions of USB USB 1.1 defines two speeds: 12Mbps (full speed) and 1.5Mbps (low speed) and Two types of connectors: Series A and Series B.
USB 2.0 defines three speeds: 480Mbps (high speed), 12Mbps and 1.5Mbps. It is completely backwards compatible with USB 1.1.
Wireless USB Wireless extension of USB 2.0 and it operates at UWB (ultra wide band) 3.1 GHZ to 10.6 GHz frequencies. For short-range personal area network (high speed 480 Mbps 3 meter or 110 Mbps 10 meter channel)
78
2011/2012-ECE Department,SBMJCE
Advantage Number of 8 bits over the wires in parallel. High data transfer rate
Disadvantage More number of wires Capacitive effect Capacitive effect in parallel wires reduces the length up to which communication in parallel can take place. High capacitance results in delay for the bits at the other end undergoing transition from 0 to 1 or 1 to 0. High capacitance can also result in noise and cross talk (induced signals) between the wires.
79
2011/2012-ECE Department,SBMJCE
PCI Bridge
PCI bus interface switches a processor communication with the memory bus to PCI bus. In most systems, the processor has a single data bus that connects to a switch module PCI bridge
80 Embedded System Design 2011/2012-ECE Department,SBMJCE
Some processors integrate the switch module onto the same integrated circuit as the processor to reduce the number of chips required to build a system and thus the system cost. Communicates with the memory through a memory bus (a set of address, control and data buses), a dedicated set of wires that transfer data between these two systems. A separate I/O bus connects the PCI switch to the I/O devices.
PCI
32-bit 33 MHz throughput = 133 MBps, full component level, Connector (94-pin connector with 50 signals) 64-bit bus, 66 MHz option
PCI-X
81
Maximum 264 MBps throughput, uses 8, 16, 32, or 64 bit transfers 6U cards contain additional pins for user defined I/Os
Embedded System Design 2011/2012-ECE Department,SBMJCE
Live insertion support (Hot-Swap), Supports two independent buses on the back plane (on different connectors) Supports Ethernet, Infiniband, and Star Fabric support (Switched fabric based systems) Compact PCI (cPCI)
can be used whereas for high data rates, a different processor may be needed. The data to be sent on the infrared link is packetized and encoded as per the IrDA protocols and sent over the air to the other device. The receiving device will detect the signal, decode and de-packetize the data.
Protocol Architecture: As shown in figure below, for communication through infrared interface, the physical layer (IrPHY) and data link layer (IrLAP) are specified in the standards. Link management is done through IrLMP, above which the application layer protocols will be running.
Physical layer: IrPHY specifies the data rates and the mode of communication. IrDA has two specifications, IrDA data and IrDA control. IrDA data has a range of 1m whereas for IrDA control has a range of 5m both with bidirectional communication. A host such as PC can communicate with 8 peripherals using IrDA protocols. Data link layer: The data link layer is called the IrLAP. Master/Slave protocol is used for communication between two devices. The device that starts the communication is the master. The master sends the command and the slave sends a response. Link management layer: This layer facilitates a device to query the capabilities of other devices. If also provides the software capability to share IrLAP between multiple tasks. Higher layers: The higher layer protocols are application specific. IrCOMM protocol emulates the standard serial port. When two devices such as palmtop and mobile phone both fitted with infrared interface come face to face, they can exchange the data using the application layer protocol. Supports data transfer rates of up to 4 Mbps Supports bi-directional serial communication over viewing angle between 15 and distance of nearly 1 m
83 Embedded System Design 2011/2012-ECE Department,SBMJCE
At 5 m, the IR transfer data can be up to data transfer rates of 75 kbps Should be no obstructions or wall in between the source and receiver Communication setup latency is just few milliseconds
Class 1 - 100mW (20dBm) with a 'typical range' of 100m Network Topology: Bluetooth enabled devices form a network known as piconet. In a piconet, there will be one master and up to seven active slaves. Communication between the master slaves can be point-topoint or point-to-multipoint. Point-to-point communications between Master and Slave:
85
2011/2012-ECE Department,SBMJCE
Communication between Master and Slave: The Master and Slave communicate in the form of packets. Each packet is transmitted in a time slot. Each time slot is of 625us duration. These slots are numbered from 0 to 227-1. Master starts the transmission in even slots by sending a packet addressed to a slave and the slave sends the packets in odd numbered slots. A packet generally occupies one time slot; the hop frequency will be the same for the entire packet. If the Master starts the transmission in slot 0 using frequency f1, the slave transmits in slot 1 using frequency f2; mater transmits in slot 2 using frequency f3, and so on. Applications Wireless control of and communication between a mobile phone and a hands-free headset. Wireless Bluetooth headset and Intercom. Wireless communication with PC input and output devices, the most common being the mouse, keyboard and printer. Replacement of previous wired RS-232 serial communications Wireless bridge between two Industrial Ethernet
Peer-to-peer and mesh networks- Each node at network function as requesting device as
well as responding device. Mesh network means the each nodes network function as a mesh.
86 Embedded System Design 2011/2012-ECE Department,SBMJCE
ZigBee network:
ZigBee router- Transfers packets received from a neighboring source to nearby node in the path to destination. Coordinator - Connects one ZigBee network with another, or connects to WLAN or cellular network. end devices- Transceiver of data. ZigBee supporting devices: large number of sensors, Lighting devices, air conditioning, industrial controller and other devices for home , office automation and their remote control and formation of WPAN (wireless personal area network)
87
2011/2012-ECE Department,SBMJCE
essential to understand how to use interrupts and perhaps when not to, so that the embedded system can work correctly. The impact of interrupts and their processing does not stop there either. It can also affect the overall design and structure of the system, particularly of the software that will be running on it. In a well designed embedded system, it is important to actively design it with interrupts in mind and to define how they are going to be used. Interrupt: An interrupt is an event from either an internal or external source where a processor will stop its current processing or switch to a different instruction sequence in response to an event that has occurred either internally or externally Or An interrupt is an input to a microprocessor that temporarily redirects the program flow. An interrupt can n o w the processor when an analog-to digital converter (ADC) has new data, when a timer rolls over, when a direct memory access (DMA) transfer is complete, when another processor wants to communicate, or when almost any asynchronous event happens. The interrupt hardware is initialized and programmed by the system software. When an interrupt is acknowledged, that process is performed by hardware internal to the processor and the interrupt controller integrated circuit What is the importance of Interrupt? In particular, suppose the program running on a microprocessor must, among other tasks, read and process data from a peripheral whenever that peripheral has new data; such processing is called servicing. If the peripheral gets new data at unpredictable intervals, then how can the program determine when the peripheral has new data? The most straightforward approach is to interleave the microprocessors other tasks with a routine that checks for new data in the peripheral, perhaps by checking for a 1 in a particular bit in a register of the peripheral. This repeated checking by the microprocessor for data is called polling. Polling is simple to implement, but this repeated checking wastes many clock cycles, so may not be acceptable in many cases, especially when there are numerous peripherals to be checked. We could check at less-frequent intervals, but then we may not process the data quickly enough. 1. Polling consumes a lot of CPU horsepower. Whether the peripheral is ready for service or not, processor timeusually a lot of processor timeis spent endlessly asking do you need service yet?
89 Embedded System Design 2011/2012-ECE Department,SBMJCE
2. Polled code is generally an unstructured mess. Nearly every loop and long complex calculation has a call to the polling routines so that a devices needs never remain unserviced for long. ISRs, on the other hand, concentrate all of the codes involvement with each device into a single area. 3. Polling leads to highly variable latency. If the code is busy handling something else (just doing a floating point add on an 8-bit CPU might cost hundreds of microseconds) the device is ignored. Properly managed interrupts can result in predictable latencies of no more than a handful of microseconds. To overcome the limitations of polling, most microprocessors come with a feature called external interrupt. A microprocessor with this feature has a pin, say Int. At the end of executing each machine instruction, the processors controller checks Int. If Int is asserted, the microprocessor jumps to a particular address at which a subroutine exists that service the interrupt. This subroutine is called an Interrupt Service Routine, or ISR. Such I/O is called interrupt-driven I/O. One might wonder if interrupts have really solved the problem with polling, namely of wasting time performing excessive checking, since the interrupt pin is "polled" at the end of every microprocessor instruction. However, in this case, the polling of the pin is built right into the microprocessors controller hardware, and therefore can be done simultaneously with the execution of an instruction, resulting in no extra clock cycles. Interrupts allow the microcontroller to interact with its environment. If your microcontroller does not have interrupts you must poll peripherals to determine if they require servicing. It is much more efficient to have peripheral devices inform, or interrupt, the controller when they require servicing.
What is the Structure of an Interrupt? Different microcontrollers have rather different interrupt structures. Inevitably they have more than one interrupt source, usually with some internally generated and others external. A generic structure, which illustrates the main hardware principles, is shown in Figure. At the left we see one of several sources, Interrupt X. If an interrupt occurs, it sets an S-R bistable. The occurrence of the interrupt, even if it is only momentary, is thus recorded. The output of the bistable, the latched version of the interrupt, is called the interrupt flag. This is then gated with an enable signal, Interrupt X Enable. If this is high, then the interrupt signal progresses to an OR
90 Embedded System Design 2011/2012-ECE Department,SBMJCE
gate. If it is low, the interrupt signal gets no further. If enabled, it is ORed with other enabled interrupt inputs of the microcontroller. The OR gate output will go high if any interrupt input is high. There is then a further gating of the OR gate output, this time with a Global Interrupt Enable. Only if that value is high can any interrupt signal reach the CPU. When the CPU has responded to an interrupt, As the CPU always responds if it occurs, there is less point in storing it as a flag, and this is sometimes therefore not done.
it is necessary to clear the interrupt flag. In some processors this is done automatically by the CPU, in others it must be done within the program. How CPU response to an interrupt? In general, when an interrupt occurs, the on-chip hardware performs the following functions: It saves the program counter (the address the processor was executing when the interrupt occurred) on the stack. Some processors save other information as well, such as register contents. It executes an interrupt acknowledge cycle to get a vector from the interrupting peripheral, depending on the processor and the specific type of interrupt. It branches to a predetermined address specific to that particular interrupt.
The destination address is the interrupt service routine (ISR, or sometimes ISP for interrupt service process). The ISR performs whatever functions are required and then returns. When the return code is executed, the processor performs the following tasks: It retrieves the return address and any other saved information from the stack. It resumes execution at the return address.
91 Embedded System Design 2011/2012-ECE Department,SBMJCE
1. Microprocessor is executing its program, say current program counter (PC) =100. 2. Peripheral1s input device stores new data in register at 0x8000. 3. Peripheral1 asserts Int to request servicing by microprocessor of the new data. 4. Microprocessor stops executing its program and stores state, including PC. 5. Microprocessor jumps to fixed location of ISR at program memory location 16 (sets PC=16) 6. ISR reads data from 0x8000, modifies the data, and writes to 0x8001. 7. ISR returns, causing restoration of the microprocessor state, thus setting PC= 100+1 = 101 8. Microprocessor resumes executing its program. Interrupt-driven I/O using vectored interrupt.
1. Microprocessor is executing its program, say current program counter (PC)=100. 2. Peripheral1s input device stores new data in register at 0x8000. 3. Peripheral1 asserts Int to request servicing by microprocessor of the new data. 4. Microprocessor stops executing its program and stores state, including PC. 5. Microprocessor asserts Inta 6. Peripheral1 puts its interrupt address vector 16 on the system bus 7. Microprocessor jumps to the address of ISR read from the data bus, in this case 16. 8. ISR reads data from 0x8000, modifies the data, and writes to 0x8001. 9. ISR returns, causing restoration of the microprocessor state, thus setting PC= 100+1 = 101 10. Microprocessor resumes executing its program.
92 Embedded System Design 2011/2012-ECE Department,SBMJCE
Context Switching New program executes with new context of called routine
Context Switching on Interrupts Context switching means saving the context of interrupted routine (or function) or task and retrieving or loading the new context of the called routine or task to be executed next.
93
2011/2012-ECE Department,SBMJCE
94
2011/2012-ECE Department,SBMJCE
Example with respect to PIC MCU Let us assume that an interrupt has occurred, and both its local enable and the global enable are set. The interrupt is therefore detected by the CPU and it executes a special section of program called the Interrupt Service Routine (ISR). The CPU completes the instruction it is currently executing and saves the value of the Program Counter on the top of the Stack. Thus, it will know where to come back to when the ISR is complete. To avoid other interrupts possibly interrupting this interrupt, it also clears the Global Interrupt Enable. The ISR must start at the interrupt vector ie., program memory location. Therefore, when an interrupt occurs, this value is loaded into the Program Counter and program execution then continues from the reset vector. In any processor, the ISR must end with a special return from interrupt instruction. When this return instruction is detected, the CPU sets the GIE to 1, loads the Program Counter from the top of the Stack and then resumes program execution. Thus, it returns to the instruction which follows the instruction during which the interrupt was detected.
95
2011/2012-ECE Department,SBMJCE
Interrupt latency. The time between the interrupt occurring and the CPU responding to it is called the interrupt latency. The latency is dependent on certain aspects of hardware and ultimately can also depend on the characteristics of the program running Interrupt Vectors: All processors require an interrupt vector when an interrupt is acknowledged. The interrupt vector tells the processor where to go to service the interrupt. On some processors, the vector can be an actual instruction that is executed just as if it occurred in ordinary code. Other processors expect a number that is translated by the processor into an address.
There are mainly three methods of generating a vector to the processor: 1. From an external interrupt controller, 2. From an internal interrupt controller, 3. From the peripheral itself.
96
2011/2012-ECE Department,SBMJCE
There are mainly two sources of interrupt: hardware and software. Hardware interrupts include a signal to a pin, timer overflow, and serial port interrupts. Software interrupts are commands given by the programmer, such as the SWI instruction There are two different interrupt types: maskable and non-maskable. A maskable interrupt can be disabled and enabled While non-maskable interrupts cannot be disabled and are therefore always enabled. Most 8 bit microcontrollers use vectored arbitration interrupts. Vectored arbitration means that when a specific interrupt occurs the interrupt handler automatically branches to an address associated with that interrupt. The servicing of interrupts in general is dictated by the status of the GIE (Global Interrupt Enable). GIE is cleared when an interrupt occurs and all interrupts are delayed until it is set. Synchronous and Asynchronous Interrupt Acknowledgement Interrupts are asynchronous: they are events that can occur during, after, or before an instruction cycle. Interrupt acknowledgement can be either synchronous or asynchronous. Most interrupt acknowledgement is synchronous, the instruction currently being executed is completed before the interrupt is acknowledged. Theoretically, when the processor acknowledges an interrupt asynchronously it halts execution of the current instruction and immediately services the interrupt. The only asynchronously acknowledged interrupt is RESET. Since RESET erases the state of the machine, it is a moot point whether the CPU actually halts execution of the current instruction or not. When the processor acknowledges an interrupt synchronously, it finishes executing the current instruction and, before it performs a fetch for the next instruction, it services the interrupt.
97
2011/2012-ECE Department,SBMJCE
ISR Deadline
For every source there may be a maximum period only up to which the service of its all ISR instructions can be kept pending. This period defines the Deadline period, Td during which the execution must be completed.
Short ISR and functions, which run at later instances so that the other ISR deadlines are not missed
Interrupt latency = T should be such that a deadline of a new event ISR is not missed
Example Video Video frames in video conferencing reach after every 1 15 s. The device on getting the frame interrupts the system and the interrupt service deadline is 1 15 s, else the next frame will be missed
98 Embedded System Design 2011/2012-ECE Department,SBMJCE
16-bit timer A 16-bit timer device on overflow raises TF interrupt on transition of counts from 0xFFFF to 0x0000. To be responded by executing an ISR for TF before the next overflow of the timer occurs, else the counting period between 0x0000 after overflow and 0x000 after next to next overflow will not be accounted. If timer counts increment every 1s, the interrupt service deadline is 216 s = 65536 s. To keep the ISR as short as possible In case of multiple interrupt sources To service the in-between pending interrupts and leave the functions that can be executed afterwards later for a later time. Use of interrupt service threads, which are the second level interrupt handlers. When this principle is not adhered to, a specific interrupting source may not be serviced within in the deadline (maximum permissible pending time) for that Assignment of priorities to Meet Service Deadlines By following an Earlier Deadline First strategy for assigning the priorities to the ISRs and Tasks, the service deadlines are met. Software overriding of Hardware Priorities to Meet Service Deadlines It is first decided among the ISRs that have been assigned higher priority by in the user software. If user assigned priorities are, and then if these equal then among the that highest priority, which is pre-assigned by at the processor internal- hardware.
Interrupt sources
There are many sources for interrupts varying from simply asserting an external pin to error conditions within the processor that require immediate attention. HARDWARE INTERRUPTS Internal interrupts Internal interrupts are those that are generated by on-chip peripherals such as serial and parallel ports. With an external peripheral, the device will normally assert an external pin which is connected to an interrupt pin on the processor. With internal peripherals, this connection is already made. Some integrated processors allow some flexibility concerning these hardwired connections and allow the priority level to be adjusted or even masked out or disabled altogether. Examples of Internal Hardware Device Sources 1 Parallel Port
99 Embedded System Design 2011/2012-ECE Department,SBMJCE
2. UART Serial Receiver Port - [Noise, Overrun, Frame-Error, IDLE, RDRF in 68HC11] 3. Synchronous Receiver byte Completion 4. UART Serial Transmit Port-Transmission Complete, [For example, TDRE (transmitter data register Empty] 5. Synchronous Transmission of byte completed 6. ADC Start of Conversion 7. ADC End of Conversion 8. Pulse-Accumulator overflows 9. Real Time Clock time-outs 10. Watchdog Timer Reset 11. Timer Overflow on time-out 12. Timer comparison with Output compares Registers 13. Timer capture on inputs
External interrupts External interrupts are the common method of connecting external peripherals to the processor. They are usually provided through external pins that are connected to peripherals and are asserted by the peripheral. For example, a serial port may have a pin that is asserted when there is data present within its buffers. The pin could be connected to the processor interrupt pin so that when the processor sees the data ready signal as an interrupt. The corresponding interrupt service routine would then fetch the data from the peripheral before restoring the previous processing. 1. INTR in 8086 and 80x86 The device provides the ISR Address or Vector Address or Type externally on data bus after interrupt at INTR pin 2. External hardware related interrupt at INTR Pin in 80x86 processor 3. External Hardware Device Nonmaskable Interrupts with Internal Vector Address Generation. Non-Maskable Pin NMI in 8086 Exceptions Many processor architectures use the term exception as a more generic term for an interrupt. While the basic definition is the same (an event that changes the software flow to process the event) an exception is extended to cover any event, including internal and external
100
2011/2012-ECE Department,SBMJCE
interrupts, that causes the processor to change to a service routine. Typically, exception processing is normally coupled with a change in the processors mode RESET Microcontrollers vary widely in the types of interrupts they can detect. Some general types are widely available in one form or another. The only universal interrupt is RESET and some simple chips support no other interrupts. The RESET interrupt prompts the chip to behave as if the power has been cycled. It does not actually cycle the power to the chip. This means that the contents of volatile memory, typically data memory, can remain intact. The reset vector contains the address of the first instruction that will be executed by the CPU. On most chips, RESET causes the CPU to halt execution immediately and restart itself. On some chips, RESET may finish the current instruction. Each microcontroller performs a series of actions when it detects a RESET. TIMER A TIMER interrupt occurs when a timer overflow is detected. For example, In the Microchip PIC there is a TMR0 interrupt which is generated when the TMR0 8 bit timer overflows. An overflow occurs when the timer goes from 1111 1111 to 0000 0000. The timer is usually incremented every instruction cycle. TIMER interrupts in general provide access to an external clock. This is useful in applications where timing is critical. For control applications, for example, it is important to sample input data at specific time Software interrupts Software interrupt are related to software detecting computational error or exceptional condition during execution and there up on executing a SWI (software interrupt) instruction, which causes processor interrupt of ongoing routine. The advantage of an interrupt is that it includes a mechanism to change the program flow and in some processor architectures, to change into a more protected state. This means that an interrupt could be used to provide an interface to other software such as an operating system. This is the function that is provided by the software interrupt. It is typically an instruction or set of instructions that allows a currently executing software sequence to change flow and return using the more normal interrupt mechanism. S
101 Embedded System Design 2011/2012-ECE Department,SBMJCE
102
2011/2012-ECE Department,SBMJCE
would simply transfer data from the peripheral to the memory, and then resume running its application. For example, as we discussed in Interrupt-driven I/O using vectored interrupt. In that topic an example in which Peripheral1 interrupts the microprocessor when receiving new data. The microprocessor jumps to ISR location 16, which moves the data from 0x8000 in the peripheral to 0x0001 in memory. Then the ISR returns. However, recall that jumping to an ISR requires the microprocessor to store its state (i.e., register contents), and then to restore its state when returning from the ISR. This storing and restoring of the state may consume many clock cycles, and is thus somewhat inefficient. Furthermore, the microprocessor cannot execute its regular program while moving the data, resulting in further inefficiency.
The I/O method of direct memory access (DMA) eliminates these inefficiencies. In DMA, we use a separate single-purpose processor, called a DMA controller, whose sole purpose is to transfer data between memories and peripherals. Briefly, the peripheral requests servicing from the DMA controller, which then requests control of the system bus from the microprocessor. The microprocessor merely needs to relinquish control of the bus to the DMA controller. The microprocessor does not need to jump to an ISR, and thus the overhead of storing and restoring the microprocessor state is eliminated. Furthermore, the microprocessor can execute its regular program while the DMA controller has bus control, as long as that regular
103 Embedded System Design 2011/2012-ECE Department,SBMJCE
program doesnt require use of the bus (at which point the microprocessor would then have to wait for the DMA to complete). A system with a separate bus between the microprocessor and cache may be able to execute for some time from the cache while the DMA takes place. We set up a system for DMA as follows. As shown in below Figure we connect the peripheral to the DMA controller rather than the microprocessor. Note that the peripheral does not recognize any difference between being connected to a DMA controller device or a microprocessor device; all it knows is that it asserts a request signal on the device, and then that device services the peripherals request. We connect the DMA controller to two special pins of the microprocessor. One pin, which well call Hreq (bus Hold Request), is used by the DMA controller to request control of the bus. The other pin, which well call Hlda (Hold Acknowledge), is used by the microprocessor to acknowledge to the DMA controller that bus control has been granted. Thus, unlike the peripheral, the microprocessor must be specially designed with these two pins in order to support DMA. The DMA controller also connects to all the system bus signals, including address, data, and control lines.
104
2011/2012-ECE Department,SBMJCE
(and completes handshake with arbiter). 9. Microprocessor resumes executing its program.
Arbitration using a priority arbiter. 2. Daisy-chain arbitration The daisy-chain arbitration method builds arbitration right into the peripherals. A daisychain configuration is shown in below Figure, again using vectored interrupt to illustrate the method. Each peripheral has a request output and an acknowledge input, as before. But now each peripheral also has a request input and an acknowledge output. A peripheral asserts its request output if it requires servicing, OR if its request input is asserted; the latter means that one of the "upstream" devices is requesting servicing. Thus, if any peripheral needs servicing, its request will flow through the downstream peripherals and eventually reach the microprocessor. Even if more than one peripheral requests servicing, the microprocessor will see only one request. The microprocessor acknowledges connects to the first peripheral. If this peripheral is requesting service, it proceeds to put its interrupt vector address on the system bus. But if it doesnt need service, then it instead passes the acknowledgement upstream to the next peripheral, by asserting its acknowledge output. In the same manner, the next peripheral may either begin being serviced or may instead pass the acknowledgement along. Obviously, the peripheral at the front of the chain, i.e., the one to which the microprocessor acknowledge is connected, has highest priority, and the peripheral at the end of the chain has lowest priority. We prefer a daisy-chain priority configuration over a priority arbiter when we want to be able to add or remove peripherals from an embedded system without redesigning the system. Although conceptually we could add as many peripherals to a daisy-chain as we desired, in reality the servicing response time for peripherals at the end of the chain could become intolerably slow. In contrast to a daisy-chain, a priority arbiter has a fixed number of channels; once they are all used, the system needs to be redesigned in order to accommodate more peripherals. However, a daisy-chain has the drawback of not supporting more advanced priority schemes, like rotating priority. A second drawback is that if a peripheral in the chain stops working, other peripherals may lose their access to the processor.
106 Embedded System Design 2011/2012-ECE Department,SBMJCE
Device driver
A device driver has a set of routines (functions) used by a high-level language programmer, which does the interaction with the device hardware, sends control commands to the device, communicates data to the device and runs the codes for reading device data. Does the interrupt service for any event related to the device and use the system and IO buses required for the device service. Device driver can be considered software layer between an application program and the device Device driver routine Each device in a system needs device driver routine with number of device functions. An ISR relates to a device driver command (device-function). The device driver uses SWI to call the related ISR (device-function routine) The device driver also responds to device hardware interrupts.
Physical device drivers and virtual device drivers have analogies. Like physical device, virtual device drivers may also have functions for device connect or open, read, write and close.
Virtual Device Examples Pipe device: A device from to which the blocks of characters are send from one end and accessed from another ends in FIFO mode (first-in first-out) after a connect function is executed. Socket device: A device from to which (a) the blocks of characters are send from one end with a set of the port (application) and sender addresses, (b) accessed from another end port (application) and receiver addresses, (c) access is in FIFO mode (first-in first-out) only after a connect function is executed to connect two sockets. Multiple functions in a Timer device A timer device control registers needs to be programmed by a device function. A timer Device performs does timing functions as well as counting functions. It also performs does the delay function and periodic system calls.
108
2011/2012-ECE Department,SBMJCE
Unit 4
SOFTWARE PROGRAMMING IN ASSEMBLY LANGUAGE (ALP) AND IN HIGH LEVEL LANGUAGE C, C++ and JAVA
Assembly Language Programming Assembly language lies in between the high level and low level languages. The assembly language uses mnemonic codes for writing the programs. Assembler is the tool which is used to convert the assembly language in the machine language. Advantages It gives a precise control of the processor internal devices and full use of processor specific features in its instruction set and its addressing mode. The machine codes are compact. This is because the codes for declaring the conditions, rules, and data type do not exist. The system thus needs a smaller memory. Excess memory needed does not depend on the programmer data type selection and rule-declarations. It is also not the compiler specific and library functions specific. Device driver codes may need only a few assembly instructions. For example, consider a small embedded system, a timer device in a microwave oven or an automatic washing machine or an automatic chocolate vending machine. High Level Language All the programming languages currently used are the high level languages. The constructs of the programming language are common language english like structures. Interpreter and the Compilers are the system programs which are used to convert the high level language in the machine odes. Advantages The development cycle is short for complex systems l. Data type declarations provide programming ease 2. Type checking makes the program less prone to error 3. Control structures and conditional Statements make the program-flow path design tasks simple. 4. Portability of non-processes specific codes exists. Additional advantages of C as a high level languages It is a language between low (assembly) and high level language. Inserting the assembly language codes in- between is called ln-line assembly. A direct hardware control is thus also feasible by in-line assembly, and the complex part of the program can be in high-level language.
109 Embedded System Design 2011/2012-ECE Department,SBMJCE
Difference between Embedded C and Conventional C The C language is used for desktop application while embedded C is used for microcontroller application. The C language uses the desktop OS memory, while embedded C uses the controllers inbuilt or any externally attached memory. In the case of controller we have very limited resources (controllers RAM, ROM, IO ports, etc.) so one must be very careful about declaring and using the variable. At any instant of time you need to be care full that you are not using the space more than the available one in the controller or else the program will get crash, or you may not get the exact result. The embedded C needs a different platform then C. Almost every family of controllers needs a different platform to write their codes. A convention C code generates an OS compatible .exe file while embedded C code generates a .hex file which has the machine codes to be dumped in the memory of the controller. In C we use header files like stdio.h, which yield the output to be visible on OS itself. In embedded C everything is same but the output files are directly loaded on the controllers to test them. The C language is use to make a program for host interaction while embedded C is use to implement the host on the controller which interact with the other peripherals.
110
2011/2012-ECE Department,SBMJCE
C PROGRAM ELEMENTS
HEADER AND SOURCE FILES AND PREPROCESSOR DIRECTIVES The 'C' program elements are header and source files and preprocessor directives are as follows: Include Directive for the Inclusion of Files (Header File) Any C program first includes the header and source files that are readily available Including Header Files: It is a preprocessor directive, which includes the contents (codes or data) of a set of source files. The pre-processor directives will be #include <string.h> and # include <math.h> Also included are the header files for the codes in assembly, and for the IO operations (conio.h), for the OS functions and RTOS functions for conventional C. In embedded C we have the device-specific header files declared using statements like #include<p18xxxx.h>. The header file includes the names of various special function registers used in the program. We can then optionally declare the other source files to be included in our main program, using the #include statement, followed by the filenames.
Whether to Use Headers or Not? As a professionally embedded systems developer one can write a standalone C code, requiring no header files, and it will compile correctly However, this requires a through study of the target microcontroller architecture, it is difficult to remember the on-chip resources, it is advisable to use the header files which defines all the on-chip resources for the target microcontroller, Source Files Source files are program files for the functions of application software. The source files need to be compiled. A source file will also possess the preprocessor directives of the
111
2011/2012-ECE Department,SBMJCE
application and have the first function from where the processing will start. This function is called main function. Its codes start with void main ().The main calls other functions Preprocessor Directives Preprocessor Global Variables: # define volatile Boolean X" is a preprocessor directive. It means, it is a directive before processing to consider X a global variable of Boolean data type and is volatile. Preprocessor Constants: "# define false 0" is a preprocessor directive. It means it is a directive before processing to assume 'false' as 0.
Functions The functions executes a named set of codes with values passed by, the calling program through its arguments. Also returns a data object when It is not declared as void, It has the context saving and retrieving overheads. Main Function Declarations of functions and data types, typedef and either (i) Executes a named set of codes, calls a set of functions, and calls on the interrupts the ISRs (ii) Starts an OS Kernel Recursive Function A function that calls itself. It must be a reentrant function also, Most often its use is avoid in embedded systems due to memory constraints. Reentrant Function Reentrant function is usable by the several tasks and routines synchronously
112
2011/2012-ECE Department,SBMJCE
unsigned char total, sum=150; These are 8-bit unsigned variables with a range 0255. In the above example, two 8-bit variables named total and sum are created and sum is assigned a decimal value 150
Queue
It is a structure with a series of elements with the first element waiting for an operation. An operation can be done only in the first in first out (FIFO) mode. lt is used when an element is not to be accessible by any index and pointer directly, but only through the FIFO. An element can be inserted only at the end in the series of elements waiting for an operation. There are two pointers, one for deleting after the operation and other for inserting. Both increment after an operation. Example Print buffer. Each character to be printed in FIFO mode
113
2011/2012-ECE Department,SBMJCE
A queue at a memory block with two pointers to point its two elements at the front and back. A data word always retrieves in FIFO mode from a queue
A circular queue at a memory block with two pointers to point its two elements at the front and back. A pointer on reaching a limit of the block returns to the start of the block.
Stack
It is a structure with a series of elements with its last element waiting for an operation. An operation can be done only in the last in first out (LIFO) mode. It is used when an element is not to be accessible by any index or pointer directly, but only through the LIFO. An element can be pushed (inserted) only at the top in the series of elements still waiting for an operation. There is only one pointer used for pop (deleting) after the operation as well as for push (inserting). Pointers increment or decrement after an operation. It depends on insertion or deletion. Example Pushing of variables on interrupt or call to another function.
114
2011/2012-ECE Department,SBMJCE
Data can be stored in the array by specifying the array name and index. For example, to store 25 in the second element of the array, we have to write Total [1] = 25; Similarly, the contents of an array can be read by specifying the array name and its index. For example, to copy the third array element to a variable called temp, we have to write Temp = Total [2];
Multi-dimensional Array
It is a structure with a series of elements each having another sub-series of elements. Each element is accessible by identifier name and two or more indices. It is used when every element of the structure is to be given a distinct identity by two or more indices for easy operation. The dimension of an array equals the number of indices that are needed to distinctly identify an array-element. Indices start from 0 and are +ve integers
Example
Matrix or a pixel in an image frame. In C programming language, we can also declare arrays with multiple dimensions. Onedimensional arrays are usually called vectors and two-dimensional arrays are called
115 Embedded System Design 2011/2012-ECE Department,SBMJCE
matrices. A two-dimensional array is declared by specifying the data type of the array, array name, and the size of each dimension. In the following example, a twodimensional array named P having three rows and four columns is created. Altogether the array has 12 elements. The first element of the array is P [0][0] and the last element is P[2][3]. The structure of this array is shown below: Unsigned char P[i][j] ;
Strings
Strings are character arrays with a null terminator. Strings can either be declared by enclosing the string in double quotes or by specifying each character of the array within single quotes and can then be terminated with a null character. In the following example, the two string declarations are identical and both occupy five locations in memory: Example Unsigned char Mystring [ ] = "COMP"; And Unsigned char Mystring [ ] = {'C', 'O', 'M', 'P', '\0'};
List
Each element has a pointer to its next element. Only the first element is identifiable and it is done by list-top pointer (Header). No other 'element is identifiable and hence is not accessible directly. By going through the first element, and then consecutively through all the succeeding elements, an element can be read, or read and deleted, or can be added to a neighboring element or replaced by another element. Example A series of tasks which are active, each task has pointer for the next task.
Tree
It has two or more branches each having a daughter element. Each daughter element has two or more daughter elements. Only the root element is identifiable and it is done by the treetop pointer (Header).
Embedded System Design 2011/2012-ECE Department,SBMJCE
116
No other element is identifiable and hence is not accessible directly. By traversing the root element, then proceeding continuously through all the succeeding daughters, a tree element can be read or read and deleted, or can be added to another daughter or replaced by another element. A tree has data elements arranged as branches The last daughter called node has no further daughters A binary tree is a tree with a maximum of two daughters (branches) in each element. Example An example is a directory. It has number of file folders. Each file folder has a number of file folders and so on. In the end is a file.
Table
A two-dimensional array (matrix) and is an important data set that is allocated Three pointers in table table base, column index and destination index pointers can retrieve any element of the table There is always a base pointer for a table. Base pointer points to its first element at the first column first row. There are two indices, one for a column and other for a row.
Look up Table An important data set A lookup table can be said a two-dimensional array (matrix) with first column can be said to hold the pointers, one pointer in each row and second column the values pointed by first column in each row. First and second columns are at different non adjacent addresses.
117
2011/2012-ECE Department,SBMJCE
Each row has pointer in first column and from pointed memory block the addressed data is traced
Hash Table A data set that is a collection of pairs of a key and a corresponding value. A hash table has a key or name in one column. The corresponding value or object is at the second column. The keys may be at non-consecutive memory addresses. When look-up tables store like a hash. If the first column of a table is used as a key (pointer to the value) and the second column as a value, we call that table as look-up table.
Use of Modifiers
The actions of modifiers are as follows: Modifier 'auto' or No modifier, if outside a function block, means that there is ROM allocation for the variable by the locator if it is initialized in the program. RAM is located by the locator, if it is not initialized in the program. Modifier 'auto' or No modifier, if inside a function block, means that there is ROM allocation for the variable by the locator if it is initialized in the program. There is no RAM allocation by the locator. Modifier unsigned is modifier for a short or int or long data type. It is a directive to permit only the positive values of 16, 32 or 64 bits respectively. Modifier static declaration is inside a function. Modifier register declaration is inside a function block Modifiers interrupt. It directs the compiler to save all processor registers on entry to the function codes and restore them on return from that function. Modifier extern' It directs the compiler to look for the data type declaration or the function in a module other than the one currently in use. Use of Conditions Loops and Infinite Loops: Conditional statements are used many times If a defined condition (s) is fulfilled, the statements within the curly braces after the condition are executed. Otherwise the program proceeds to the next statement or to the next set of statements. Sometimes a set of statements is repeated in a loop. Generally, in case of array, the index changes and the same set is repeated for another element of the array. Infinite loops are never desired in usual programming. The program will never end and never exit or proceed further to the codes after the loop Infinite loop is a feature in embedded system Programming
118
2011/2012-ECE Department,SBMJCE
The last statement in a function is for the return and may also before returning an element. Call to a function Consider an example: if (delay_F= =true && SSTDelayEnable== true) TSR_Delay ( ); There is several times call and on fulfilling a condition. The call can occur can be repeatedly made. On each call, the values of the arguments given within the pair of bracket pass for use in the function statements. Passing the Values (element) The values are copied into the arguments of the functions. When the function is executed in this way, it does not change a variable's value at the called program. A function can only use the copied values in its own variables through the arguments. Consider statement, Mult (int a, int b, int c) { } Multiple function calls in cyclic order in the main One of the most common methods is for the multiple function calls to be made in a cyclic order infinite loop of the main. The following diagram illustrates:
119
2011/2012-ECE Department,SBMJCE
USE OF POINTERS Pointers are an important part of the C language and they hold the memory addresses of variables. Pointers are declared same as any other variables but with the character (*) before the variable name. In general, pointers can be created to point to (or hold the addresses of) character variables, integer variables, long variables, floating point variables, or they can point to functions. In the following example, an unsigned character pointer named pnt is declared: unsigned char *pnt; When a new pointer is created, its content is initially unspecified and it does not hold the address of any variable. We can assign the address of a variable to a pointer using the (&) character: pnt = &Count; *pnt = 10; Which is same as Count = 10;
120 Embedded System Design 2011/2012-ECE Department,SBMJCE
In C language, we can perform pointer arithmetic that may involve the following: Comparing two pointers Adding or subtracting a pointer and an integer value Subtracting two pointers Assigning one pointer to another one Comparing a pointer to null
EMBEDDED PROGRAMMING IN C++ Objected Oriented Programming An objected o oriented languages is used when there is a need for reusability of the defined object or set of objects that are common within a program between many applications. When a large program is to be made an object-oriented language offers many advantages. Data encapsulation, design of reusable software components and inheritance are the advantages derived from the OOPs. An object-oriented language provides or defining the objects and methods that manipulate the objects modifying their definitions. It provides for the data and methods for encapsulation. An object can be characterized by the following: An identity, a reference to a memory block that holds its state and behavior. A state (its data property fields and attributes). A behavior (method or methods that manipulate the state of the object). In a procedure-based language, like FORTRAN, COBOL, Pascal and C, large programs are split into simpler functional blocks and statements. In an object- oriented language like Smalltalk, C++ or Java, logical groups (also known as classes) are first made. Each group defines the data and the methods of using the data. A set of these groups then gives an application program. Each group has internal user-level fields for the data and the methods of processing that data at these fields. Each group can then create many objects by copying the group and making it functional. Each object is functional. Each object can interact with other objects to process the user's data.
The language provides for formation of classes by the definition of a group of objects
having similar attributes and common behavior.
Embedded Programming in C++ Embedded system codes can optimized when using an OOP language by the following:
121 Embedded System Design 2011/2012-ECE Department,SBMJCE
Declare private as many classes as possible. It helps in optimizing the generated codes. Use char, int and boolean (scalar data types) in place of the objects (reference data types) as arguments and use local variables as much as feasible. Recover memory already used once by changing the reference to an object A special compiler for an embedded system can facilitate the disabling of specific features provided in C++. Embedded C++ is a version of C++ that provides for a selective disabling of the above features so that there is a less runtime overhead and less runtime library. The solutions for the library functions in an embedded C++ compiler are also reentrant. So using embedded C++ compilers or the special Programming advantages of C++ A class binds all the member functions together for creating objects. The objects will have memory Disadvantages of C++ Program codes become lengthy, particularly when certain features of the standard C ++ are used. Examples of these features are as follows: Template. Multiple inheritances (Deriving a class from many parents). Exceptional handling. Virtual base classes. Classes for IO Streams. [Two library functions are cin (for character(s) in) and cout character (s) out). The I/O 'stream class library provides for the input and output streams of characters (bytes).It supports pipes, sockets and file management features.
Java programming
Starts from coding for the classes. A class has members. A field is like a variable or struc in C. A method defines the operations on the fields, similar to function in C. Class instance fields and instance methods are the members, whose new instances are also created as when the objects are created from the class. Class is a named set of codes that has a number of members data fields (variables), methods (functions), etc. so that object can be created from it.
122
2011/2012-ECE Department,SBMJCE
The operations are done on the objects by passing the messages to the objects in objectoriented programming. Each class is a logical group with an identity, a state and a behavior specification. Java Class inherits members when a Java class is extended from a parent class called super class. The inherited instance fields and methods can be overridden by redefining them in extended class. Methods can be overloaded by redefining them for different number of arguments. Interface has only the methods and corresponding data fields and the methods do not have implementation in the Interface. A Java class which is interfaced to an Interface implements the abstract methods specified at the Interface
Java Features
Java is completely an OOP language Application program consists of classes and interfaces There is a huge class library on the network that makes program development quick Java has extensibility Java programs posses the ability to run under restricted permissions Multiple threads in Java Program Java has in-built support for creating multiple threads It obviates the need for an operating system (OS) based scheduler for handling the tasks Java generates the byte codes These are executed on an installed JVM (Java Virtual Machine) on a machine. Virtual machine takes the Java byte codes in the input and runs on the given platform (processor, system and OS). [Virtual machine (VM) in embedded systems is stored at the ROM.] Therefore, Java codes can host on diverse platforms.
Embedded System Design 2011/2012-ECE Department,SBMJCE
123
Java Platform Independence Feature Platform independence in hosting the compiled codes permits Java for network applications. Platform independence gives portability with respect to the processor and the OS used. Java is considered as write once and run anywhere. Java is the language for most Web applications and allows machines of different types to communicate on the Web. Java is easier to learn by a C++ programmer. Java does not permit pointer manipulation instructions. So it is robust in the sense that memory leaks and memory related errors do not occur. A memory leak occurs, for example, when attempting to write to the end of a bounded array. Java does not permit dual way of object manipulation by value and reference. There are no struc, enum, typedef and union. Java does not permit multiple inheritances. Java does not permit operator overloading except for + sign used for string concatenation.
Some disadvantages
Java byte codes that are generated need a larger memory when a method has more than 3 or 4 local variables. An embedded Java system may need a minimum of 512 kB ROM and 512 Kb RAM because of the need to first install JVM and then run the application.
OPTIMIZATION OF MEMORY NEEDS When codes are made compact and fitted in small memory areas without affecting the code performance, it is called memory optimization. It also reduces the total number of CPU cycles, and thus the total energy requirements. The following are used for optimizing the use of memory in a system. Use declaration as unsigned byte If there is a variable, which always has a value between 0 and 255. When using data structures, limit the maximum size of queues, lists and stacks size to 256. Byte arithmetic takes less time than integer arithmetic. Follow a rule that uses unsigned bytes for a short and a short for an integer It is used to optimize use of the RAM and ROM available in the system. Avoid if possible the use of 'long' integers and 'double' precision floating point values.
124
2011/2012-ECE Department,SBMJCE
Avoid use of library functions if a simpler coding is possible Library functions are the general functions. Uses of general function need more memory in several cases. Follow a rule that avoids use of library functions in case a generalized function is expected to take more memory when its coding is simple. When the designer knows fully the instruction set of the target processor, assembly codes must be used. This also allows the efficient use of memory. The device driver programs in assembly especially provide efficiency due to the need to use the bit set reset instructions for the control and status registers. Assembly coding also helps in coding for atomic operations. A modifier register can be used in the C program for-fast access to a frequently used variable. Only the few assembly codes for using the device IO port address, control and status registers are needed. The best use is made of available features for the given applications Calling a function calls context saving on a memory stack and on return the context is retrieved This involves time and can increase the worst-case interrupt latency. There is a modifier inline. When the inline modifier is used the compiler inserts actual codes at all the places where these operators. This reduces the time and stack overhead in the function call and return. But this is at the cost more ROM being needed for the codes. If used it increases the size of the program but gives faster speed. Using the modifier directs the compiler to put the codes for the functions instead f calling the functions. As a rule use in line modifier for all the frequently use small sets of codes in the function or the operator overloading functions if the ROM is available in the system A vacant ROM memory is unused resource why not use it for reducing the worst-case interrupt latency by eliminating the time taken frequent and retrieval of a program context? As long as shared data problem does arise, the use of global variables can be optimized. These are not used as the arguments for passing the values. A good function is one that has arguments to be passed. The passed values are saved on the stacks in case of interrupt service calls and other function calls. Besides obviating the need for repeated declarations, the use of global variables will thus reduce the worst case interrupt-latency and the time and stack overheads in the function call and return. But this is at the cost of the codes for eliminating shared data problem. When a variable is declared static, the processor accesses with less instruction than from the stack. As a rule, use global variables if shared data problem are tackled and use static variables in case it needs saving frequently on the stack.
125
2011/2012-ECE Department,SBMJCE
Host and Target Machines During development process, a host system is used Then locating and burning the codes in the target board.
Embedded System Design 2011/2012-ECE Department,SBMJCE
126
Target board hardware and software later copied to get the final embedded system Final system function exactly as the one tested and debugged and finalized during the development process
127
2011/2012-ECE Department,SBMJCE
Codes are permanently placed at the actually available addresses in the ROM. Embedded systems no separate program to keep track of the available addresses at different times during the running, as in a computer.
Various software tools and chain of actions of linker at host and locator in an embedded system
129
2011/2012-ECE Department,SBMJCE
Text editors Assemblers/compilers Simulators High-level language simulators Integrated development environments (IDEs)
130
2011/2012-ECE Department,SBMJCE
Text Editors
A text editor is a program that allows us to create or edit programs and text files. Windows operating system has a text editor program called Notepad. Using Notepad, we can create a new program file, modify an existing file, or display or print the contents of a file. It is important to realize that programs used for word processing, such as the Microsoft Word, cannot be used as a text editor. This is because word processing programs are not true text editors, because they embed word formatting characters, such as bold, italic, underline, and so on, inside the text. Most assemblers and compilers come with built-in text editors. Using these editors, we can create a program and then assemble or compile it without having to exit from the editor. These editors also provide additional features, such as automatic key word highlighting, syntax checking, parenthesis matching, comment-line identification, and so on. Different parts of a program can be shown in different colors to make the program more readable. For example, comments can be shown in one color, key words in another color, etc. Such features help to eliminate syntax errors during the programming stage, thus speeding up the overall development process.
Simulators
A simulator is a computer program that runs on a PC without any microcontroller hardware, and it simulates the behavior of the target microcontroller by interpreting the user
131
2011/2012-ECE Department,SBMJCE
program instructions using the target microcontroller instruction set. Simulators can display the contents of registers, memory, and the status of inputoutput ports of the target microcontroller as the user program is interpreted. The user can set breakpoints to stop the execution of the program at desired locations and then examine the contents of various registers at the breakpoint. In addition, the user program can be executed in a single-step mode so that the memory and registers can be examined as the program executes one instruction at a time each time a key is pressed. Some assembler programs also contain built-in simulators to enable programmers to develop and simulate their programs before loading onto a physical microcontroller chip. Some of the popular PIC18 microcontroller tools with built-in simulator are MPLAB IDE High-Level Language Simulators High-level language simulators are also known as source-level debuggers, and like simulators, they are programs that run on a PC and locate errors in high-level programs. We can set breakpoints in high-level statements, execute the program up to the breakpoint, and then display the values of program variables, the contents of registers, and memory locations at that breakpoint. A source-level debugger can also invoke hardware-based debugging activity using a hardware debugger device. For example, the user program on the target microcontroller can be stopped, and the values of various variables and registers can be examined.
useful during the development phases of microcontroller-based systems. Most PIC18 high-level language compilers are in the form of an IDE, thus enabling the programmer to do most tasks within a single software development tool. For developing or testing an embedded system application, a particular development cycle is followed which consists of several stages. An Integrated Development Environment (IDE) allows for implementation of all such steps of a development cycle. Typically, a development cycle has following steps: a. The code is written/edited in an Editor program. b. The Compiler/Assembler/Linker programs generate relevant support files like .hex, .obj etc. c. The code is loaded into Simulator/Debugger program. d. The code is analyzed by Simulation or Debugging. If an error occurs, the code is re-edited and the whole cycle is repeated.
Configuring (disabling and enabling specific C++ features Compiling Searches and lists the definitions, symbols, hierarchy of the classes, and class inheritance trees Symbols include the class members Searches and lists the dependencies of symbols and defined symbols, variables and functions
Monitors, enables and disables the implementation virtual functions. Finds the full effect of any code change on the source code. Searches and lists the dependencies and hierarchy of included header files. Navigates to and from o Between the implementation and symbol declaration. o Between the overridden and overriding methods.
Browses through o Information regarding instantiation (object creation) of a class. o encapsulation of variables among the members o Public, private and protected visibility of the members. o object component relationships
Automatically removes error and unused tasks. Provides easy and automated search and replacement
134
2011/2012-ECE Department,SBMJCE
Development Boards Development boards are invaluable microcontroller development tools. Simple development boards contain just a microcontroller and the necessary clock circuitry. Some sophisticated development boards contain LEDs, LCD, push buttons, serial ports, USB port, power supply circuit, device programming hardware, and so on. Programmer/Burner After the program has been written and translated into executable code, the resulting HEX file is loaded onto the target microcontroller's program memory with the help of a device programmer. The type of device programmer depends on the type of microcontroller to be programmed. A programmer/burner is a hardware device accompanied with software which is used to transfer the machine language code to the microcontroller/EEPROM from the PC. The compiler/assembler converts the code written in languages like assembly, C, java etc to machine language code (which is understandable by the machines/microcontrollers) and stores it in a hex file. A programmer acts as an interface between the PC and the target controller. The API/software of the programmer reads data from the hex file stored on the PC and feeds it into the controllers memory. The target controller on which the program needs to be burned is placed on the programmer using a ZIP socket. The software transfers the data from the PC to the hardware using serial, parallel or USB port. Parallel Programmer uses the parallel port of the PC. They are low cost programmer but not widely used.
135 Embedded System Design 2011/2012-ECE Department,SBMJCE
Serial Programmers uses the serial port to interact with PC via RS232 protocols. They are more popular among hobbyist working on PC. However both the serial and parallel programmers will become obsolete in near future. The major reason being unavailability of parallel and serial ports in the PCs & Laptops in the coming years. USB Programmer uses the USB interface to transfer the data from PC. The main advantage of the USB burner is that they are powered from the PC itself and there is no need of any additional supply. The USB programmers have already become popular and will soon replace the serial and parallel programmer. The programmer generally contains a microcontroller which is preprogrammed to take data from the PC and program the target controller. The programmer burns the target controller using any of the protocols like SPI, parallel interfacing, I2C/TWI or CAN. The speed of burning depends on the way of programmer is interfaced with PC and the protocols used to burn the target controller. The conventional method to burn a controller is to take it out from the circuit, place it on burner and then dump the hex file into the controller using the API. In order to remove this problem of removing the controller from the circuit every time it needs to be programmed, The controllers have now been upgraded with In System Programmer (ISP) feature. This allows burning/programming a controller without removing the controller from the circuit it is used in. The latest controllers are coming with the feature like bootloader memory which allows self burning capabilities, i.e. such controllers do not need any additional
136 Embedded System Design 2011/2012-ECE Department,SBMJCE
programmer hardware. They need only an API to transfer the program to the target controller. This API can also be incorporated in the compiler and hence the compiler can directly burn the target controllers.
In-Circuit Debuggers
An ICD is hardware that is connected between a PC and the target microcontroller test system and is used to debug real-time applications quickly and easily. With in-circuit debugging, A monitor program runs in the microcontroller in the test circuit. The programmer can set breakpoints on the Controller, run code, single-step the program, examine variables and registers on the real device, and change their values if required. An ICD uses some memory and I/O pins of the target PIC microcontroller during the debugging operations. With some ICDs, only the assembly language programs can be debugged. Some more powerful debuggers enable highlevel language programs to be debugged. In-Circuit Emulators The ICE is one of the oldest and the most powerful devices for debugging a microcontroller system. It is also the only tool that substitutes its own internal processor for the one in the target system. Like all ICDs, the emulator's primary function is target access the ability to examine and change the contents of registers, memory, and I/O. As the ICE replaces the CPU, it generally does not require working a CPU on the target system to provide this capability. This makes the ICE by far the best tool for troubleshooting new or defective systems. Breadboards Building an electronic circuit requires connecting the components as shown in the relevant circuit diagram, usually by soldering the components together on a strip board or a PCB. This PCB approach is appropriate for circuits that have been tested and are functioning as desired and also when the circuit is being made permanent. However, making a PCB design for just a few applications for instance, while still developing the circuit is not economical. Instead, while the circuit is still under development, the components are usually assembled on a solderless breadboard. The nice thing about the breadboard design is that the circuit can be modified very easily and quickly and different ideas can be tested without having to solder any components. The components can easily be removed, and the breadboard can be used for other projects after the circuit has been tested and works satisfactorily.
137
2011/2012-ECE Department,SBMJCE
Boot Loader
A Bootloader is the first program which executes (before the main program) whenever a system is initialized. In Personal computer it is used to boot he OS of the system. In case of microcontrollers, a bootloader enriches the capabilities of the microcontroller and makes them self programmable device. While working with microcontroller a common problem faced is to program the controller? Different controllers follow different protocols to program their ROM and hence every controller has a different programmer, which is difficult to be made. A universal programmer on the other hand is quite costly. With the upgrading era of technology, todays microcontrollers are not only growing powerful but also incorporate technically superior functionality which makes them more flexible and quite easy to use. The bootloader is one of them. A bootloader is a small section in the ROM of the controller which executes first when it is initialized. Generally the bootloader are written to empower a controller with self burning capabilities. The bootloader program can access any of inbuilt peripherals like USB, USART, CAN, SPI, etc. to exchange the data and this capability is used to write the flash memory. In automotive industries the controllers are encapsulated in a metal case and leaves accessibility to few pins only... In such cases the controller is programmed with the bootloader program using CAN interface at the time of manufacturing and then it is pasted in the circuits, which provides an ease to update the code with time. The bootloader can be inserted into a controller by using an external or any conventional burner and then depending on the type of bootloader the controller starts responding to the interface. So whenever the controller is reinitialized the program counter jumps to the bootloader section and then it waits there for the instruction, which is fed from external device. In case there is no bootloader the program counter will go on 0000H (starting position of the flash memory) and start executing the instructions which are written in the memory of the device.
138
2011/2012-ECE Department,SBMJCE
If the program counter enters the bootloader section then after executing the bootloader, there must be an instruction in the bootloader which will force the program counter to go to 0000H. Mostly the bootloader resides in the bottom most area of the ROM but there are some cases where the boot loader can be configured in the top (like in PIC18F).The starting and ending address of the bootloader in the ROM depends on the product. Hex File Format The Intel hex (ihex) generally known as hex file, is a format used to store machine language code in hexadecimal form. It is widely used format to store programs to be transferred to microcontrollers, ROM and EEPROM. The compilers convert the programs written in assembly, C etc into corresponding hex files, which are dumped into the controllers using burners/programmers. This article explores the details of the hex file format. The microcontroller understands machine language consisting of zeroes and ones. Its difficult rather practically impossible for humans to write codes in zeros and ones. Hence we use some high level languages like C, C++, Java, etc. And later a compiler is used to convert these codes into machine language which are stored in a hex file format. A hex file is a text file with the extension .hex
139
2011/2012-ECE Department,SBMJCE
functions which can be simulated design. The partition of system level processing requirements into hardware and software takes place during the architecture design phase. each system level processing requirements is mapped as either hardware and/or software requirement. The partitioning is performed based on the hardware software trades-offs. We will discuss the various hardware software trade-offs in hardware software co-design in a separate topic. The architectural design results in the detailed behavioral description of the hardware requirement and the definition of the software required for the hardware. The preprocessing requirement behavior is usually captured using computational models and ultimately the models representing the software processing requirements are translated into firmware implementation using programming languages.
architecture
class(CISC,RISC,etc..)
or
parallel
processing
class
like(VLIW,SIMD,MIMD,etc.). The controller architecture implements the finite state machine model using a state register and two combinational circuits .the stage register holds the present state and the combinational circuits implement the logic for next state and output. The data path architecture is best suited for implementing the data flow graph model where the output is generated as a result of a set of predefined computations on the input data. A data path represents a channel between the input and output and in data path architecture the data path may contain registers, counters, register files, memories and ports along with high speed arithmetic units. Ports connect the data path to multiple buses. Most of the time the arithmetic units are connected in parallel with pipeline support for bringing high performance. The finite state machine Datapath (FSMD) architecture combines the controller architecture with data path architecture .it implements a controller with data path ..The controller generates the control input whereas the data path process the data. The data path contains two types I/O ports, out of which one acts as the control port for receiving /sending the control signals from /to the controller unit and the Second I/O port interfaces the data path with external world for data input and data output .normally the data path is implemented in a chip and the I/O pins of the chip acts as the data input output ports for the chip resident data path. The complex instruction set computing architecture uses an instruction set representing complex operations. It is responsible for a CISC instruction set to perform a large complex operation (e.g. reading a register value and comparing it with a given value and then transfer the program execution to a new address location (the CNJE instruction for 8051 ISA)) with a single instruction .The use of a access and program memory size requirement. However it requires additional silicon for implementing microcode decoder for decoding the CISC instructions. the datapath for the CISC processor is complexion the other hand ,reduced instruction set computing (RISC) architecture uses instruction set representing simple operations and it require the execution of multiple RISC instructions to perform an complex operation. The data path of RISC architecture contains a large
142
2011/2012-ECE Department,SBMJCE
register file for storing the operands and output .RISC instructions set is designed to operate on register .RISC architecture supports extensive pipelining. The very long instructions word (VLIW) architecture implements multiple functional units(ALUs,multipliers,etc)in the datapath. The VLIW instructions package one standards instruction per functional unit of the data path. Parallel processing architecture implements multiple concurrent processing elements (PEs) and each processing elements may associate a data path containing register and local memory. Single instruction multiple data(SIMD) and Multiple Instruction
Data(MIMD) architectures are examples for parallel processing architecture .In SIMD architecture ,a single instructions is executed in parallel with the help of the processing elements .The scheduling of the instructions execution and controlling of each PE is performed through a single controller .The SIMD architecture forms the basis of reconfigurable processor. on the other hand the processing elements f the MIMD architecture execute different instructions at given point of time. The MIMD architecture forms the basis of multiprocessor systems. The PEs in a multiprocessor system communicates through mechanism like shared memory and message passing. Selecting the language: A programming language captures a computational model and maps it into architecture .There is no hard and fast rule to specify this languages should be used for capturing this model. A model can be captured using multiple programming languages like C,C++,C#,Java,etc for software implementations and languages like VHDK,System C,Veilog,etc for hardware implemention.on other hand, a single languages can be used for capturing a variety of models, Certain languages are good in capturing certain computational models. For example C++ is a good candidate for capturing an object oriented model..The only pre-requisite in selecting a programming language for capturing a model is that the language should capture the model easily. Partitioning system requirement into hardware and software so far we discussed about the models for capturing the system requirements and the architecture for implementing the system. from an implementation perspective ,it may be possible to implement the system requirement in either hardware or software .it is a tough decision making task to figure out which on to opt. various hardware software trade-offs are used for making decision on the hardware software partitioning.
143 Embedded System Design 2011/2012-ECE Department,SBMJCE
144
2011/2012-ECE Department,SBMJCE
Hardware dependent code of two sides of figure is compiled from the same source. Hardware and hardware-dependent code on the right has been replaced with test scaffold software on the right. scaffold software provides all functionalities and calls to hardware as in hardware independent code. Scaffold software takes its instruction from keyboard or from a file and produces output onto the display. This technique creates a clean division between the code that directly interfaces with the hardware and rest of the code. Then, hardware is disconnected to allow simulation of hardware. This technique hides the ugliness of bit manipulations, assertion logic etc..
Laboratory Tools
Volt-Ohm meter Oscilloscope Logic Analyzer Bit Rate meter System Monitor Codes Logic Probe Digital IC tester Soldering gun or Machine Frequency generator
145
2011/2012-ECE Department,SBMJCE
1. Volt-Ohm meter
An ohm meter and volt meter can be simply that, or it can be part of another, more common, electrical testing device called a multi-meter. An ohm meter uses a small electrical current to check the continuity of a circuit, also on different settings it can also tell how much resistance is in a circuit. Use an ohm meter to check continuity in motors, cables, or fuses. If a circuit has a break in continuity, it is called "open" .Voltmeters and ohm-meter can be used to test the hardware. It has two leads. One end each is connected to the meter and other points between which voltage or resistance is to be measured. The knob position is set for volt to check the power supply voltage at source, voltage levels at chip power input pins and port pins initial and final voltage levels after the software runs. The knob position is set for ohm to check broken connections and improper ground connections.
146
2011/2012-ECE Department,SBMJCE
2. Oscilloscope
An oscilloscope is a test instrument which allows you to look at the 'shape' of electrical signals by displaying a graph of voltage against time on its screen. It is like a voltmeter with the valuable extra function of showing how the voltage varies with time. A graticule with a 1cm grid enables you to take measurements of voltage and time from the screen. The graph, usually called the trace, is drawn by a beam of electrons striking the phosphor coating of the screen making it emit light, usually green or blue. This is similar to the way a television picture is produced. Oscilloscopes contain a vacuum tube with a cathode (negative electrode) at one end to emit electrons and an anode (positive electrode) to accelerate them so they move rapidly down the tube to the screen. This arrangement is called an electron gun. The tube also contains electrodes to deflect the electron beam up/down and left/right. The electrons are called cathode rays because they are emitted by the cathode and this gives the oscilloscope its full name of cathode ray oscilloscope or CRO. A dual trace oscilloscope can display two traces on the screen, allowing you to easily compare the input and output of an amplifier for example. It is well worth paying the modest extra cost to have this facility.
2. It is used in detection of sudden change in transition between o and 1 state during a clock period. This debugs a bus malfunction.
3. Logic Analyzers
A logic analyzer is a power too; that captures signal and displays these on its screen to debug real time triggering conditions. It helps in sequentially finding the signals as the instructions execute with respect to a reference. Logic analyzers in timing mode can tell how long things take to occur, shows signal patterns and finds out whether certain events occur. Logic analyzers in state mode can capture traces, listings of instructions that the microprocessor performed when the clock event occurs in a system. Sampling and Digitizing a Signal using Logic analyzer Signal acquisition: Sampling input signal Digitizing it to convert to digital data Assembling it into a waveform record Logic analyzer converts incoming data into ones and zeros Uses comparator with user-selectable threshold Samples data at regular time intervals Shortcomings of logic analyzers: 1. Cannot stop microprocessor at a breakpoint to single step the logic, view the registers, and change the memory contents and so on. 2. Memory contents can be known only if the microprocessor happens to read or write them. Contents of uP registers are invisible. 3. If program crashes, contents of memory, registers or anything else cannot be examined. 4. LA sees only what was fetched. It cannot see inside the uP to see which instructions it reads out of the cache. Advantages of Logic analyzers over emulators: 1. LAs have better trace filters and more sophisticated triggering mechanisms. 2. LAs run in timing mode. 3. LAs work with any processor.
148 Embedded System Design 2011/2012-ECE Department,SBMJCE
4. With LAs as many as few connections can be made. With emulator all the signals which can be a major project must be connected.
Advantages of Logic analyzers over Oscilloscope: Oscilloscope samples incoming signal at regular time intervals. Stores sample amplitude into 8-bit digital value. Preserves amplitude information Signal is analog in nature LA monitors multiple channels simultaneously Signal is digital in nature Provides timing relationship information Both are powerful analysis, troubleshooting tools
149
2011/2012-ECE Department,SBMJCE
Microcontroller, Crystal, Resistors, Capacitors, Switches, LEDs, Buzzer, LCD, Sensors, keypad Design Specification Number of people entered into and coming out of an exhibition hall are to be counted For every entry and exit there should be a different indication Number of people inside the hall at a given point of time is to be displayed It should have option to set maximum limit There should be alarm if the number of people inside the hall crosses a maximum limit There should be provision to reset the count The design should contain detailed block diagram of the system with the microcontroller and the minimum requirement to run a particular Microcontroller, if any Power supply requires design it, with the available source is only AC 230. POWER SUPPLY
150
2011/2012-ECE Department,SBMJCE
Explanation:
151
2011/2012-ECE Department,SBMJCE
I. Design an embedded System i) Memory and Graphical LCD with SPI interface ii) Real Time Clock (RTC) with I2C interface iii) Temperature Sensor with I2C interface iv) CAN Bus between two Controllers v) USB protocol vi) Keypad interface Design a system, Explain how exactly these devices can be interfaced with Microcontroller Microcontroller-A---- Temperature Sensor and RTC should be interfaced Microcontroller-B-----Graphical LCD, Keypad and Memory Should be interfaced Microcontroller-A and Microcontroller-B should be inter connected with CAN bus Use power from USB Cable to the Microcontroller and to entire System and do the minimum Configuration to run a Microcontroller
152
2011/2012-ECE Department,SBMJCE
1. Specifications a) CCD Array Camera records the pictures using a charge coupled devices (CCD) array. The array consisting of large number of horizontal rows and vertical columns of CCD cells for the picture In each row of cells, a number of CCD cell unexposed to the picture but used for off-set corrections in the each-row output from the picture cells. b) IOs-Controllers, LCD display, Switches and buttons. A set of controllers to control shutter, flash, auto focus and eye-ball image control. LCD display for graphics and GUI Switches and buttons for inputs at camera. User gives commands for switching on the camera, flash, shutter, adjust brightness, contrast, color, save and transfer.
Embedded System Design 2011/2012-ECE Department,SBMJCE
153
When a button for opening the shutter is pressed, a flash lamp glows and a self-timer circuit switches off the lamp automatically.
c) Picture transfer Ports JPEG file for a picture can be copied or transferred to a memory stick using a controller A picture jpg can be copied to a computer connected through USB port controller.
2. Requirements a) Purpose Digital recording and display of pictures Processing to get the pictures of required brightness, contrast and color. Permanent saving of picture in file in a standard format at a flash-memory stick or card Transfer files to a computer and printer through a USB port
b) Inputs Intensity and color values for each picture horizontal and vertical row and columns of pixels in a picture frame. Intensity and color values for unexposed (dark) area in each horizontal rows and columns of pixels. User control inputs c) Outputs Encoded file for a picture Permanent store of the picture at a file on flash memory stick Screen display of picture from the file after decoding File output to an interfaced computer and printer.
Digital camera hardware architecture Microcontroller or ASIP (Application Specific Instruction Set Processor) Multiple processors (CCDSP, DSP, Pixel Processor and others) RAM for storing temporary variables and stack ROM for application codes and RTOS codes for scheduling the tasks Timer, Flash memory for storing user preferences, ADC, DAC and Interrupt controller USB controller Direct Memory Access controller LCD controller Battery and external charging circuit
Embedded System Design 2011/2012-ECE Department,SBMJCE
154
Digital Camera Software components CCD signal processing for off-set correction JPEG coding JPEG decoding Pixel processing before display Memory and file systems Light, flash and display device drivers LCD, USB and Bluetooth Port device- drivers for port operations for display, printer and computer communication control
155
a) Alphanumeric keypad and Display Alphanumeric keypad on the top of the machine. A child interaction with it when buying a chocolate. Owner commands and interaction with the machine. LCD display unit on the top of the machine. Displays menus, entered text, pictograms, and welcome, thank and other messages, and time and date. Child as well as the ACVM owner GUIs with the machine using keypad and display.
b) Coin insertion and delivery slots, and Internet port Coin insertion slot so that the child can insert the coins to buy a chocolate Delivery slot to collect the chocolate, and coins if refunded Internet connection port so that owner can interact with ACVM from remote.
c) Reprogram of the codes and relocation of the codes The system ROM or flash or EPROM whenever the following happens: (i) the price of chocolate increases, (ii) The message lines or menus or advertisement graphics needs to be changed or (iii) machine features change.
156
2011/2012-ECE Department,SBMJCE
ACVM Requirements a) Purpose To sell chocolate through an ACVM from which children can automatically purchase the chocolates.
The payment is by inserting the coins of appropriate amount into a coin-slot
b) Inputs Coins of different denominations through a coin slot User commands c) Outputs Chocolate and signal to the system that subtracts the cost from the value of amount collected Display of the menus for GUIs, time and date, advertisements, welcome and thank messages
157
2011/2012-ECE Department,SBMJCE
Functions of the system A child sends commands to the system using a GUI (graphic user interface). GUI consists of the LCD display and keypad units. The child inserts the coins for cost of chocolate and the machine delivers the chocolate.
If the coins are not inserted as per the cost of chocolate in reasonable times then all coins are refunded.
If the coins are inserted of amount more than the cost of chocolate, the excess amount is refunded along with chocolate. The coins for the chocolates purchased collect inside the machine in a collector channel, so that owner can get the money, again through appropriate commands using the GUI. USB wireless modem enables communication through Internet to the ACVM owner
ACVM hardware Microcontroller or ASIP (Application Specific Instruction Set Processor) RAM for storing temporary variables and stack ROM for application codes and RTOS codes for scheduling the tasks Flash memory for storing user preferences, contact data, user address, user date of birth, user identification code, answers of FAQs ACVM specific hardware to sort the coins of different denomination and each denomination Main Power supply 220 V 50 Hz or 110 V 60 Hz. Internal circuits drive by supply of 5 V 50mA for electronic and 12 V 2 A for mechanical systems. Timer and Interrupt controller A TCP/IP port (Internet broadband connection) to the ACVM for remote control and for getting ACVM status reports by owner.
158
2011/2012-ECE Department,SBMJCE
ACVM Software components Keypad input read Display Read coins Interrupt handler and Interrupt Service routine Deliver chocolate TCP/IP stack processing TCP/IP stack communication
Design metrics Power Dissipation: As required by mechanical units, display units and computer system Performance: One chocolate in two minutes and 256 chocolates before next filling of chocolates into the machine.[Assumed] Process Deadlines: Machine waits for maximum 30 s for the coins and machine should deliver the chocolate within 60 s. User Interfaces: Graphic at LCD or touch screen display on LCD and commands by children or machine owner through fingers on keypad or touch screen
159
2011/2012-ECE Department,SBMJCE
IV.
SMART CARD
1. Requirements Purpose Enabling authentication and verification of card and card holder by a host Enabling GUI at host machine to interact with the card holder/user for the required transactions, for example, financial transactions with a bank or credit card transactions Inputs Received header and messages at IO port. Port IO from host through the antenna Outputs Transmitted headers and messages at Port IO through antenna
Functions of the system The card inserts at a host machine. The radiations from the host activate a charge pump at the card. The charge pump powers the SoC circuit consisting of card processor, memory, timer, interrupt handler and IO port. On power up, system reset signals reset Task to start. The reset Task sends the messages request Header and request start for waiting task, task_ReadPort. Task_ReadPort sends requests for host identification and reads through the Port_IO the host-identification message and request for card identification. task_PW sends through Port_IO the requested card identification after system receives the host identity through Port_IO. Task_Appl then runs required API. The requestApplClose message closes the application. The card can now be withdrawn All transactions between cardholder/ user now takes place through GUIs using at the host control panel (screen or touch screen or LCD display panel).
160
2011/2012-ECE Department,SBMJCE
Hardware Architecture A plastic card in ISO standard dimensions, 85.60 mm x 53.98 x 0.80 mm. It is an embedded SoC Microcontroller or a smart card processor Philips Smart XA or an ASIP Processor. Needs 8 kB+ internal RAM and 32 kB EPROM and 2/3 wire protected memory. CPU special features, for example, a security lock CPU locks certain section of memory protect 1 kB or more data from modification and access by any external source or instruction outside that memory Other way of protecting - CPU access through the physical addresses, which are different from logical address used in the program. Standard ROM 8 kB for usual or 64 kB when using advanced cryptographic features Full or part of ROM bus activates take place after a security check only. ROM Contains: i. Fabrication key and Personalization key ii. RTOS codes iii. Application codes iv. Utilization lock EEPROM or Flash scalable only needed part unlocks when storing P.I.N., unlocking P.I.N., access condition, card-user data, post activation application run generated nonvolatile data, invalidation lock to invalidate card after the expiry date or server instruction RAM run time temporary variables Chip-supply system using charge pump I/O system
Software Architecture Needs cryptographic software, needs special features in its operating system over and above the MS DOS or UNIX system features. Protected environment -OS stored in the protected part of ROM. A restricted run-time environment. OS, every method, class and run time library should be scalable. Optimum Code-size
Embedded System Design 2011/2012-ECE Department,SBMJCE
161
Limited use of data types; multidimensional arrays, long 64-bit integer and floating points and very limited use of the error handlers, exceptions, signals, serialization, debugging and profiling.
Three-layered file system for the data master file to store all file headers (file status, access conditions and the file lock) A header means file status, access conditions and the file lock. Dedicated file second file to hold a file grouping and headers of the immediate successor
Elementary file third file to hold the file header and its file data.
Design metrics Power Source and Dissipation: Radiation powered contact less Code size: optimum. card system memory needs should not exceed 64 kB memory. Limited use of data types; multidimensional arrays, long 64-bit integer and floating points and very limited use of the error handlers, exceptions, signals, serialization, debugging and profiling. File system(s): Three-layered file system for data File management: There is either a fixed length file management or a variable file length management with each file with a predefined offset. Microcontroller hardware: Generates distinct coded physical addresses for the program and data logical addresses. Protected once writable memory space Validity: System is embedded with expiry date, after which the card authorization through the hosts disables. Extendibility: The system expiry date is extendable by transactions and authorization of master control unit (for example, bank server). Performance: Less than 1s for transferring control from the card to host machine. Process Deadlines: None. User Interfaces: At host machine, graphic at LCD or touch screen display on LCD and commands for card holder (card user) transactions. STUDY THESE FOLLOWING 2 BY YOURSELF BY REFERING RAJKAMAL TEXBOOK I. II. MOBILE PHONE ROBOTS
162 Embedded System Design 2011/2012-ECE Department,SBMJCE
163
2011/2012-ECE Department,SBMJCE