From: Walter Banks on


address_is(a)invalid.invalid wrote:

> Mark Brehob <brehob(a)gmail.com> wrote:
> > Hello all,
> > I've been teaching embedded systems for quite a few years now and we
>
> Snip..... 8<
>
> Nobody seems to have mentioned watchdogs...

Indirectly I did with timers. Watchdogs have not been all
that useful. As processors get larger code is often now
transferred on reset from slow ROM to fast RAM to be
executed. The reset times can be very large and other
reliability strategies need to be used.

Alternatively watchdogs are used to trigger events that
stabilizes the system in a some safe mode. The additional
application complexity may not be worth it.

Regards,


Walter..
--
Walter Banks
Byte Craft Limited
http://www.bytecraft.com




From: John Devereux on
Paul Keinanen <keinanen(a)sci.fi> writes:

> On Wed, 09 Jun 2010 19:21:49 GMT, <address_is(a)invalid.invalid> wrote:
>
>>Mark Brehob <brehob(a)gmail.com> wrote:
>>> Hello all,
>>> I've been teaching embedded systems for quite a few years now and we
>>
>>Snip..... 8<
>>
>>Nobody seems to have mentioned watchdogs...
>>
>>Glyn
>
> Apart from high radiation environments, who needs watchdogs ?

Agreed.

Starting out, a long time ago before I learned how to do EMC, I used
watchdogs all the time. In desperation I even had one system with a
free-running 555 connected to the reset pin. They still crashed
occasionally, or worse!

Now I know how to protect agains ESD and line tranients, I don't bother
with watchdogs anymore. And they don't crash.

--

John Devereux
From: D Yuniskis on
Hi John,

John Devereux wrote:
> Paul Keinanen <keinanen(a)sci.fi> writes:
>
>> On Wed, 09 Jun 2010 19:21:49 GMT, <address_is(a)invalid.invalid> wrote:
>>
>>> Nobody seems to have mentioned watchdogs...
>>>
>> Apart from high radiation environments, who needs watchdogs ?
>
> Agreed.
>
> Starting out, a long time ago before I learned how to do EMC, I used
> watchdogs all the time. In desperation I even had one system with a
> free-running 555 connected to the reset pin. They still crashed
> occasionally, or worse!
>
> Now I know how to protect agains ESD and line tranients, I don't bother
> with watchdogs anymore. And they don't crash.

As with most things, this depends entirely on the application
environment.

When designing *gaming* systems, you have to contend with
malicious users deliberately *trying* to subvert your
system.

It is almost impossible to protect a *running* system from
these kinds of threats.

I have found the opposite tactic to be more effective:
*cause* the system to deliberately reset when attacked
(not so the code will safely restart but, rather, so
the attacker will forfeit any "winnings" he has acrued).

Amazing how quickly they stop using this means of subversion.

:>
From: -jg on
On Jun 10, 4:21 am, Mark Brehob <bre...(a)gmail.com> wrote:
> On Jun 8, 1:10 pm, Mark Brehob <bre...(a)gmail.com> wrote:
>
>
>
> > Hello all,
> > I've been teaching embedded systems for quite a few years now and we
> > are looking to make some major changes in what we're doing (going from
> > one class to two, going from PPC to ARM/ATOM/AVR, etc.)  I _think_
> > we've got a pretty good idea about the direction we're going, but I
> > thought I'd come here and try to get feedback about what folks in
> > industry (and anyone else frankly) think is important and what isn't.
> > In general I'd love to hear any thought you all might have, but in
> > specific I thought I'd get feedback on how important it is to spend
> > time on certain topics.  Again, any and all feedback would be
> > welcome...
>
> > * ABI (application binary interface) stuff.  Specifically caller/
> > callee registers, dedicated registers, stack management, and the like.
>
> > * Writing code in assembly.
> > ** Specifically handling all the issues associated with interrupts by
> > hand (saving all registers used, nested interrupts and saving state
> > for that, identifying interrupts sources etc.)
>
> > * Processor memory bus interfacing.  Timing, having I/O devices
> > respond to external memory requests etc.
>
> > * Creating hardware (via FPGA) to do interfacing for either memory bus
> > or some other protocol.
>
> > * I2C/SPI/other simple serial interfaces
> > ** Is just learning to use them enough?   Should they learn to control
> > wires by hand?
>
> > *USB/firewire or other more complex serial schemes
>
> > * PCB design.
> > ** High speed PCB stuff important?
>
> > * High-level tool sets?  Matlab/Simulink, Android development stuff,
> > Arduino?
> > **What should they learn?  Does it matter which?
> > **Is writing low-level modules to work with these tools important?
>
> > *Writing Linux device drivers?
>
> Wow, I knew I'd get a lot of feedback, but I didn't expect that much
> from so many folks...  A lot of you have asked some really good
> questions, mostly asking for more context, so I'll provide at least
> some of that in one go.
>
> We've been using a PowerPC/FPGA based system (standard PPC and FPGA
> board with a custom interconnect) for about a decade and it's clearly
> time to make a change.  We teach one pure embedded systems course
> which has as pre-reqs a digital logic class, a computer organization
> class (very strong coverage but uses a very simplified ISA), and one
> and a half programming classes. We also have two specialized embedded
> classes (controls and DSP) which are more focused on domain specific
> issues (Matlab, making fast filters, computer vision, etc.)
>
> Our current set-up for our pure embedded systems class is that the
> students spend a lot of time in lab designing I/O devices on the FPGA
> and writing code that uses those devices on the PPC.  The major topics
> in lab are:
> * Introduction to "real" assembly and byte/word issues (needed due to
> the nature of our organization class)
> * Memory-mapped I/O from both the hardware and software side
> * Memory systems (fairly basic basic)
> (The above are all done in assembly on the PPC side after this it's a
> mix)
> * Using C and assembly together, ABI stuff
> * Interrupts (edge/level, saving state, debugging.  Nesting and
> "synchronous" interrupts (aka faults) vs. asynchronous interrupts (aka
> external interrupts)  and the whole "why we need interrupts" thing is
> really only in the lecture)
> *Timers (partly to introduce timers, partly for PWM, partly for more
> interrupt practice, partly for on-chip memory-mapped I/O practice)
> *A2Ds (basic theory and use)
>
> The student then do a project of their own choosing in groups which
> are usually fairly impressive (say 100 hours/student put into it on
> the average).
>
> We are going to add a new (advanced) class in embedded systems and we
> are creating/updating both classes this summer.  Honestly we've got a
> fairly good plan about where we want to go and have involved a number
> folks from industry and academia to get their thoughts.  But even so
> the net hasn't been cast as wide as it could be so I thought I'd ask
> for thoughts about the right directions to go from the net before
> things get too solidified (the next couple of weeks).
>
> Thanks _very_ much to each of you who have taken the time out to
> provide such great feedback!  I'm going to think through what you all
> have said...
>
> Thanks again,
> Mark

Given this has a quite high level of pre-requisites and is quite
focused, an obvious question, is WHY do you need to change ?

Is it that the particular devices, and development boards, are hard
to source ?

The PowerPC is still actively used, and sourced from
Freescale, ST, and Allied ?

If you are intending to do a large change, I'd flip the problem on
its head, and FIRST look for well designed Development/Project
platforms.

Doing this, as an example, the ST Primer2 development platform has to
appeal to students.

http://www.st.com/mcu/contentid-105.html

-jg

From: Paul E. Bennett on
address_is(a)invalid.invalid wrote:

> Mark Brehob <brehob(a)gmail.com> wrote:
>> Hello all,
>> I've been teaching embedded systems for quite a few years now and we
>
> Snip..... 8<
>
> Nobody seems to have mentioned watchdogs...

Not every system needs one. However, you are right, no one did mention
watchdogs.

I tend to use a simple pulse-maintained-relay circuit. The relay is
energised within a charge-pump circuit. Any single component failure would
prevent the relay remaining energised. The processor output you drive this
from has to toggle at a steady rate and I tend to make this as a result of
regular system sanity checks.

Still, the topic is a good one for the OP to add to the list.

--
********************************************************************
Paul E. Bennett...............<email://Paul_E.Bennett(a)topmail.co.uk>
Forth based HIDECS Consultancy
Mob: +44 (0)7811-639972
Tel: +44 (0)1235-510979
Going Forth Safely ..... EBA. www.electric-boat-association.org.uk..
********************************************************************