No ICE, please

In-circuit emulator, a.k.a. ICE; I hate it. They are expensive, bulky, often unstable, and embellished with exotic and awkward interface.

In my experience of bringing up boards, I used ICE only once. In other cases, I used my simple ROM monitor program as an initial test and a primitive loader.

Many companies do not have an engineer (it must be ONE engineer, not a group of engineers) who can prepare a such simple program. For such companies, their way is the in-circuit emulator.

However in-circuit emulator is useless and dangerous because

– It is often unstable by itself, only adds complexity.
– It is expensive. You can buy only a few.
– Inflexible and strange interface designed by those kind of people.

My choice is a simple command line monitor. It has only limited functions, such as,

– memory dump
– UART initialization
– DDR initialization
– S-record download

Don’t make it larger than this. It is small, so it won’t have a bug. It is brought up on the day when the board is in. Once this program is up, the expensive in-circuit emulator is no use. You should bring up nicer loader such as U-boot next, then this monitor’s job is over.

I have to confess when in-circuit emulator was useful for me.  That was when the board was messed up in the bus for the boot ROM, and the fetched instruction was broken. In-circuit emulator printed the instructions, clearly showing what was broken. It would have been hard to show that fact in other ways.

However I have never used any fancy functions; such as ROM writing event trigering, tracing, etc. All of those can be done by software if you have one good software engineer.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s