[U-Boot-Users] i2c compiling and/or linking problem - solved (for the archive)

Wolfgang Denk wd at denx.de
Fri Feb 11 18:28:04 CET 2005

In message <420CC656.7000309 at web.de> you wrote:
> But ... another assumption of mine ... normally hardware support makes 
> things easier than if there is no hardware support, for noone implements 
> hardware support for something that can be done in software quite 
> simple... or not?

Not in this case. The soft-i2c driver just toggles two port pins with
appropriate busy wait loops to get  the  bit  timings  right.  Really
simple.  For  the  CPM  driver you have to prepare buffers and buffer
descriptors, initialize the CPM's I2C controller, hand  it  over  the
buffer  descriptor(s),  start  the transfer, wait until it gets done,
check for error conditions, etc.

Hardware I2C is OK in Linux, because it is a slow  transfer  and  you
don't  want to keep the CPU in a busy wait loop just to clock out the
bits when you can start a transfer and then wait  for  an  interrupt.
Here  the overhead is payed for by the advantage of being able to run
other more useful things in parallel. U-Boot is  single-threaded,  so
the CPM i2c driver is just a waste of code and programming effort.

Well, to be honest, it may have advantages when reading lots of  data
at  "high"  speeds  (i. e. with a I2C clock >> 100 kHz). Then you may
actually be faster. But when time is critical than  this  is  only  a
workaround  for  the design error of putting time critical data in an
I2C device.

> Okay, the HARD code is twice as long and looks more complicated, but 
> this could - theoretically - also be the fault of the coder, not the 
> hardware.

It ain't so.

> At least believing in and following experts is a good excuse in case you 
> fail (Noone ever got fired for buying IBM - or trusting experts).
> It also saves time - if it works - which it does most time.


Best regards,

Wolfgang Denk

Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Philosophy:  A route of many roads leading from nowhere to nothing.
- Ambrose Bierce

More information about the U-Boot mailing list