|
Along with his monthly column in Embedded Systems Programming, Jack's
articles have been published in magazines worldwide including EDN, Circuit
Cellar Inc., EE Times, The Washington Post, Australian Electronic Engineering,
Ocean Navigator and Business Monthly to name a few.
Search alphabetically by
or
Analog, Filtering, etc.
- Convolutions - Convolutions are
a really cool way to smooth and even differentiate data. You gotta
check this out.
- Minimizing Analog Noise - Analog noise
is a tough problem. Here are a few ways to minimize it.
- Radio Days - Radios and noise reduction
- Self Calibrating Systems - Here's
an algorithm to make an instrument read correct values without
ever manually setting gain and offset coefficients.
- Smoothing Digital Inputs - There's
a lot of way ways to debounce digital inputs. A few are listed
in this article.
- Taming Analog Noise - Here's a few
ways to use smart software to reduce the amount of noise in your
system.
Communications
- Bit Banging - You don't need a UART
to send and receive serial data. Software alone suffices. Here's
the code.
- Data Compression - Transmission
bandwidth is always limited (hey... if you're reading this over
a 28.8kb link, you get the picture!). Data compression can help
a lot.
- Serial Data Transmission - Here's
a primer to using UARTs in embedded systems.
- USB - An overview of embedded USB
Debugging Embedded Systems
Fun Embedded Systems
- Aprils Fools - So you have a backup
strategy?
- Call Me Ishmaell - Lessons from failures
on a small boat at sea.
- Dear Abbey
- Abbey talks to developers about building embedded systems.
- Firmware Disasters - Test like
you fly, fly what you have tested!
-
Disasters Redux! - Those who forget history are condemned to repeat it.
-
Jake Busts Out - Jake busts out of
jail to help the VCs get a product to market.
- Memo To My Boss
- Jake Schmidt quits and fires off a memo to his ex-boss. It's flaming, but
full of useful lessons.
- Memorial Day
- Years in the future a wealthy man looks back on how the embedded world
collapsed.
- The Case of the Crashing 68000 - a fun detective story about embedded systems
- The Secret of My Success - Our hero takes
on another project... heh heh
- The Vote
- This article, written in 2002, discusses how Bubba "the can man"
won the 2004 presidential election.
- Toastal Lessons - Our hero designs
a mechanical toaster, that morphs into a net-connecte 32 bit monster
Hardware
- 8 and 16 Bit Microcontrollers
- A look at the state of smaller CPUs
- An Example of Foolishness
- Jack lays out the basic rules of troubleshooting anything.
- ARRLHandbooks
- A review of one of the finest hardware handbooks.
- Asynchronous Hardware-Firmware
- External events that are changing (analog inputs, timers, encoders and many
other sources) often sometimes confuse the code. Few developers understand how
to read these simple inputs reliably.
- Beginner's Corner - In-Circuit-Emulators
- A beginner's guide to the best debugging tool of all, the in-circuit
emulator.
- Beginner's Corner - Reentrancy
- A beginner's guide to reentrancy issues.
- Boolean Algebra - Do you get the
boolean blues? Those hardware weenies keep chatting about DeMorgan,
truth and evil... and you're feeling left out? Read on.
- Bus Cycles - Software folks need
to understand how a microprocessor handles data on its busses.
Here's the short intro.
- Computing CRCs in Parallel - How
to use a PLD to figure CRCs in a single clock cycle.
- Drawing Systems - Most small
companies never organize their drawings in a logical fashion,
and instead all-too-often rely on memory when building production
units. Here's an easy system that will get your drawings in order.
- Electromagnetics for Firmware
People - Maxwell's Laws really are important for firmware development. Here
is an introduction.
- Encoders - Want to
learn more about measuring position? Read this article.
-
Green Motor Control - As a designer,
you can make decisions that greatly impact the environment. Here's
how to save energy.
- Hardware for Better Firmware
- A few changes to the system's hardware design can greatly improve the
code.
- Interrupt Latency
- Do you really know what latency is? Where it comes from? How to measure it?
Here's guidelines.
- Is Hardware Reliable
- How reliable is hardware anyway? Intel's telling us not to expect our CPUs
to actually work . . .
- Metastability and Firmware
- A very subtle reentrancy-like situation develops when software needs
two or more reads of hardware to input a value.
- New Hardware
- Suggestions for bringing up a new hardware design.
- Pipelines and Prefetchers - All
modern processors use pipelines and/or prefetchers to increase
performance. Here's how they work.
- Position Encoders - Encoders transmit
position or frequency info to the computer. Here's a few ways
to make life with them easier.
- Prototyping - Prototyping is a critical skill - in hardware and software. This is part 1 of a two part series on the skill.
- Prototyping - Prototyping is a critical skill - in hardware and software. This is part 2 of a two part series on the skill.
- Prototyping with SMT - One person's
experience with using SMT devices on prototypes.
- Read That Datasheet - Never assume
a part has certain electrical or timing parameters. Often little
surprises lurk. Did you know that virtually all microprocessors
do not accept TTL levels for clock and reset?
- Refreshing Software - Refresh
is yet one more thing that software can, in some situation, replace.
- Resistors - Be careful how you
design resistors and R-packs into your digital circuits. This
article tells how.
- Smoothing Digital Inputs - There's
a lot of way ways to debounce digital inputs. A few are listed
in this article.
- The Zen of Diagnostics - part 1
of a two part series on embedded diagnostics
- The Tao of Diagnostics - part 2
of a two part series on embedded diagnostics
- VCO Based Sensors - VCOs can form
a clever way to digitize analog data.
- What Goes In Must Come Out - FIFOs
are hardware analogs of a sort of reverse stack. Here's how they
work.
Historical Embedded Systems
Managing, Scheduling, Tracking
Embedded Systems
- A Boss's Quick Start to Firmware Engineering,
Part 1
- Most bosses don't understand the issues involved in producing great firmware.
Show them this.
- A Boss's Quick Start to Firmware
Engineering, Part 2
- Show them more.
- A Value Proposition - Unfulfilled
- Assigning the Blame - End each project
with a Postmortem; feedback stabilizes systems!
- Bailing Frantically - In panic mode?
You'll never exit it till you take time to stop bailing and plug the
leaks.
- Boss Management - Bosses need to be managed
too.
- Business 101 - You can't be an
effective engineer unless you understand how your engineering
role impacts the business as a whole. Step back, get a new zeitgeist,
and expand your horizons a bit.
- Comments on Commenting
- Rules for creating awesome comments in your code.
- Guardian Angels - Every project needs a guardian angel, someone who watches over the code.
- I, Consultant (part 1) - Here's
how to get rich quick: quit your job, become a consultant, and
charge $90/hour. NOT!
- I, Consultant (part 2) - This
is a follow-on the the previous article. Stay tuned for part 3.
- I, Consultant (part 3) - Yet another
followup
- I, Consultant (part 4) - The last
followup... I sure hope.
- I, Consultant (part 5) - The last
followup. Fer Sure.
- Jack's Rules of Thumb
- Engineers use rules of thumb to quickly estimate rather than do detailed
calculations. Firmware can benefit from the same idea. Here's a sampling of
such rules.
- Keep it Small - Get the product out
faster by better partitioning
- Lies, Damn Lies, and Schedules -
Schedules fail for a lot of reasons, one of which is rampant dishonesty.
- Measuring Bugs
- If you don't measure bug rates you'll never improve your coding. Besides,
the right measures will accelerate the schedule.
- On Management - Thoughts on managing
development
- On Measurements
- Managers chant "If you can't measure it, you can't manage it." What
should we measure in firmware development?
- Picking a CPU - How do you decide
what CPU to use? Here's some factors to consider.
- Promise Management
- We make lots of promises to our boss, our employees, spouse and children.
Promises are a sort of social currency. Manage them properly or they'll lose
their value.
- Schedule Madness - Most schedules are
dysfunctional
- Scheduling - It is possible to create
accurate schedules, here's how.
- The Organized Bench - Lab pigs
beware! This is your 12 step plan to recovery.
- The Z80 Lives! - The Z80 and its
derivatives continues to be tremendously successful. Here's the
current state of the art.
- Toastal Lessons - Our hero designs
a mechanical toaster, that morphs into a net-connecte 32 bit monster
- Understand Your User's Needs -
Understand your user's needs; only then can you be sure the code
is useful, as well as correct.
Math
- Embedded Trig - Here's some algorithms
to make it easier to compute complex trig functions.
Memory
- 386 Protected Mode - Part 1 of a
two part article about protected mode.
- 386 Protected Mode - Part 2 of a
two part article about protected mode
- Banking Basics - Ideas
to help you expand your system's address space.
- Big Systems - Another piece on using x86
Protected Mode.
- Built-In Diagnostics - No system is useful unless it can be built in production. Add simple
diagnostics.
- DMA - Too many of us don't really
understand DMA. Read on...
- Huge Data on the Z180 - The Z180's
banking scheme is great for handling code; data is a bit more
complex. Here's example code.
- Memory as a Device - Clever use
of memory devices can really enhance your products.
- Non-Volatile RAM - How to manage battery
backed up RAM
- Pipelines and Prefetchers - All
modern processors use pipelines and/or prefetchers to increase
performance. Here's how they work.
- Reentrancy - Most real time systems
require a certain amount of reentrant code, yet too many programmers
have no idea what this entails
- Refreshing Software - Refresh
is yet one more thing that software can, in some situation, replace.
- Relocatable Code - Some embedded
code must run at more than on address.
- Testing RAM - How to test system RAM.
- Thanks for the Memories -
Here's some advice about testing RAM and ROMs in your embedded system.
- Using the Z180 MMU - Extend your Z80
address spaces to 1 Mb with the Z180.
- Wandering Pointers - Code crashes and
dangling pointer tips
Philosophical and Career
- As Good As It Gets
- Why is it so hard to build great code? Musings on software failures.
- At Sea - Embedded Systems at sea
- Chaotic Systems - The new science
of chaos is fascinating in its own right, and may have important
implications for designers of embedded systems.
- Crash and Burn - Disasters, and what we
can learn
- Depot Repair - Thoughts on our throwaway
economy, and our role in it.
- Disaster - A description of some
embedded disasters, and what we can learn from them.
- Do You Need A Degree - Is a
degree needed? Useful?
- Engineering Ethics
- We enginers build systems that profoundly impact people's lives. Strong
ethics are the most important tool we have to keep our customers safe from
misbehaving products.
- Habits - The 7 Habits of Highly
Dysfunctional Developers
- How Microsoft Saved The World
- The Big Bad Beast or a a force of good? Jack's inviting flames by claiming
that without Microsoft we would still be computing on our fingers and
toes.
- Kids - In praise of kids these days
- Kids These Days - Back in my day,
we had to build our own equipment.
- Living to Learn - A philosophy of never having to say you're done with school
- Magic - an article about our society's
inability to embrace the new technologies we techies create.
- Memo To My Boss
- Jake Schmidt quits and fires off a memo to his ex-boss. It's flaming, but
full of useful lessons.
- Memorial Day
- Years in the future a wealthy man looks back on how the embedded world
collapsed.
- Momisms - Things your mom should have
taught you
- Non-Degreed Engineers - How
important is a degree in this industry?
- Open Source? - Opening the open source
debate
- Passion and the Developer - Use reason,
not emotions.
- Promise Management
- We make lots of promises to our boss, our employees, spouse and children.
Promises are a sort of social currency. Manage them properly or they'll lose
their value.
- Religious Wars - Choosing a programming
language is a place where people often get really dysfunctional.
- Sell Yourself
- Guidelines for writing a resume.
- Shared Perceptions
- On a stop in Bermuda, Jack meets a wizened ex-developer. Over too many
drinks several interesting lessons emerge.
- Small is Beautiful - Small Processors
dominate this industry. This is why.
- Survival of the Fittest - Do you
work hard? How about smart? This article might make you mad, but
hopefully it's start some ideas flowing. Feel free to send flames
to us via email!
- The C Blues - C is still a long
way from what we embedded folks need in a language. Here's some
ideas and complaints.
- The Future of Embedded Programming -
Here's a set of prognostications about programming in the future.
Read 'em and weep.
- The Vote
- This article, written in 2002, discusses how Bubba "the can man"
won the 2004 presidential election.
- When the Thrill is Gone - Life has a funny way of changing the obvious...
RealTime and High Speed
- An OS in a Can - Using a commercial
RTOS will save big bucks... and is rather fun.
- Asynchronous Hardware-Firmware
- External events that are changing (analog inputs, timers, encoders and many
other sources) often sometimes confuse the code. Few developers understand how
to read these simple inputs reliably.
- Beginner's Corner - Reentrancy
- A beginner's guide to reentrancy issues.
- Coding ISRs - Handling interrupts
is tricky at best. Here's a few suggestions.
- Design For Performance - Make the system
as fast as it needs to be!
- DSP - An introduction to Digital Signal
Processing.
- Interrupt Latency
- Do you really know what latency is? Where it comes from? How to measure it?
Here's guidelines.
- Interrupt Predictability - How do
you know if your ISRs will be fast enough?
- Metastability and Firmware
- A very subtle reentrancy-like situation develops when software needs
two or more reads of hardware to input a value.
- Perform or Perish - How do you
deal with software performance problems?
- Real Time - The basics of real-time
programming
- Speed Kills - Data comm over cheap
serial links might be more cost effective than other, faster,
options.
- The Perils of NMI - NMI is a critical
resource, yet all too often it's misused.
- What Happens at 100Mhz? - At very
high speeds we'll have to change debugging strategies. Here's some ideas.
Sailing Stories
- Sailing stories, linked here by popular demand
Software Processes
- A Matter of Style - We tend to be bad a
living up to promises we make - even to ourselves. It's important to change
the whole approach.
- Awesome Functions
- How to write a clean, tight and bug-free function.
- Bailing Frantically - In panic mode?
You'll never exit it till you take time to stop bailing and plug the
leaks.
- Comments on Commenting
- Rules for creating awesome comments in your code.
- Deconstructing XP
- eXtreme Programming has some fabulous ideas. And some really dumb ones. This
is a review of two XP books.
- Engineering Ethics
- We enginers build systems that profoundly impact people's lives. Strong
ethics are the most important tool we have to keep our customers safe from
misbehaving products.
- Extreme Embedded
- A look at eXtreme Programming.
- Fire
Code for Software - As a collector of software disasters - why is there no
fire code for software?
- Interactive Design - Build your
system incrementally. Here's some tips.
- Jack's Rules of Thumb
- Engineers use rules of thumb to quickly estimate rather than do detailed
calculations. Firmware can benefit from the same idea. Here's a sampling of
such rules.
- Longevity Planning -
Do you have a backup system?
- Measuring Bugs
- If you don't measure bug rates you'll never improve your coding. Besides,
the right measures will accelerate the schedule.
- Momisms - Things your mom should have
taught you
- On Measurements
- Managers chant "If you can't measure it, you can't manage it." What
should we measure in firmware development?
- Picking a CPU - How do you decide
what CPU to use? Here's some factors to consider.
- Programming Style - Programming
style is just as important as any other parameter that goes into
a coding task. Here are a few ideas, rants, and raves.
- Promise Management
- We make lots of promises to our boss, our employees, spouse and children.
Promises are a sort of social currency. Manage them properly or they'll lose
their value.
- Shared Perceptions
- On a stop in Bermuda, Jack meets a wizened ex-developer. Over too many
drinks several interesting lessons emerge.
- Tools For Clean Code
- There are a lot of tools around that will automatically check our code.
Efficient developers automate everything they can. Experts know that firmware
is so expensive that any code-auditing tool is a great thing.
Tools
- A Plea to Compiler Vendors - Compilers miss
the mark on real-time issues
- Beginner's Corner - In-Circuit-Emulators
- A beginner's guide to the best debugging tool of all, the in-circuit
emulator.
- Built-in Debuggers - More and
more processors have built-in debugging resources. Here's a look
at what features they offer.
- C for Microcontrollers - This article
discusses the state of C for controllers circa 1990.
- Embedded Lingos - How do you pick
a language? Here's some thoughts about C++
- Emulators - The basics of the In-Circuit
Emulator
- Java - Ready for Prime Time? - Is Java really the next silver bullet for embedded programming?
- Language Selection - Thoughts on
selecting a programming language
- Oscilloscope Upate - The wise embedded
engineer will be a master of many tools. The scope is one of the
most important.
- Religious Wars - Choosing a programming
language is a place where people often get really dysfunctional.
- The C Blues - C is still a long
way from what we embedded folks need in a language. Here's some
ideas and complaints.
- The Good Guys
- Here are a few great products for managing spam, backups, network security,
and even a cool CAD package.
- The ICE Blues - Using an emulator?
Here are some gotchas to watch out for.
- Tool Quest - Decent tools have
less than zero cost... if you make more than a dollar an hour.
- Tools For Clean Code
- There are a lot of tools around that will automatically check our code.
Efficient developers automate everything they can. Experts know that firmware
is so expensive that any code-auditing tool is a great thing.
The Ganssle Group
PO Box 38346, Baltimore, MD
21231
Tel: 410-504-6660, Fax: 647-439-1454
Email info@ganssle.com
© 2008 The Ganssle Group
|