I am building mesh networking sensor arrays for agriculture, and I am
working on RIOT as an operating system for them. I have a number of
bits of hardware that I need to write support for and I would like to
contribute that back to RIOT. However, since this is ag equipment
designed to be deployed in large quantities, I expect that it will not
really be available for developers other than myself to test on.
What is the RIOT community's policy on submitting support for things
like CPUs and peripherals without a board implementing them? I intend to
support what I contribute into the foreseeable future. I suspect that
having hardware already supported will influence future board designs
if they are intended to run a system like RIOT (it influenced some of
my design choices).
Some of the specific bits I intend to add are the ATmega1284P MCU, the
TCA9539 I2C GPI expander, and the ADS1015 ADC (and variants).
Hi Matthew,
Generally, everything in the main repository should be covered by the
automatic compilation tests performed by the CI system, which is why
all CPUs must have at least one board using them. Perhaps you have
some development board which uses the same CPU that you can add a
basic configuration for? A board configuration can be quite simple if
you only need the basic features, and should not take a lot of effort
to produce. Maybe there is an Arduino board or similar which uses the
same CPU?
The drivers for TCA9539 and ADS1015 can be integrated in the main repo
as long as there is a simple test program for them so that they are
built by the CI, and so that they can be tested on actual hardware
with only adding the pin/bus configuration for the experiment setup.
See the existing tests for some drivers in the main repo e.g.
tests/driver_ina220
I do have such a board: the board I am developing for. I also already
have it ported and passing many of the manual tests. However, my concern
is that I do not anticipate this board being generally available,
because of the kind of product it is going to be in. Is it okay for me
to be the only developer with access to a board in the main repository?
I assumed that others would wish everything in /boards to be generally
available. However, adding it to the main repository would allow the CI
system to run automated tests against its peripherals.
There are other boards using the same MCU, but they do not have the
peripherals that my board has. For instance, I have almost finished RTT
support for the ATMegas, but none of the Arduinos breaks out the pins
that would allow you to add a 32kHz crystal.
Is there no readily available commercial dev boards which feature an
RTC crystal? Generally, boards in the main repo have to be available
commercially or at least accessible for a large number of users
(IoT-lab boards for example are only available in the IoT-lab test
sites, but they are open to the public). I don't think your custom dev
board will be accepted unless you are selling it, at least in small
volumes, so that other users may benefit from the board config. It may
be easier to just find some pre-made dev board which have similar
peripheral set up and add a configuration for that to be able to add
the CPU.
Is it sufficient to have a RTC-only board with the ATmega1284P, and not
have any example board with the other peripherals (that is, only a
test application for each)? I think earlier I misinterpreted Joakim's
answer to mean that there had to be a board for each peripheral rather
than just a test application. It would be prohibitive to find a board
for each peripheral. I can set up another board just for the MCU and
RTC, like the one Bas suggested.
I saw your port, unfortunately after I had already written mine. I did
base my RTT code on your partial implementation. I thought that the PR
was not active, since it has been waiting for about 6 months for PR
#1610.