RIOT policy on hardware support without example board

Hello all,

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).

Sincerely, Matthew

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

Best regards, Joakim

Hello Joakim,

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.

Sincerely, Matthew

Hi again,

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.

/Joakim

Hi all,

I think this board would come close: it features the ATmega1284P with an RTC: https://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=ATMEGA1284P-XPLD.

Hi everyone,

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.

Sincerely, Matthew

Hi Matthew, I already ported the atmega1284p to RIOT:

https://github.com/RIOT-OS/RIOT/pull/7604

Best Regards, Robert

Robert,

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.

You can see the RTT implementation here: https://github.com/ZetaR60/RIOT/blob/master/cpu/atmega_common/periph/rtt.c

Still requires a bit more testing though.

Sincerely, Matthew