Categorising Arduino libraries

Hi, I am curious about categorising Arduino libraries into Low Level, Middle-ware and Application Software and Firmware.

Suppose if we take an example of a firmware that can talk to any devices with I2C protocol. We have a Controller, Wire Library and the Firmware/Application. So where the low level and middle-ware comes into picture here?

Arduino core = low level
I2c, SPI, CAN libraries = middleware
your sketch = firmware

I would say:

  • "Wire" library (I2C support): low level - "abstracts" chip-specific I2C control registers to a common API for exchanging raw data.)
  • Individual I2C chip libraries (eg i2C EEPROM, i2c digital pot, i2c accellerometer, etc): middleware. - using the "Wire" abstraction, access a particular type of I2C chip and make its data available in easy-to-use form.
  • Firmware: all of it. Your "sketch", plus chip library, plus Wire.

@westfw Well explained, got an idea.

@b707 thank you for your input

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.