docs: clarify GPS SoC build and diagnostics

This commit is contained in:
onur cayan
2026-08-13 11:32:14 +03:00
parent 8850ece2a4
commit 677c2917c0
+97 -19
View File
@@ -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=<kart>` veya `BOARD=<kart>` 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/<kart>/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