没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
CHAPTER 1
The Embedded and Real-Time Space
If you want to travel around the wor ld and be invited to speak
at a lot of different places, just write a Unix operating system.
Linus Torvalds
What Is Embedded?
You’re at a party when an attractive member of the opposite sex approaches and asks you
what you do. You could be flip and say something like “as little as possible,” but eventually
the conversation will get around to the fact that you write software for embedded systems.
Before your new acquaintance starts scanning around the room for a lawyer or doctor to
talk to, you’d better come up with a captivating explanation of just what the heck
embedded systems are.
I usually start by saying that an embedded system is a device that has a computer inside it,
but the user of the device doesn’t necessarily know, or care, that the computer is there. It’s
hidden. The example I usually give is the engine control computer in your car. You don’t
drive the car any differently because the engine happens to be controlled by a computer.
Oh, and there’s a computer that controls the antilock brakes, another to decide when to
deploy the airbags, and any number of additional computers that keep you entertained and
informed as you sit in the morning’s bumper-to-bumper traffic. In fact, the typical car today
has more raw computing power than the Lunar Lander of the 1970s. Heck, your cell phone
probably has more computing power than the Lunar Lander.
You can then go on to point out that there are a lot more embedded computers out in the
world than there are personal computers (PCs).
1
In fact, recent market data shows that PCs
account for only about 2% of the microprocessor chips sold every year. The average house
contains at least a couple dozen computers even if it doesn’t have a PC.
From the viewpoint of programming, embedded systems show a number of significant
differences from conventional “desktop” applications. For example, most desktop
applications deal with a fairly predictable set of input/output (I/O) devices—a disk, graphic
1
In today’s world though, most people are at least vaguely aware of embedded computing devices because
they carry at least one, their cell phone.
3
Linux for Embedded and Real-time Applications. DOI: http://dx.doi.org/10.1016/B978-0-12-415996-9.00001-0
© 2013 Elsevier Inc. All rights reserved.
display, a keyboard, mouse, sound card, and network interface. And these devices are
generally well supported by the operating system (OS). The application programmer doesn’t
need to pay much attention to them.
Embedded systems on the other hand often incorporate a much wider variety of I/O devices
than typical desktop computers. A typical system may include user I/O in the form of
switches, pushbuttons, and various types of displays often augmented with touch screens.
It may have one or more communication channels, either asynchronous serial, Universal
Serial Bus (USB), and/or network ports. It may implement data acquisition and control in
the form of analog-to-digital (A/D) and digital-to-analog (D/A) converters. These devices
seldom have the kind of OS support that application programmers are accustomed to.
Therefore, the embedded systems programmer often has to deal directly with the hardware.
Embedded devices are often severely resource-constrained. Although a typical PC now has
4 GB of RAM and several hundred gigabytes of disk, embedded devices often get by with a
few megabytes of RAM and non-volatile storage. This too requires creativity on the part of
the programmer.
What Is Real-Time?
Real-time is even harder to explain. The basic idea behind real-time is that we expect the
computer to respond to its environment in time. But what does “in time” mean? Many
people assume that real-time means real fast. Not true. Real-time simply means fast enough
in the context in which the system is operating. If we’re talking about the computer that
runs your car’s engine, that’s fast! That guy has to make decisions—about fuel flow, spark
timing—every time the engine makes a revolution.
On the other hand, consider a chemical refinery controlled by one or more computers.
The computer system is responsible for controlling the process and detecting potentially
destructive malfunctions. But chemical processes have a time constant in the range of
seconds to minutes at the very least. So we would assume that the computer system should
be able to respond to any malfunction in sufficient time to avoid a catastrophe.
But suppose the computer were in the midst of printing an extensive report about last
week’s production or running payroll when the malfunction occurred. How soon would it
be able to respond to the potential emergency?
The essence of real-time computing is not only that the computer responds to its
environment fast enough but that it also responds reliably fast enough. The engine control
computer must be able to adjust fuel flow and spark timing every time the engine turns
over. If it’s late, the engine doesn’t perform right. The controller of a chemical plant must
4 Chapter 1
be able to detect and respond to abnormal conditions in sufficient time to avoid a
catastrophe. If it doesn’t, it has failed.
I think this quote says it best:
A real-time system is one in which the correctness of the computations not only depends
upon the logical correctness of the computation but also upon the time at which the
result is produced. If the timing constraints of the system are not met, system failure is
said to have occurred.
Donald Gillies in the Real-Time Computing FAQ
So the art of real-time programming is designing systems that reliably meet timing
constraints in the midst of random asynchronous events. Not surprisingly this is easier said
than done, and there is an extensive body of literature and development work devoted to the
theory of real-time systems.
How and Why Does Linux Fit In?
Linux developed as a general-purpose OS in the model of Unix whose basic architecture it
emulates. No one would suggest that Unix is suitable as an embedded or real-time OS
(RTOS). It’s big, it’s a resource hog and its scheduler is based on “fairness” rather than
priority. In short, it’s the exact antithesis of an embedded OS.
But Linux has several things going for it that earlier versions of Unix lack. It’s “free” and
you get the source code. There is a large and enthusiastic community of Linux developers
and users. There’s a good chance that someone else either is working or has worked on the
same problem you’re facing. It’s all out there on the web. The trick is finding it.
Open Source
Linux has been developed under the philosophy of Open Source software pioneered by the
Free Software Foundation (FSF). Quite simply, Open Source is based on the notion that
software should be freely available: to use, to modify, and to copy. The idea has been
around for some 20 years in the technical culture that built the Internet and the World Wide
Web and in recent years has spread to the commercial world.
There are a number of misconceptions about the nature of Open Source software. Perhaps
the best way to explain what it is, is to start by talking about what it isn’t.
• Open Source is not shareware. A precondition for the use of shareware is that you pay
the copyright holder a fee. Shareware is often distributed in a free form that is either
time- or feature-limited. To get the full package, you have to pay. By contrast, Open
Source code is freely available and there is no obligation to pay for it.
The Embedded and Real-Time Space 5
• Open Source is not public domain. Public domain code, by definition, is not copyrighted.
Open Source code is copyrighted by its author who has released it under the terms of an
Open Source software license. The copyright owner thus gives you the right to use the
code provided you adhere to the terms of the license. But if you don’t comply with the
terms of the license, the copyright owner can demand that you stop using the code.
• Open Source is not necessarily free of charge. Having said that there’s no obligation to
pay for Open Source software doesn’t preclude you from charging a fee to package and
distribute it. A number of companies are in the specific business of selling packaged
“distributions” of Linux.
Why would you pay someone for something you can get for free? Presumably, because
everything is in one place and you can get some support from the vendor. Of course, the
quality of support greatly depends on the vendor.
So “free” refers to freedom to use the code and not necessarily zero cost. Think “free
speech,” not “free beer.”
Open Source code is:
• Subject to the terms of an Open Source license, in many cases the GNU General Public
License (GPL) (see below).
2
• Subject to critical peer review. As an Open Source programmer, your code is out
there for everyone to see and the Open Source community tends to be a very critical
group. Open Source code is subject to extensive testing and peer review. It’s a
Darwinian process in which only the best code survives. “Best” of course is
a subjective term. It may be the best technical solution but it may also be completely
unreadable.
• Highly subversive. The Open Source movement subverts the dominant paradigm, which
says that intellectual property such as software must be jealously guarded so you can
make a lot of money off of it. In contrast, the Open Source philosophy is that software
should be freely available to everyone for the maximum benefit of society. And if you
can make some money off of it, that’s great, but it’s not the primary motivation.
Richard Stallman, founder of the FSF, is particularly vocal in advocating that software
should not have owners (see Appendix C).
Not surprisingly, Microsoft sees Open Source as a serious threat to its business model.
Microsoft representatives have gone so far as to characterize Open Source as “un-
American.” On the other hand, many leading vendors of Open Source software give their
programmers and engineers company time to contribute to the Open Source community.
And it’s not just charity, it’s good business!
2
GNU is a ‘self-referential acronym’ that means ‘GNU’s not Unix’. The GNU Project, initiated by Richard
Stallman in 1983, aims for a ‘complete Unix-compatible software system’ composed entirely of free software.
6 Chapter 1
剩余267页未读,继续阅读
changwtt
- 粉丝: 1
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页