feat(gps): expose ESKF build profiles and 460800 UART
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
# GPS System Port Notes
|
||||
|
||||
Bu notlar GPS bare-metal yaziliminin VCU118 Rocket SoC portu ve interrupt debug sureci icin yazildi.
|
||||
Bu notlar GPS bare-metal yaziliminin VCU118/Genesys2 Rocket SoC portunu,
|
||||
tracking Doppler/C/N0 yolunu, ESKF entegrasyonunu ve interrupt debug surecini
|
||||
belgeler.
|
||||
|
||||
## Uygulama akisi ve dosya sinirlari
|
||||
|
||||
@@ -66,6 +68,34 @@ ve raw kuyruga koyar. GPS ISR'leri acquisition/tracking olaylarini kaydeder.
|
||||
interrupt'lari gelebilecegi icin IMU kuyrugu WLS'den hem once hem sonra drain
|
||||
edilir; GPS update'i WLS bitis zamaninda degil capture epoch'unda uygulanir.
|
||||
|
||||
### ESKF entegrasyonunda yapilanlar
|
||||
|
||||
- TDK ICM42688 ve ST LSM6DSOX suruculeri sensor-markasindan bagimsiz
|
||||
`imu_sensor`/`imu_sample_t` sinirinin arkasina alindi. Her IMU ornegi olcum
|
||||
aninda monotonik CLINT timestamp'i alir; ISR icinde ESKF matematigi
|
||||
calismaz.
|
||||
- Filtre ENU position/velocity, quaternion attitude, accel bias ve gyro bias
|
||||
iceren 15 hata durumlu ESKF'dir. Prediction her ham IMU orneginde midpoint
|
||||
mechanization ile calisir; telemetry bolucusu prediction oranini dusurmez.
|
||||
- GPS WLS position ve Doppler velocity ayni capture timestamp'iyle tek
|
||||
`fusion_navigation_measurement_t` icinde tasinir. Gecikmis GPS olcumu
|
||||
history icindeki kendi epoch'una uygulanir; sonraki IMU ornekleri current
|
||||
time'a kadar tekrar oynatilir.
|
||||
- Position ve velocity update'lerinin ayri 3-DOF NIS kapilari ve
|
||||
accept/reject sayaclari vardir. Velocity bozuksa ayni epoch'taki gecerli
|
||||
position update'i geri alinmaz.
|
||||
- Doppler WLS ECEF velocity covariance'i ENU'ya dondurulur. Kart verisinde
|
||||
zayif geometrinin formal covariance'i asiri iyimser yapmamasi icin
|
||||
horizontal `2.0 m/s`, vertical `3.0 m/s` minimum standard deviation floor'u
|
||||
uygulanir; daha buyuk formal belirsizlik korunur.
|
||||
- Durağanlik supervisor'u IMU/GNSS hareket kanitlarini histerezisle
|
||||
birlestirir ve yalniz guvenli durumda ZUPT/zero-gyro update uygular.
|
||||
GPS kesintisinde sahte position olcumu uretilmez; dead-reckoning devam eder
|
||||
ve covariance buyur.
|
||||
- Kotu ilk fix sonraki tutarli fix'leri surekli NIS reject'e kilitlerse,
|
||||
timeout ve coklu-fix sureklilik kosuluyla yalniz position state/covariance
|
||||
yeniden ankrajlanir. Velocity, attitude ve IMU bias state'leri korunur.
|
||||
|
||||
## Generic IMU Mimarisi (TDK ve ST)
|
||||
|
||||
GPS/ESKF artik dogrudan bir sensor surucusune bagli degildir. Veri yolu:
|
||||
@@ -129,6 +159,23 @@ Bu durumda GPS acquisition/tracking/WLS ve ham lat-lon yayini calismaya devam
|
||||
eder; IMU stream'i ve `navigation_fusion` baslatilmaz. UART startup satirinda
|
||||
`eskf_enabled` ve gercek init sonucu olan `eskf_ready` ayri alanlardir.
|
||||
|
||||
Ana proje dizininden Genesys2 MCS uretmek icin:
|
||||
|
||||
```sh
|
||||
# TDK + ESKF; GPS_ESKF_ENABLE verilmezse de varsayilan 1'dir.
|
||||
make FPGA_BOARD=genesys2 APP=gps_system \
|
||||
GPS_ESKF_ENABLE=1 IMU_SENSOR=tdk fpga-mcs
|
||||
|
||||
# GPS-only: tracking, C/N0, Doppler velocity WLS ve PPS calisir.
|
||||
make FPGA_BOARD=genesys2 APP=gps_system \
|
||||
GPS_ESKF_ENABLE=0 fpga-mcs
|
||||
```
|
||||
|
||||
Her iki profil bootloader ve uygulamayi varsayilan `460800` baud ile derler.
|
||||
Iki komut ayni MCS/BIN yoluna yazdigi icin iki imaj birlikte saklanacaksa
|
||||
build'ler arasinda profil adiyla kopyalanmalidir. Bu secenekler software
|
||||
derleme parametresidir; mevcut bitstream ile `fpga-mcs` yeterlidir.
|
||||
|
||||
Otomatik WHO_AM_I algilama varsayilandir:
|
||||
|
||||
```sh
|
||||
@@ -446,32 +493,30 @@ Bu kosuda `mcause=5` tekrar etmedi.
|
||||
|
||||
## Build ve Debug Komutlari
|
||||
|
||||
Build:
|
||||
Ana dizinden kalici flash imaji:
|
||||
|
||||
```sh
|
||||
make -C /home/ankaoc/Desktop/rocket/rocket-chip/soc/software/gps_system \
|
||||
BUILD_DIR=/home/ankaoc/Desktop/rocket/rocket-chip/soc/out/software/gps_system \
|
||||
clean all
|
||||
make FPGA_BOARD=genesys2 APP=gps_system \
|
||||
GPS_ESKF_ENABLE=1 IMU_SENSOR=tdk fpga-mcs
|
||||
```
|
||||
|
||||
OpenOCD:
|
||||
|
||||
```sh
|
||||
make -C /home/ankaoc/Desktop/rocket/rocket-chip fpga-debug-openocd
|
||||
make FPGA_BOARD=genesys2 fpga-debug-openocd
|
||||
```
|
||||
|
||||
ELF'i RAM'e yukleyip calistirma:
|
||||
|
||||
```sh
|
||||
/tools/toolchains/rvtc-medany/bin/riscv64-unknown-elf-gdb \
|
||||
-q /home/ankaoc/Desktop/rocket/rocket-chip/soc/out/software/gps_system/gps_system.elf \
|
||||
-ex "target extended-remote :3333" \
|
||||
-ex "monitor reset halt" \
|
||||
-ex "load" \
|
||||
-ex "set \$pc = _start" \
|
||||
-ex "monitor resume" \
|
||||
-ex "detach" \
|
||||
-ex "quit"
|
||||
make FPGA_BOARD=genesys2 APP=gps_system \
|
||||
GPS_ESKF_ENABLE=1 IMU_SENSOR=tdk fpga-debug-load
|
||||
```
|
||||
|
||||
UART:
|
||||
|
||||
```sh
|
||||
make FPGA_BOARD=genesys2 fpga-uart
|
||||
```
|
||||
|
||||
Durum okumak icin claim register'ini okumadan:
|
||||
@@ -749,6 +794,13 @@ Gecersiz oranlar reddedilir; sonuc `10..60 dB-Hz` araliginda sinirlanir.
|
||||
Bir-bit estimator jitter'i ayni PRN'in ard arda olcumlerinde software
|
||||
IIR'i ile `alpha=0.2` kullanilarak yumusatilir.
|
||||
|
||||
RTL snapshot, synchronizer, APB register ve measurement-interrupt ayrintilari
|
||||
`hardware/external/gps/rtl/trck_src/README.md` icinde belgelenir. Ozetle
|
||||
payload tracking domaininde yaklasik 20 ms sabit tutulur; valid ve tum alanlar
|
||||
PCLK'e registered synchronizer ile alinir, iki ek settle cycle'dan sonra
|
||||
atomik APB bankina kopyalanir. Software sequence-before/payload/sequence-after
|
||||
okumasiyla coherence'i tekrar dogrular.
|
||||
|
||||
Carrier register'i signed Q7 toplam NCO frekansidir. Doppler ve range-rate
|
||||
donusumu:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user