docs: clarify GPS SoC build and diagnostics
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user