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
|
Bu depo, RV64 Rocket cekirdegi ile GPS acquisition, tracking, navigation ve
|
||||||
akisi icin sade proje duzenidir.
|
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 Rocket-Chip kaynaklari daginik kok klasorlerde tutulmaz; gerekli
|
||||||
upstream kaynaklar `hardware/upstream/rocket-chip/` altindadir.
|
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
|
## Kisa Harita
|
||||||
|
|
||||||
```text
|
```text
|
||||||
@@ -15,6 +24,8 @@ hardware/
|
|||||||
fpga/vcu118/constraints/ VCU118 XDC
|
fpga/vcu118/constraints/ VCU118 XDC
|
||||||
fpga/genesys2/rtl/ Genesys2 ek RTL
|
fpga/genesys2/rtl/ Genesys2 ek RTL
|
||||||
fpga/genesys2/constraints/ Genesys2 XDC
|
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/fpga/vcu118/ FPGA smoke/sim girisi
|
||||||
sim/asic/rocket/ ASIC testbench, modeller, wave.do
|
sim/asic/rocket/ ASIC testbench, modeller, wave.do
|
||||||
external/gps/rtl/ GPS RTL kaynaklari ve filelist
|
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
|
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
|
## Gelistirme Araclari
|
||||||
|
|
||||||
Mill, JDK, CIRCT/firtool ve Z3 makineye/işletim sistemine ozel binary
|
Mill, JDK, CIRCT/firtool ve Z3 makineye/işletim sistemine ozel binary
|
||||||
@@ -66,20 +98,28 @@ degiskeninden bulunur.
|
|||||||
|
|
||||||
## Ana Komutlar
|
## Ana Komutlar
|
||||||
|
|
||||||
```sh
|
| Hedef | Amaci |
|
||||||
make help
|
|---|---|
|
||||||
make fpga-rtl
|
| `make doctor` | JDK, Mill, firtool ve RISC-V toolchain'i kontrol eder. |
|
||||||
make fpga-bitstream
|
| `make fpga-config` | Secili kartin etkin clock, flash, UART ve RF ayarlarini yazar. |
|
||||||
make fpga-elf-flash-image
|
| `make fpga-rtl` | Chisel/FIRRTL'den kart wrapper'i dahil SystemVerilog uretir. |
|
||||||
make fpga-mcs
|
| `make fpga-bitstream` | Vivado veya Efinity sentez, place-route ve bitstream akisini calistirir. |
|
||||||
make fpga-program
|
| `make fpga-elf-flash-image` | `APP` ELF'ini bootloader header/CRC iceren app imajina cevirir. |
|
||||||
make fpga-flash
|
| `make fpga-mcs` | Mevcut bitstream ile app imajini birlestirir; karta yazmaz. Ti375'te cikti HEX'tir. |
|
||||||
make fpga-flash-bitstream
|
| `make fpga-program` | Bitstream'i FPGA SRAM'ine gecici yukler. |
|
||||||
make fpga-flash-mcs
|
| `make fpga-flash-app` | Yalniz uygulama flash bolgesini programlar. |
|
||||||
make fpga-flash-all
|
| `make fpga-flash-bitstream` | Yalniz konfigurasyon/bitstream bolgesini programlar. |
|
||||||
make asic-rtl
|
| `make fpga-flash-mcs` | Birlesik kalici flash imajini uretip programlar. |
|
||||||
make asic-sim
|
| `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:
|
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
|
`GPS_ESKF_ENABLE` verilmezse deger `1`'dir. Iki komut ayni
|
||||||
`targets/fpga/genesys2/out/flash/genesys2_rocket.mcs` ve `.bin` yollarini
|
`targets/fpga/genesys2/out/flash/genesys2_rocket.mcs` ve `.bin` yollarini
|
||||||
kullanir; ikinci build birincinin ciktisinin uzerine yazar. Iki profili
|
kullanir; ikinci build birincinin ciktisinin uzerine yazar.
|
||||||
saklamak gerekiyorsa her build'den sonra dosyayi profil adiyla kopyalayin.
|
|
||||||
|
|
||||||
`fpga-mcs` mevcut `.bit` dosyasini kullanip bootloader ve uygulamayi yeniden
|
`fpga-mcs` mevcut `.bit` dosyasini kullanip bootloader ve uygulamayi yeniden
|
||||||
derler. Yalniz software profili veya baud degisikligi icin sentez gerekmez.
|
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
|
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
|
### Doppler, WLS ve ESKF veri yolu
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|||||||
Reference in New Issue
Block a user