    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Embedded Systems</title>
        <link>https://members.accu.org/index.php/journals/769</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 11, #2 - Feb 1999</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c133/">112</a>
                    (20)
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Embedded Systems</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 03 February 1999 13:15:29 +00:00 or Wed, 03 February 1999 13:15:29 +00:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e20" id="d0e20"></a></h2>
</div>
<p>Those of you who still have the old ACCU handbook from the era
when I was Hon Sec may note that my biography had the comment
&quot;Biggest mistake: Telling the ACCU Chair person that I had a good
idea...&quot; After making some suggestions to The Editor about some
things I would like to see in C Vu I find myself agreeing to an
Embedded Feature for C Vu!</p>
<p>I did put out a request for some support but this fell of deaf
ears. This is unusual as I am informed (by Adrian Gothard at his
talk on Embedded Systems at the ACCU Forum in Oxford) that embedded
systems out number desktop systems by 10 to 1!</p>
<p>However a lot of these are mass-market consumer products. For
example a team of 4 SW Engineers might turn out 4 embedded systems
in a year that go in a car that sells 20,000. (80,000 systems).
Actually many cars have more than 4 systems. Then there are lifts
and entry systems, microwave cookers and washing machines,
aircraft, ships, robots (thousands of them that make cars, cookers,
washing machines etc.) radios, telephones and mobile phones (and
additionally the SIM card in a mobile is an embedded system with a
CPU in it's own right!) The list goes on and on.</p>
<p>So you can see how embedded systems might outnumber desktop
systems. Then there is the philosophical problem that most desktop
systems are likely to contain one or two embedded systems...</p>
<p>What makes an embedded system different to a desktop system?
Embedded systems are usually but not always dedicated to a single
task, have task specific IO and often only expect to communicate
with another computer. Screens and [full QWERTY] keyboards are
uncommon. The &quot;software&quot; is often burnt in to an EPROM or PROM (and
then called firmware) this makes code patches difficult and in some
cases impossible. The systems tend to have a minimum amount of
memory and the 8bit CPU still rules.</p>
<p>Whilst some of the chips become dated as the leading edge moves
on the embedded world is the opposite of the desktop. One does not
write SW that will run on machines that are leading edge today and
common tomorrow. One has to use a CPU that is cost effective in
100,000 off quantities today and in those quantities a 10p ($0.16)
saved per CPU by using an older model is &pound;10,000 ($16,000) in
production. As the desk top runs headlong to 64, 128... bit
processing and beyond the majority of the embedded world is still
using 8-16 bit (and 4 bit is not completely dead) 32 bit is only
the high end though the proliferation of the i86 chips and (PC
based) tools has brought their cost down.</p>
<p>Lastly embedded systems are expected not to crash and if they
do, to get themselves out of the jam. What's more they are expected
to be fail-safe. I understand that Microsoft is planning to do an
embedded version of Windows... You can try Ctl-Alt-Del in the lift
next time it stops!</p>
<p>There is also another difference between &quot;normal&quot; and embedded
systems is that the tools tend to be a lot more expensive and
specialised. One Borland compiler will run on virtually any PC
produce software for almost any PC. Embedded tools run on a host
that is separate to the target. The targets tend to be unique and
may or may not run an operating system. The tools are usually tied
to a specific CPU family; occasionally a specific CPU in that
family. Whilst there may be millions of embedded systems there may
be only a few developers for each tool. The 80,000 systems in the
car cited earlier only had 4 developers who may only have had 4
compilers and one ICE.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e38" id="d0e38"></a>The Challenge
of Embedded System Design</h2>
</div>
<p>At the ACCU Forum in Oxford Adrian Gothard gave a talk with the
title above. It was very illuminating. Adrian is &quot;up to his neck in
work&quot; so I am doing a commentary on his slides. The slides are
available from the Parkway Gordon web site.</p>
<p><span class="underline">What is an Embedded system?</span>
Generally it is a CPU, a few peripherals and a dedicated program.
They tend to be physically small. Then again I have worked on an
&quot;embedded&quot; system that had 12 486's, a Sparc and a 500Mb Hard disk
in a 19&quot; rack.</p>
<p><span class="underline">What skills are needed?</span> Due to
the intimate relationship between the hardware and the software
both hardware and software skills are needed. Though it tends to be
high level hardware and low level programming.</p>
<p><span class="underline">Design Challenges</span> Typically: No
screen, no keyboard, limited memory (8051 variants have 128 or 256
BYTES of RAM!), limited features, no OS. However the word to note
is &quot;typically&quot;. There are many systems that do use special embedded
OS. Arguments rage over which is &quot;the best&quot; like all things
embedded there is no clear answer.</p>
<p>Embedded Systems outnumber desktop systems by a factor of 10 to
1 and the ratio is growing. &quot;chips with everything&quot;. Virtually
anything that has electricity in it has a chip these days. However
as the skills for embedded engineering are more specific than
general computing there is a major skills shortage. UCAS admissions
for degree courses in Electronic Engineering are down by 3.8% and
they were never that popular to start with!</p>
<p>Some of the major growth areas for embedded engineering are:</p>
<div class="variablelist">
<dl>
<dt><span class="term">GPS Positioning.</span></dt>
<dd>
<p>Now campers carry GPS instead of a compass.</p>
</dd>
<dt><span class="term">Voice recognition.</span></dt>
<dd>
<p>Now available for your PC</p>
</dd>
<dt><span class="term">Smart Cards.</span></dt>
<dd>
<p>Boots advantage card.</p>
</dd>
<dt><span class="term">Biomentics.</span></dt>
<dd>
<p>Thumb prints and retina scans at point of sale in shops.</p>
</dd>
<dt><span class="term">Wireless Communications.</span></dt>
<dd>
<p>Tetra</p>
</dd>
<dt><span class="term">Automotive.</span></dt>
<dd>
<p>Engine management. Locator systems. intelligent parking systems,
automatic roads, voice control.</p>
</dd>
</dl>
</div>
<p>In the 5 months since Adrian put these slides together the areas
he was suggesting were growth areas have well and truly grown.</p>
<p><span class="underline">Development tools</span> Tools are a
major headache in the embedded world. The advent of the PC has
helped. Hosts tend to be PC or UNIX based. Targets can be a huge
variety. Consequently it is only recently that good integrated
environments have appeared. Also due to space restrictions of the
target assemblers and more recently compilers have had to be more
stringent with resources that &quot;normal&quot; compilers. Debugging is a
problem as a debugger on the host has to simulate a completely
different environment. In Circuit Emulators still cost thousands of
pounds. These devices are used to look into the target, replacing
the CPU or micro controller.</p>
<p><span class="underline">What Processor?</span> The choices here
are crucial. A CPU with peripherals or a micro controller? Chip
count and number of holes in a PCB are factors. As is heat
generated in some cases. A mask for a Microcontroller can cost
&pound;100,000. Debugging tools and numbers of units you expect to
sell are a factor. Then there is the choice of 4, 8, 16, 32 or 64
bit systems. Yes, 4 bit is not dead yet! Of course there is the
usual RISC or CISC argument and to top it all can it be done
faster/cheaper with an ASIC? As noted previously there is a skill
shortage so your choice may depend on what people you can get!</p>
<p><span class="underline">Do it in hardware or software?</span>
Not a problem most SW engineers have to face. In the embedded world
many things can be done in both hardware and software. The problem
is deciding where to draw the line... If it is in software it could
be changed later. Also it is easier to change the software than the
hardware later in the development. Hardware is probably going to be
faster and put less strain on the CPU. It is possible to adjust
hardware characteristics in software. For example the Hubbell
telescope. However this requires more software more memory. If
there is no more memory then a new CPU and round we go again.</p>
<p><span class="underline">Programming Languages</span> For many
years there was only one language for embedded work: Assembler.
However C has been the mainstay for a while with pockets of Pascal
and Forth. Some parts of the automotive industry used Modula2. C++
and JAVA are trying to get in on the act and some of the larger
systems will use them. However Assembler and C will always be there
on the smaller systems.</p>
<p><span class="underline">Operating Systems</span> You may note
that this slide contradicted a previous one. Small embedded systems
do not have room for an OS. Many systems do not need one but then
again many do. There are many OS from 5K single thread monitor
systems to OS like LYNX that is a multi-thread system that uses
hardware MMU on (only) 32 bit systems. It might be that you are
working on a system that has no commercial OS support and you might
have to write your own OS. Of course it could be that your project
does things that no current OS supports. There is also the type of
operating system to think about. Shared memory, protected memory,
flat model. How are you going to protect the data (and the
program(s))?</p>
<p><span class="underline">Development.</span> Having made your
decisions do you develop and test the hardware and write the
software to fit (and fit it must) or do you write the software test
it under simulation and then do the hardware? Actually it's not up
to you, the deadline dictates that you WILL have to develop
concurrently...</p>
<p><span class="underline">Development cycle</span> This is like
one of Echser's drawings. There are the usual project definitions,
requirements, functional specs and detailed design. However once
construction starts there are certain &quot;no turning back&quot; points
particularly for the hardware that mean the after certain point the
software MUST fit in the space and do the job. Prototyping This is
where one gets some sample hardware that is as close as possible to
the target to tryout some of the ideas and software. There are many
evaluation boards for most CPUs and microcontrollers. These take
some of the theory and guesswork out of the system but... and it is
a big but, these boards are not the production target so they may
not behave exactly as the real system. Added to which it may not be
possible to mock up some of the hardware.</p>
<p><span class="underline">System Reliability</span>. &quot;Hardware:-
Software Engineers don't trust it&quot; and&quot; Software:- Hardware
Engineers don't care&quot; This attitude actually comes out in other
parts of the project as well. This is why embedded engineers who
know both hardware and software are highly sought after. However in
embedded systems reliability is paramount. During the Oxford talk
the engineer next to me said &quot;How many bugs do you let an embedded
system go out with?&quot; I said &quot;None that I know about and I test it
thoroughly first.&quot; His point was that usually version 1.0 of an
embedded system is the only one there is going to be. I have heard
SW project managers say &quot;We can fix it in the next release.&quot;
Fortunately not working on an aircraft or car system.</p>
<p><span class="underline">Debugging Embedded Systems</span> There
are various tools and strategies to go with them. The simulator is
the closest thing to a debugger that most people will have come
across. Then comes the ROM emulator, In Circuit Emulator, BDM and
finally the logic analyser and oscilloscope. Not all of these will
be available and often one has to tailor a debugging and test
strategy to the tools. Many of these tools cost into thousands of
pounds, a long way from the Borland Turbo C at &pound;50.</p>
<p><span class="underline">Watchdogs</span>. Not the TV programs
but an essential part of most if not all embedded systems. What do
you do when you PC locks up? Ctl-Alt-Del. When testing your nice
little embedded system on the bench you can press the reset button.
What if your little embedded system is not on your bench but at 160
W 65 N? On the Alaskan oil pipeline in the middle of nowhere, where
a gentle breeze brings the temperature down to -40&#61616;C! A
watchdogs is circuit that resets the whole system automatically
after a pre-set number of cycles or on a counter time-out unless a
running system resets the watchdog during that time. However there
is a lot more to watchdogs than that. They can be implemented in
either hardware or software or a combination.</p>
<p><span class="underline">Harsh Environments</span>. Leading on
from watchdogs and why you may not want to personally reset a
system is the environment. Most PC's live in nice air-conditioned
offices or homes. Embedded systems may have to live in a
temperature range of -40 to +40. Then there is vibration and EMI.
No not the record company but electromagnetic interference. You can
often see EMI on a television when a badly suppressed car passes or
an electric drill is used. Now imagine what would happen if a
glitch like that got in to a lift control circuit!</p>
<p><span class="underline">Upgrading Embedded Software</span>. At
one time it was almost impossible as in many cases software was
(and still is) masked in to the CPU. Now E2PROM and Flash RAM make
upgrading the software possible... if you can get to the system.
Remote upgrading some systems is possible.</p>
<p><span class="underline">Quality</span> This is not the same as
reliability. It is the overall quality. Systems can be designed for
ease of manufacture or testing. Software can have a built in
self-test.</p>
<p><span class="underline">Software-Re-Use</span>. This is a real
hot topic. However it is a lot more difficult in embedded systems.
CPU architectures are very different, memory sizes and IO. Not to
mention big- and little-endian. The golden rule, as with most
things, is keep it small and simple.</p>
<p><span class="emphasis"><em>Adrian's last slide was
this:</em></span></p>
<p><span class="bold"><b>Y2K. Nuclear Power.</b></span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e160" id="d0e160"></a>Embedded
Electronics a Schizophrenic World</h2>
</div>
<p>The embedded market is in two camps. The hobby market that grew
out of home electronics where people buy one or two
microcontrollers and shareware compilers and the professional
market where 4 compilers at &pound;1600 each (and an emulator at
&pound;5000) is not uncommon and then they buy 100,000
microcontrollers.</p>
<p>The companies that sell embedded products like the latter but
not the former mainly because the former require a lot more support
than the latter but return very little revenue.</p>
<p>There are a few exceptions for the hobby user. There are the
Atmel range of microcontrollers with flash memory in place of ROM
and the PIC series from Microchip. The BASIC Stamp is a variant of
PIC from Parallax seems to be aimed exclusively at the home market.
These have a large amount of free information and data around the
internet.</p>
<p>One thing that has helped both the home and business user is the
CD. It makes &quot;databooks&quot; so cheap to produce that data is easy to
come by. Getting some of the CPUs is not</p>
<p>On the hobby front robots have taken off with great deal that is
achievable at home. Though there are still those who delight in the
68K doorbell that play's Wagner's Ring Cycle. Robot kits start at
&pound;50 and give the programmer lots of scope. You will need you
own SW development tools though. However, much can be done with the
evaluation copies distributed. Keil do a demo 8051 system that is
restricted to 2K program memory.</p>
<p>Here are a few web sites for those wishing to dabble:</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p><a href="http://www.robotmag.com" target=
"_top">http://www.robotmag.com</a></p>
</li>
<li>
<p><a href="http://www.doc.ntu.ac.uk/RTTS/index.html" target=
"_top">http://www.doc.ntu.ac.uk/RTTS/index.html</a> Real Time
Telemetry Systems</p>
</li>
<li>
<p><a href="http://www.imagecraft.com/software/index.html" target=
"_top">http://www.imagecraft.com/software/index.html</a> ImageCraft
HC11/HC12 C Compilers and other Development Tools</p>
</li>
<li>
<p><a href="http://www.lawicel.com/e_c515cbbe.htm" target=
"_top">http://www.lawicel.com/e_c515cbbe.htm</a> Low cost Single
Board Computer based on the 8051 derivative C515C with Controller
Area Network (CAN)</p>
</li>
<li>
<p><a href="http://www.embedded.com" target=
"_top">http://www.embedded.com</a> Embedded.com - Embedded Systems
Programming http://www.dotelectronics.com/ese/ Embedded Systems
Europe - the e-zine for systems hardware and software
engineering</p>
</li>
<li>
<p><a href=
"http://www.compapp.dcu.ie/~cdaly/%20embed/embedsys.html" target=
"_top">http://www.compapp.dcu.ie/~cdaly/ embed/embedsys.html</a>
Embedded Systems Internet Resources</p>
</li>
<li>
<p><a href="http://www.realtime-info.be/" target=
"_top">http://www.realtime-info.be/</a> Real-Time Encyclopaedia:
the reference for Real-Time</p>
</li>
<li>
<p><a href="http://www.embedded.com/europe/euroedit.htm" target=
"_top">http://www.embedded.com/europe/euroedit.htm</a> Embedded
Systems Programming Europe</p>
</li>
<li>
<p><a href="http://www.parallaxinc.com" target=
"_top">http://www.parallaxinc.com</a> Welcome to Parallax, Inc.
(PIC)</p>
</li>
<li>
<p><a href="http://www.stampsinclass.com/" target=
"_top">http://www.stampsinclass.com/</a> PIC/ Stamps</p>
</li>
<li>
<p><a href="http://www.robix.com" target=
"_top">http://www.robix.com</a> Robix RCS-6 Robot Construction
Set</p>
</li>
<li>
<p><a href="http://www.users.zetnet.co.uk/whd" target=
"_top">http://www.users.zetnet.co.uk/whd</a> White Horse Design</p>
</li>
<li>
<p><a href="http://www.ucos-ii.com/" target=
"_top">http://www.ucos-ii.com/</a> C/OS and &micro;C/OS-II, The
Real-Time Kernel</p>
</li>
<li>
<p><a href="http://www.8052.com" target=
"_top">http://www.8052.com</a> 8052.COM - The Online 8052
Resource</p>
</li>
<li>
<p><a href="http://www.mcu.motsps.com/" target=
"_top">http://www.mcu.motsps.com/</a> Embedded Controllers
Literature</p>
</li>
<li>
<p><a href="http://www.embedded-directory.com" target=
"_top">http://www.embedded-directory.com</a> Embedded Directory</p>
</li>
<li>
<p><a href="http://www.hitech.com.au" target=
"_top">http://www.hitech.com.au</a> C Cross Compilers for Embedded
Systems</p>
</li>
<li>
<p><a href="http://www.iar.com/" target=
"_top">http://www.iar.com/</a> IAR Systems</p>
</li>
<li>
<p><a href="http://www.nohau.com" target=
"_top">http://www.nohau.com</a> NOHAU Corporation Home Page</p>
</li>
<li>
<p><a href="http://www.arcom.co.uk" target=
"_top">http://www.arcom.co.uk</a> Arcom Control Systems</p>
</li>
<li>
<p><a href="http://www.hitex.co.uk" target=
"_top">http://www.hitex.co.uk</a> Hitex Microprocessor Emulation
Home Page - UK</p>
</li>
<li>
<p><a href="http://www.keilsoftware.com/" target=
"_top">http://www.keilsoftware.com/</a> Keil Software Home Page</p>
</li>
<li>
<p><a href="http://www.eu.atmel.com" target=
"_top">http://www.eu.atmel.com</a> ATMEL CORPORATION</p>
</li>
</ul>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e290" id="d0e290"></a>A Standard
for Embedded and Real-Time C</h2>
</div>
<p>At last there is an authoritative, generally available, C
standard (programming guidelines) for embedded and Real-Time work
[ref. 1]. It is also inexpensive at &pound;25-00 (around &pound;30)
in the UK. It grew out of a need in the automotive industry with
the rapid increase of the use of software to control the modern
car. Engine management, brakes, instruments and those annoying
gizmos that say &quot;Fasten your seatbelt!&quot;</p>
<p>In April 1998 MISRA [Ref. 3], the software consortium managed by
MIRA [Ref. 4] released their &quot;Guidelines for the Use of the C
Language in Vehicle Based Software&quot;. Don't be misled by the title!
Whilst it was developed for the automotive industry the
acknowledgements page spans universities, compilers writers,
R&amp;D organisations, SW specialists, SW tools companies, a list
of 36 individuals, several of which are household names (in the SW
industry). Many will be familiar to members of the ACCU [ref. 4].
It also mentions that the automotive companies involved came from
Austria, Scandinavia, Germany, USA, UK, and Japan.</p>
<p>I was told that this standard took two years to produce so it
has not been done lightly though with the speed at which the ISO
crowd work one might think so. (That is a subtle hint to the C, C++
and Java ISO committees!) (<i><span class="remark">Actually there
is a very large difference between developing a set of coding
standards and writing a language standard. In the case of Java Sun
Microsystems are 100% responsible because they thought they could
do it faster than ISO &#9786; Francis</span></i>)</p>
<p>So much for the pedigree but what does the standard actually
contain? The usual preamble of the why's and wherefore's, scope and
usage. The real meat is in The Rules. There are over one hundred
and twenty of them. The are split in to seventeen sections such as
Environment, Types, Control Flow, and Functions. The rules are
further sub-divided into &quot;Required&quot; and &quot;Advisory&quot;.</p>
<p>Each rule is numbered and stated simply. For most some
explanation is given with source code in a few examples. In many
cases there is a reference to source documents and where possible
the ISO C standard. Remember the language standard is just that, it
defines the syntax and semantics. Good practice is not defined in
ISO9899. At the end is a very useful cross-reference to ISO 9899.
So those of you without it can write your own in-house coding
standard using these guidelines and be able to reference ISO C as
well.</p>
<p>Some (most?) of the &quot;Required&quot; Rules are obvious common sense...
well I thought so until I discussed one or two with some
programmers and discovered I had a different interpretation on
&quot;obvious&quot; and &quot;common sense&quot; to some of them. These guidelines will
be useful just to keep your engineers on their toes. See how many
know why some of the rules are there. As I said many should be
obvious common sense but...</p>
<p>These rules are for use on all the MISRA safety levels (0 to 3)
except the highest, level 4, which requires &quot;a certified language
with proven formal semantics&quot;. Level 4 will not be using C.
(<i><span class="remark">So what will it be using?</span></i>) This
guide will get you as safe as you are going to get with C, not
withstanding the disclaimer on page ii. Even with a good
programming standard some programmers can make a right mess of it.
(<i><span class="remark">Good enforcement tools such as QA C can do
much to help there. Francis</span></i>)</p>
<p>What MISRA C will not tell you is what to put in the source file
identification, history copyrights etc., file naming conventions,
code layout, indenting. It does not delve into the religious
argument of where the {} go, there is an internet newsgroup for
that! None of these issues will affect the reliability of the
software even if it does have a bearing on readability and
maintenance.</p>
<p>Whilst mentioning readability I have to read a lot of standards
and this is the most readable one to date. When I took it in to the
office I actually had engineers reading it with interest! MISRA C
is written with the idea that a real engineer, rather than a
theoretical standards guru, will be using this guide.</p>
<p>Having previously dismissed the preamble before the rules, six
sections, it does contain a lot of useful information more than one
would think, on first glance. Information such as what the compiler
does and does not do. That will surprise a few people. How many
programmers do you know who say &quot;It must be correct: it
compiles.&quot;?</p>
<p>There is a section on compliance matters that is a useful idea
on it's own. Basically it says we know what the rules are but where
are they tested? More importantly can we prove that they have all
been tested?</p>
<p>There is information on how to claim compliance to the standard.
For those not in the automotive trade it is a very sensible list of
things we should all be doing anyway. All ISO9000 companies should
have no trouble with the proof of conformance.</p>
<p>Do make sure you read the sections (1 to 6) before The Rules.
Though it will probably be after you have gone through the
rules.</p>
<p>I am looking hard to find something to complain about but apart
from the title there is nothing. The title comes about because
previously they have produced the &quot;MISRA Development Guidelines for
Vehicle Based Software&quot; and they wanted the names to match. Given
the standard of these guidelines I am minded to look at their
development guidelines.</p>
<p>So no complaints but a wish list. This is a generic guide for
all embedded use. Perhaps in the next version &quot;they&quot; could do a
series of appendices for the 8051 family, 166, H8 68* etc. Some of
the RTOS manufacturers might like to produce their own addendum.
(Talk to MISRA.) These MUST be complementary to this guide. They
will cover some of the idiosyncrasies of these families and RTOS. I
am thinking of things like defines for the 8051 xdata. Also a
portability matrix for writing code for use on more than one
target. I would see these addenda as tightening things up. Thus
there will be additional &quot;8051 rules&quot; containing things like: Rules
2,10, 40,86 move from &quot;advisory&quot; to &quot;required&quot;. I would not expect
to see any going the other way.</p>
<p>By the way, MISRA stands for the Motor Industry SOFTWARE
RELIABILITY Assn [author's emphasis]. We all need reliable software
and not just in cars. So whilst the standard has been done
primarily for the automotive industry it is applicable to all
embedded safety critical work. Given the cost and clarity of the
standard there is little excuse for not using it as a guide on all
embedded C. Come to that any C, embedded or not. I expect (hope)
&quot;MISRA-C&quot; to become an industry wide standard for embedded
coding.</p>
</div>
<div class="bibliography">
<div class="titlepage">
<h2><a name="d0e334" id="d0e334"></a>References</h2>
</div>
<div class="bibliomixed">
<p class="bibliomixed">Guidelines For the Use Of The C Language In
Vehicle Based Software. ISBN 0-9524156-9-0 Published: MIRA April
1998</p>
</div>
<div class="bibliomixed">
<p class="bibliomixed">Motor Industry Research Association, Watling
Street, Nuneaton, Warwickshire, CV10 0TU</p>
</div>
<div class="bibliomixed">
<p class="bibliomixed">MISRA: David Ward, MISRA Project Manager,
MIRA <span class="bibliomisc">email <tt class="email">&lt;<a href=
"mailto:David.ward@mira.co.uk">David.ward@mira.co.uk</a>&gt;</tt>,
<a href="http://www.misra.org.uk" target=
"_top">http://www.misra.org.uk</a></span></p>
</div>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
