DMA giriş cihazı olarak Teensy 4.1
Baştan sona Teensy 4.1 kurulumu: host pedlerinin lehimlenmesi, Teensy Loader ile flash, kablolama sırası, serial veya ağ üzerinden kontrol, rapor hızları, descriptor işi ve sık görülen arızalar.
Kısa cevap
600 MHz'lik Teensy 4.1'in host pedlerine 5 pinli bir header lehimleyin, ardından Teensy Loader ile geçiş firmware'ini yükleyin. Fareyi host portuna, device portunu da oyun PC'sine takın ve kartı serial üzerinden sürün.
Bu sayfada12
- Teensy 4.1 nedir
- Hazır bir cihaz yerine neden Teensy?
- USB host portu nasıl lehimlenir
- Hangi yazılım gerekiyor ve dosyalar nerede
- Firmware nasıl yüklenir ve host portu nasıl test edilir
- Kablolar hangi sırayla takılır
- Kontrol hattını seçmek ve hileyi ayarlamak
- Daha yüksek rapor hızı işe yarar mı?
- USB descriptor'ı nasıl değiştirilir
- Teensy'de sık görülen sorunlar ve çözümleri
- Teensy hakkında sık sorulanlar
- Kaynaklar
Teensy 4.1 nedir
Teensy 4.1, PJRC'nin bu iş için hiç tasarlamadığı genel amaçlı bir mikrodenetleyici kartı. Ucuz olmasının sebebi bu; gereken emeği verdiğinizde bu giriş cihazlarının en yeteneklisi hâline gelmesinin sebebi de.
- Mikrodenetleyici
- NXP i.MX RT1062, donanımsal kayan nokta birimi olan ARM Cortex-M7
- Saat hızı
- Fabrika çıkışı 600 MHz, IDE'den seçilebilir. Bu iş için hız aşırtmayın
- Flash
- Yaklaşık 8 MB (7936 K); hiçbir geçiş firmware'inin ihtiyaç duyacağından çok daha fazlası
- RAM
- Toplam 1024 K, bunun 512 K'sı çekirdeğe sıkı bağlı
- Device portu
- Micro-USB soketi. USB 2.0 high speed, 480 Mbit/s. Oyun PC'sine bakan uç bu
- Host portu
- Kart üzerinde, fabrikada boş bırakılmış beş delikli ped. Taktığınız şeye göre 480, 12 veya 1,5 Mbit/s çalışır. Farenizin gireceği uç bu
- Host 5V
- Akım sınırlı bir anahtar üzerinden yonga tarafından verilir. Firmware host kütüphanesinin başlatma fonksiyonunu çağırana kadar pedlerde gerilim yoktur
- Donanımsal serial
- Sekiz UART; USB device portundan bağımsız bir serial hat istiyorsanız
- Ethernet
- 10/100 destekli, ama magjack ayrı bir kit olarak lehimleniyor. Serial kurulumda gerekmez
- Programlama
- Teensy Loader; Teensyduino kurulduktan sonra Arduino IDE tarafından otomatik sürülüyor. Fiziksel Program düğmesi bootloader'a zorlar
Hazır bir cihaz yerine neden Teensy?
Üç sebep var ve bunları gerçek sebep olma sıklığına göre sıralıyoruz. Birincisi, firmware'i kendiniz derlediğiniz için oyun PC'sinin göreceği USB descriptor'ına ve rapor gönderme sıklığına siz karar veriyorsunuz; hazır cihazların hiçbiri bunu size bırakmıyor. İkincisi, host ve device denetleyicileri tamamen bağımsız, yani geçiş trafiği enjeksiyonla bant genişliği için yarışmıyor. Üçüncüsü, ucuz. Bedeli ise üreticinin siz olmanız: bir aksilik çıktığında arayacağınız destek kanalı yok, yalnızca kendi lehiminiz ve kendi kodunuz var.
Uyarı
USB host portu nasıl lehimlenir
Yapmanız gereken tek lehim bu ve kurulumun geri kalanının çalışıp çalışmayacağına o karar veriyor. Host pedleri fabrikada boş bırakılmış, metalize edilmiş beş delik: host 5V, D-eksi ve D-artı çifti ve toprak. Sıralama için serigrafiyi ve resmî pinout kartını izleyin; tahmin etmeyin ve bir forum gönderisindeki şemaya güvenmeyin.
- Kartınızdaki beş host pedini bulun ve sıralamalarını PJRC'nin Teensy 4.1 için yayımladığı pinout kartından teyit edin
- Deliklere 5 pinli erkek bir header oturtun ya da PJRC'nin Teensy 3.6 ve 4.1 için sattığı uygun USB host kablosunu hazırlayın
- İnce uçlu havya ve düşük sıcaklıkta eriyen lehimle çalışın, çünkü bunlar sık yerleşimli bir kartta küçük pedler ve kalın uç onları birbirine akıtır
- Her lehim noktasını iyi ışık altında inceleyin. Mat, taneli ya da top hâline gelmiş bir nokta soğuk lehimdir ve host portunun hiçbir şeyi tanımamasının en yaygın sebebidir
- Hiçbir şeye enerji vermeden önce multimetreyle süreklilik ölçüp D-eksi ile D-artı arasında köprü olup olmadığına bakın
- Kablo yerine çıplak tel kullanıyorsanız D-eksi ve D-artı çiftini kısa ve eşit uzunlukta tutun, çünkü bu 480 Mbit/s'ye kadar taşıyan bir diferansiyel çift
- Host 5V'ı gelişigüzel harici bir kaynağa bağlamayın, çünkü kart o hattı kendisi anahtarlıyor ve anahtarın akım sınırı bir sebeple orada
Hangi yazılım gerekiyor ve dosyalar nerede
Arduino IDE ve PJRC'nin eklentisi Teensyduino gerekiyor. Teensyduino host kütüphanesini ve Teensy Loader'ı birlikte getirdiği için başka bir şey kurmanıza gerek yok.
# After installing Teensyduino, set these three in the Arduino IDE:
Tools > Board > Teensy 4.1
Tools > USB Type > Serial + Keyboard + Mouse + Joystick
Tools > CPU Speed > 600 MHz
# The host-side library ships with Teensyduino. Prove the hardware with its own example:
File > Examples > USBHost_t36 > Mouse
# USB identity is defined in the core, not in your sketch:
<arduino>/hardware/teensy/avr/cores/teensy4/usb_desc.h
<arduino>/hardware/teensy/avr/cores/teensy4/usb_names.hUyarı
Firmware nasıl yüklenir ve host portu nasıl test edilir
Önce standart USBHost_t36 fare örneğini yükleyin. Takılı farenin her hareketini ve her tıkını serial monitöre yazdırdığı için lehiminizi otuz saniyede kanıtlar. Test etmeden önce şunu aklınızda tutun: host pedlerindeki 5V hattı doğrudan bağlı değil, yonga tarafından anahtarlanıyor. Kartta host kütüphanesini hiç başlatmayan bir firmware varsa host portundaki fare yanmaz bile. Böyle bir kartta ölü görünen host portu size hiçbir şey anlatmaz. Önce flash, sonra test ve ancak ondan sonra hilenizin beklediği firmware.
- Teensy'nin micro-USB device portunu, derleme yaptığınız PC'ye bağlayın
- USBHost_t36 Mouse örneğini açın, Board ve USB Type ayarlarını yukarıdaki gibi seçin ve Upload'a basın
- Teensyduino derlenen imajı Teensy Loader'a devreder; Loader kartı yeniden başlatıp imajı yazar. Fabrika çıkışı bir kartta bu kendiliğinden olur
- Yükleme takılırsa karttaki Program düğmesine bir kez basın. Bu bootloader'a zorlar ve Loader kartı o zaman bulur
- Yeni lehimlediğiniz host portuna kablolu bir fare takın ve serial monitörü açın
- Fareyi hareket ettirin. Hareket ve tuş olayları görünüyorsa host portu çalışıyor ve kurulumun donanım kısmı bitti demektir
- Şimdi hilenizin belgelediği geçiş firmware'ini aynı Board ve USB Type ayarlarıyla derleyip yükleyin
- Son flash'tan sonra yazılımsal sıfırlamaya güvenmek yerine kartın enerjisini bir kez tamamen kesip verin
Kablolar hangi sırayla takılır
Bu sırayı karıştırırsanız bir kabloyu ayıklamakla rahat bir saat geçirebilirsiniz. Device portu oyun PC'sine bakar, çünkü fare olduğunu iddia eden uç odur; host portu ise elinize bakar.
- Fiziksel farenizi ya da kablosuz farenizin alıcısını Teensy'nin lehimlediğiniz USB host portuna takın
- Teensy'nin micro-USB device portunu doğrudan OYUN PC'sinin arka panelindeki bir USB portuna bağlayın; hub ya da ön panel girişi olmasın
- Kontrol hattını İKİNCİ PC'den çekin. Bu hat device portunu paylaşamaz, çünkü o portun USB serial arayüzü kablonun takılı olduğu oyun PC'sinde görünür
- Kontrol hattı için sekiz donanımsal UART'tan birini kullanın. İkinci PC ucuna bir USB-serial çevirici koyun ki iki makine hiçbir zaman aynı kabloyu paylaşmasın
- Oyun PC'sini açın ve Windows'un bir fare aygıtı gösterdiğini, elinizin de imleci hareket ettirdiğini doğrulayın
- Ancak bundan sonra ikinci PC'deki yazılımı başlatıp bağlantıyı açın
İpucu
Kontrol hattını seçmek ve hileyi ayarlamak
Bileşik bir USB tipi, aynı kablo üzerinde hem fare arayüzü hem serial arayüz verir. O serial arayüz device portunun takılı olduğu yerde, yani oyun PC'sinde görünür; dolayısıyla ikinci PC onu açamaz. Üstelik bu, hile yaptığınız makinede farenizle aynı bileşik aygıttan gelen bir serial cihaz bulunması, iki arayüzün tek bir descriptor altında toplanması demektir. Onun yerine kontrol hattını donanımsal bir UART'tan çekin ve ikinci PC ucuna sıradan bir USB-serial çevirici koyun. Oyun PC'si o zaman yalnızca fare olan bir cihaz görür; bir kablo ve bir parça fazlaya daha temiz bir kurulum elde edersiniz. Hangi hattı kullanırsanız kullanın, protokolü firmware belirler ve hilenin ona uyması gerekir. Hilenin giriş menüsünde üç şey ayarlarsınız: cihaz tipi, COM portu ve baud hızı. Cihaz tipi çoğu zaman Teensy ya da genel bir serial aygıt olarak listelenir. COM portu ikinci PC'nin atadığı numaradır, baud hızı ise firmware'in derlendiği değerdir. Üçünün de uyuşması gerekir. Uyuşmayan baud hızı net bir hata vermez, çünkü bağlantı açılır ve hiçbir şey yapmaz; bu da tam olarak ölü bir cihaz gibi görünür. Bu yüzden port numarasını Aygıt Yöneticisi'nden kontrol edin, hile yalnızca tek haneli okuyorsa 10'un altına sabitleyin ve baud hızını sonradan tahmin etmek yerine flash sırasında bir yere yazın.
Daha yüksek rapor hızı işe yarar mı?
Device portu USB high speed olduğundan descriptor, full speed bir farenin takıldığı 1 ms tabanından daha kısa aralıklar isteyebilir. Pratikte bu, milisaniyenin altında raporlama demek ve insanların bu kartı sevmesinin sebebi de bu; ama heyecanın faydayı geçtiği yer de tam burası. Oyunun kendi giriş döngüsünün tükettiğinden çok daha yüksek bir rapor hızı size ölçülebilir hiçbir şey kazandırmaz. Alışılmadık bir hızda kusursuz düzenli akan bir rapor akışı ayrıca bir desendir ve davranış analizinin aradığı şey tam olarak desenlerdir. O sınıftaki gerçek bir farenin kullanabileceği, makul bir hız seçin. Daha yüksek bir sayının daha güvenli olduğunu gösteren dürüst bir ölçüm yok; size bunu milisaniye cinsinden söyleyen kişi uyduruyordur.
İpucu
USB descriptor'ı nasıl değiştirilir
Firmware'i kendiniz derlediğiniz için vendor ID, product ID, üretici ve ürün metinleri, seri numarası ve HID report descriptor sizin elinizde. Dokunmazsanız Teensy, PJRC'nin kendi kimliğini sunar; yani başka hiçbir sebeple orada bulunmayacak bir geliştirme kartı kimliğini. Metinler ve ID'ler sizin sketch'inizde değil, çekirdeğin usb_desc.h ve usb_names.h dosyalarında duruyor. 4.x çekirdeği daha temiz bir yol sunuyor: metin descriptor'larını sketch klasörünüzdeki küçük, ayrı bir C dosyasında tanımlayın. Vendor ve product ID'lerini değiştirdiğiniz anda Teensyduino kartı artık bulup otomatik yeniden başlatamaz, yani sonraki her yüklemede Program düğmesine basmanız gerekir. Bu beklenen davranış, kartın bozulması değil. Bir şeyi değiştirmeden önce descriptor rehberini okuyun, çünkü gerçek bir farenin kimliğini kötü kopyalamak, cihazı olduğu gibi bırakmaktan daha kötüdür.
Teensy'de sık görülen sorunlar ve çözümleri
Yukarıdan aşağıya ilerleyin. İlk dört satır ilk kurulumda ters giden şeylerin çoğunu kapsıyor ve bu dördünün üçü lehime çıkıyor.
| Sorun | Olası neden | Çözüm |
|---|---|---|
| Host portuna takılan fare hiçbir şey yapmıyor, farenin ışığı bile yanmıyor | Ya host pedlerinde soğuk lehim var ya da firmware host kütüphanesini hiç başlatmadığı için 5V hattı kapalı kalıyor | Önce USBHost_t36 Mouse örneğini yükleyin. Fare yine de hiçbir hayat belirtisi göstermiyorsa beş pedi de yeniden lehimleyip sürekliliği ölçün |
| Host portu kesik kesik tanıyor ya da yalnızca yavaş cihazlar çalışıyor | D-eksi ve D-artı çifti fazla uzun ya da uzunlukları eşit değil; ya da pedler arasında lehim kalıntısı var | Çifti kısaltıp uzunlukları eşitleyin veya düzgün USB host kablosuna geçin. Pedleri izopropil alkolle temizleyip ışık altında inceleyin |
| Oyun PC'sinde hiçbir fare aygıtı görünmüyor | IDE'deki USB Type seçeneği Mouse içermiyor, dolayısıyla device portu hiçbir zaman HID fare arayüzü sunmuyor | Tools > USB Type altından Mouse içeren bir seçenek seçin, yeniden derleyip yükleyin, sonra kartın enerjisini kesip verin |
| Yükleme başarısız oluyor veya Waiting for Teensy device satırında takılıyor | Karttaki firmware yeniden başlatma isteğine yanıt vermiyor ya da vendor ve product ID'lerini değiştirmişsiniz | Karttaki Program düğmesine bir kez basın. VID ya da PID değişikliğinden sonra bunu her yüklemede yapmanız gerekir |
| İmleç hileyle hareket ediyor ama kendi fareniz hiçbir şey yapmıyor | Geçiş çalışmıyor: device tarafı ayaktayken host tarafı ölü | Host portunu Mouse örneğiyle test edin, çünkü sebep neredeyse her zaman lehim |
| Fareniz çalışıyor ama hile bağlantıyı açamıyor | Yanlış COM portu ya da derlenen firmware'le uyuşmayan bir baud hızı | Portu Aygıt Yöneticisi'nde bulup 10'un altına alın ve baud hızını firmware'in derlendiği değere ayarlayın |
| Hareket yumuşak değil, kaba ya da basamaklı | Report descriptor 8 bitlik hareket alanları kullanıyor, bu yüzden büyük değerler kırpılıp birkaç adımda gönderiliyor | Descriptor'ında 16 bitlik göreli eksenler tanımlayan bir firmware kullanın ve büyük hareketleri descriptor'a bırakmak yerine hilenin bölmesine izin verin |
| Kart ısınıyor ve host tarafındaki cihaz yük altında düşüyor | Takılı cihaz, host hattının sınırının izin verdiğinden fazla akım çekiyor | RGB'si bol bir fare ya da beslemeli hub yerine sade kablolu bir fare kullanın ve host portuna asla cihaz dolu bir hub takmayın |
Teensy hakkında sık sorulanlar
4.1 yerine Teensy 4.0 kullanabilir miyim?
Rahat olmaz. 4.0, host sinyallerini güç yönetimli beş delik yerine iki yüzey pedi olarak dışarı veriyor; yani D-eksi ile D-artı'yı elle çekmeniz ve 5V'ı kendiniz sağlamanız gerekiyor. Yapılabilir ama her rehber ve her firmware 4.1'i varsayıyor.
PJRC'nin resmî USB host kablosu şart mı?
Hayır, ama en kolay doğru seçenek o; 5 pinli header'a oturuyor ve diferansiyel çifti fazladan uğraşmadan doğru getiriyor. Çift kısa ve eşit olduğu sürece elle çekmek de işe yarıyor.
Teensy, KMBox'tan daha mı zor tespit edilir?
Kendiliğinden değil. Teensy'nin size verdiği şey kontrol: descriptor'a, metinlere ve rapor hızına siz karar veriyorsunuz, yani fabrika kimliği yerine inandırıcı bir kimlik sunabiliyorsunuz. Varsayılanlarda bırakılırsa bir geliştirme kartının kimliğini sunar ki bu, iş için tasarlanmış bir cihazdan daha kötüdür; yani kontrol ancak kullanırsanız avantaj.
Hileyi Teensy'nin kendisi çalıştırabilir mi?
Hayır, çünkü oyun PC'sinin belleğini okumasının hiçbir yolu yok. Söylendiğinde imleci hareket ettirir; nereye gideceğine DMA kartı ile ikinci PC karar verir.
Kablosuz farenin alıcısı host portunda çalışır mı?
Genelde evet, çünkü host alıcıyı bir USB HID aygıtı olarak görüyor. Bazı alıcılar fazladan arayüzler ya da geçiş firmware'inin görmezden geldiği özel bir yapılandırma protokolü sunuyor; bu durumda kart üzerindeki tuş atamaları ve bazı yazılım özellikleri çalışmayabilir.
Ethernet magjack kitini lehimlemem gerekir mi?
Yalnızca serial yerine IP üzerinden kontrol istiyorsanız. İkinci PC oyun PC'sinin yanındaysa serial daha basit ve size bir lehim işinden kurtarır.
Yanlış firmware yüklersem ne olur?
Kalıcı bir şey olmaz. Bootloader ayrı bir yongada duruyor ve Program düğmesi kartı her zaman Teensy Loader'ın yeni bir imaj yazabileceği duruma getiriyor. Bu da Teensy'yi flash ederek bozmayı çok zorlaştırıyor.
Kaynaklar
Kontrol ettiğimiz kaynak listesinde Teensy'nin kendisini anlatan bir belge yok, bu yüzden kart özellikleri, lehim, flash ve arıza tablosu tezgâh çalışmasından geliyor.
- 01Microsoft Learn, USB device descriptors
kendi descriptor'ınızı derlerken doldurduğunuz vendor id, product id, metin ve seri numarası alanları
learn.microsoft.com
Sırada ne var
Hâlâ takıldınız mı? Discord'da destek talebi açın
Tüm rehberler