EMBEDDED SYSTEMS

1.1 DEFINITION
Embedded system is in almost every electronic device that are designed today. There is software hidden away inside our watches, microwaves, VCRs, cellular Telephones, and pagers; the military uses embedded software to guide smart Missiles and detect enemy aircraft; communications satellites, space probes, and Modern medicine would be nearly impossible without it. Of course, someone has to write all that software, and there are thousands of computer scientists, embedded Engineers and other professionals who actually do. Microprocessors and Microcontrollers are widely used in such embedded system products. Embedded systems are extremely important branch of modern digital Technology. Each embedded system is unique and highly customized to the application at hand. In General, Embedded system can be defined as a system that has software embedded into hardware. As a result, embedded systems programming is a widely varying field that can take years to master. The main basics that includes in embedded programming are either Assembly programming or it may be high-level Languages such as C, C++ or JAVA. Basically embedded systems are the part of a large system but it need not be a computer.
            An embedded system is a special-purpose computer controlled electro-mechanical system in which the computer is completely encapsulated by the device it controls. An embedded system has specific requirements and performs pre-defined tasks, unlike a general-purpose personal computer. An embedded system is a computer controlled system. The core of any embedded system is a microprocessor/microcontroller, programmed to perform a few tasks (often just one
Task) . This is to be compared to other computer systems with general purpose hardware and externally loaded software. Embedded systems are often designed for mass production.

1.2 Features of Embedded Systems

There are certain key features of embedded systems that differentiate them from other systems in the world. They have been discussed below:

1.      Software: The software used by embedded systems is called firmware and is stored in Read Only Memory or ROM or a Flash memory chip. Such software is efficient enough to work with the limited amount of hardware resources available. Typically, such software does not use a keyboard or if it does, it is small. There is very little RAM provided to such software.

2.      User interfaces: There are various types of user interfaces used in embedded systems. Some systems do not have any user interface at all. Devices such as PDAs provide interactive and complete user interfaces. Other devices, such as budget mobile phones have small screens that display only two colors and provide very limited (but enough) functionality. Some other systems have character-only screens such as that in digital railway timetables at stations.

3.       CPU Platform: Embedded systems use various CPU platforms or architectures that include ARM, X86, PowerPC, and PIC etc. embedded systems tend to use specifically purchased CPUs that are added to the embedded system which itself is put on a chip, that is, an integrated circuit (IC) specially designed for it.

4.       Tools: Embedded system designers use software ranging from compilers and assemblers to debuggers and emulators to develop software for embedded systems. These are usually scaled-down versions of their full software versions.

5.      Start-up: Embedded systems the world over begin with what is called the start-up process. At this point, a self-test is conducted by the system where the hardware, peripherals, power supply etc. are tested for being in good condition. These tests are usually very short (usually, no more than 10 seconds) and determine the health of the system overall.

1.3 Characteristics of Embedded system

Application specific- System designed for a given application is known a prior before the system
Design begins and system flexibility is important for upgrades, design reuse which are usually achieved through reprogramming. Digital signal processing in ES Signals are represented as digitally as sequence samples. DSP processing occurs in system like averaging, filtering, device controls, encoding, decoding etc. Reactivity in Embedded System- Having increasingly higher performance with constraints which are important part of system functionality in building embedded computing system. Real-time application of embedded system- A real time system consists of tasks under deadline constraints. It consist of two types- Hard real-time and Soft real-time. Hard Real time systems- In these systems the task must complete by specified Deadlines e.g. - flight control. Soft Real time systems- in these system task executions may go beyond specific deadlines e.g. – connection establishment, updates etc. Power, cost & reliability are often important attributes that influence design of embedded systems.

1.4 Developing Embedded System
Developing software and hardware for microcontroller based embedded systems involves the use of a range of tools that can include editors, assemblers, compilers, debuggers, simulators, emulators and Flash/OTP programmers. To the newcomer to microcontroller development it is often not clear how all of these different components play together in the development cycle and what differences there are for example between Trainer kits, emulators and simulator. Figure shows a typical microcontroller software development cycle with some of the software and hardware components involved. The basic operations that are involved in above microcontroller development cycle are:
1. Writing Microcontroller Code.
2. Translating the Code.
3. Debugging the code.



 1. Writing microcontroller code: Software Code for a microcontroller is written in a programming language of choice (often Assembler or C). This source code is written with a standard ASCII text editor and saved as an ASCII text file. Programming in assembler involves learning a microcontroller's specific instruction set (assembler mnemonics), but results in the most compact and fastest code. A higher level language like C is for the most part independent of a microcontroller's specific architecture, but still requires some controller specific extensions of the standard language to be able to control all of a chip's peripherals and functionality. The penalty for more portable code and faster program development is a larger code size (20%...40% compared to assembler).

2. Translating the code: Next the source code needs to be translated into instructions the microcontroller can actually execute. A microcontroller’s instruction set is represented by "op codes". Op codes are a unique sequence of bits ("0" and "1") that are decoded by the controller's instruction decode logic and then executed. Instead of writing opcodes in bits, they are commonly represented as hexadecimal numbers, whereby one hex number represents 4 bits within a byte, so it takes two hex numbers to represent 8 bits or 1 byte. For that reason a microcontroller's firmware in machine readable form is also called Hex-Code and the file that stores that code Hex-File. Assemblers, Compilers, Linkers and Librarians Assemblers or (C-) Compilers translate the human readable source code into "hex code" that represents the machine instructions (op codes). To support modular code and reusable libraries of code, most assemblers and compilers today come with Linkers and Librarians. Linkers, link code modules saved in different files together into a single final program. At the same time they take care of a chip's memory allocation by assigning each instruction to a microcontroller memory addresses in such a way that different modules do not overlap. Librarians help you to manage, organize and revision control a library of reusable code modules. Once the ASCII source code text file has been assembled (with an Assembler) or compiled (with a Compiler) and the files have been linked (with the Linker), the output results in a number of files that can be used for debugging the software and programming the actual microcontroller's memory.

3. Debugging the Code: A debugger is a piece of software running on the PC, which has to be tightly integrated with the emulator that you use to validate your code. For that reason all emulator manufacturers ship their own debugger software with their tools, but also compiler manufacturers frequently include debuggers, which work with certain emulators, into their development suites. A Debugger allows you to download your code to the emulator's memory and then control all of the functions of the emulator from a PC. Common debugging features
Include the capability to examine and modify the microcontroller's on-chip registers, data- and program-memory; pausing or stopping program executing at defined program locations by setting breakpoints; single-stepping (execute one instruction at a time) through the code; and looking at a history of executed code (trace). So far we've talked about several different pieces of software: Text Editor, Assembler or Compiler, Linkers, Librarians and Debugger. You can easily imagine that it can become quite a time-consuming challenge to alternate back and forth between all of these programs during the debugging process (discover a bug, edit the source code, compile it again, link it again, download the modified code to the emulator, etc.). This is where an integrated development environment (IDE) comes in. An Integrated Development Environment puts all of the previously discussed software components under one common unified user interface, so that it becomes possible to make a code change and get the modified code loaded into the emulator with a few mouse clicks, instead of dozens. A good IDE allows you for example to click on a syntax error message produced by the compiler and have the source code with the highlighted offending instruction pop up for editing in the text editor. One click of a button and the modified code gets retranslated, linked and downloaded to the emulator. An IDE allows you to store the configuration settings for a project - like compiler switches, or what flavor of chip to emulate - so you can easily recreate a project later on. Some IDEs are flexible enough to allow you to incorporate different choices of third party tools (like compilers and debuggers), others only work with a manufacturer's own tool chain.

Debugging Tools: When it comes to debugging your code and testing your application there are several different tools you can utilize that differ greatly in terms of development time spend and debugging features available. In this section we take a look at simulators. Simulators try to model the behavior of the complete microcontroller in software. Some simulators go even a step further and include the whole system (simulation of peripherals outside of the microcontroller). No matter how fast you’re PC, there is no simulator on the market that can actually simulate a microcontroller's behavior in real-time. Simulating external events can become a time-consuming exercise, as you have to manually create "stimulus" files that tell the simulator what external waveforms to expect on which microcontroller pin. A simulator can also not talk to your target system, so functions that rely on external components are difficult to verify. For that reason simulators are best suited to test algorithms that run completely within the microcontroller (like a math routine for example). They are the perfect tool to complement expensive emulators for large development teams, where buying an emulator for each developer is financially not feasible. For our case we have used a simulator called “TOPVIEW”. Figure shows you the procedure that is involved in loading a program into the Targeted hardware system that is designed on basis of embedded technology.

1.5 ADVANTAGES & DISADVANTAGES

Advantages:

1. One of the advantages of an embedded system is to decrease power consumption and space.
2. All embedded systems that are based on microcontroller have low power consumption in addition to some form of I/O, COM port and ROM all on a single chip.

Disadvantages:

1. Higher Hardware/Software development overhead.
2. Design, compilers, debuggers may result in delayed time to market.

1.6 APPLICATIONS

1.      Consumer electronics- e.g., cameras, camcorders etc.
2.      Consumer products, e.g., washers, microwave ovens.
3.      Automobiles (anti-lock braking, engine control).
4.      Industrial process controllers & avionics/defense applications
5.      Computer/Communication products, e.g., printers, FAX machines.
6.      Emerging multimedia applications & consumer electronics e.g., cellular phones, personal digital assistants, videoconferencing servers, interactive game boxes, TV set-top boxes.

Comments

Popular posts from this blog

AUDIO SPOTLIGHTING

Electronic Reconnaissance, ELECTRONIC COUNTERMEASURES (ECM), ELECTRONIC COUNTER-COUNTERMEASURES (ECCM)

INTERFACING OF EEPROM with 8051