From 677c2917c001ceb4c42ad766fb1036f5269b00c1 Mon Sep 17 00:00:00 2001 From: onur cayan Date: Thu, 13 Aug 2026 11:32:14 +0300 Subject: [PATCH] docs: clarify GPS SoC build and diagnostics --- README.md | 116 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 97 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 998e590..cc5617a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,19 @@ -# Rocket Project +# Rocket GPS SoC -Bu agac VCU118, Genesys2 ve Ti375C529 FPGA akislari ile ASIC-style Rocket -akisi icin sade proje duzenidir. +Bu depo, RV64 Rocket cekirdegi ile GPS acquisition, tracking, navigation ve +PPS donanimini ayni SoC icinde birlestirir. Ayni tasarim VCU118, Genesys2 ve +Ti375C529 FPGA kartlarinda; ortak GPS firmware'i ise bare-metal olarak calisir. +ASIC-style RTL ve simulasyon girisi de korunur. Upstream Rocket-Chip kaynaklari daginik kok klasorlerde tutulmaz; gerekli upstream kaynaklar `hardware/upstream/rocket-chip/` altindadir. +Donanim; RF orneklerini alan acquisition/tracking kanallarini, atomik olcum +snapshot'larini, interrupt kaynaklarini ve PPS periferigini saglar. `gps_system` +firmware'i interrupt servislerini, LNAV/ephemeris parsing'i, coherent epoch +toplamayi, position ve Doppler WLS'i, flash persistence'i ve opsiyonel +GPS+IMU ESKF'yi yurutur. Flash bootloader uygulama imajini CRC ile denetleyip +DTIM'e tasir; GDB yolu ayni ELF'i test icin dogrudan DTIM'e yukleyebilir. + ## Kisa Harita ```text @@ -15,6 +24,8 @@ hardware/ fpga/vcu118/constraints/ VCU118 XDC fpga/genesys2/rtl/ Genesys2 ek RTL fpga/genesys2/constraints/ Genesys2 XDC + fpga/ti375c529/rtl/ Ti375C529 ek RTL + fpga/ti375c529/constraints/ Ti375C529 Efinity interface kaynagi sim/fpga/vcu118/ FPGA smoke/sim girisi sim/asic/rocket/ ASIC testbench, modeller, wave.do external/gps/rtl/ GPS RTL kaynaklari ve filelist @@ -28,6 +39,27 @@ targets/asic/rocket/ ASIC wrapper/filelist/sim akisi setup_tools.sh /tools/soc-tools host araci kurulum betigi ``` +`hardware/generated/`, `soc/out/`, `targets/*/out/` ve kok `out/` uretilen +ciktilardir; kalici kaynak degisiklikleri bu dizinlere yapilmamalidir. + +## Destek Ozeti + +| Kart | FPGA araci | SoC / ACQ / TRK | Flash ve app offset | Varsayilan RF | +|---|---|---|---|---| +| VCU118 | Vivado | 100 / 100 / 125 MHz | 128 MiB, `0x06000000` | PMOD | +| Genesys2 | Vivado | 50 / 80 / 125 MHz | 32 MiB, `0x01800000` | PMOD | +| Ti375C529 | Efinity | 100 / 100 / 125 MHz | 64 MiB, `0x00800000` | PMOD | + +Kart secimi `FPGA_BOARD=` veya `BOARD=` ile yapilir. Kesin clock, +flash, UART ve RF ayarlarini varsaymak yerine once su komut kullanilmalidir: + +```sh +make FPGA_BOARD=genesys2 fpga-config +``` + +Kart bazli ayrintilar `targets/fpga//README.md`, yazilim ayrintilari +`soc/software/gps_system/README.md` icindedir. + ## Gelistirme Araclari Mill, JDK, CIRCT/firtool ve Z3 makineye/işletim sistemine ozel binary @@ -66,20 +98,28 @@ degiskeninden bulunur. ## Ana Komutlar -```sh -make help -make fpga-rtl -make fpga-bitstream -make fpga-elf-flash-image -make fpga-mcs -make fpga-program -make fpga-flash -make fpga-flash-bitstream -make fpga-flash-mcs -make fpga-flash-all -make asic-rtl -make asic-sim -``` +| Hedef | Amaci | +|---|---| +| `make doctor` | JDK, Mill, firtool ve RISC-V toolchain'i kontrol eder. | +| `make fpga-config` | Secili kartin etkin clock, flash, UART ve RF ayarlarini yazar. | +| `make fpga-rtl` | Chisel/FIRRTL'den kart wrapper'i dahil SystemVerilog uretir. | +| `make fpga-bitstream` | Vivado veya Efinity sentez, place-route ve bitstream akisini calistirir. | +| `make fpga-elf-flash-image` | `APP` ELF'ini bootloader header/CRC iceren app imajina cevirir. | +| `make fpga-mcs` | Mevcut bitstream ile app imajini birlestirir; karta yazmaz. Ti375'te cikti HEX'tir. | +| `make fpga-program` | Bitstream'i FPGA SRAM'ine gecici yukler. | +| `make fpga-flash-app` | Yalniz uygulama flash bolgesini programlar. | +| `make fpga-flash-bitstream` | Yalniz konfigurasyon/bitstream bolgesini programlar. | +| `make fpga-flash-mcs` | Birlesik kalici flash imajini uretip programlar. | +| `make fpga-flash-all` | Degisen bitstream ve app bolgelerini ayri ayri programlar. | +| `make fpga-debug-openocd` | Rocket DMI icin OpenOCD/GDB sunucusunu acar. | +| `make fpga-debug-load` | Secili uygulamayi GDB ile DTIM'e yukler. | +| `make fpga-uart` | Kart UART'ini varsayilan `460800` baud ile dinler. | +| `make asic-rtl`, `make asic-sim` | ASIC-style RTL veya Questa simulasyon akisini calistirir. | + +`APP` verilmezse varsayilan `hello_uart` olur. GPS firmware'i icin her build ve +programlama komutunda `APP=gps_system` acikca verilmelidir. `fpga-mcs` sonrasi +MCS/HEX dosyasini GUI ile programlamak da gecerlidir; kalici boot testi icin +kart power-cycle edilmelidir. GPS bare-metal uygulamasini derlemek ve FPGA uzerinde GDB ile RAM'e yuklemek: @@ -111,8 +151,7 @@ make FPGA_BOARD=genesys2 APP=gps_system \ `GPS_ESKF_ENABLE` verilmezse deger `1`'dir. Iki komut ayni `targets/fpga/genesys2/out/flash/genesys2_rocket.mcs` ve `.bin` yollarini -kullanir; ikinci build birincinin ciktisinin uzerine yazar. Iki profili -saklamak gerekiyorsa her build'den sonra dosyayi profil adiyla kopyalayin. +kullanir; ikinci build birincinin ciktisinin uzerine yazar. `fpga-mcs` mevcut `.bit` dosyasini kullanip bootloader ve uygulamayi yeniden derler. Yalniz software profili veya baud degisikligi icin sentez gerekmez. @@ -130,6 +169,45 @@ Firmware ve host UART dinleyicisinin varsayilani birlikte `460800`'dur: make FPGA_BOARD=genesys2 fpga-uart ``` +### Kalici GPS verisi + +`gps_system` varsayilan olarak ephemeris flash store'u ve navigation context +store'u acik derler. Ephemeris store bos ise 32 PRN icin stale baslangic +kayitlari yazilir; bunlar zaman/fit kontrolunu gecmeden konum hesabinda +kullanilmaz ve gercek LNAV ephemeris'i geldikce yenilenir. Her boot'ta erase +yapilmaz (`GPS_EPHEMERIS_FLASH_FORCE_FORMAT=0`). + +| Kart | Navigation context | Ephemeris store | +|---|---:|---:| +| Genesys2 | `0x01FC0000` | `0x01FE0000` | +| VCU118 | `0x07FC0000` | `0x07FE0000` | +| Ti375C529 | `0x03FC0000` | `0x03FE0000` | + +Ilgili build ayarlari `GPS_NAV_CONTEXT_ENABLE`, +`GPS_EPHEMERIS_FLASH_ENABLE` ve `GPS_EPHEMERIS_FLASH_SEED_INITIAL`'dir. + +### UART GPS durum satirlari + +`[TRK] tracked satellites` aktif ve lock durumundaki tracking kanallarini +gosterir. `[NAV] epoch funnel` ise bir konum epoch'unun asamalarini ayirir: + +```text +tracked aktif/locked tracking kanali +ready gecerli ephemeris, HOW time anchor ve taze olcumu olan kanal +candidates tamamlanmis ayni epoch snapshot'ina giren kanal +coherent zaman/coherence kontrolunden gecen kanal +fix en az WLS minimumu ile nav solve calistirilabildi +``` + +Bu nedenle `tracked` sayisinin `ready` sayisindan buyuk olmasi tek basina +interrupt hatasi degildir. `fix=1` WLS denemesinin girdisinin hazir oldugunu +gosterir; basarili `[LOCATION]` sonucunu tek basina garanti etmez. +`eph_reject/eph_hit/eph_miss`, +`assembly_failed/deadline/overwrite` sayaclari kaybin ephemeris mi yoksa epoch +assembly tarafinda mi oldugunu ayirmak icindir. Firmware revizyonu acilista +`[FUSION] init build=...` alaninda gorulur; beklenen log yoksa once karta +yuklenen build bu alanla dogrulanmalidir. + ### Doppler, WLS ve ESKF veri yolu ```text