Patanjali has worked well to counter its competition, both brand and product-wise. A job seeker too should be able to assess the standing of other candidates and be prepared accordingly. For example, in a bank job interview you should be well aware that from M.Com graduate to CA pass out, everyone could apply for the job. Hence you should be prepared accordingly.
knowledge sharing session
Friday 7 April 2017
Job Searching Tips After Colleges
Job searching tips after colleges - After finishing studies every student think about his career, job and future opportunities. Many types of questions arise in his mind. The biggest question is what kind of job he or she should join, in order to achieve a good professional career. Due to competition in the market, searching job is not an easy task.
Many people lost their positions during the "Great Recession," others have found interesting and rewarding jobs. There is no magic formula for finding a job, but there are many ways to get a good job according to your taste. Here we are providing some useful tips for searching jobs of your interest.
1.Online Job Sites: There are many websites for searching jobs. Create your account on them, update your profile, upload your resume and search for job opportunities in your area. Then apply for the jobs that you like.
2 .Local Searches: If you want to find a job in a local area then Newspapers, Placement Offices and Job Consultants can help you. Consultants might charge 30 to 60 percent of your first salary but they can find better job according to your profile.
3. Networking: With the help of your social network, you can search for a good job. Consulting your friends, teachers, relatives, family friends and your parents can help you to get a job in their respective fields. Its most beneficial as it costs you nothing but a word of mouth.
4. Preparing for a Job Interview: Once you have cleared the first step, either its merit based on your academic records or your written test, you will be asked to appear in an interview. It is the most critical part of the selection process. Before appearing in an interview, just try to get some knowledge about that organisation and the technical knowledge to get that job. You can use the online search or the offline content that you have got, to attain the desired knowledge.
5. First impression last impression: The first time you meet your employer, especially the interviewer, you should make your first impression count. Try to be confident, answer to the point and look into the eyes of the interviewer while answering any question. Don’t show any confusion. If you don’t know any answer just tell it to the interviewer but don’t through guesses.
6. Be positive: Your thoughts should always be positive. Stay confident. If asked about a perceived negative, do not make excuses. Always believe in result. If you follow these tips, you must be get a good job.
Sunday 4 December 2016
Linux Kernel Compilation Steps
Linux Kernel Compilation Steps
The Linux kernel is the heart of your Linux system. It handles user/your input/output, hardware, and controlling the power in the computer.
1.Download the latest version of the Linux kernel from http://www.kernel.org.
Extract downloaded kernel.
Change directory to where linux kernel has been extracted.
2. #sudo make menuconfig
3. Get Latest updates
#sudo apt-get update
4. #sudo apt-get install yum
5. #sudo apt-get install ncurses -dev
6. #sudo make menuconfig
7. then enter the file systems menu
make some changes as per your requirement.
8. #sudo make dep
9. #sudo make bzImage
10. #sudo make modules
11. #sudo make modules_install
12. #sudo make install
13. #cd /boot
14. #ls
see there are following 4 files:
a. system.map
b. config
c. vmlinuz
d. initrd
15. #sudo update-initramfs -c -k <your Stable Kernel Number>
16. #sudo update-grub
17. Reboot the System
#sudo reboot
The Linux kernel is the heart of your Linux system. It handles user/your input/output, hardware, and controlling the power in the computer.
1.Download the latest version of the Linux kernel from http://www.kernel.org.
Extract downloaded kernel.
Change directory to where linux kernel has been extracted.
2. #sudo make menuconfig
3. Get Latest updates
#sudo apt-get update
4. #sudo apt-get install yum
5. #sudo apt-get install ncurses -dev
6. #sudo make menuconfig
7. then enter the file systems menu
make some changes as per your requirement.
8. #sudo make dep
9. #sudo make bzImage
10. #sudo make modules
11. #sudo make modules_install
12. #sudo make install
13. #cd /boot
14. #ls
see there are following 4 files:
a. system.map
b. config
c. vmlinuz
d. initrd
15. #sudo update-initramfs -c -k <your Stable Kernel Number>
16. #sudo update-grub
17. Reboot the System
#sudo reboot
Remove Ads from skype
Step1:
From Control Panel, Click on Internet Options, Click on the Security tab and select the Restricted Sites icon.
Press the Sites button and type apps.skype.com in the text box, then press Add.
Step 2:
Remove the Ad Placeholder
go to the path C:\Users\Your Username\AppData\Roaming\Skype.
Note:- AppData is a hidden folder. So you need to give the above path in explorer
You’ll then need to open the folder that’s titled with your Skype ID and find an XML file called config. Right-click that file and choose to open it with Notepad.
Press Ctrl + F to use the Find function to search for AdvertPlaceholder. You should find a piece of code that reads <AdvertPlaceholder>1</AdvertPlaceholder> — change that 1 to a 0 and you will remove the placeholder from your Skype interface.
Restart Skype for the changes to take effect
Software tools provided by Qualcomm
Software tools provided by Qualcomm
Worldwide more than one billion Android devices powered by Qualcomm
Snapdragon processors.As Qualcomm Snapdragon processor powered these
many Android device. Qualcomm also provide Software solution for
developers.
At Qualcomm Developer Network, Qualcomm provide a full set of hardware and software tools that help developers to build high-performance apps and unlock the potential of devices powered by Snapdragon. Qualcomm software tools include SDKs (Software Development kits), profilers, debuggers and code compilers, which let developer to get the best power and performance out of the latest devices and also integrate cutting-edge features in their apps. By using these software tools developer can Create, test and optimize their latest apps and games by taking advantage of the unmatched performance and advanced features of next-generation Snapdragon processors.
At Qualcomm Developer Network following Software tools provided by Qualcomm
Compilers :
1. Snapdragon LLVM Compiler :
LLVM is a C/C++ compiler that is becoming increasingly popular. It enables use of compilers in a broader range of configurations, providing for better performance and power usage – particularly on Snapdragon micro-architectures. Beginning with the Jellybean MR1 release, Google has included LLVM as an alternative compiler as part of the Android toolchain and the Android NDK. LLVM is suitable wherever you use native code (C/C++) in your Android application.
SDK :
1. Adreno GPU SDK
Adreno GPU SDK help developer to developing and optimizing OpenGL ES applications for Android on platforms containing Qualcomm Adreno GPUs.
2. AllJoyn Proximal Connectivity Platform
AllJoyn is a collaborative open source project of the AllSeen Alliance. AllJoyn makes it easier to capitalize and create new and immersive experiences by enabling apps to connect, control and share resources with other nearby apps and connected smart things. You can be confident that this open, secure and universal framework and core set of services enables interoperability among nearby devices, products and applications across platforms and operating systems, so you can focus on your ideas and business.
3. AllPlay Click Wireless Home Audio SDK
The Qualcomm® AllPlay™ Click SDK, a product of Qualcomm Connected Experiences, Inc., is a collection of API documentation, sample source code and binary library to help developers create mobile apps that connect devices to make cross-brand media streaming a reality. It packs advanced audio capability into an easy to integrate, simple library. This allows developers and creators of Internet radio and music services to easily offer their users leading-edge use cases that work consistently across compatible devices, brands and platforms.
4. FastCV Computer Vision SDK
FastCV is designed for efficiency on all ARM-based processors, but is tuned to take advantage of Qualcomm's Snapdragon processor (S2 and above). This gives you the most widely used, computationally intensive vision processing APIs, with hardware acceleration and better performance on mobile devices.
FastCV will enable you to add new user experiences into your camera-based apps like:
1. gesture recognition
2. face detection, tracking and recognition
3. text recognition and tracking
4. augmented reality
5. Hexagon DSP SDK
The Hexagon SDK provides for a complete environment to generate dynamic Hexagon DSP code modules that can execute on the included simulator or on Snapdragon 800 based hardware development platforms.
6. LTE Broadcast SDK
The Qualcomm LTE Broadcast SDK gives developers the power to bring LTE Broadcast connectivity and content to their apps. This resource includes the APIs, tools, and documentation to develop and test LTE Broadcast applications for Android-based mobile devices with LTE broadcast service capabilities. The SDK defines the application interface to the Qualcomm LTE Broadcast middleware to make it easier to integrate services such as streaming video and file delivery into an app.
7. Snapdragon Math Libraries
If you are an app developer or an algorithm developer dealing with low level math routines, you know that squeezing the peak performance out of any processor is difficult and time consuming. And it’s even worse, when you have to start from scratch to support the newer generation processor. To address this portability across generations and to give you superior performance while maintaining the numerical correctness for your mathematical routines, Qualcomm is providing developers with Snapdragon Math Libraries.
8. Snapdragon SDK for Android
The Snapdragon SDK for Android is designed to make it easy to integrate facial processing and facial recognition features into your application.
Facial processing provide following features :
1. Blink Detection – measure how open each eye is
2. Gaze Tracking – assess where the subject is looking
3. Smile Value – estimate the degree of the smile
4. Face Orientation – track the Yaw, Pitch and Roll of the head
Go beyond face detection and perform real-time face analysis to identify people. You can use these Snapdragon SDK for Android capabilities to develop apps that can add users to an internal database through face registration and then identify users based on facial analysis. These features do not use any cloud-based recognition and are done entirely offline.
9. Symphony System Manager SDK
Symphony SDK is designed to solve this very problem by providing you with a set of APIs to put tighter control on how you want to utilize the various compute units within Qualcomm® Snapdragon™ processors like multi-core CPUs, GPU and DSPs for task scheduling, heterogeneous offload, and power and thermal management.
10. Snapdragon VR SDK
Coming Soon
Advanced heterogeneous processors like the Qualcomm® Snapdragon™ 820 processor are capable of delivering immersive VR experiences. The new Snapdragon VR SDK is designed to abstract the complexity of immersive virtual reality and provide developers with access to optimized, advanced VR features, to simplify development and to help them attain improved VR performance and power efficiency with the Snapdragon 820 for Android smartphones and upcoming VR headsets. The SDK is expected to be available in the second quarter of 2016.
11. Qualcomm’s Zeroth SDK
Coming Soon
Using Qualcomm’s Zeroth SDK developer can run deep learning programs directly on devices like smartphones and drones — if they’re powered by one of Qualcomm’s chips
Debuggers :
1. Snapdragon Debugger for Eclipse
Qualcomm® Snapdragon™ Debugger for Eclipse is a plug-in to the popular Eclipse IDE which enables debugging of a variety of APIs for Android devices.
Snapdragon Debugger for Eclipse Feature:
1. Android project creation, build, and deploy to device
2. Breakpoints, conditional breakpoints, memory breakpoints
3. Single step through native and assembly code
4. Views for registers, memory, local variables, and global variables
5. Multi-threaded applications
6. Loading tombstone/logcat crash logs
7. OpenCL data types
8. OpenCL Kernel debugging on CPU as well as GPU on Snapdragon devices
2. Snapdragon Debugger for Visual Studio
Qualcomm® Snapdragon Debugger for Visual Studio is a plug-in tool to Microsoft’s Visual Studio IDE that enables a variety of APIs for debugging devices powered by Snapdragon processors. With support for Android NDK application debugging in its first release, it simplifies debugging of native C/C++ code on Android devices.
Snapdragon Debugger for Visual Studio Feature:
1. Android project creation, build, and deploy to device
2. Breakpoints, conditional breakpoints, memory breakpoints
3. Single step through native and assembly code
4. Views for registers, memory, local variables, and global variables
5. Multi-threaded applications
6. Loading tombstone/logcat crash logs
7. Ability to debug projects compiled outside of this debugger tool
8. GNU Debugger (GDB)
Profilers :
1. Adreno GPU Profiler
Analyze and improve the graphics and compute performance in your apps with the insights available from Adreno Profiler. This easy-to-use tool delivers comprehensive GPU performance analysis, simplifies debugging, and lets you optimize for maximum visual app impact.
2. App Tune-up Kit
App Tune-up Kit is an innovative way for developers to profile and analyze any Android application in just 60 seconds. With one touch, you can evaluate app performance in five critical areas: CPU, GPU, Power, Thermal and Mobile Data.
App Tune-up Kit Features:
1. One touch analysis of any Android app in only 60 seconds
2. Evaluates performance in 5 critical areas: CPU, GPU, power, thermal and network usage
3. Results appear in an easy-to-understand dashboard
4. Reports accurate FPS on supported apps* (Beta feature)
5. Compares any app with the Google Play Top 20**
6. Shows the differences between two apps in 30 areas
7. No ads, analytics or data collection
8. Recommendations help developers improve their apps** (Beta feature)
9. Automatically estimates real-time power consumption when direct power readings are not available
3. Snapdragon Profiler
Qualcomm® Snapdragon Profiler is one of the most extensive system profiling tools available for developers. The tool is designed to show you how your application utilizes the underlying hardware and software system on commercial devices powered by Snapdragon processors. Using Snapdragon Profiler, you can identify the bottlenecks and focus on optimization of your apps. In addition to performance, this tool also provides insights into power, thermal and network usage. It supports three different modes, Real-time, Trace Capture, and Snapshot Capture, which give you a robust analysis to help optimize the performance and power of your applications.
Snapdragon Profiler Features:
1. Plug and play connectivity with Android devices and apps
2. Profiling data includes: CPU, GPU, and DSP* performance, power, thermal, and network
3. Supported system areas include: Android Trace, CPU, GPU, DSP, memory, and network data
4. GPU APIs: OpenGL ES 3.1, OpenCL 1.2, and Vulkan 1.0*
4. Trepn Power Profiler
Trepn™ Profiler is an on-target power and performance profiling application for mobile devices. Although Trepn runs on most Android devices, additional features are available when used with devices featuring Qualcomm® Snapdragon™ processors or development hardware.
Trepn Power Profiler Features:
1. Six fast-loading profiling presets
2. Overlays appear on screen on top of applications that are being profiled
3. Profile your device, or a single app
4. Displays battery power on supported devices
5. Not all devices are capable of reporting accurate battery power. Refer to the list of supported devices in the Trepn forum.
6. View CPU and GPU frequency and utilization
7. GPU frequency and utilization are only available on Snapdragon-powered devices.
8. Display network usage (cellular and Wi-Fi)
9. Runs on most Android smartphones and tablets (Android 4.0 and higher)
10. Advanced mode to manually select data points and save data for later analysis
These tools are very useful for development of application or product on Qualcomm platform.For each SDKs & tools Qualcomm provide video tutorials & documents on Qualcomm Developer Network. For More information you can login to Qualcomm Developer Network.
At Qualcomm Developer Network, Qualcomm provide a full set of hardware and software tools that help developers to build high-performance apps and unlock the potential of devices powered by Snapdragon. Qualcomm software tools include SDKs (Software Development kits), profilers, debuggers and code compilers, which let developer to get the best power and performance out of the latest devices and also integrate cutting-edge features in their apps. By using these software tools developer can Create, test and optimize their latest apps and games by taking advantage of the unmatched performance and advanced features of next-generation Snapdragon processors.
At Qualcomm Developer Network following Software tools provided by Qualcomm
Compilers :
1. Snapdragon LLVM Compiler :
LLVM is a C/C++ compiler that is becoming increasingly popular. It enables use of compilers in a broader range of configurations, providing for better performance and power usage – particularly on Snapdragon micro-architectures. Beginning with the Jellybean MR1 release, Google has included LLVM as an alternative compiler as part of the Android toolchain and the Android NDK. LLVM is suitable wherever you use native code (C/C++) in your Android application.
SDK :
1. Adreno GPU SDK
Adreno GPU SDK help developer to developing and optimizing OpenGL ES applications for Android on platforms containing Qualcomm Adreno GPUs.
2. AllJoyn Proximal Connectivity Platform
AllJoyn is a collaborative open source project of the AllSeen Alliance. AllJoyn makes it easier to capitalize and create new and immersive experiences by enabling apps to connect, control and share resources with other nearby apps and connected smart things. You can be confident that this open, secure and universal framework and core set of services enables interoperability among nearby devices, products and applications across platforms and operating systems, so you can focus on your ideas and business.
3. AllPlay Click Wireless Home Audio SDK
The Qualcomm® AllPlay™ Click SDK, a product of Qualcomm Connected Experiences, Inc., is a collection of API documentation, sample source code and binary library to help developers create mobile apps that connect devices to make cross-brand media streaming a reality. It packs advanced audio capability into an easy to integrate, simple library. This allows developers and creators of Internet radio and music services to easily offer their users leading-edge use cases that work consistently across compatible devices, brands and platforms.
4. FastCV Computer Vision SDK
FastCV is designed for efficiency on all ARM-based processors, but is tuned to take advantage of Qualcomm's Snapdragon processor (S2 and above). This gives you the most widely used, computationally intensive vision processing APIs, with hardware acceleration and better performance on mobile devices.
FastCV will enable you to add new user experiences into your camera-based apps like:
1. gesture recognition
2. face detection, tracking and recognition
3. text recognition and tracking
4. augmented reality
5. Hexagon DSP SDK
The Hexagon SDK provides for a complete environment to generate dynamic Hexagon DSP code modules that can execute on the included simulator or on Snapdragon 800 based hardware development platforms.
6. LTE Broadcast SDK
The Qualcomm LTE Broadcast SDK gives developers the power to bring LTE Broadcast connectivity and content to their apps. This resource includes the APIs, tools, and documentation to develop and test LTE Broadcast applications for Android-based mobile devices with LTE broadcast service capabilities. The SDK defines the application interface to the Qualcomm LTE Broadcast middleware to make it easier to integrate services such as streaming video and file delivery into an app.
7. Snapdragon Math Libraries
If you are an app developer or an algorithm developer dealing with low level math routines, you know that squeezing the peak performance out of any processor is difficult and time consuming. And it’s even worse, when you have to start from scratch to support the newer generation processor. To address this portability across generations and to give you superior performance while maintaining the numerical correctness for your mathematical routines, Qualcomm is providing developers with Snapdragon Math Libraries.
8. Snapdragon SDK for Android
The Snapdragon SDK for Android is designed to make it easy to integrate facial processing and facial recognition features into your application.
Facial processing provide following features :
1. Blink Detection – measure how open each eye is
2. Gaze Tracking – assess where the subject is looking
3. Smile Value – estimate the degree of the smile
4. Face Orientation – track the Yaw, Pitch and Roll of the head
Go beyond face detection and perform real-time face analysis to identify people. You can use these Snapdragon SDK for Android capabilities to develop apps that can add users to an internal database through face registration and then identify users based on facial analysis. These features do not use any cloud-based recognition and are done entirely offline.
9. Symphony System Manager SDK
Symphony SDK is designed to solve this very problem by providing you with a set of APIs to put tighter control on how you want to utilize the various compute units within Qualcomm® Snapdragon™ processors like multi-core CPUs, GPU and DSPs for task scheduling, heterogeneous offload, and power and thermal management.
10. Snapdragon VR SDK
Coming Soon
Advanced heterogeneous processors like the Qualcomm® Snapdragon™ 820 processor are capable of delivering immersive VR experiences. The new Snapdragon VR SDK is designed to abstract the complexity of immersive virtual reality and provide developers with access to optimized, advanced VR features, to simplify development and to help them attain improved VR performance and power efficiency with the Snapdragon 820 for Android smartphones and upcoming VR headsets. The SDK is expected to be available in the second quarter of 2016.
11. Qualcomm’s Zeroth SDK
Coming Soon
Using Qualcomm’s Zeroth SDK developer can run deep learning programs directly on devices like smartphones and drones — if they’re powered by one of Qualcomm’s chips
Debuggers :
1. Snapdragon Debugger for Eclipse
Qualcomm® Snapdragon™ Debugger for Eclipse is a plug-in to the popular Eclipse IDE which enables debugging of a variety of APIs for Android devices.
Snapdragon Debugger for Eclipse Feature:
1. Android project creation, build, and deploy to device
2. Breakpoints, conditional breakpoints, memory breakpoints
3. Single step through native and assembly code
4. Views for registers, memory, local variables, and global variables
5. Multi-threaded applications
6. Loading tombstone/logcat crash logs
7. OpenCL data types
8. OpenCL Kernel debugging on CPU as well as GPU on Snapdragon devices
2. Snapdragon Debugger for Visual Studio
Qualcomm® Snapdragon Debugger for Visual Studio is a plug-in tool to Microsoft’s Visual Studio IDE that enables a variety of APIs for debugging devices powered by Snapdragon processors. With support for Android NDK application debugging in its first release, it simplifies debugging of native C/C++ code on Android devices.
Snapdragon Debugger for Visual Studio Feature:
1. Android project creation, build, and deploy to device
2. Breakpoints, conditional breakpoints, memory breakpoints
3. Single step through native and assembly code
4. Views for registers, memory, local variables, and global variables
5. Multi-threaded applications
6. Loading tombstone/logcat crash logs
7. Ability to debug projects compiled outside of this debugger tool
8. GNU Debugger (GDB)
Profilers :
1. Adreno GPU Profiler
Analyze and improve the graphics and compute performance in your apps with the insights available from Adreno Profiler. This easy-to-use tool delivers comprehensive GPU performance analysis, simplifies debugging, and lets you optimize for maximum visual app impact.
2. App Tune-up Kit
App Tune-up Kit is an innovative way for developers to profile and analyze any Android application in just 60 seconds. With one touch, you can evaluate app performance in five critical areas: CPU, GPU, Power, Thermal and Mobile Data.
App Tune-up Kit Features:
1. One touch analysis of any Android app in only 60 seconds
2. Evaluates performance in 5 critical areas: CPU, GPU, power, thermal and network usage
3. Results appear in an easy-to-understand dashboard
4. Reports accurate FPS on supported apps* (Beta feature)
5. Compares any app with the Google Play Top 20**
6. Shows the differences between two apps in 30 areas
7. No ads, analytics or data collection
8. Recommendations help developers improve their apps** (Beta feature)
9. Automatically estimates real-time power consumption when direct power readings are not available
3. Snapdragon Profiler
Qualcomm® Snapdragon Profiler is one of the most extensive system profiling tools available for developers. The tool is designed to show you how your application utilizes the underlying hardware and software system on commercial devices powered by Snapdragon processors. Using Snapdragon Profiler, you can identify the bottlenecks and focus on optimization of your apps. In addition to performance, this tool also provides insights into power, thermal and network usage. It supports three different modes, Real-time, Trace Capture, and Snapshot Capture, which give you a robust analysis to help optimize the performance and power of your applications.
Snapdragon Profiler Features:
1. Plug and play connectivity with Android devices and apps
2. Profiling data includes: CPU, GPU, and DSP* performance, power, thermal, and network
3. Supported system areas include: Android Trace, CPU, GPU, DSP, memory, and network data
4. GPU APIs: OpenGL ES 3.1, OpenCL 1.2, and Vulkan 1.0*
4. Trepn Power Profiler
Trepn™ Profiler is an on-target power and performance profiling application for mobile devices. Although Trepn runs on most Android devices, additional features are available when used with devices featuring Qualcomm® Snapdragon™ processors or development hardware.
Trepn Power Profiler Features:
1. Six fast-loading profiling presets
2. Overlays appear on screen on top of applications that are being profiled
3. Profile your device, or a single app
4. Displays battery power on supported devices
5. Not all devices are capable of reporting accurate battery power. Refer to the list of supported devices in the Trepn forum.
6. View CPU and GPU frequency and utilization
7. GPU frequency and utilization are only available on Snapdragon-powered devices.
8. Display network usage (cellular and Wi-Fi)
9. Runs on most Android smartphones and tablets (Android 4.0 and higher)
10. Advanced mode to manually select data points and save data for later analysis
These tools are very useful for development of application or product on Qualcomm platform.For each SDKs & tools Qualcomm provide video tutorials & documents on Qualcomm Developer Network. For More information you can login to Qualcomm Developer Network.
Saturday 3 December 2016
Embedded systems
Introduction to Embedded systems
• Objectives
After going through
this session you should be able to
• Know
what an Embedded system is
• Distinguish
a Real time embedded system from other systems.
• Categories
of embedded systems
• Know
the architecture of embedded systems
• Tell
the major components of an embedded systems.
• Understand
Linux embedded system architecture
• Advantages
of using Linux OS for embedded systems
• In
day-to-day life we come across a wide variety of consumer electronics products
such as TV remote controllers, Mobile phones, fax & xerox machines etc.
• Each
of these devices have one or more programmable devices waiting to interact with
the environment as effectively as possible.
• These
are class of “Embedded systems”, providing service in real time i.e we need not
have to wait too long for the action.
• An
Embedded system is a special purpose system designed to perform specific
control functions often with the real-time computing constraints.
• It
is usually “Embedded” as a part of complete device including hardware and
software components as compared to a general purpose computer such as PC, which
is designed to be flexible and to meet a wide range of end-user needs.
Examples of Embedded
system
• Embedded
systems controls many of the common devices in use today
• Mobiles
• Digital
watches
• Traffic
lights
• Printers
• Medical
equipment
• MP3
players, digital cameras
• Routers,
telephone switches
• Automotive
Characteristics of
Real Time Embedded systems (RTES)
• RTES
is precisely the union of subsystems to discharge specific task coherently.
• Single-functioned.
• RTES
is meant to perform specific task.
• Tightly
constraint
• The
constraint of the design and marketability of RTES is more rigid than their
non-real-time non-embedded systems counter parts.
• Time
domain constraints are the first thing to be taken care of.
• Size,
weight, power consumption and cost are other major factors
• As
embedded systems is dedicated to specific tasks, design engineers can optimize
it to reduce the size and cost of the product and increase the reliability and
performance.
• Reactive
and Real time
• Many
embedded systems must continually react to the changes in the system’s
environment and must compute certain results in real time without delay. For e.g.
A car’s cruise controller continuously monitors and reacts to speed and
brake sensors. It must compute
acceleration or deceleration amounts repeatedly within a limited time; a
delayed computation could result in failure to maintain control of the car.
Classification of
embedded systems
• The
heart of the embedded systems is customized microprocessor or microcontroller
• Small
scale embedded systems
– Single
8/16bit microcontroller
– Little
hardware and software complexity
– Mostly battery operated
– Need
to limit power dissipation when system is running continuously
• Medium
scale embedded systems
– Single
or few 16 or 32 bit microcontrollers or Digital signal processors(DSP)
– Both
hardware and software complexity
• Advanced/Sophisticated
embedded systems
– Need
multiple scalable or configurable processors
– Enormous
hardware and software complexity
– Constrained
by processing speed available in their hardware units
Embedded systems
components
• Hardware
• Processor,
interrupt controllers, I/O devices, Memories etc.
• Software
• Performs
series of tasks of controlling the hardware.
• Real-time
operating system (RTOS)
• RTOS
is intended to serve real-time application request.
• A
key characteristic of an RTOS is the level of its consistency concerning the
amount of time it takes to accept and complete an application’s task
• The
chief design goals is not high throughput, but rather a guarantee of a soft or hard performance
category.
• RTOS
that usually meets the deadline is soft-real-time OS and if it can meet the
deadline deterministically it is hard-real-time OS.
• Every embedded system may not need RTOS.
Design metrics
• A
design metrics is a measurable feature of the system’s performance, cost, time
for implementation etc.
• Cost
– One
time cost of designing the system. Once the system is designed, any units can
be manufactured without incurring additional cost.
• Size
– Physical
space required by the system, usually in bytes for software and gates or
transistors for hardware.
• Performance
– The
execution time of the system
• Power
consumption
– Amount
of power consumed by the system, which may determine the life time of the
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 cost.
S/w is typically considered flexible.
• Time
to prototype
– Time
needed to build the working version of the system which can be used to verify
the system’s usefulness and correctness and to refine the system’s functionality.
• Time
to market
– Time
required to develop a system to the point that it can be released and sold to
customers. The main contributors are design time, manufacturing time and
testing time.
• Maintainability
– It
is the ability to modify the system after its initial release, especially by
designers who did not originally design the system.
• Correctness
– This
is the measure of the confidence that we have implemented the system’s
functionality correctly. We can check the functionality throughout the process
of designing the functionality.
Performance design
metrics
• Performance
of a system is a measure of how long a system takes to execute the desired
tasks.
• Latency
or response time
– This
is the time between the start of the task’s execution and the end. For e.g processing an image may take 0.24ms
• Throughput
• This
is the number of tasks that can be processed per unit time. For e.g, a camera
may be able to process 4 images per second.
• Based
on the various design metrics, the functional blocks of RTES are implemented in
software or hardware
System on Chip (SOC)
• System-on-chip
(SOC) is an integrated circuit that integrates all components of a computer or
other electronic system into a single chip
• It
may contain digital, analog, mixed-signal and often radio frequency functions –
all on one chip.
• In
any embedded system application, functional blocks can be
– Level
I: External discrete hardware components on board
– Level
II: Hardware integrated with CPU on chip(SoC)
– Level
III: Done by software running on CPU
Example of Advanced
embedded systems
– Multi-core
system of chip, like mobile handset which has one chip containing
• DSP
processor for audio/video processing
• Embedded
processor like ARM
• Custom
hardware for GSM
• Custom
peripherals (touch screen, memory card, usb)
– Automotive
application, which has network of embedded microcontrollers on board
communicating together through specific bus protocol like CAN.
Embedded system
hardware
Processors
• The
central processing unit is the most important components in the embedded systems.
• Depending
on the type of applications the processors are broadly classified into 3
categories
• General
purpose microprocessors
• Microcontrollers
• Digital
signal processors
• General
purpose microprocessors
• This
microprocessor is designed to solve problems in a large variety of applications
as diverse as communications, automotives and industrial embedded systems.
• The
prime of microprocessor is to read data, perform extensive calculations on that
data and store the results in mass storage device or display the results.
• Have
complex architecture with multiple stages of pipeline and parallel processing.
• Microcontrollers
• A
microcontroller is a small computer on a single integrated circuits containing
a processor, memory and I/O peripherals.
• Using
on chip hardware for I/O and RAM/ROM results in pretty low performance
CPU.
• Microcontrollers
often use timers to generate interrupts.
• The
prime use of microcontroller is to use to control the operations of the machine
using a fixed program that is stored in ROM and does not change over the
lifetime of the system.
• Digital
signal processors
• These
processors are designed for handling signal processing algorithms.
• One
of the common operations required in such applications is array manipulations
which required lot of multiplication/addition operations.
• DSP
units generally use multiple access and multiport memory units, allowing more
than one memory in one clock cycle.
Embedded hardware for
Linux systems
• Processor
architecture: Linux kernel supports wide range of 32 and 64 bits architectures
– X86
and x86-64 as found in PC and embedded platforms
– ARM,
with hundreds of different SOCs(multimedia, industrial)
– PowerPC
(Real-time, industrial)
– MIPS(networking
applications)
– Others,
SuperH, Blackfin etc.
Memory
• Memory
serves processor short and long-term information storage requirements while
registers serve the processor’s short term storage requirements.
• Both
the programs and data are stored in the memory.
• The
memory may be Read-only (ROM) or Random access memory (RAM)
• It
may exist of the same chip with processor or outside the chip. On chip memory
is faster than off chip memory.
• To
reduce the access (read/write) time, a local copy of portion of memory can be
kept in a small and fast memory called “cache” memory
• Memory
can also be categorized as Static and dynamic.
– Dynamic
memory (DRAM) dissipate less power, hence compact and cheaper but access time
is slower than static memories.
– Static
memory (SRAM) are much faster than DRAMs but consume more power.
• Memory
– RAM,
a very basic Linux system can work within 8MB of ram, but a more realistic
system will require at least 32MB RAM
• Storage
– Flash
storage with NAND and NOR Flash
– Block
storage with SD/MMC and eMMC cards
• Input
Output device and interfaces
– Input
output interfaces are necessary to the RTES interact with the external world.
– The
input output devices kerboard, the display screen, the antenna, microphone,
speaker etc.
• Networking,
Ethernet, WiFi, bluetooth etc.
• Communications,
SPI, I2C, SDIO, USB, UART.
Embedded Linux system
architecture
Software components
• Cross-compilation
tool chain
– Compilers
that runs on the development machines but generates code for the target machine
• Boot
loader
– Started
by the hardware, responsible for basic hardware initialization, loading and
executing the kernel
• Operation
system
– Contains
the process and memory management, network stack, device drivers and services
to user space
• C
Library
– The
interface between the kernel and user space applications
• Libraries
and applications
– All
user space components, open source, 3rd party or in-house
Boot loaders
• Boot
loader is a piece of code which performs
– Basic
hardware initialization
– Loading
of an application binary, usually OS kernel, from the flash storage, from the
network or from another type of non-volatile storage
– Possibly
decompression of application binary
– Execution
of the application
• Most
boot loaders also provides command line interface with various commands
implementing different operations.
Boot loaders on x86
• X86
processors are typically bundled with non-volatile memory containing program
called BIOS.
• This
program is executed by CPU on reset and is responsible for initialization of
basic hardware and loading a small piece code from non-volatile memory.
• This
piece of code is usually the 1st stage boot loader, which will load
the full boot loader.
• The
boat loader than offer all its features. It understands file system formats so
that kernel file is loaded directly from normal file systems.
Embedded boot loaders
• On
reset, the CPU starts executing code at fix address.
• BIOS
is usually not present on embedded devices.
• The
hardware design must ensure that the NOR flash chip is wired so that it is
accessible at the address at which CPU starts executing code.
• The
first stage boot loader must be programmed at this address in the NOR flash.
Introduction to Linux
kernel
• User/Application
space, where applications are executed.
• Kernel
Space, where the kernel exist
• GNU
C library, this provides the system call interface, a mechanism to communicate
between user space application and kernel
• Fundamental
architecture of Linux operating system
Kernel subsystem
• System
call interface: provides the means to perform function calls from user space
into the kernel.
• Process
Management
– Kernel
in-charge of process creation and termination.
– Communication among different processes (signals, IPC
primitives)
– Process
scheduling, how processes share the CPU
• Memory
management
– The
kernel builds up the virtual address space for all the processes.
• File
systems
– Linux
is heavily based on file system concepts; almost everything is treated as file.
– Linux
supports multiple file systems types, i.e different ways of organizing data on
the physical medium.
– E.g. Ext2, ext3,
– Virtual
File system(VFS) provides a common interface abstraction for the various file
systems supported by the kernel.
• Networking
– The
network stack is part of the kernel.
– It
is in charge of delivering data packets across applications and network
interfaces.
– All
routing and address resolution issues are implemented within the kernel.
• Device
control
– Almost every system operations eventually maps to
the physical device. Few exceptions such as CPU, memory, etc,
– All
device control operations are performed by the code, called as Device Driver.
• IPC
– The
interprocess communication on Linux includes signals, pipes and sockets, shared
memory and message queues.
User space
User space on Linux
is based on the following concepts
• Program:
This is the image of an application, resides on a filesystem. When an
application needs to be run, the image is loaded into memory and run.
• Virtual
memory: allows each process to have its own address space including memory map
for code, global data and dynamic data, stack etc
• System
calls: These are entry points into the kernel so that the kernel can execute
services on behalf of the application.
Advantages of Linux
and open-source for embedded systems
• Reusability
– The
key advantage of Linux and open-source in embedded systems is the ability to
re-use components.
– Open-source
ecosystem already provides many components for standard features from hardware
support to n/w protocols, multimedia, graphics libraries.
– Allows
to quickly design and develop complicated products based on existing
components.
• Low
cost
– Free
software can be duplicated on as many systems as you want, free of charge.
– If
your embedded systems uses only free software, you can reduce the cost of
software license to zero.
– Allows
you to have higher budget for hardware.
• Full
control
– With
open-source, you have source code for all the components
– Allows
unlimited modifications, changes, tuning, debugging, optimizing of code.
– Allows
to have full control over the software part of your system.
• Quality
Allows to design
your system with high quality components
– Many
open-source components are widely used on millions of systems.
– Usually
higher quality than what an in-house development can produce or even propriety
vendors.
• Eases
testing of new features
– Allows
to easily explore the new possibilities and solutions as open-sources is freely
available.
• Community
support
– Allows
to speed up the resolution of problems when developing your system, as
open-source software components are developed by communities of developers and
users, which can provide high-quality support.
Embedded Linux development
environment
• Embedded
Linux solutions: Two ways to switch to embedded linux
– Use
solutions provided and supported by vendors such as MontaVista, WindRiver or
TimeSys. These solutions come with their own development tools and environment.
They use mix of open source & proprietary tools
– Use
community solutions, open source solutions. We will use open source solutions
for the course.
OS for Linux
development
• Using
Linux as desktop operating system is recommended to embedded linux developers.
– All
community tools are developed and designed to run on Linux
– All
knowledge used for using desktop, also applies to embedded devices
• Desktop
Linux distribution
– Any
good and sufficiently recent Linux desktop distribution
• Ubuntu,
Fedora , Redhat etc
• We
have chosen Ubuntu as it is widely and easy to use desktop Linux distribution.
Software packages
• The
distribution mechanism for software for GNU/Linux is different from the one
used in windows.
• Linux
distributions provides a central and coherent way of installing, updating and
removing applications and libraries: packages
• Packages
contains the applications or library files, associated meta-data such as
version and dependencies
– .deb
on Debian and Ubuntu
– .rpm
on Redhat
• Packages
are stored in repositaries, usually on HTTP or FTP servers
Managing software
packages
• Instructions
for Debian based GNU/Linux systems (Debian/Ubuntu)
– Packages
repositories are specified in
• /etc/apt/sources.list
– To
update package repository list
• Sudo
apt-get update
– To
install a given package
• Sudo
apt-get install <package-name>
– To
remove a given package
• Sudo
apt-get remove <package-name>
– To
install all available package updates
• Sudo
apt-get dist-upgrade
– Get
information about the package
• apt-cache
show <package-name>
– Graphical
Interfaces
• Synaptic
for GNOME
• KpackageKit
for KDE
Host Vs. Target environment
• In
embedded development, there is always a spilt between
– The
Host, the development workstation, which is typically a powerful PC
– The
target, which is the embedded system under development.
– They
are connected by various means, almost always a serial line for debugging,
frequently an Ethernet connection and sometimes JTAG for low level debugging
Cross-compiling
Toolchain
• The
usual tool chain available on Linux workstation is a native toolchain.
• This
toolchain runs on your desktop/workstation and generates code for your
workstation, usually x86
• A
cross-compiled toolchain is required for target. They run on the workstation
but generate code for your target.
Cross-compilation
toolchain components
• Binutils
– Binutils
are set of programs necessary for
compilation, linking, assembling and other debugging operations
• as
- the assembler, that generates binary code from assembler source code
• Ld,
the linker
• As,
ranlib to .a archives used for libraries
• Objdump,
readelf, nm, strings to inspect binaries
• Strip,
to strip useless part of binaries in order to reduce their size
• http://www.gnu.org/software/binutils/
• GNU
C compiler
• The
basic C compiler used for generating object code (both kernel and applications)
• Can compile C, C++, Ada, Fortran, Java, Objective-C, Objective-C++, and
generate code for a large number of CPU architectures, including ARM, AVR,
Blackn, CRIS, FRV, M32, MIPS, MN10300, PowerPC, SH, v850, i386, x86 64, IA64, Xtensa, etc.
• Available under the GPL license, libraries
under the LGPL.
C library
• The C library is an essential
component of a Linux system
• Interface between the applications
and the kernel
• Provides the well-known standard C
API to ease application development
• Several C libraries are available:
– glibc, uClibc, eglibc, dietlibc,
newlib, etc.
• The choice of the C library must be
made at the time of the cross-compiling toolchain generation, as the GCC
compiler is compiled against a specific C library.
Machines in build
procedures
• Three machines must be distinguished
when discussing toolchain creation
– The build machine, where the
toolchain is built.
– The host machine, where the
toolchain will be executed.
– The target machine, where the
binaries created by the toolchain are executed.
• Four common build types are possible
for toolchains
Different tool chain
build procedures
Subscribe to:
Posts (Atom)