Browse Resources

Placement Partners

  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
Technical queries | Print |  Tell-a-friend

1.1 What is Embedded Systems?
1.2 How do your course contents address the industry needs?
1.3 What are the building blocks of Embedded Systems from a programmer's perspective?
1.4 How Embedded Systems programming is different from normal programming? What are the technical challenges involved?
1.5 How Emertxe's course content addresses the programming challenges mentioned above?
1.6 What are the platform and tools that is used for training and development?
1.7 Why Linux is the choice for Embedded Systems?
1.8 What kind of boards and hardware experience will I gain as a part of the training?

What is Embedded Systems?
An embedded system is a special-purpose system which performs a specific task with its own hardware. The embedded system is different from a general purpose computing devices (Like PC) because of its size, functionality and resources. Since the system is dedicated to specific tasks, design engineers can optimize it by reducing the size and cost of the product to a larger extent which requires good designing skills. Embedded systems are often mass-produced; in order to have cost savings multiplied by millions of items.

Physically, embedded systems range from portable consumer devices (such as MP3 players, PDA's, Mobile phones, gaming devices) to large Enterprise products (such as Enterprise routers, Networking switches and Industrial automation systems). From an engineering point of view embedded systems development is very different from an application development.

How do your course contents address the industry needs?
Our ‘Embedded Systems and Systems programming’ course consists of six modules in which the C and Data-structures form the ‘core’ part of the Embedded Systems. The remaining modules (TCP/IP Network programming, Real Time Operating Systems, Linux device drivers and Micro controllers) provide a framework understanding of various aspects of embedded systems. These framework understanding will lead to almost all industry needs. The following diagram depicts the same.

What are the building blocks of Embedded Systems from a programmer's perspective?
From a programmer's perspective there are four building blocks for any system namely Boot-loader, Operating system, Device drivers and Networking subsystem apart from the device's main functionality. When the system gets powered up, the boot-loader is the first program that gets activated from the non-volatile memory or NVM. This boot loader will vary from one system to another, because it mainly depends on the way system is configured. This boot loader will in turn revoke the operating system by calling its entry point, which in-turn initializes various operating system services (memory, tasks, scheduler etc...).

Once the operating system services are initialized, all the low level device drivers followed by other subsystems (like networking) are brought up. At this point we can say that the platform is built for the system. After this initialization is complete, the system would be in a position to perform its expected functionality. This functionality will vary from device to device as each system is built for a different purpose. Say for example a router's main functionality would be to route the packets but a microcontroller's functionality may be measuring the temperature using a sensor. Finally functionality programming is the main core of embedded system which requires a powerful programming skill.

How Embedded Systems programming is different from normal programming?
What are the technical challenges involved?

Even though embedded systems vary in various functionalities, the programming fundamentals remain almost the same. The challenges in embedded systems programming is because of the following reasons.

  • Embedded systems have very limited resources (in terms of memory, storage, processing power) compared to a general purpose computing device like PC.
  • Because of the less memory availability and requirement of faster response, embedded systems have Real Time Operating Systems (RTOS). These RTOS have flat memory model where all processes in the system run under the same memory space. This will lead to lot of memory corruption and inter process communication errors. Debugging these errors are really challenging.
  • Embedded systems have a pre-defined performance requirements and response time.
  • Since the embedded software will be running in a dedicated hardware, troubleshooting them requires strong system level understanding and debugging skills.

 

How Emertxe's course content addresses the programming challenges mentioned above?
As industry experts, we have designed the course carefully. To start with, In spite of so many new programming languages, 85% of embedded systems are built using C language. This is mainly because it produces the most optimal machine code. The C language gets this power mainly because of the Data Structure programming. If various blocks of embedded systems can be equated to organs of human body, data structure programming is the life-blood of the system. Without sound data structure programming no embedded systems can be built. Sounds different? Read on.

As mentioned in the beginning of this guide, embedded systems have a very limited amount of memory. So using the memory optimally and freeing them plays a very vital role. Since data structures (especially in C) provide this power to the programmers, it becomes the life-blood of the system. If you get a chance to look into the code of any embedded system, you will come across Abstract Data Types (ADTs) liked lists, stacks, queues and graphs very frequently. Also other subsystems (say for example networking) provide certain interface or framework for programmers. It is up to the programmers to make use of them and build the expected functionality. The networking subsystem provides the ‘socket’ interface and learning it is comparatively easy. But what exactly the programmer wants to do with sockets? How is he going to program the network protocol using sockets? The answer is once again data structures. That's why through understanding and programming knowledge of data structures is the key building any embedded system.

In our training, we give extensive focus towards building strong programming skills for C and Data Structures. Then other modules like Device drivers, TCP/IP and network programming, micro-controllers and RTOS provide various ways to apply the data structures to build the embedded system. By the end of the course, our students are empowered to tackle the programming challenges.

What are the platform and tools that is used for training and development?
The Linux platform is used for training and development. Our training and development lab is completely based on Linux with latest tools installed in it. We have designed our whole course based on Linux.

RTOS:
Platform:
Linux, Micro Linux, RTLinux This tool is provided by 'arm elf' tool chain,arm-elf-gdb for software debugging and arm-elf-gcc - compiler

  • use the CPU internal debugging module
  • do not have overlay memory
  • use target memory to download code and store data
  • do not interfere with customer's application
  • communicate with target via JTAG\BDM connector
  • often offer the option to add capabilities like:
    • trace
    • port analyzer
    • logic analyzer
  • have many of the In-Circuit Emulators features

 

Linux Device Drivers:
OS:
Linux- Kernel Ver 2.6

TCP/IP & Unix Networking:

Platform: Linux
Tool: Ethereal
Compiler: GCC
Various network devices (DLINK wireless Router, Airtel broadband modem) for understanding the networking.

Microcontrollers:

8051
Compiler: SDCC(Small Device C Compiler) for 8051.

PIC
Compiler: PICC (C compiler)
Tools: IDE: Piklab

C & Data Structures:
Platform: Linux
Compiler: GCC
Debugger: GDB

Why Linux is the choice for Embedded Systems?
We at Emertxe ‘consciously’ chosen Linux for our training and development for the following reasons:

  • Linux is based on Open source concept and it is going to be the future of embedded software. Most of the embedded systems are built using Linux as they significantly bring down the product cost simply because it is open.
  • There are ample amount of tools and debugging mechanisms provided by Linux for an embedded systems developer right from the editor to memory analyzer. These tools play a major role in embedded system development as they reduce the development time.
  • Linux is customizable for almost all processor architectures and it is scalable at all levels.

What kind of boards and hardware experience will I gain as a part of the training?
As a part of training, students would get ample amount of opportunity to work with various types of boards. We have Micro controllers, PIC, Mechatronic and ARM boards for training purpose. Apart from this students would get to work on some of our customized boards (which are exclusively developed by Emertxe development division). These boards are currently used in live projects which are used for industrial automation projects.

 

If you are interested to get answers to other queries in following sections click on the below links:
Emertxe's embedded course related queries
Career related queries
Placement process at Emertxe
Important Info on Embedded related Market Information and Future scope in embedded systems domain
Emertxe-Student relationship