Problems compiling/configuring for Artemis ATP on linux systems

I have tried to configure/compile Arduino with the Blinky code for my new Artemis ATP board on a x86 Linux desktop (18.04 Ubuntu), a NVIDIA Jetson Nano (stock 64 bit Ubuntu image), and a Raspberry Pi 3+. On all three platforms, there are issues with configuration or compilation. For the x86 Linux, I was able to configure the system for the board but am getting this compilation error:

Arduino: 1.8.9 (Linux), Board: “SparkFun BlackBoard Artemis ATP, 921600, SparkFun Variable Loader (Recommended)”

Board amap3atp (platform apollo3, package SparkFun) is unknown

Error compiling for board SparkFun BlackBoard Artemis ATP.

This report would have more information with

“Show verbose output during compilation”

option enabled in File → Preferences.

On the Jetson Nano and Raspberry Pi systems, I am getting the same Java Runtime error indicating that the system does not have an arm-none-eabi-gcc when I try to load the board configuration with the Board Manager. (Error is: “Tool arm-none-eabi-gcc is not available for your operating system”.) Both systems have workking arm eabi tool chains by the way, but I think something is not right with (I believe) the java download of pre-configured Arduino tool chains?

I was able to at least get a working (through compilation) Arduino environment on all three linux platforms listed above by using the MANUAL installation process of the Arduino_Apollo3-master environment as outlined in the Arduino installation instructions. I also needed to edit the platform.txt file with the ABSOLUTE path to the arm-none-eabi toolchain installed on your system. The toolchain MUST be relatively recent to compile the code. For the Raspberry Pi system, I ended up compiling the latest ARM toolchain (8-2019-q3-updated) on the Raspberry Pi, if sparkfun users are interested I can make this available since it took more than a day to compile. On both the arm platforms (Nvidia and Pi), one must also ‘compile’ the artemis.py script using pyinstaller. I would be willing to document all of this at a later date. However, ONLY THE AMBIQ bootloader at 115200 baud would work to upload code and ONLY on the x86 linux ubuntu desktop. However the upload was somewhat erratic - sometimes working and sometimes giving errors…

Hello Dr. Scott,

Can you provide the compilation error (verbose output) that you receive for the 18.04 Ubuntu platform?

As for the other two platforms I am not surprised that the tools are “unavailable.” This is caused by the configuration of our Arduino Boards Manager Package Index JSON file (found here: https://raw.githubusercontent.com/spark … index.json)

You’ll see that under the “tools” section we are providing a newer version of the ARM gcc tools than those that come with, say, the Arduino SAMD21 boards.

“tools”: [

{

“version”: “8-2018-q4-major”,

“name”: “arm-none-eabi-gcc”,

“systems”: [

{

“host”: “x86_64-apple-darwin”,

“url”: “https://static.sparkfun.com/large/gcc-a … ac.tar.bz2”,

“checksum”: “SHA-256:0b528ed24db9f0fa39e5efdae9bcfc56bf9e07555cb267c70ff3fee84ec98460”,

“archiveFileName”: “gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2”,

“size”: “111430151”

},

{

“host”: “i386-apple-darwin11”,

“url”: “https://static.sparkfun.com/large/gcc-a … ac.tar.bz2”,

“checksum”: “SHA-256:0b528ed24db9f0fa39e5efdae9bcfc56bf9e07555cb267c70ff3fee84ec98460”,

“archiveFileName”: “gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2”,

“size”: “111430151”

},

{

“host”: “i686-linux-gnu”,

“url”: “https://static.sparkfun.com/large/gcc-a … ux.tar.bz2”,

“checksum”: “SHA-256:fb31fbdfe08406ece43eef5df623c0b2deb8b53e405e2c878300f7a1f303ee52”,

“archiveFileName”: “gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2”,

“size”: “107253352”

},

{

“host”: “x86_64-pc-linux-gnu”,

“url”: “https://static.sparkfun.com/large/gcc-a … ux.tar.bz2”,

“checksum”: “SHA-256:fb31fbdfe08406ece43eef5df623c0b2deb8b53e405e2c878300f7a1f303ee52”,

“archiveFileName”: “gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2”,

“size”: “107253352”

},

{

“host”: “i686-mingw32”,

“url”: “https://static.sparkfun.com/large/win32 … -major.zip”,

“checksum”: “SHA-256:93be44e2e12e66eee309370afb4d6c4333cbd09e9ff2cd335942c2910f0b613f”,

“archiveFileName”: “win32_aneg-8-2018_2018-q4-major.zip”,

“size”: “135765494”

}

]

},

Arduino matches the “host” field with the host that it identifies on your platform, and if there are no matches you’ll get the “not available on your platform” error. You could help us expand the list of supported platforms, if you would be willing.

Unfortunately the [Arduino IDE 1.6.x package_index.json format specification is not terribly clear about

a) what options there are for the “host” value

b) how to go about getting the “host” value for a particular IDE installation

I’ve tried to echo several values like “{host}”, “{runtime.host}”, and “{runtime.ide.host}” to no avail.

Maybe the best way to add hosts is yo look at the “package_index.json” file for a core that you know works on the desired platform (Jetson, RPi) and copy the relevant items. Could you provide some known-good host values from a core that works for you?

When adding this support we may also need to consider adding a slightly different binary distribution of the tools, unless the version that we have for Linux will just work directly on RPi and Jetson](Arduino IDE 1.6.x package_index.json format specification · arduino/Arduino Wiki · GitHub)

I understand the basic JSON configuration info and the lack of board support for aarch64 and raspberry pi - I was however able to make those systems work (as far as compilation is concerned.) I am getting the sense however that the sparkfun artemis bootloader has problems in it’s current state based on other user feedback. I assume that the Ambiq bootloader can only ‘work’ with the x86 linux - the upload script would need to be compiled against the other linux platforms? I can work with the x86 linux system for now but would be willing to work with sparkfun engineers to sort out and test arduino artemis programming on the other two platforms. The Artemis platform is a fantastic embedded system and want sparkfun to be successful with it…

Other host values found in Arduino json files:

  1. arm-linux-gnueabihf

  2. aarch64-linux-gnu

When I run ‘gcc-v’ in Raspbian on a Pi Zero W, the target value is the first one listed above.

Hey there, sorry this got buried. Glad to know what additional host values we should support. The bootloader scripts are also provided in source code form - if you want you could change the bootloader recipes in ‘platform.txt’ to call those scripts with your system Python installation. Another option is to use pyinstaller on your desired host system to generate the executable image.

I am logging this request in the Apollo3 Arduino Core Repo here: https://github.com/sparkfun/Arduino_Apo … -555098746