# vibeos_fpga <img alt="image" src="https://github.com/user-attachments/assets/595ebbb3-9c3b-42f8-848c-c5e1b9510fdb" /> <img alt="image" src="https://github.com/user-attachments/assets/414cf18e-129d-4edd-ad3f-3e7cd6be8898" /> <img alt="image" src="https://github.com/user-attachments/assets/9a4c57aa-f8c3-4c2f-ba0e-bcb7d0bdc0cb" /> <img alt="image" src="https://github.com/user-attachments/assets/4ddebbe3-368e-4991-8b8f-0aa879f96798" /> <img alt="image" src="https://github.com/user-attachments/assets/90c8d172-1443-496c-be90-ae1e695e60f2" /> <img alt="image" src="https://github.com/user-attachments/assets/c7948d72-7971-46e6-9c50-5237af8fd8dc" /> <img alt="image" src="https://github.com/user-attachments/assets/b10eded8-33f7-4eed-935a-50eabc76a967" /> <img alt="image" src="https://github.com/user-attachments/assets/75075d60-ea68-4245-b6ac-e19b1a367536" /> VibeOS on a Zynq-7020 FPGA development board. This repository keeps the source-level pieces for the current VibeOS FPGA bring-up: - `vibeos/`: RISC-V OS, USB HID, SD/VibeFS, GEM/lwIP, SSH, and GUI source - `project_2/`: FPGA top-level RTL, HDMI/MMIO/USB debug RTL, Vivado Tcl, XSDB debug/load scripts, and board SOP notes - `ultraembedded_riscv/`: RISC-V core source used by the FPGA top Generated artifacts are intentionally not tracked. Rebuild `os.bin` and Vivado bitstreams locally from the source and scripts. ## Last Known Working Ethernet/UI Flow ### Tool Versions This flow was last verified with: ```text Vivado: v2019.2 64-bit Vivado SW Build: 2708876 Vivado IP Build: 2700528 Local Vivado path: H:\Xilinx\vivado\Vivado\2019.2 WSL: 2.6.2.0 WSL distro: Ubuntu 22.04.5 LTS WSL kernel: 6.6.87.2-microsoft-standard-WSL2 RISC-V GCC: riscv64-unknown-elf-gcc 10.2.0 Windows: 10.0.26200.7171 ``` Run from the repository root in Windows PowerShell: ```powershell cd <repo-root> wsl --cd ./vibeos --exec make profile=fpga_minimal FPGA_MTIME_HZ=50000000 os.bin powershell.exe -ExecutionPolicy Bypass -File .\project_2\release_vibeos_eth_stable.ps1 ./vibeos/os.bin Start-Sleep -Seconds 5 ping -n 6 192.168.0.154 curl.exe --max-time 5 http://192.168.0.154/ ``` Expected HTTP response: ```html <html><body><h1>VibeOS Ethernet OK</h1><p>lwIP + Zynq GEM0 is running.</p><p>IP: 192.168.0.154</p></body></html> ``` Inside VibeOS, useful network commands are: ```text ethstat ssh probe 192.168.0.152:2221 ssh set root@192.168.0.152:2221 ssh auth <password> ssh exec uname -a ``` SD card root listing is also wired into the FPGA minimal shell. The stable bitstream enables PS SD0 on MIO 40..45; the OS uses a small PIO SDIO reader and FAT16/FAT32 root directory parser. ```text sd status sd ls sdls ls /sd ls ``` In `profile=fpga_minimal`, plain `ls` falls back to the SD card root when the temporary `/root` RAM disk has not been formatted yet. The stable Ethernet loader uses: ```text project_2/riscv_ps_ddr_hw_eth_clkdomain_probe_50/riscv_ps_ddr_hw.runs/impl_1/riscv_ps_ddr_wrapper.bit project_2/riscv_ps_ddr_hw_eth_clkdomain_probe_50/riscv_ps_ddr_hw.srcs/sources_1/bd/riscv_ps_ddr/ip/riscv_ps_ddr_processing_system7_0_0/ps7_init.tcl ``` Those Vivado build outputs are not tracked in git. Rebuild them locally or copy them from a known-good local backup before running the stable loader. ## Notes - Do not commit `vibeos/.build`, `os.bin`, bitstreams, DCPs, or Vivado run directories. - Licensing is centralized in `LICENSE` and `THIRD_PARTY_LICENSES.md`. Original VibeOS FPGA code is released under The Unlicense; vendored third-party code keeps its own license. The imported VibeOS source repository is `https://github.com/x213212/vibeos.git`. - The detailed recovery and debug notes live in `project_2/STABLE_UI_ETH_MINIMAL_SOP.md`. - Current FPGA minimal input/network handling is mostly cooperative polling. The PL IRQ probe work starts in `project_2/read_pl_irq_probe.tcl` and the fake PLIC/IRQ RTL path in `project_2/pl_mmio_jtag_console.v`.