Go Down

Topic: Library.properties architectures=samd? (Read 631 times) previous topic - next topic

scswift

Does anyone know how the IDE decides what architecture a particular board uses for the library properties file? Like, is it defined in the board files somewhere, or does it just use the hardware/samd directory the board files are in to decide the board is using the samd architecture?

pert

Board architecture is determined by the name of the architecture folder of the hardware package. If you change the architecture folder name the architecture value changes.

scswift

That's what I thought, but my Tau boards have a "samd" folder and a customer informed me the I2S library which requires samd isn't showing up for his board in the IDE.

I told him he could change that line in the library properties to a * to work around the issue, but I'd like to know why it's happening in the first place!

pert

If you can post a link to your hardware package and explain what you mean by "isn't showing up" I'll take a look at it.

chrissv

I can chime in here, as I am said customer :-)

The board is a Rabid Prototypes Tau board, defined by this JSON board manager URL:

http://rabidprototypes.com/arduino/package_rabidprototypes_index.json

I am using Arduino 1.8.4, and I also installed (using the Library Manager) the "ArduinoSound" library (search for "I2S")

Starting a new sketch, I selected the board type "Arduino/Genuino Zero (Native USB Port)."
I see the I2S library available ("Sketch..." -> "Include Library..." - I see I2S in the list)

Now change the board type to "Rabid Prototypes Tau (Native USB Port)."
Now I2S is no longer in the library list ("Sketch..." -> "Include Library...")

That is the problem scenario.

-- Steven

pert

The problem is the Rabid Prototypes SAMD Boards hardware package does not contain an I2S library. The libraries bundled with a hardware package are only seen by the Arduino IDE when one of the boards of that package are selected from the Tools > Board menu. Although you can reference some package components from another package, this is not possible with the bundled libraries. Rabid Prototypes would need to bundle their own copy of the I2S library to make it accessible.

Assuming the Arduino SAMD Boards I2S library will work on the Tau board, a workaround for this is to copy the I2S library from the Arduino SAMD Boards package to the libraries subfolder of your sketchbook. You can easily locate the I2S library as follows:
  • Tools > Board > Arduino/Genuino Zero
  • File > Examples > I2S > InputSerialPlotter
  • Sketch > Show sketch folder

That will open the libraries/I2S/examples/InputSerialPlotter folder. The root folder of the library (I2S) is two folder levels up.

You can find the location of your sketchbook at File > Preferences > Sketchbook location.

Note that libraries in the sketchbook folder have include precedence over the ones in the hardware package. So if the library is added to a future release of the Rabid Prototypes SAMD Boards hardware package you should remove the library from your sketchbook so that you will receive the benefits of any improvements that might be made in later releases of the library.

scswift

It appears the reason for this is that the I2S library wasn't added to the samd until recently. I checked the directories for a couple other vendors with samd chips that I had installed and they too were older versions that were missing the I2S library.


Go Up