ASELSANMicrokernel
GÖRÜNTÜ YOLU · ASEL MOTOR

AselMotor

Parmağın sürdüğü sayfalar için tek hareket fiziği: anasayfa, tarayıcı ve Wi-Fi listesi. İçerik parmağı piksel piksel izler; bırakınca hızına göre akar.

Ne işe yarar

AselMotor, işletim sisteminin görüntü yolunu yönetir. Her 60 Hz present tikinde boşta olmayan eksenleri ilerletir. Saf kaydırmada compositor mevcut pikselleri taşır ve yalnızca açılan şeridi boyar; sahne değiştiğinde tam bestelemeye döner. A42 çift tampon kuralı sürer — CPU, panelin taradığı tampona yazmaz.

AselBrowser ve Wi-Fi sayfası kendi içeriğini üretir; AselMotor o içeriğin parmakla akmasını sağlar. İçerik, hareket ve sunum ayrı işlerdir; aynı karede buluşurlar.

Ne değildir

  • G8 zamanlayıcı, TLBI veya görev göçü değildir.
  • SD kart veya UART kanıt hattı bunu sürmez.
  • 8 MiB heap’e üçüncü tam kare katmanı sığmaz.
  • 60 Hz hedefi tek başına akıcılık kanıtı değildir.
  • Host testi, gerçek parmakla cihaz kabulünün yerini tutmaz.

R211 tabanlı UI önizlemesi

Wi-Fi listesi neden artık basamak basamak kaymaz?

Wi-Fi tarama günlüğü

Eski yol, parmak kalkınca kaydırmayı 32 piksellik adımlara çeviriyordu. Yeni wifi_y ekseni, sürükleme başladığında gerçek piksel ofsetini kareye taşır. Dokunma örnekleri arasındaki süre bırakış hızını belirler; ilk 8 piksel jest kilidi dışında ağ satırları parmağı 1:1 izler.

01 · Bastır

Hareket eden liste durur; dokunuş bir ağa yanlışlıkla girmez.

02 · Sürükle

8 px jest eşiğinden sonra ofset her Move olayında piksel kadar değişir.

03 · Bırak

Mesafe / süre, hızı 60 Hz kare başına piksele dönüştürür.

04 · Akış

Coast sürtünerek yavaşlar; sınırda durur, 32 px satıra oturmaz.

Üst gezinme sabittir. Sayfanın ilk 70 pikselinde kırpma sınırı 110’dan 180’e kademeli iner; sonra yalnız içerik bandı taşınıp açılan şerit yeniden boyanır. Böylece ilk kaydırma pikselinde 70 piksellik bir görsel sıçrama oluşmaz.

Hız gerçekten fark yaratıyor mu?

Aynı 80 px hareketin iki süresi, host testinde farklı bırakış üretir. Bunlar fiziksel Pi ölçümü değil, motorun deterministik test girdileridir.

Wi-Fi sürükleme hızı host testi
80 px sürüklemeBırakış hızı1 tik sonra
Hızlı · 16 ms80 px/kare152 px ofset
Yavaş · 200 ms6 px/kare80 px ofset

Kaynak: simulation/tests/rpi5_wifi_scan_ui.rs · equal_distance_drag_has_more_momentum_when_it_was_faster

Cihaz kabulü ayrı

R211 tabanlı önizleme Pi’ye Ethernet/TFTP ile yüklendi ve tarama UART’ta Complete olarak görüldü. Bu, parmakla kaydırmanın akıcı olduğunu tek başına kanıtlamaz. Gerçek sürüklemede SHIFTED, MISSED ve boya süresi birlikte okunmalı; ekrandaki his ayrıca gözlenmelidir.

Durum: host doğrulaması geçti; fiziksel kaydırma kabulü bekleniyor.

Bir kare nasıl akar

GT911 poll, jest, AselMotor tiki, kaydır-boya ve flip aynı CPU0 döngüsündedir. Uzun tam-compose bu döngüyü tıkar; bu yüzden hareket yolu şerit kalır.

  1. 1 / 5
    GT911

    Dokunma poll, I2C IRQ dışında

  2. 2 / 5
    Jest

    Down → Move → Up; mesafe ve süre

  3. 3 / 5
    AselMotor

    Tracking → Coast; pos / vel

  4. 4 / 5
    Kaydır-boya

    blit_shift + açılan şerit

  5. 5 / 5
    Flip

    present_flip @ 60 Hz

Alt görevler

Her alt görev ayrı bir eksen veya compositor kancasıdır. Yeni bir akış (kontrol merkezi, klavye) yeni bir Axis olur; yeni bir motor yazılmaz.

Tamsayı eksen

Her akış bir Axis: konum, hız, min/max, Idle / Tracking / Coast. Sayfa oturtma yay ile, tarayıcı fırlatma sürtünmeyle. f32 yok.

kernel/src/ui/aselmotor.rs

Anasayfa sayfa kaydırma

Parmak giderken ofset akar. Eşik veya hız yetince hedef sayfa hemen seçilir; görüntü yaya oturur. Durum çubuğu ve dock kaymaz.

kernel/src/ui/ios_home.rs · home_x

Tarayıcı dikey kaydırma

Parmakla 1:1 piksel kaydırma durur. Parmak kalkınca atalet Coast kipinde devam eder; uçta kıskaçlanır.

kernel/src/ui/ios_home.rs · browser_y

Wi-Fi listesini sürükleme

Liste parmağı piksel piksel izler. Bırakış hızı örnekler arasındaki süreyle hesaplanır; wifi_y ataleti 60 Hz tikinde sürer. Sabit gezinme şeridi kaymaz.

kernel/src/ui/ios_home.rs · wifi_y

Kaydır-boya compositor

Hareket sırasında 720×1280 yeniden bestelenmez. Surface blit_shift mevcut pikselleri kaydırır; yalnızca açılan şerit boyanır.

kernel/src/ui/raster.rs · blit_shift

60 Hz present tiki

CPU0 ios-home döngüsü her karede pager.tick() çağırır. Idle kare boyanmaz. Tam boya yalnız chrome veya sayfa kimliği değişince.

kernel/src/main.rs · wait_for_next_present

Şimdi nereye bağlı

AselMotor, ios-home present yoluna bağlıdır; Wi-Fi ekseni R211 tabanlı UI önizlemesindedir. Host testleri eksen, kaydırma, piksel eşitliği ve 60 Hz sözleşmesini pinler.

AselMotor çekirdeği

Bağlı

Eksen fizik; 60 Hz tikte entegre edilir.

kernel/src/ui/aselmotor.rs

Kod

Anasayfa pager

Bağlı

home_x, browser_y ve R211 tabanlı UI önizlemesindeki wifi_y eksenleri; aselmotor_active; tick.

kernel/src/ui/ios_home.rs

Ekran Kararı

Wi-Fi kaydır-boya planı

Bağlı

Sabit 180 px gezinme bölgesini dışarıda tutar; kayan bandı öteler, açılan şeridi boyar. İlk 70 px geçişi tam besteler.

kernel/src/ui/aselmotor_plan.rs

Wi-Fi / Bluetooth

AselBrowser kabuğu

Bağlı

scroll_by_px 1:1; same_chrome ile salt kaydırma tam compose değildir.

kernel/src/ui/browser.rs

Araçlar

RP1 DSI scanout

Bağlı

paint_ios_page_shift ve paint_ios_scroll_shift; A42 çift tampon + flip.

kernel/src/driver/rpi5_screen.rs

Ekran Kararı

Present döngüsü

Bağlı

rpi5-ios-home-demo: poll → jest → tick → kaydır/boya → present_flip.

kernel/src/main.rs

İşlemler

Host pinleri

Host pin

Eksen, Wi-Fi hız/atalet, kaydır-boya piksel eşitliği ve 60 Hz present sözleşmesi; fiziksel dokunma testi değildir.

simulation/tests/rpi5_aselmotor.rs

Test Checklist

Sonra nereye bağlanacak

Aynı motora yeni eksen eklenir. Scene/Layer DSI’ye ancak heap büyürse tam katman tamponu olarak gelir; o ayrı ürün kararıdır.

Kontrol merkezi

Sonra bağlanacak

cc_y ekseni: üstten inen cam katman, aynı AselMotor tiki.

kernel/src/ui/ios_control.rs

Ekran Kararı

Uygulama açılışı

Sonra bağlanacak

İkon zıplaması / sayfa ölçek ofseti; tam panel bestelemesi değil.

kernel/src/ui/ios_home.rs

Misyon

Klavye ve sheet

Sonra bağlanacak

Alttan yükselen klavye ve menü katmanı ayrı eksen olur.

kernel/src/ui/browser.rs

Araçlar

AselBrowser EL0 present

Sonra bağlanacak

Canlı panel hâlâ çekirdek kabuğu. EL0 ScanoutDescriptor sonra bağlanır.

userspace/asel_browser/src/present.rs

Araçlar

Retained Scene katmanları

Sonra bağlanacak

M4.4 iskeleti DSI yoluna bağlı değil. Heap 8 MiB; üçüncü tam kare sığmaz.

kernel/src/ui/scene.rs

Kod

Bilerek bağlanmayanlar

Bütün sistemi motora bağlamak, görüntü yolunu bağlamak demektir. Zamanlayıcıyı veya depolamayı 60 Hz boya tikiyle sürmek kasılmayı geri getirir.

G8 zamanlayıcı

Bağlanmaz

Göç, TLBI, SGI ve görev anahtarı AselMotor tiki değildir.

kernel/src/g8l_target_dispatch_*.rs

İşlemler

SD / depolama

Bağlanmaz

Kart yazımı ayrı feature merdiveni; görüntü akışına bağlanmaz.

kernel/src/driver/rpi5_sdhci.rs

Firmware

UART kanıt hattı

Bağlanmaz

ASELSAN/PRESENT satırları motoru sürmez; yalnızca ölçer.

kernel/src/main.rs · kprintln!

İşlemler

Host pin, cihaz kabulü değil

cargo test -p aselsan_microkernel_simulation \
  --test rpi5_aselmotor --test rpi5_aselmotor_plan \
  --test rpi5_wifi_scan_ui --test rpi5_ios_home \
  --test rpi5_present_60hz_source

cargo check -p aselsan_kernel --no-default-features \
  --features board-rpi5,rpi5-ios-home-demo \
  --target aarch64-unknown-none

Gerçek kaydırmada SHIFTEDartmalı, PAINT_MAXkare süresiyle karşılaştırılmalı ve MISSEDartışı izlenmelidir. Host pinleri bu fiziksel kabulü iddia etmez.