Document STEVAL INT1 hardware verification

This commit is contained in:
2026-07-16 17:51:43 +03:00
parent 927f6e2858
commit 38a96dd88f
4 changed files with 78 additions and 34 deletions
+27 -19
View File
@@ -45,38 +45,46 @@ Doğrulama durumu:
- Linux/GCC sentetik hareket, stationary, ani ivmelenme/fren, dönüş, ZUPT, - Linux/GCC sentetik hareket, stationary, ani ivmelenme/fren, dönüş, ZUPT,
GPS NIS rejection, gecikmiş GPS replay, covariance invariantları ve GPS NIS rejection, gecikmiş GPS replay, covariance invariantları ve
ASan/UBSan testleri geçti. Ayrıntılı sonuçlar aşağıdadır. ASan/UBSan testleri geçti. Ayrıntılı sonuçlar aşağıdadır.
- STEVAL-MKI217V1 üzerindeki LSM6DSOX'un SPI Mode-0 okuması ve 60 saniyelik - STEVAL-MKI217V1 üzerindeki LSM6DSOX'un SPI Mode-0 okuması, 60 saniyelik
stationary ham veri kaydı gerçek Genesys2 kartında doğrulandı. Bu, tek başına stationary ham veri kaydı ve fiziksel INT1 yolu gerçek Genesys2 kartında
bütünleşik fusion doğrulaması değildir. doğrulandı. 2026-07-16 canlı tekrarında 4084 interrupt'ın tamamı sample'a
dönüştü; read-fail, queue overflow, unexpected IRQ ve trap sayıları sıfırdı.
Ölçülen 105.789 Hz hız yapılandırılan 104 Hz ODR ile uyumluydu. Bu, tek
başına bütünleşik fusion doğrulaması değildir.
- PMOD asynchronous input -> 3FF synchronizer -> PLIC device 11 -> C ISR yolu - PMOD asynchronous input -> 3FF synchronizer -> PLIC device 11 -> C ISR yolu
ASIC/Questa simülasyonunda geçti. ASIC/Questa simülasyonunda geçti.
- Genesys2 fiziksel sensör interrupt girişi son tasarımda `JC9/AK30`, GPS PPS - Genesys2 fiziksel sensör interrupt girişi son tasarımda `JB1/V29`, GPS PPS
çıkışı `JC10/AK28`'dir. JC9'a geçişin kaynak/XDC/standalone test değişiklikleri çıkışı `JC10/AK28`'dir. Eski `JC9/AK30` dokümantasyonu geçersizdir. STEVAL
2026-07-16 denetiminde henüz ayrı commit/push yapılmamıştı. `INT1 -> JB1 -> 3FF synchronizer -> PLIC 11 -> C ISR` yolu gerçek kartta
kesintisiz sample akışıyla doğrulandı.
- GPS + ST/TDK + ESKF'nin aynı gerçek firmware koşusunda hareketli platform - GPS + ST/TDK + ESKF'nin aynı gerçek firmware koşusunda hareketli platform
testi, Rocket `rdcycle` yük ölçümü, mounting dönüşümü ve sample-loss testi testi, Rocket `rdcycle` yük ölçümü, mounting dönüşümü ve sample-loss testi
henüz tamamlanmadı. Sentetik metre sonuçları gerçek saha accuracy iddiası henüz tamamlanmadı. Sentetik metre sonuçları gerçek saha accuracy iddiası
değildir. değildir.
Git devralma durumu: aktif branch `tdk_ekf`, yerel HEAD `35fbc5b` ve Git devralma durumu: aktif branch `tdk_ekf`'dir. Çalışma ağacında GPS/nav-timer
`origin/tdk_ekf` `df563aa` idi; yani yerel branch remote'dan bir commit ilerideydi. kaynak değişiklikleri ile çok sayıda üretilmiş bitstream, object, simülasyon ve
Çalışma ağacında JC9 XDC/wrapper/test değişikliklerinin yanında çok sayıda log dosyası bulunabilir. Yeni oturum önce `git status`, `git diff` ve
üretilmiş bitstream, object, simülasyon ve log dosyası bulunuyordu. Yeni oturum `git log --oneline --decorate -5` ile tekrar kontrol etmeli; üretilmiş dosyaları
önce `git status`, `git diff` ve `git log --oneline --decorate -5` ile tekrar ayırmadan `git add -A` kullanmamalıdır.
kontrol etmeli; üretilmiş dosyaları ayırmadan `git add -A` kullanmamalıdır.
Sonraki ana adımlar: Sonraki ana adımlar:
1. JC9 kaynak/XDC ve test dokümanlarını seçerek commit etmek ve remote'a push 1. `gps_system` içinde ST veya TDK seçerek GPS + IMU + ESKF UART telemetry'sini
etmek; build/sim çıktısını bu commite karıştırmamak.
2. Genesys2 üzerinde fiziksel JC9 interrupt sayacı ile LSM6DSOX INT1/sample
sayısını birlikte doğrulamak.
3. `gps_system` içinde ST veya TDK seçerek GPS + IMU + ESKF UART telemetry'sini
gerçek karttan toplamak; fused LLH/ENU, hız, motion state, NIS, GPS accept/ gerçek karttan toplamak; fused LLH/ENU, hız, motion state, NIS, GPS accept/
reject, IRQ/sample-loss ve queue sayaçlarını kaydetmek. reject, IRQ/sample-loss ve queue sayaçlarını kaydetmek.
4. Stationary -> ani hareket -> sabit hız -> fren -> tekrar stationary testini 2. Stationary -> ani hareket -> sabit hız -> fren -> tekrar stationary testini
yapmak; hareket sırasında ZUPT'nin kapalı kaldığını doğrulamak. yapmak; hareket sırasında ZUPT'nin kapalı kaldığını doğrulamak.
5. PPS için aşağıdaki lock teşhisini tamamlamak. 3. PPS için aşağıdaki lock teşhisini tamamlamak.
Prototip montaj notu: STEVAL jumper kablolarıyla serbest durduğu için başlangıç
sensor yönü sabit kabul edilmemelidir. Her açılışta en az iki saniye stationary
gravity/bias başlangıcı yapılmalı; roll/pitch gravity'den bulunmalı ve başlangıç
yaw'ı ayrı bir mutlak gözlem yoksa keyfi referans olarak kalmalıdır. Sensör bir
fusion koşusu başladıktan sonra gövdeye göre yön değiştirirse bunu yalnız
accel/gyro ile araç hareketinden güvenilir biçimde ayırmak mümkün değildir;
hareketli test boyunca sensör geçici de olsa rijitlenmeli veya filtre yeniden
başlatılmalıdır.
### PPS çıkmıyor: lock problemi ve teşhis ### PPS çıkmıyor: lock problemi ve teşhis
+7 -6
View File
@@ -71,18 +71,19 @@ yoktur. Desteklenen ODR'ler TDK icin 25/50/100/200/500/1000 Hz, ST icin
52/104/208 Hz'dir. 52/104/208 Hz'dir.
TDK ve ST veri-hazir interrupt'i ile calisir ve ana dongu `wfi` kullanabilir. TDK ve ST veri-hazir interrupt'i ile calisir ve ana dongu `wfi` kullanabilir.
Genesys2 son pin planinda ortak aktif sensor interrupt girişi `JC9/AK30` Genesys2 son pin planinda ortak aktif sensor interrupt girişi `JB1/V29`
uzerinden wrapper'daki 3FF synchronizer'a, oradan PLIC device 11'e gider. ST uzerinden wrapper'daki 3FF synchronizer'a, oradan PLIC device 11'e gider. ST
surucusu LSM6DSOX accel data-ready olayini INT1'e yonlendirir; ISR local CLINT surucusu LSM6DSOX accel data-ready olayini INT1'e yonlendirir; ISR local CLINT
timestamp'ini basta alir, latched kaynagi temizler, ayni sample'in gyro ve timestamp'ini basta alir, latched kaynagi temizler, ayni sample'in gyro ve
sicaklik alanlarini okuyup statik SPSC kuyruğa koyar. `imu_sensor_service()` sicaklik alanlarini okuyup statik SPSC kuyruğa koyar. `imu_sensor_service()`
interrupt backend'lerde no-op'tur. interrupt backend'lerde no-op'tur.
Standalone LSM6DSOX SPI okuma ve stationary log kartta dogrulanmistir. Buna Standalone LSM6DSOX SPI okuma, stationary log ve `INT1 -> JB1 -> 3FF -> PLIC
karsilik JC9 fiziksel interrupt yolu ile GPS + ST + ESKF'nin ayni urun firmware 11 -> C ISR` fiziksel yolu kartta dogrulanmistir. 2026-07-16 canli sayac
kosusundaki end-to-end testi henuz tamamlanmis sayilmamalidir. ASIC/Questa snapshot'inda 4084 interrupt'in 4084'u sample'a donusmus; read-fail, queue
simulasyonunda asynchronous input -> 3FF -> PLIC device 11 -> C ISR yolu overflow, unexpected IRQ ve trap sayilari sifir kalmistir. Buna karsilik GPS +
gecmistir. Yuksek ODR ve uzun WLS sirasinda sample kaybini daha da azaltmak ST + ESKF'nin ayni urun firmware kosusundaki end-to-end testi henuz tamamlanmis
sayilmamalidir. Yuksek ODR ve uzun WLS sirasinda sample kaybini daha da azaltmak
gerekirse sonraki gelistirme sensor FIFO + sensor timestamp kullanmaktir; gerekirse sonraki gelistirme sensor FIFO + sensor timestamp kullanmaktir;
ortak IMU arayuzu ve ESKF bunun icin degismeyecektir. ortak IMU arayuzu ve ESKF bunun icin degismeyecektir.
+38 -6
View File
@@ -14,13 +14,15 @@ be integrated separately after the IMU link is verified.
| SDA | JC2 | SPI MOSI / SDI | | SDA | JC2 | SPI MOSI / SDI |
| SDO | JC3 | SPI MISO | | SDO | JC3 | SPI MISO |
| SCL | JC4 | SPI clock / SPC | | SCL | JC4 | SPI clock / SPC |
| INT1 | JC9 | active-high data-ready interrupt | | INT1 | JB1 | active-high data-ready interrupt |
| VDD | 3.3 V | sensor supply | | VDD | JC6 / 3.3 V | sensor supply |
| VDDIO | 3.3 V | digital I/O supply | | VDDIO | JC12 / 3.3 V | digital I/O supply |
| GND | GND | common ground | | GND | JC5 or JC11 | common ground |
`CS` is mandatory for four-wire SPI. Never feed 5 V to VDDIO. JC9 is routed `CS` is mandatory for four-wire SPI. Never feed 5 V to VDDIO. The current
through the FPGA 3FF synchronizer to PLIC device 11. Genesys2 constraint routes JB1 (`V29`) through the FPGA 3FF synchronizer to
PLIC device 11. Older README revisions named JC9 (`AK30`); that mapping is no
longer valid. JC10 is reserved for the GPS PPS output.
## Hardware bring-up results (2026-07-13) ## Hardware bring-up results (2026-07-13)
@@ -65,6 +67,36 @@ These measurements are for the stationary board in its test orientation. The
nonzero gyro mean is startup bias to be estimated by stationary calibration, nonzero gyro mean is startup bias to be estimated by stationary calibration,
not angular motion. not angular motion.
### INT1 live recheck (2026-07-16)
The current `tdk_ekf` Genesys2 bitstream was reused without synthesis. The
standalone ELF was loaded into DTIM through the already-running OpenOCD/GDB
server and UART was observed on `/dev/ttyUSB2` at 115200 baud.
With only SPI connected, all eight `WHO_AM_I` probes returned `0x6c`,
configuration read-back was `CTRL1_XL=0x40`, `CTRL2_G=0x40`,
`CTRL3_C=0x44`, `STATUS=0x07`, and foreground polling returned coherent
samples. No `IMU_RAW` rows arrived from the interrupt test and the final
`interrupt_count` was zero. This separated a working SPI/data path from a
missing physical interrupt connection.
After STEVAL `INT1` was moved to Genesys2 JB1, the same ELF immediately
produced continuous interrupt-driven `IMU_RAW` rows. A live counter snapshot
showed:
- `interrupt_count=4084` and `interrupt_sample_count=4084`;
- `interrupt_read_fail_count=0` and `queue_overflow_count=0`;
- `unexpected_irq_count=0` and `unexpected_trap_cause=0`;
- sequence 0 through 1165 covered 11.012478 seconds, corresponding to
105.789 Hz and a 9.453 ms mean period for the configured 104 Hz ODR.
One representative stationary sample was accel `[-3854, -9397, -13071]`,
gyro `[35, -4, -32]`, and temperature raw `1265`. The sequence continued
monotonically during the observed UART window. This verifies the physical
STEVAL INT1 -> JB1/V29 -> 3FF synchronizer -> PLIC 11 -> C ISR -> SPI burst ->
SPSC queue path. It does not yet constitute a combined GPS + ST + ESKF moving
platform test.
## Build and load ## Build and load
From the repository root: From the repository root:
+6 -3
View File
@@ -127,12 +127,15 @@ pmod_spi_dq[3] AG30 JC8
Pin constraintleri `hardware/fpga/genesys2/constraints/genesys2_pmod_spi.xdc` Pin constraintleri `hardware/fpga/genesys2/constraints/genesys2_pmod_spi.xdc`
dosyasindadir ve Vivado akisi tarafindan her RF modunda okunur. dosyasindadir ve Vivado akisi tarafindan her RF modunda okunur.
Sensorden gelen external interrupt hatti SPI'dan bagimsizdir. `pmod_irq` Sensorden gelen external interrupt hatti SPI'dan bagimsizdir. Guncel pin
olarak JC9'a cikar ve PLIC'te `BSP_PMOD_IRQ` (`11`) ID'siyle gorunur. planinda `pmod_irq` PMOD JB pin 1'e cikar ve PLIC'te `BSP_PMOD_IRQ` (`11`)
ID'siyle gorunur. Eski `JC9/AK30` eslemesi 2026-07-14'te `JB1/V29` olarak
degistirildi; mevcut XDC ve bitstream icin sensor `INT1` hatti JB1'e
baglanmalidir. JC10 GPS PPS cikisidir.
```text ```text
port FPGA pin PMOD pin port FPGA pin PMOD pin
pmod_irq AK30 JC9 pmod_irq V29 JB1
``` ```
Pin constraintleri `hardware/fpga/genesys2/constraints/genesys2_pmod_irq.xdc` Pin constraintleri `hardware/fpga/genesys2/constraints/genesys2_pmod_irq.xdc`