Log: Glasgow update 2024-06-24 22:15 C:\Code\clone>git -C glasgow pull remote: Enumerating objects: 283, done. remote: Counting objects: 100% (283/283), done. remote: Compressing objects: 100% (184/184), done. remote: Total 283 (delta 109), reused 237 (delta 97), pack-reused 0 Receiving objects: 100% (283/283), 622.90 KiB | 2.92 MiB/s, done. Resolving deltas: 100% (109/109), completed with 4 local objects. From https://github.com/GlasgowEmbedded/glasgow bf784b99..93400d66 main -> origin/main + b8d425c7...dc9f6a84 gh-pages -> origin/gh-pages (forced update) Updating bf784b99..93400d66 Fast-forward .github/workflows/main.yml | 13 ++- CODEOWNERS | 28 +++---- examples/boilerplate.py | 2 +- firmware/fpga.c | 77 +++++++++-------- firmware/glasgow.h | 2 +- software/glasgow/access/__init__.py | 38 ++++----- software/glasgow/access/direct/multiplexer.py | 65 ++++++++++----- software/glasgow/access/simulation/multiplexer.py | 12 ++- software/glasgow/applet/__init__.py | 3 +- software/glasgow/applet/audio/dac/__init__.py | 2 +- .../glasgow/applet/audio/yamaha_opx/__init__.py | 4 +- software/glasgow/applet/control/servo/__init__.py | 8 +- .../glasgow/applet/display/hd44780/__init__.py | 2 +- software/glasgow/applet/display/pdi/__init__.py | 4 +- .../glasgow/applet/interface/analyzer/__init__.py | 2 +- .../applet/interface/i2c_initiator/__init__.py | 2 +- .../applet/interface/i2c_target/__init__.py | 2 +- .../applet/interface/jtag_openocd/__init__.py | 74 +++++++++++------ .../applet/interface/jtag_pinout/__init__.py | 2 +- .../applet/interface/jtag_probe/__init__.py | 72 +++++++++------- .../glasgow/applet/interface/ps2_host/__init__.py | 38 ++++----- .../glasgow/applet/interface/sbw_probe/__init__.py | 8 +- .../applet/interface/spi_controller/__init__.py | 8 +- .../applet/interface/spi_flashrom/__init__.py | 2 +- .../applet/interface/swd_openocd/__init__.py | 12 +-- software/glasgow/applet/interface/uart/__init__.py | 22 ++--- software/glasgow/applet/memory/_25x/__init__.py | 2 +- software/glasgow/applet/memory/floppy/__init__.py | 2 +- software/glasgow/applet/memory/onfi/__init__.py | 4 +- software/glasgow/applet/memory/prom/__init__.py | 10 +-- .../glasgow/applet/program/avr/spi/__init__.py | 2 +- .../glasgow/applet/program/ice40_flash/__init__.py | 4 +- .../glasgow/applet/program/ice40_sram/__init__.py | 4 +- software/glasgow/applet/program/m16c/__init__.py | 4 +- .../glasgow/applet/program/nrf24lx1/__init__.py | 2 +- software/glasgow/applet/radio/nrf24l01/__init__.py | 2 +- software/glasgow/applet/sensor/hx711/__init__.py | 2 +- software/glasgow/applet/sensor/pmsx003/__init__.py | 2 +- .../glasgow/applet/video/hub75_output/__init__.py | 2 +- .../glasgow/applet/video/rgb_input/__init__.py | 2 +- .../glasgow/applet/video/vga_output/__init__.py | 11 +-- .../glasgow/applet/video/ws2812_output/__init__.py | 2 +- software/glasgow/device/firmware.ihex | Bin 34918 -> 34908 bytes software/glasgow/device/hardware.py | 2 +- software/glasgow/gateware/__init__.py | 2 +- software/glasgow/gateware/fx2_crossbar.py | 43 +++++----- software/glasgow/gateware/i2c.py | 24 ++++-- software/glasgow/gateware/lfsr.py | 12 +-- software/glasgow/gateware/pads.py | 13 ++- software/glasgow/gateware/uart.py | 8 +- software/glasgow/platform/all.py | 2 - software/glasgow/platform/generic.py | 92 +++++++++++++++++++++ software/glasgow/platform/ice40.py | 22 +---- software/glasgow/platform/rev_ab.py | 4 +- software/glasgow/platform/rev_c.py | 12 +-- software/glasgow/target/hardware.py | 29 ++++--- software/pdm.min.lock | 31 ++++++- software/pdm.toml | 2 - software/pyproject.toml | 2 +- software/tests/gateware/test_i2c.py | 4 +- software/tests/gateware/test_uart.py | 6 +- software/tests/support/test_endpoint.py | 5 +- 62 files changed, 520 insertions(+), 356 deletions(-) delete mode 100644 software/glasgow/platform/all.py create mode 100644 software/glasgow/platform/generic.py delete mode 100644 software/pdm.toml C:\Code\clone>pipx reinstall glasgow uninstalled glasgow! ✨ 🌟 ✨ installed package glasgow 0.1.dev2068+g93400d6, installed using Python 3.12.0 These apps are now globally available - glasgow.exe done! ✨ 🌟 ✨ C:\Code\clone>glasgow --version Glasgow 0.1.dev2068+g93400d6 (CPython 3.12.0 on Windows-11-10.0.22631-SP0) C:\Code\clone>glasgow build --rev C3 uart I: glasgow.cli: generating bitstream for applet 'uart' Preparing to run yowasp-yosys. This might take a while... Preparing to run yowasp-nextpnr-ice40. This might take a while... Preparing to run yowasp-icepack. This might take a while... C:\Code\clone>glasgow list I: glasgow.device.hardware: found revC3 device with API level 2 (supported API level is 3) W: glasgow.device.hardware: please run `glasgow flash` to update firmware of device C3-20240519T194747Z Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "C:\Users\adrian\.local\bin\glasgow.exe\__main__.py", line 7, in File "C:\Code\clone\glasgow\software\glasgow\cli.py", line 939, in run_main exit(asyncio.run(main())) ^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 194, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Python312\Lib\asyncio\base_events.py", line 664, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "C:\Code\clone\glasgow\software\glasgow\cli.py", line 902, in main for serial in sorted(GlasgowHardwareDevice.enumerate_serials()): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Code\clone\glasgow\software\glasgow\device\hardware.py", line 195, in enumerate_serials devices = cls._enumerate_devices(usb_context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Code\clone\glasgow\software\glasgow\device\hardware.py", line 111, in _enumerate_devices handle = device.open() ^^^^^^^^^^^^^ File "C:\Users\adrian\pipx\venvs\glasgow\Lib\site-packages\usb1\__init__.py", line 2055, in open mayRaiseUSBError(libusb1.libusb_open(self.device_p, byref(handle))) File "C:\Users\adrian\pipx\venvs\glasgow\Lib\site-packages\usb1\__init__.py", line 127, in mayRaiseUSBError __raiseUSBError(value) File "C:\Users\adrian\pipx\venvs\glasgow\Lib\site-packages\usb1\__init__.py", line 119, in raiseUSBError raise __STATUS_TO_EXCEPTION_DICT.get(value, __USBError)(value) usb1.USBErrorNoDevice: LIBUSB_ERROR_NO_DEVICE [-4] C:\Code\clone>glasgow flash I: glasgow.cli: reading device configuration I: glasgow.cli: device has serial C3-20240519T194747Z I: glasgow.cli: device has flashed firmware I: glasgow.cli: device does not have flashed bitstream I: glasgow.cli: using built-in firmware I: glasgow.cli: programming configuration and firmware I: glasgow.cli: verifying configuration and firmware W: glasgow.cli: power cycle the device to apply changes C:\Code\clone>glasgow list C3-20240519T194747Z