Skip to content
Brent Seidel edited this page Mar 5, 2017 · 7 revisions

Wiki for my Ada Embedded Library

Welcome to the Wiki for my Ada library for accessing bits of embedded computers. This library originally started out as a way to access some of the bits of my BeagleBone Black computer. It has been expanded a bit since I got a Raspberry Pi 3. It will probably work on other Linux based embedded computers. At some point I would like to get it to work on bare embedded computers such as the Arduino Due.

Note that each embedded computer has its own set of devices so just because the code compiles your program may not work. On Linux, if the devices are present, porting should be just making sure that the device files are present and correct.

##Note At this point, this library should not be considered to be "production quality" in any way. You're welcome to use it at your own risk, but it may be more useful as examples of how to accomplish things. This is one thing that I missed when developing this library.

The library has grown rather than having an initial grand design. As a result there are some vestiges of old non-object oriented software from my initial testing. The naming may not be entirely consistent. This should eventually be cleaned up.

##Architecture I am in the process of restructuring the library in order to make it easier to port to non-Linux devices. Currently only SPI and GPIO have been converted.

Everything in this library is in the BBS.embed package. This package contains a few definitions that are common to most of the other elements in this library.

Each of the basic SOC device classes has an abstract base class that defines the operations expected for any device. Then there is a concrete class for anything that implements this. Currently, the only supported architecture is linux. Thus, for example:

Abstract Class Concrete Class
BBS.embed.GPIO BBS.embed.GPIO.Linux

In your software, you would define your variables as the abstract class type and then use the concrete class to initialize the object. Then when porting your software, all you should need to do is to change the initialization code.

Some of the devices, particularly I2C and SPI, can have other devices that depend on them. The collection of supported devices mainly depends on my own interests. I can only afford the time and money to play with a limited number of toys.

The table below needs to be updated to include all the supported devices and links to information about using that device.

Device BeagleBone Black Raspberry Pi 3
AIN Present Not Present
GPIO Present Present
I2C Present Present
LED Present Not Present
PWM Present Not Present
SPI Present Present
Clone this wiki locally