Arduino GIGA R1 WIFI Board Configuration

Hello,

I recently have purchased an Arduino Giga R1 WiFi Board and noticed that there was no board support in the project wizard. Does anyone know when this will be available, if it even will be?

The GIGA variant has been in ArduinoCore-mbed since version 4.0.2-stable, which is also what platform-ststm32 is using,

but there’s no board definition for it yet. That’s an issue tracked in

One could probably create the intermediate support by it by creating a custom board definition, like in Add Arduino Pro Portenta X8 to your supported board list · Issue #639 · platformio/platform-ststm32 · GitHub.

1 Like

I was playing around with the custom board definition, adopted from the Portenta X8 Fork and the board.json of the Arduino Opta. My current boards/giga.json looks like this:

giga.json
{
    "build": {
        "arduino": {
            "ldscript": "linker_script.ld",
            "flash_layout": "100_0"
        },
        "extra_flags": "-DARDUINO_GIGA -DARDUINO_GIGA_PINS -DGIGA_PINS -DGIGA -DCM4_BINARY_START=0x60000000 -DCM4_BINARY_END=0x60040000 -DCM4_RAM_END=0x60080000",
        "core": "arduino",
        "cpu": "cortex-m7",
        "f_cpu": "480000000L",
        "mcu": "stm32h747xih6",
        "variant": "GIGA",
        "product_line": "STM32H747xx",
        "hwids": [
            [
                "0x2341",
                "0x0266"
            ],
            [
                "0x2341",
                "0x0366"
            ],
            [
                "0x2341",
                "0x0466"
            ]
        ]
    },
    "connectivity": [
        "bluetooth",
        "wifi"
    ],
    "debug": {
        "jlink_device": "STM32H747XI_M7",
        "openocd_target": "stm32h7x_dual_bank"
    },
    "frameworks": [
        "arduino"
    ],
    "name": "Arduino Giga R1 Wifi",
    "upload": {
        "_maximum_ram_size": 294248,
        "_maximum_size": 1048576,
        "maximum_ram_size": 523624,
        "maximum_size": 1966080,
        "protocol": "dfu",
        "protocols": [
            "cmsis-dap",
            "dfu",
            "jlink",
            "stlink",
            "mbed"
        ],
        "require_upload_port": true,
        "use_1200bps_touch": true,
        "wait_for_upload_port": true,
        "offset_address": "0x08100000"
    },
    "url": "https://docs.arduino.cc/hardware/giga-r1-wifi",
    "vendor": "Arduino"
}

Unfortunately it’s necessary to modify the platform.py (https:://github.com/platformio/platform-ststm32/blob/develop/platform.py (remove the ::)[sorry for the malformed link. new user == max 2 links in reply]) from ststm32 to detect the giga board.
The line
if board.startswith(("portenta", "opta", "nicla_vision")):
must be changed to
if board.startswith(("portenta", "opta", "nicla_vision", "giga")):

So I think, currently a fork of the ststm32 platform is required. For now I’m fine with the quick and dirty way by editing the local copy of the platform.py (on linux located at ~/.platformio/platforms/ststm32/platform.py)

I will maybe create a pull-request when I’m sure everything works.

Edit: With my board-definition above compilation is almost successful, but there is still an error in the definition of the FLASH-size, I’m getting the error .../arm-none-eabi/bin/ld: invalid length for memory region FLASH. However I copied the values from here: https:://github.com/arduino/ArduinoCore-mbed/blob/main/boards.txt

1 Like

Update:
I created a demo-project here with the board-definition for the Arduino GIGA. You can find it here.

Upload is working fine here, only drawback I noticed so far is, that it’s required to enter bootloader mode manually by double-pressing the the RST-Button.

I hope this helps someone.
Sadly I have no experience with the flash_layout and how to configure platformio to be able to flash the second core, too. Thus I will not create a pull-request, but hopefully my demo-project helps someone to start with creating a proper board-definition.

2 Likes

I’m not sure if this will be helpful to anyone out there, but I’ve also been having issues with PlatformIO and the Arduino GIGA R1 WiFi. I can’t get the include paths to stick in the settings for it for my project, so I can’t get the code sense to stop with the squiggly underlines. Either way, it still won’t build.

Out of frustration, I used Homebrew to install the arduino-cli and was able to successfully build and upload code to the board (I’m on macOS). FWIW, here are the commands I use to build and upload:

Build: arduino-cli compile -b arduino:mbed_giga:giga
Upload: arduino-cli upload -b arduino:mbed_giga:giga -p /dev/tty.usbmodem211301

Of course, change the “/dev/tty.usbmodem211301” to whatever port your GIGA is connected to.

It sure would be nice for the Arduino people to help out with creating/maintaining robust PlatformIO definitions for their boards. I suppose they have their hands full with their own editor and other projects. I really do appreciate the work that the PlatformIO people put into it. Thank you all!

1 Like

Thanks very much for this, a great help.

Flashing (and debugging) via jlink gets over the RST-Button pressing if you have a jlink of some kind hanging around.

I just added to following to platform.ini and amazingly it works:

debug_tool = jlink
upload_protocol = jlink

I thought I had posted here but can’t seem to find it now!

I put in two PR’s to add the Giga R1 Board in:

Hello,
@haschtl i tried your project in platformio but i can not flash the device always get:
No DFU capable USB device available
*** [upload] Error 74
Can somebody help me, i think its a Problem with Windows.

Greetings Marcel

Same problem as @moasel95

  1. do you have drivers installed?
  2. When you open the serial port of the Giga at 1200 baud (with e.g. hterm), does your Giga reappera in bootloader / DFU mode in the windows device manager? (View → Device by container)
  3. have you made this modification in your platform.py so that tool-dfuutil-arduino gets used instead of the regular one?

grafik