Basic of Embedded Linux Programming
An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts.
Embedded systems control many devices in common use today. Ninety-eight percent of all microprocessors are manufactured as components of embedded systems.
Examples of properties of typical embedded computers when compared with general-purpose counterparts are low power consumption, small size, rugged operating ranges, and low per-unit cost. This comes at the price of limited processing resources, which make them significantly more difficult to program and to interact with.
However, by building intelligence mechanisms on top of the hardware, taking advantage of possible existing sensors and the existence of a network of embedded units, one can both optimally manage available resources at the unit and network levels as well as provide augmented functions, well beyond those available.
For example, intelligent techniques can be designed to manage power consumption of embedded systems. Modern embedded systems are often based on microcontrollers, but ordinary microprocessors are also common, especially in more-complex systems.
In either case, the processors used may be types ranging from general purpose to those specialized in certain class of computations, or even custom designed for the application at hand. A common standard class of dedicated processors is the digital signal processor (DSP).
Since the embedded system 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. Some embedded systems are mass-produced, benefiting from economies of scale.
Embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers, and largely complex systems like hybrid vehicles, MRI, and avionics. Complexity varies from low, with a single microcontroller chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or enclosure.
Embedded systems are commonly found in consumer, cooking, industrial, automotive, medical, commercial and military applications.
Telecommunications systems employ numerous embedded systems from telephone switches for the network to cell phones at the end user. Computer networking uses dedicated routers and network bridges to route data.
Consumer electronics include MP3 players, mobile phones, videogame consoles, digital cameras, GPS receivers, and printers. Household appliances, such as microwave ovens, washing machines and dishwashers, include embedded systems to provide flexibility, efficiency and features.
Advanced HVAC systems use networked thermostats to more accurately and efficiently control temperature that can change by time of day and season. Home automation uses wired- and wireless-networking that can be used to control lights, climate, security, audio/visual, surveillance, etc., all of which use embedded devices for sensing and controlling.
Transportation systems from flight to automobiles increasingly use embedded systems. New airplanes contain advanced avionics such as inertial guidance systems and GPS receivers that also have considerable safety requirements.
Various electric motors — brushless DC motors, induction motors and DC motors — use electric/electronic motor controllers. Automobiles, electric vehicles, and hybrid vehicles increasingly use embedded systems to maximize efficiency and reduce pollution.
Other automotive safety systems include anti-lock braking system (ABS), Electronic Stability Control (ESC/ESP), traction control (TCS) and automatic four-wheel drive. Medical equipment uses embedded systems for vital signs monitoring, electronic stethoscopes for amplifying sounds, and various medical imaging (PET, SPECT, CT, and MRI) for non-invasive internal inspections.
Embedded systems within medical equipment are often powered by industrial computers. Embedded systems are used in transportation, fire safety, safety and security, medical applications and life critical systems, as these systems can be isolated from hacking and thus, be more reliable.
For fire safety, the systems can be designed to have greater ability to handle higher temperatures and continue to operate. In dealing with security, the embedded systems can be self-sufficient and be able to deal with cut electrical and communication systems.
A new class of miniature wireless devices called motes are networked wireless sensors. Wireless sensor networking, WSN, makes use of miniaturization made possible by advanced IC design to couple full wireless subsystems to sophisticated sensors, enabling people and companies to measure a myriad of things in the physical world and act on this information through IT monitoring and control systems.
These motes are completely self-contained, and will typically run off a battery source for years before the batteries need to be changed or charged.
Embedded Wi-Fi modules provide a simple means of wirelessly enabling any device which communicates via a serial port.
Table of Content
- The tasks to do in this course
- Overview of Embedded Systems
- Software tools in the course
2. Overview of ARM architecture
- Introduction to ARM architecture
- Select the architecture according to the application
- The common hardware platform
3. Embedded Linux operating system
- Introduction to Embedded Linux OS
- Compile Kernel-Uboot-Ramdisk
- Install image on embedded board
- Install tools on Ubuntu
4. Application Embedded Programming
- Compile cross-platform arm-linux-gcc
- Compile application basic
- The I/O and GPIO programming
- RS232/USB communication programming
- Socket UDP/TCP programming
- Multi-threaded and multi-threaded programming
5. The QT Graphic Programming
- Introduction to the QT
- Install the QT on Ubuntu
- Install the QT on embedded board
- Design UI and layout
- C++ programming in QT
6. Embedded Driver Programming
- Introduction to Device Driver
- How to load and use Device Driver
- Install and Compile Kernel
- Create a Simple Driver for GPIO
- Create Driver for UART/USB
- Create a custom driver
- Driver auto-configuration using udev