Document STEVAL INT1 hardware verification
This commit is contained in:
@@ -45,38 +45,46 @@ Doğrulama durumu:
|
||||
- Linux/GCC sentetik hareket, stationary, ani ivmelenme/fren, dönüş, ZUPT,
|
||||
GPS NIS rejection, gecikmiş GPS replay, covariance invariantları ve
|
||||
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
|
||||
stationary ham veri kaydı gerçek Genesys2 kartında doğrulandı. Bu, tek başına
|
||||
bütünleşik fusion doğrulaması değildir.
|
||||
- STEVAL-MKI217V1 üzerindeki LSM6DSOX'un SPI Mode-0 okuması, 60 saniyelik
|
||||
stationary ham veri kaydı ve fiziksel INT1 yolu gerçek Genesys2 kartında
|
||||
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
|
||||
ASIC/Questa simülasyonunda geçti.
|
||||
- Genesys2 fiziksel sensör interrupt girişi son tasarımda `JC9/AK30`, GPS PPS
|
||||
çıkışı `JC10/AK28`'dir. JC9'a geçişin kaynak/XDC/standalone test değişiklikleri
|
||||
2026-07-16 denetiminde henüz ayrı commit/push yapılmamıştı.
|
||||
- Genesys2 fiziksel sensör interrupt girişi son tasarımda `JB1/V29`, GPS PPS
|
||||
çıkışı `JC10/AK28`'dir. Eski `JC9/AK30` dokümantasyonu geçersizdir. STEVAL
|
||||
`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
|
||||
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ı
|
||||
değildir.
|
||||
|
||||
Git devralma durumu: aktif branch `tdk_ekf`, yerel HEAD `35fbc5b` ve
|
||||
`origin/tdk_ekf` `df563aa` idi; yani yerel branch remote'dan bir commit ilerideydi.
|
||||
Çalışma ağacında JC9 XDC/wrapper/test değişikliklerinin yanında çok sayıda
|
||||
üretilmiş bitstream, object, simülasyon ve log dosyası bulunuyordu. Yeni oturum
|
||||
önce `git status`, `git diff` ve `git log --oneline --decorate -5` ile tekrar
|
||||
kontrol etmeli; üretilmiş dosyaları ayırmadan `git add -A` kullanmamalıdır.
|
||||
Git devralma durumu: aktif branch `tdk_ekf`'dir. Çalışma ağacında GPS/nav-timer
|
||||
kaynak değişiklikleri ile çok sayıda üretilmiş bitstream, object, simülasyon ve
|
||||
log dosyası bulunabilir. Yeni oturum önce `git status`, `git diff` ve
|
||||
`git log --oneline --decorate -5` ile tekrar kontrol etmeli; üretilmiş dosyaları
|
||||
ayırmadan `git add -A` kullanmamalıdır.
|
||||
|
||||
Sonraki ana adımlar:
|
||||
|
||||
1. JC9 kaynak/XDC ve test dokümanlarını seçerek commit etmek ve remote'a push
|
||||
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
|
||||
1. `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/
|
||||
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.
|
||||
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
|
||||
|
||||
|
||||
@@ -71,18 +71,19 @@ yoktur. Desteklenen ODR'ler TDK icin 25/50/100/200/500/1000 Hz, ST icin
|
||||
52/104/208 Hz'dir.
|
||||
|
||||
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
|
||||
surucusu LSM6DSOX accel data-ready olayini INT1'e yonlendirir; ISR local CLINT
|
||||
timestamp'ini basta alir, latched kaynagi temizler, ayni sample'in gyro ve
|
||||
sicaklik alanlarini okuyup statik SPSC kuyruğa koyar. `imu_sensor_service()`
|
||||
interrupt backend'lerde no-op'tur.
|
||||
|
||||
Standalone LSM6DSOX SPI okuma ve stationary log kartta dogrulanmistir. Buna
|
||||
karsilik JC9 fiziksel interrupt yolu ile GPS + ST + ESKF'nin ayni urun firmware
|
||||
kosusundaki end-to-end testi henuz tamamlanmis sayilmamalidir. ASIC/Questa
|
||||
simulasyonunda asynchronous input -> 3FF -> PLIC device 11 -> C ISR yolu
|
||||
gecmistir. Yuksek ODR ve uzun WLS sirasinda sample kaybini daha da azaltmak
|
||||
Standalone LSM6DSOX SPI okuma, stationary log ve `INT1 -> JB1 -> 3FF -> PLIC
|
||||
11 -> C ISR` fiziksel yolu kartta dogrulanmistir. 2026-07-16 canli sayac
|
||||
snapshot'inda 4084 interrupt'in 4084'u sample'a donusmus; read-fail, queue
|
||||
overflow, unexpected IRQ ve trap sayilari sifir kalmistir. Buna karsilik GPS +
|
||||
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;
|
||||
ortak IMU arayuzu ve ESKF bunun icin degismeyecektir.
|
||||
|
||||
|
||||
@@ -14,13 +14,15 @@ be integrated separately after the IMU link is verified.
|
||||
| SDA | JC2 | SPI MOSI / SDI |
|
||||
| SDO | JC3 | SPI MISO |
|
||||
| SCL | JC4 | SPI clock / SPC |
|
||||
| INT1 | JC9 | active-high data-ready interrupt |
|
||||
| VDD | 3.3 V | sensor supply |
|
||||
| VDDIO | 3.3 V | digital I/O supply |
|
||||
| GND | GND | common ground |
|
||||
| INT1 | JB1 | active-high data-ready interrupt |
|
||||
| VDD | JC6 / 3.3 V | sensor supply |
|
||||
| VDDIO | JC12 / 3.3 V | digital I/O supply |
|
||||
| GND | JC5 or JC11 | common ground |
|
||||
|
||||
`CS` is mandatory for four-wire SPI. Never feed 5 V to VDDIO. JC9 is routed
|
||||
through the FPGA 3FF synchronizer to PLIC device 11.
|
||||
`CS` is mandatory for four-wire SPI. Never feed 5 V to VDDIO. The current
|
||||
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)
|
||||
|
||||
@@ -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,
|
||||
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
|
||||
|
||||
From the repository root:
|
||||
|
||||
@@ -127,12 +127,15 @@ pmod_spi_dq[3] AG30 JC8
|
||||
Pin constraintleri `hardware/fpga/genesys2/constraints/genesys2_pmod_spi.xdc`
|
||||
dosyasindadir ve Vivado akisi tarafindan her RF modunda okunur.
|
||||
|
||||
Sensorden gelen external interrupt hatti SPI'dan bagimsizdir. `pmod_irq`
|
||||
olarak JC9'a cikar ve PLIC'te `BSP_PMOD_IRQ` (`11`) ID'siyle gorunur.
|
||||
Sensorden gelen external interrupt hatti SPI'dan bagimsizdir. Guncel pin
|
||||
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
|
||||
port FPGA pin PMOD pin
|
||||
pmod_irq AK30 JC9
|
||||
pmod_irq V29 JB1
|
||||
```
|
||||
|
||||
Pin constraintleri `hardware/fpga/genesys2/constraints/genesys2_pmod_irq.xdc`
|
||||
|
||||
Reference in New Issue
Block a user