Re: Hardware Abstraction
- From: "Arlet" <usenet+5@xxxxxxxxxxxxxxxxx>
- Date: 28 Nov 2006 05:59:07 -0800
Rocky wrote:
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.
Sure, but if you have a "uart" abstraction, and an "I2C" abstraction,
and you build those directly on the hardware ports, you're not using a
GPIO abstraction, which was my point.
Abstracting a UART or I2C makes sense. The interface is fairly small,
and relatively well-defined.
For other interfaces, such as GPIOs, but also timers, it's virtually
impossible to define a generic model that can be ported to all kinds of
hardware, but still allows you to exploit all the little optimizations
and features that the MCU may have.
.
- References:
- Hardware Abstraction
- From: Vladimir Vassilevsky
- Re: Hardware Abstraction
- From: Michael N. Moran
- Re: Hardware Abstraction
- From: Arlet
- Re: Hardware Abstraction
- From: Rocky
- Hardware Abstraction
- Prev by Date: Re: Hardware Abstraction
- Next by Date: Re: Hardware Abstraction
- Previous by thread: Re: Hardware Abstraction
- Next by thread: Re: Hardware Abstraction
- Index(es):
Relevant Pages
|