Toolchain-gccarmnoneeabi header issues

Hello, i am getting the following error while compiling in my Macbook M1
Users/$$$$$/.platformio/packages/toolchain-gccarmnoneeabi@1.70201.0/arm-none-eabi/include/termios.h:4:10: fatal error: sys/termios.h: No such file or directory

When i check in the sys folder of toolchain-gccarmnoneeabi indeed there is no termios.h file, but i do have one in my OS (which has different identifiers)

I checked and i have Rossetta installed, so i don’t think it’s related to that. Any ideas?

Mhmm okay I get an idea of why that is now. The file is in gd2-lib/spidriver.cpp at master · jamesbowman/gd2-lib · GitHub. I think the entire pc/ folder should not be compiled for an embedded target.

In the compilation log, do you see PlatformIO trying to compile anything from that pc/ folder, like spidriver.cpp?

Yes exactly! that file is the problem. I am still not using the arduino board, i am just trying to see if it compiles but it gives me that error

With what microcontroller are you using that Gameduino 2 “shield”? Based on your post it must be an ARM based one (Teensy X), but which board = .. do you have selected in the platformio.ini?

I have “due” board selected. The project is very very poorly documented. Some of the other platformio.ini files even had a “duelow” and “duehigh” boards that i replaced with “due” because i could’t find any boards with those names

Well yes the problem is that PlatformIO is trying to compile a file that should not be compiled for the embedded target (anything in PC).

Usually a library has a library.json (Redirecting...) that controls such build options. I have created a library.json with

{
  "name": "gd2-lib",
  "version": "1.3.4",
  "repository":
  {
    "type": "git",
    "url": "https://github.com/jamesbowman/gd2-lib.git"
  },
  "build": {
    "srcDir": ".",
    "srcFilter": "+<*> -<**/pc>"
  }
}

that works around this problems and allowed me to compile for a Teensy.

A Due is a different story. The library / examples e.g. need EEPROM.h, which is not available by default in the Due’s Arduino core (but fill-in libraries like GitHub - PhiJu5/DueFlashStorage: Due EEPROM emulation exist, but they use a different header name). Did you already encounter / solve that?

If the original platformio.ini referenced duehigh and duelow then there must be a duelow.json etc. JSON file somewhere. Is that there?

1 Like

For reference, when I do

[env:teensy40]
platform = teensy
board = teensy40
framework = arduino
lib_deps =
   https://github.com/maxgerhardt/gd2-lib

with a src/main.cpp filled with the content of gd2-lib/helloworld.ino at master · jamesbowman/gd2-lib · GitHub, it compiles.

Calculating size .pio\build\teensy40\firmware.elf
Building .pio\build\teensy40\firmware.hex
teensy_size: Memory Usage on Teensy 4.0:
teensy_size:   FLASH: code:24812, data:2968, headers:9080   free for files:1994756
teensy_size:    RAM1: variables:3680, code:23104, padding:9664   free for local variables:487840
teensy_size:    RAM2: variables:12384  free for malloc/new:511904
============================================= [SUCCESS] Took 1.39 seconds =============================================

I’ll try with that library.json trick

I see i’m going trhough the path my predessesor went through. He actually forked that Repo and made this one. And i already installed that.

This project had different github repos for each part of the project. Now i am just trying to compile the “OS” that was created. Other repos did have a platformio.ini, and some of those had a “duelow” board selected. But the one i am trying to compile had no more files than the .cpp and .h

Okay, I definitely got the hello world example compiling for a Due with the latest library version. The EEPROM.h include was just from an example which didn’t need it after all. What was holding it back was a type conversion error for SPI.transfer() between a char* and a byte* (aka unsigned char*).

With

[env:due]
platform = atmelsam
board = due
framework = arduino
lib_deps =
   https://github.com/maxgerhardt/gd2-lib

I can get the hello-world.ino example linked above but without the #include <EEPROM.h> line to build correctly.

Linking .pio\build\due\firmware.elf
Checking size .pio\build\due\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   2.8% (used 2728 bytes from 98304 bytes)
Flash: [          ]   2.9% (used 15436 bytes from 524288 bytes)
Building .pio\build\due\firmware.bin
============================================= [SUCCESS] Took 11.49 seconds =============================================

My fork already includes the library.json which ignores the pc/ folder.

1 Like

Yeah, i think that did the trick. I’m not 100% sure just because now there are other issues coming up. Let me check again

Yes, i think it worked. There’s just so many instalation issues. It’s asking me for dependencies i already installed. This is too much for a platformio/arduino newbie.

But i think we got this issue fixed. Thanks again!!

Do you have the source code for the application and the target board & version information / original files / libraries uploaded somewhere? Or they publishable?

1 Like

It’s actually a private repository. I think i am going to have to find the previous developer because now i just found out he defined a debug.h file that isn’t anywhere and is super integrated in the code.

But even if i could send you the code it does give much information. I think i have conceptual things i need to understand about platformio and arduino, but if i can boil them down to a question ill surely post it here

1 Like