I am trying to setup caravel_board on 5 platforms: ubuntu, lubuntu, simply-linux/altlinux, macOS and Windows/WSL-Ubuntu. So far I was able to do everything under Ubuntu just fine, but I have an issue under under MacOS:
1. First it did not find pyftdi.
2. Then it did not let me to install pyftdi because of "managed environment" so I created a virtual environment:
python3 -m venv my-venv
source my-venv/bin/activate
python3 -m pip install pyftdi
make clean flash
3. It gave me the following errors at the end:
yuri_panchul@Mac blink % make clean flash
rm -f *.elf *.hex *.bin *.vvp *.vcd
#riscv32-unknown-elf-gcc -O0 -march=rv32i -Wl,-Bstatic,-T,../sections.lds,--strip-debug -ffreestanding -nostdlib -o blink.elf ../start.s ../print_io.c blink.c
riscv64-unknown-elf-gcc -I../ -I../generated/ -O0 -mabi=ilp32 -march=rv32i_zicsr -D__vexriscv__ -Wl,-Bstatic,-T,../sections.lds,--strip-debug -ffreestanding -nostdlib -o blink.elf ../crt0_vex.S ../isr.c ../stub.c blink.c
riscv64-unknown-elf-objdump -D blink.elf > blink.lst
riscv64-unknown-elf-objcopy -O verilog blink.elf blink.hex
sed -ie 's/@1000/@0000/g' blink.hex
python3 ../util/caravel_hkflash.py blink.hex
Traceback (most recent call last):
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/../util/caravel_hkflash.py", line 7, in <module>
from
caravel.hk import HKSpi
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/util/caravel/hk.py", line 1, in <module>
from .find_ftdi import find_ftdi
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/util/caravel/find_ftdi.py", line 2, in <module>
from pyftdi.ftdi import Ftdi
ModuleNotFoundError: No module named 'pyftdi'
make:
* [flash] Error 1
rm blink.elf
yuri_panchul@Mac blink % python3 -m venv my-venv
yuri_panchul@Mac blink % source my-venv/bin/activate
(my-venv) yuri_panchul@Mac blink % python3 -m pip install pyftdi
Collecting pyftdi
Using cached pyftdi-0.56.0-py3-none-any.whl.metadata (3.2 kB)
Collecting pyusb!=1.2.0,>=1.0.0 (from pyftdi)
Using cached pyusb-1.3.0-py3-none-any.whl.metadata (2.5 kB)
Collecting pyserial>=3.0 (from pyftdi)
Using cached pyserial-3.5-py2.py3-none-any.whl.metadata (1.6 kB)
Using cached pyftdi-0.56.0-py3-none-any.whl (145 kB)
Using cached pyserial-3.5-py2.py3-none-any.whl (90 kB)
Using cached pyusb-1.3.0-py3-none-any.whl (58 kB)
Installing collected packages: pyserial, pyusb, pyftdi
Successfully installed pyftdi-0.56.0 pyserial-3.5 pyusb-1.3.0
(my-venv) yuri_panchul@Mac blink % make clean flash
rm -f *.elf *.hex *.bin *.vvp *.vcd
#riscv32-unknown-elf-gcc -O0 -march=rv32i -Wl,-Bstatic,-T,../sections.lds,--strip-debug -ffreestanding -nostdlib -o blink.elf ../start.s ../print_io.c blink.c
riscv64-unknown-elf-gcc -I../ -I../generated/ -O0 -mabi=ilp32 -march=rv32i_zicsr -D__vexriscv__ -Wl,-Bstatic,-T,../sections.lds,--strip-debug -ffreestanding -nostdlib -o blink.elf ../crt0_vex.S ../isr.c ../stub.c blink.c
riscv64-unknown-elf-objdump -D blink.elf > blink.lst
riscv64-unknown-elf-objcopy -O verilog blink.elf blink.hex
sed -ie 's/@1000/@0000/g' blink.hex
python3 ../util/caravel_hkflash.py blink.hex
Traceback (most recent call last):
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/../util/caravel_hkflash.py", line 22, in <module>
with HKSpi(uart_enable_mode=HKSpi.UART_DISABLE) as hk:
~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/util/caravel/hk.py", line 18, in
init
ftdi_device = find_ftdi()
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/util/caravel/find_ftdi.py", line 10, in find_ftdi
return find_only_ftdi()
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/util/caravel/find_ftdi.py", line 20, in find_only_ftdi
Ftdi.show_devices(out=s)
~~~~~~~~~~~~~~~~~^^^^^^^
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/my-venv/lib/python3.13/site-packages/pyftdi/ftdi.py", line 377, in show_devices
devdescs = UsbTools.list_devices(url or 'ftdi:///?',
cls.VENDOR_IDS, cls.PRODUCT_IDS,
cls.DEFAULT_VENDOR)
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/my-venv/lib/python3.13/site-packages/pyftdi/usbtools.py", line 261, in list_devices
candidates, _ = cls.enumerate_candidates(urlparts, vdict, pdict,
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
default_vendor)
^^^^^^^^^^^^^^^
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/my-venv/lib/python3.13/site-packages/pyftdi/usbtools.py", line 405, in enumerate_candidates
devices = cls.find_all(vps)
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/my-venv/lib/python3.13/site-packages/pyftdi/usbtools.py", line 93, in find_all
devs.update(UsbTools._find_devices(vid, pid, nocache))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/my-venv/lib/python3.13/site-packages/pyftdi/usbtools.py", line 582, in _find_devices
backend = cls._load_backend()
File "/Users/yuri_panchul/projects/caravel_board/firmware/chipignite/blink/my-venv/lib/python3.13/site-packages/pyftdi/usbtools.py", line 649, in _load_backend
raise ValueError('No backend available')
ValueError: No backend available
make:
* [flash] Error 1
rm blink.elf
(my-venv) yuri_panchul@Mac blink %