Uploading to my Arty board not working

Ah, makes sense. I didn’t register that you were compiling from scratch!

See this part of the FPGA build Makefile:

https://github.com/sifive/freedom/blob/master/fpga/e300artydevkit/Makefile#L9

When we built the image that’s posted online, we used the FLASHED_PROGRAM variable to include a binary version of demo_gpio from the Freedom E SDK

This requires a binary format (slightly different than the actual ELF file that Freedom E SDK creates). You can generate it from the ELF with objcopy also installed as part of the SDK:

freedom-e-sdk/toolchain/bin/riscv32-unknown-elf-objcopy -O binary input.elf output.bin