From: Wolfgang Denk <hidden> Date: 2004-07-23 17:22:05
In message [off-list ref] you wrote:
IMHO we shouldn't even bother.
oops???
Then everything should be automatically set up at run-time, based
on probing code which should detect the rest.
You must be joking. This is for embedded systems, and code size and
especially boot time are critical.
Also, this suggestion does not coder Robert's intention of preventint
the user from selecting bogus configuration options for stuff which
doesn't exist on his chip.
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de
"Life sucks, but it's better than the alternative."
- Peter da Silva
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Kevin P. Dankwardt <hidden> Date: 2004-07-23 21:06:58
I am working with a team on a project where their customer is concerned
about the reliability of Linux. The customer wants to go with QNX because of
the belief that QNX Neutrino is inherently more reliable. This belief
revolves around the differences in design where drivers in QNX do not reside
in the same address space as the (micro-)kernel.
What the team was hoping to use is a MPC5200 based system and the ELDK.
The team needs to specifically address their customer's concern that a
single driver can crash the operating system in Linux, since the driver
resides in the same memory space as the kernel. They need to present
convincing arguments to the customer's Chief Software Architect.
Does anyone know of any good resources/references to address these concerns?
Any evidence, either way, that QNX Neutrino is more reliable?
Will the ELDK be adopting any of the Carrier Grade Linux requirements for
reliability? Any other projects like this of note?
Does anyone know of any embedded Linux projects where human lives really do
depend upon Linux to be robust and reliable?
Is UserMode Linux a possibility? Can one create custom drivers for UML and
mitigate risks that way?
Any clever ideas? Any clever, actually tested, ideas?
Despite all of the hype, would any of you be willing to look a customer in
the eye and say that an embedded Linux system can be reliable enough for
human lives to depend on it?
Thanks,
Kevin Dankwardt
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Well, X server doesn't run in the same vm space as the
kernel. however, on my PC, X is the thing that would most likely to
put the system into an unusable state (frozen keyboard, mouse and
screen).
QNX's drivers run in their own process space but they still have
direct access to the hardware. A driver can screw up the hw regardless
whatever vm-sandbox in which it run.
my 0.02$
--
Linh Dang
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Der Herr Hofrat <hidden> Date: 2004-07-24 06:29:56
Well, X server doesn't run in the same vm space as the
kernel. however, on my PC, X is the thing that would most likely to
put the system into an unusable state (frozen keyboard, mouse and
screen).
in prinzipal that is the way it should be but this is not quite true
as X utilizes user-space (SUID-ROOT) drivers quite a lot - so even though
X is in its on VM it is fiddling with low level resources that are normally
under kernel control (i.e. sti/cli). So this is actually the
same problem in Linux as you noted for QNX.
hofrat
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Mark Chambers <hidden> Date: 2004-07-24 11:35:36
Kevin,
I suspect you have a political problem here. Mr. Chief Software Architect
(which is a title for someone who doesn't actually *do* anything) is not
going to lose his job for choosing QNX. My suggestion is this: Point out
that the only way to prove reliability is with testing. Linux is open
source, it won't cost anything to put it on a side by side test, and let
Linux speak for itself.
- Linux is open source, any potential bugs are theoretically fixable. What
do you do if QNX develops a problem?
- You can hunt around for some of Linus's comments about microkernal
architecture. He thinks they're stupid, only he's says it more poetically.
- Don't fall into this trap of software mysticism, that one operating system
is somehow intrinsically more reliable than another. There's good and bad
software, to be sure, but even Windows can be reliable in certain carefully
constrained environments. It's only ones and zeros.
My $.02
Mark Chambers
----- Original Message -----
From: "Kevin P. Dankwardt" <redacted>
To: "Embedded Linux PPC list" <redacted>
Sent: Friday, July 23, 2004 5:06 PM
Subject: Linux is not reliable enough?
I am working with a team on a project where their customer is concerned
about the reliability of Linux. The customer wants to go with QNX because
of
the belief that QNX Neutrino is inherently more reliable. This belief
revolves around the differences in design where drivers in QNX do not
reside
in the same address space as the (micro-)kernel.
What the team was hoping to use is a MPC5200 based system and the ELDK.
From: DeLaGarza, Robert <hidden> Date: 2004-07-24 22:14:44
With regard to "Error No. 26" (quoted below), has any work been done in
the kernel or serial drivers to compensate for this error?
I've observed problems only when both UARTs were enabled, so I suppose
one solution is to enable only one UART.
Error No. 26: Concurrent writes occur to the UART registers when
UAFR[0] is set
Detailed Description:
The UART Alternate Function Register (UAFR) enables software to write
concurrently to both UART1 and UART2 registers with the same write
operation. However, this action occurs when the UARTs are individually
written to, but in addition, concurrent writes to the UART registers
occur as a result of writing to other EUMBAR registers, including the
error injection registers, when UAFR[0] is set.
Projected Impact:
Concurrent writes occur to the UART registers when UAFR(0) is set and
EUMBAR registers are written to.
Work Arounds:
Set UAFR(0) only for concurrent writes to UART registers. Clear this bit
immediately afterwards.
Projected Solution:
No plans to fix.
http://www.freescale.com/files/32bit/doc/errata/MPC8245CE.pdf
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Marius Groeger <hidden> Date: 2004-07-26 07:49:08
On Sat, 24 Jul 2004, Mark Chambers wrote:
that the only way to prove reliability is with testing. Linux is open
source, it won't cost anything to put it on a side by side test, and let
Linux speak for itself.
Getting to the point where you can run this side by side test *will*
cost money, and typically rather much, what's more. It is not likely
that Kevin's customer is going to pay the implementation for two OSes,
even if it is only to the prototype stage.
So, thinking about the right OS for the job in advance, as they do, is
a good idea. Only the thinking must be done right, of course :-)
Regards,
Marius
--
Marius Groeger [off-list ref]
SYSGO AG Embedded and Real-Time Software
Voice: +49 6136 9948 0 FAX: +49 6136 9948 10
www.sysgo.com | www.elinos.com | www.osek.de | www.imerva.com
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Mark Chambers <hidden> Date: 2004-07-26 13:46:58
On Sat, 24 Jul 2004, Mark Chambers wrote:
quoted
that the only way to prove reliability is with testing. Linux is open
source, it won't cost anything to put it on a side by side test, and let
Linux speak for itself.
Getting to the point where you can run this side by side test *will*
cost money, and typically rather much, what's more. It is not likely
that Kevin's customer is going to pay the implementation for two OSes,
even if it is only to the prototype stage.
Yes, a good point. But I'm speaking with a salesman voice. For someone who
is an expert like Kevin he can no doubt prototype something fairly quickly,
and getting the customer to see something actually working is very powerful.
It puts the ball in the Chief Software Architect's (the CSA, hereafter :-)
court to justify the additional expense of QNX.
So, thinking about the right OS for the job in advance, as they do, is
a good idea. Only the thinking must be done right, of course :-)
Indeed. I guess I should spell out what I think is wrong with the CSAs
apparent thinking: He points out an aspect of linux, namely that drivers
can crash the system, as an issue that somehow makes linux intrinsically
unreliable. But if you write drivers that don't crash the system then linux
is not unreliable. The only operating system that doesn't allow a clever
programmer to crash is one that doesn't do anything. Microkernels, they
say, allow you to do nifty things like replace the file system without
rebooting. So that means you could swap in a buggy filesystem and destroy
the data on your disc/flash. Without rebooting. Which is good since you
won't be able to boot from your corrupted filesystem, which won't show up
until the next power failure, while the poor nurse with a flashlight talks
to a guy on the phone who assures her QNX can't fail. So every OS, and
every feature, has its pro's and con's. The question for any CSA is not 'is
this reliable' but 'can I make a reliable system using this component'?
Will the OS eat itself, or do I only have to worry about the mistakes I
make? A carefully constructed linux system should be good for 5 or even 6
nines of reliability.
Mark Chambers
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Der Herr Hofrat <hidden> Date: 2004-07-26 14:31:32
quoted
On Sat, 24 Jul 2004, Mark Chambers wrote:
quoted
that the only way to prove reliability is with testing. Linux is open
source, it won't cost anything to put it on a side by side test, and let
Linux speak for itself.
Getting to the point where you can run this side by side test *will*
cost money, and typically rather much, what's more. It is not likely
that Kevin's customer is going to pay the implementation for two OSes,
even if it is only to the prototype stage.
Yes, a good point. But I'm speaking with a salesman voice. For someone who
is an expert like Kevin he can no doubt prototype something fairly quickly,
and getting the customer to see something actually working is very powerful.
It puts the ball in the Chief Software Architect's (the CSA, hereafter :-)
court to justify the additional expense of QNX.
prototyping and testing only can proof things if you
can reliably reproduce the rare failure cases - which limits
this posibility seriously. I guess nobody doubts
that Linux is stable under typical load situations (what
ever those may be..)
quoted
So, thinking about the right OS for the job in advance, as they do, is
a good idea. Only the thinking must be done right, of course :-)
Indeed. I guess I should spell out what I think is wrong with the CSAs
apparent thinking: He points out an aspect of linux, namely that drivers
can crash the system, as an issue that somehow makes linux intrinsically
unreliable. But if you write drivers that don't crash the system then linux
is not unreliable. The only operating system that doesn't allow a clever
programmer to crash is one that doesn't do anything. Microkernels, they
say, allow you to do nifty things like replace the file system without
rebooting. So that means you could swap in a buggy filesystem and destroy
the data on your disc/flash. Without rebooting. Which is good since you
won't be able to boot from your corrupted filesystem, which won't show up
until the next power failure, while the poor nurse with a flashlight talks
to a guy on the phone who assures her QNX can't fail. So every OS, and
every feature, has its pro's and con's. The question for any CSA is not 'is
this reliable' but 'can I make a reliable system using this component'?
Will the OS eat itself, or do I only have to worry about the mistakes I
make? A carefully constructed linux system should be good for 5 or even 6
nines of reliability.
The issue is more the presenting of convincing
safty cases - and in that area QNX most likely has a easier game than
embedded Linux - not because Linux has less potential but because
it does not have the trak record for safty critical apps (yet)
And with the development speed of the Linux kernel a real
evaluation of the kernel is a non-trivial task - in that respect a
microkernel does have serious advantages if one can isolate components
, that is gurarty error-containment within a component, in a way that
composability is maintained even in the error case - this definitly will
be hard to do for Linux and most likely for QNX core components a lot of
this work has allready been done.
to summarize the problem - a quote from Rich Cook:
Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the universe
striving to produce bigger and better idiots. So far, the universe is
winning.
hofrat
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Marius Groeger <hidden> Date: 2004-07-26 15:42:45
On Mon, 26 Jul 2004, Mark Chambers wrote:
to a guy on the phone who assures her QNX can't fail. So every OS, and
every feature, has its pro's and con's. The question for any CSA is not 'is
this reliable' but 'can I make a reliable system using this component'?
I agree: reliability is very strongly connected to the actual
components being used, and the overall system design.
One point pro Microkernel approaches, and a one that the CSA may have
been after: they allow you to decouple things. People advocating Linux
as a "solves-everything" sometimes fail to see that there are numerous
applications which want to embrace the typical strengths of Linux
(that is, the general purpose OS with a GUI, networking, POSIX shell)
for having a nice front-end, or for non-critical functions. They still
*need* to have the critical stuff running in a certified environment.
In other words: without serious work (read: big $$$), and most likely
many, many modifications and limitations that take away almost all
dynamic that open source software is known and loved for, we're not
going to see Linux in applications which require DO-178B Level A
certification.
Having said that, we may be far beyond that CSA's intentions here. But
I think this is an interesting (albeit OT) discussion, regardless.
Regards,
Marius
--
Marius Groeger [off-list ref]
SYSGO AG Embedded and Real-Time Software
Voice: +49 6136 9948 0 FAX: +49 6136 9948 10
www.sysgo.com | www.elinos.com | www.osek.de | www.imerva.com
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Robert Kaiser <hidden> Date: 2004-07-27 11:20:28
Am Montag, 26. Juli 2004 15:46 schrieb Mark Chambers:
But if you write drivers that don't crash the system then
linux is not unreliable.
Its not just the drivers: every line of kernel code (and there are over a
million of those in linux) has the potential to crash the system. In order to
be *really* sure that the system is reliable, one would have to give all that
code a thorough examination. Depending on how "thorough examination" is
defined (and there are approved standards for this), this effort results in
costs that quickly make the question wether the OS's source code is available
for free, or will cost a few hundred kilobucks, a non-issue.
The only operating system that doesn't allow a
clever programmer to crash is one that doesn't do anything. Microkernels,
they say, allow you to do nifty things like replace the file system without
rebooting.
This is not really a microkernel-specific feature. I believe Linux with its
kernel modules can do this as well.
The important thing about the microkernel approach is that it allows to build
OS functionality from components, where each component runs in its own
address space and only has access to the resources it needs to do its job. A
device driver only needs access to the registers of the device it is supposed
to handle, so it can only foul up this particular device (*). If such a
driver goes haywire, it *can* not affect, e.g. other driver's hardware or
memory: the bug remains local to the software that causes it. Such a failure
affects only the offending component itself and the software modules that
rely on the services this component offers.
The benefit of this approach for safety-critical systems is that one can
identify the components that are critical to the application. If a particular
application does not require a big deal of OS functionality, then only the
few components necessary to implement it need to be scrutinized. Other
components may well exist in the system, for example to support non-critical
parts of the application, because they can not affect the critical parts.
Don't get me wrong: I'm not saying a microkernel (or even QNX) is inherently
safer than Linux. However, if done right, it can give you the freedom to
trade functional complexity against functional safety.
So that means you could swap in a buggy filesystem and destroy
the data on your disc/flash. Without rebooting. Which is good since you
won't be able to boot from your corrupted filesystem, which won't show up
until the next power failure, while the poor nurse with a flashlight talks
to a guy on the phone who assures her QNX can't fail. So every OS, and
every feature, has its pro's and con's. The question for any CSA is not
'is this reliable' but 'can I make a reliable system using this component'?
Will the OS eat itself, or do I only have to worry about the mistakes I
make? A carefully constructed linux system should be good for 5 or even 6
nines of reliability.
This may be your gut feeling, but the CSA has to *prove* it for the OS he
chooses (at least he should have to, that is his responsibility).
(Honestly: would you fly in an aircraft whose steer-by-wire system is
controlled by Linux/QNX/any other OS (name please)?)
Rob
(*) There are some more issues here which I left out for brevity: If the
device being handled by a driver is capable of DMA, it *can* crash
everything. Therefore, such drivers need special consideration. Also, for
memory-mapped I/O, access permissions to device registers need to be enforced
by the MMU, so, if there are multiple devices with their registers within the
same physical page, they can not be protected from each other. Nevertheless,
the likelihood if a wild pointer causing spurious crashes is still greatly
reduced.
----------------------------------------------------------------
Robert Kaiser email: rkaiser@sysgo.com
SYSGO AG
Am Pfaffenstein 14 phone: (49) 6136 9948-762
D-55270 Klein-Winternheim / Germany fax: (49) 6136 9948-10
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
From: Mark Chambers <hidden> Date: 2004-07-27 13:29:51
Ok, I promise (mostly to myself) that this is my last comment about this.
One point I was trying to make is that assuming the underlying hardware is
good, all software is theoretically perfect. That is, given the same set of
input conditions it will always produce the same output. So software can
only become unreliable when applied to some real world application, when the
deterministic outputs are not the ones we wanted. So perhaps I'm being
overly pedantic here, but I think it's relevant to our discussion, because
people may make an apples to oranges comparison when comparing linux to
other OS's. Other OS's may provide a shrink-wrapped solution which has been
extensively tested and is relatively guaranteed for some range of inputs.
Linux, on the other hand, is more a raw material. But because linux is open
source it can be molded to your application. The many flavors of hard
realtime or 'carrier grade' linux are perfect examples of this. So it comes
down to evaluating what you need to do your job, and not applying some
mystical quality of 'reliability' to a piece of software. I do understand
what we mean by 'reliable' as a practical matter, my point is just that you
can't say whether linux is reliable or not until you know what it's required
to do. If I wanted to create a digital alarm clock, for an extreme example,
I bet I could write a linux app that would NEVER crash. (at least until
Y4K).
By the way, it's not my 'feeling' that linux can do 5 nines. It's been
done. Granted, the numbers come from clusters of PCs, so 100 PCs running
without failure for a year does not necessarily translate to one PC running
for 100 years.
And finally, this is all quite relevant to the discussion about dropping 2.4
for 2.6. It's important for linux in general that well characterized
versions of the software are available.
So as Forrest Gump would say, that's all I have to say about that.
Mark Chambers
Its not just the drivers: every line of kernel code (and there are over a
million of those in linux) has the potential to crash the system. In order
to
be *really* sure that the system is reliable, one would have to give all
that
code a thorough examination. Depending on how "thorough examination" is
defined (and there are approved standards for this), this effort results
in
costs that quickly make the question wether the OS's source code is
available
for free, or will cost a few hundred kilobucks, a non-issue.
quoted
The only operating system that doesn't allow a
clever programmer to crash is one that doesn't do anything.
Microkernels,
quoted
they say, allow you to do nifty things like replace the file system
without
quoted
rebooting.
This is not really a microkernel-specific feature. I believe Linux with
its
kernel modules can do this as well.
The important thing about the microkernel approach is that it allows to
build
OS functionality from components, where each component runs in its own
address space and only has access to the resources it needs to do its job.
A
device driver only needs access to the registers of the device it is
supposed
to handle, so it can only foul up this particular device (*). If such a
driver goes haywire, it *can* not affect, e.g. other driver's hardware or
memory: the bug remains local to the software that causes it. Such a
failure
affects only the offending component itself and the software modules that
rely on the services this component offers.
The benefit of this approach for safety-critical systems is that one can
identify the components that are critical to the application. If a
particular
application does not require a big deal of OS functionality, then only the
few components necessary to implement it need to be scrutinized. Other
components may well exist in the system, for example to support
non-critical
parts of the application, because they can not affect the critical parts.
Don't get me wrong: I'm not saying a microkernel (or even QNX) is
inherently
safer than Linux. However, if done right, it can give you the freedom to
trade functional complexity against functional safety.
quoted
So that means you could swap in a buggy filesystem and destroy
the data on your disc/flash. Without rebooting. Which is good since
you
quoted
won't be able to boot from your corrupted filesystem, which won't show
up
quoted
until the next power failure, while the poor nurse with a flashlight
talks
quoted
to a guy on the phone who assures her QNX can't fail. So every OS, and
every feature, has its pro's and con's. The question for any CSA is not
'is this reliable' but 'can I make a reliable system using this
component'?
quoted
Will the OS eat itself, or do I only have to worry about the mistakes I
make? A carefully constructed linux system should be good for 5 or even
6
quoted
nines of reliability.
This may be your gut feeling, but the CSA has to *prove* it for the OS he
chooses (at least he should have to, that is his responsibility).
(Honestly: would you fly in an aircraft whose steer-by-wire system is
controlled by Linux/QNX/any other OS (name please)?)
Rob
(*) There are some more issues here which I left out for brevity: If the
device being handled by a driver is capable of DMA, it *can* crash
everything. Therefore, such drivers need special consideration. Also, for
memory-mapped I/O, access permissions to device registers need to be
enforced
by the MMU, so, if there are multiple devices with their registers within
the
same physical page, they can not be protected from each other.
Nevertheless,
the likelihood if a wild pointer causing spurious crashes is still greatly
reduced.
----------------------------------------------------------------
Robert Kaiser email: rkaiser@sysgo.com
SYSGO AG
Am Pfaffenstein 14 phone: (49) 6136 9948-762
D-55270 Klein-Winternheim / Germany fax: (49) 6136 9948-10
Kevin P. Dankwardt wrote:
>
> What the team was hoping to use is a MPC5200 based system and the
> ELDK.
>
>
> Does anyone know of any embedded Linux projects where human lives
> really do depend upon Linux to be robust and reliable?
AFAIK, the MPC5200 is not to be used in life-critical systems ...
That's what the datahseet say anyway.
Sylvain
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Hi,
I want to port 2_4_devel on RPXlite DW with
framebuffer support and tried linuxppc_2_4_devel in
linuxppc official BK tree and DENX tree repectively
but failed.Could anyone try it before?Worked?
----[The config part of frame buffer support]----
...
CONFIG_RPXLITE=y
...
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
...
CONFIG_FB_8xx_LCD=y
...
CONFIG_FB_RPX_LCD_NEC=y ---[Linuxppc BK tree]
CONFIG_NEC_NL6448AC33=y ---[DENX CVS tree]
...
CONFIG_FBCON_ADVANCED=y
...
CONFIG_FBCON_CFB8=y
CONFIG_FBCON_CFB16=y
...
CONFIG_FBCON_FONTS=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
...
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
...
-----------------------------------------------
Anyinput would be appreciated!
Best regards,
Sam
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/