Uploading to my Arty board not working

(damian) #1

I’ve built the Arty E300 and flashed the board using Vivado. Now I have 3 leds on. LD6 turns off if I press BTN3 and LD4 turns off when I press ck_rst red button. Now I’m trying to upload the SDK example and I get this (with or without sudo)

Open On-Chip Debugger 0.10.0-dev-g9bab078 (2017-02-03-12:05)
Licensed under GNU GPL v2
For bug reports, read
adapter speed: 10000 kHz
Info : auto-selecting first available session transport “jtag”. To override use 'transport select '.
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6010, description ‘Dual RS232-HS’, serial ‘’ at bus location '

This is what I see with lsusb:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

This is a virtual machine and I have the USB device mapped into the VM, it does work with Vivado so I don’t know what is going on here. Any help is appreciated :slight_smile:

How to upload peograms to Arty 7 and debug by jtag interference?
(Megan A. Wachs) #2

It looks like it is trying to use the HiFive1 configuration file. Can you run your command with the BOARD set to freedom-e300-arty, for example:

make upload BOARD=freedom-e300-arty

(Megan A. Wachs) #3

Also, do you have the Olimex debugger attached? I do not see it on the lsusb output. The debugger uses a seperate USB interface than the Vivado and Serial communication.

(damian) #4

Looks like reading the getting started guide for the Arty would have helped :slight_smile: I’ve found the project through github and there was no mention of the guide in the readme, I’ve found it now. I don’t have an Olimex debugger, I’ll get one. Thanks for the quick response!

(Harry Ahn) #5

This reminds me a thought i had. It will be very nice if we had a bootloader that can be used to flash over serial. Not only would people would not have to have a separate debugger but a universal way to flash on different FPGA boards. I think it would make life easier for everyone.

(damian) #6

BTW I also don’t see anything coming out of the serial I have with the regular USB connection in the board, but it looks like I need the Olimex for that too?

I wonder why the serial and JTAG that come with the Arty can’t be used as I can do if I put a Microblaze there and use the Xilinx SDK…

(Harry Ahn) #7

Did you set the correct serial port settings?
JTAG on Arty Board can not be rerouted into the softcore. I think.

(Megan A. Wachs) #8

You do not need an Olimex for the Serial. You may need to properly set your permissions to see the output (or use sudo). This is described in the Getting Started Guide as well.

The Serial & JTAG on the Artix FPGA are hard-wired to their functionality, and user image doesn’t have access to those pins. That is why we have to use a user-accessible port for our soft core’s debug interface.

Agreed that a serial bootloader would be very useful. Contributions welcome!

(damian) #9

I’m using sudo and opening with screen as the guide says, but nothing comes out of the serial when I reboot the board. As I can’t flash it for now the software it has is whatever comes with by default as I described in my original post, I’m not sure if that has serial output though.

(Megan A. Wachs) #10

The SW that comes as part of the MCS (loaded with Vivado) will print one message after reset. So you need to launch screen/minicom, and then press ‘reset’ to see the message.

What screen command are you using?

(damian) #11

sudo screen /dev/ttyUSB1 115200
I also tried minicom

(damian) #12

I now tried the image from the web and that one works. The one I built locally doesn’t turn the multicolor led on and nothing comes out of the serial port. It only does what I described in the original post with the green leds and buttons. Why would my build be broken?

(Megan A. Wachs) #13

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

See this part of the FPGA build Makefile:


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

E300 on Arty not working
Freedom Studio on Linux
A non-working mcs file generated for e300artydevkit
(damian) #14

Makes sense, I’ll give it a try, thanks!

(Achirei Stefan) #15

Hello all,

I am facing exactly the same problem, when I program the FPGA with the .mcs example file downloaded from the website it works just fine printing the message over to the serial interface. But when I use the .mcs file no output is printed, the Makefile is like in the picture above and I didn’t quite followed how to solve the problem (there is no /toolchain folder in freedom-e-sdk and I just finished building the tools :expressionless: ).

lsusb command:

Bus 002 Device 008: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
Bus 003 Device 005: ID 15ba:0004 Olimex Ltd. OpenOCD JTAG TINY

make upload PROGRAM=demo_gpio BOARD=freedom-e300-arty command:

Error: no device found
Error: unable to open ftdi device with vid 15ba, pid 0004, description ‘Olimex OpenOCD JTAG ARM-USB-TINY-H’, serial ‘’ at bus location '

I have modified the .cfg file from
ftdi_vid_pid 0x15ba 0x002a
to ftdi_vid_pid 0x15ba 0x0004

Also from the Eclipse based IDE I get this error when running the Blinky program:

Info : auto-selecting first available session transport “jtag”. To override use 'transport select '.
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6010, description ‘Dual RS232-HS’, serial ‘’ at bus location '

Is it possible that openOCD does not work properly? Thanks

(Megan A. Wachs) #16

You need to run the upload step with BOARD=freedom-e300-arty. It looks like it is trying to find the HiFIve1 board.

make upload BOARD=freedom-e300-arty PROGRAM=demo_gpio

for example.



first of all very great work all in all :slight_smile:
I have also problems uploading new Code via the Olimex ARM-USB-TINY-H Adapter.
I am able to flash the FPGA with included software in the mcs file with:

When i try this with the olimex adapter:

I get the following output:

Do you have any idea, how to solve this?

Thank you


(Donnie Agema) #18

I´ve seen the “all ones” failure mentioned here. I thiink you need to check the wiring between the Olimex and the Arty.

(pengnainqi) #19


This question have solved ? If yes,please tell me how to do that ! Thanks very much !


I encountered the same problem.

After setting default flashed program and regenerating MCS (just deleted generated MCS, not recompile from RTL ), the new MCS just working as good as official released bitstream.

Can someone explain this magic? the previous MCS has the name “E300ArtyDevKitFPGAChip.mcs”, but the new one changed to “sifive.freedom.everywhere.e300artydevkit.E300ArtyDevKitConfig.mcs”. I didn’t change anything in Makefile excepted setting FLASHED_PROGRAM.

#Just wonder why don’t you update the source code.