Re: Hardware Abstraction
- From: "Rocky" <robert@xxxxxxxxxxx>
- Date: 28 Nov 2006 05:37:47 -0800
Arlet wrote:
Michael N. Moran wrote:For this particular example it is actually extremely nice to abstract
Vladimir Vassilevsky wrote:
Hello All,
I am looking for a concept for abstracting of a hardware. It is desired
that the concept should be convenient, clear, consistent, logical and
pretty universal.
I find that when abstracting hardware, like any other abstraction,
it is useful and important to separate the construction/initialization
and mode selection from the abstract interface that is used during
most of the application life cycle.
To use a GPIO pin as an example, a bit-banging application can
generally perform two operations:
setHIGH()
setLOW()
The initialization, that selects mutiplexed function routing,
direction, open-drain operation and other configuration belongs
to another interface that is most likely not abstract.
What if I need to dynamically change pin properties ? For instance,
bitbanging an I2C port may involve changing SDA/SCL from input to
output on some architectures.
the routine. I have used the same 'main I2C' library for the Z80, 8032
and the PIC with calls to five funtions.
SDA_LO,SDA_HI,SCL_LO,SCL_HI and SDA_IN. The benefit of doing this is
that it was easy to change hardware and only these 5 short functions
changed. It also made changing timing requirements simple. (In a lot of
cases the call and return added enough delay to eliminate extra delays)
What if 8 of those GPIO pins are available on the same port, and I needI think this would be an even better example of why abstraction would
to access them simultaneously, for instance to access an 8 bit
peripheral ?
be good. Abstraction could even be a macro in the hardware header.
What if precise timing is required, for instance bitbanging a UARTI have been abstracting whole uart routine to the hardware file. For Tx
peripheral ?
it reads a circular transmit buffer and for Rx it write to one. The
'main' routine just polls the buffer to check for characters.
Frankly, I don't see where providing an abstraction for a single GPIO
pin is going to make life easier. There are just too many variations in
hardware capabilities, and application requirements. Even if you could
design a model, it would probably be slow and bloated, and a much
bigger hassle than just accessing the hardware ports directly.
It is a bigger hassle to start with - until a hardware change is needed
and then there is only one place you need to look when making the
changes.
Regards
Rocky
.
- Follow-Ups:
- Re: Hardware Abstraction
- From: Arlet
- Re: Hardware Abstraction
- References:
- Hardware Abstraction
- From: Vladimir Vassilevsky
- Re: Hardware Abstraction
- From: Michael N. Moran
- Re: Hardware Abstraction
- From: Arlet
- Hardware Abstraction
- Prev by Date: Re: which object orient language is most suitable for embedded programming?
- Next by Date: Re: Hardware Abstraction
- Previous by thread: Re: Hardware Abstraction
- Next by thread: Re: Hardware Abstraction
- Index(es):
Relevant Pages
|