Home
Seminars
Free Newsletter
Back Issues
Jack's Books
Jack's Articles
Contact Us

 
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

Category

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

Math

  • Embedded Trig - Here's some algorithms to make it easier to compute complex trig functions.

Memory

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