WinCE için PSoC USB device driver

Başlatan picusta, 08 Haziran 2010, 21:56:25

picusta

Iyi günler,
WinCE altinda çalisan USB device driver yazmam gerekli. MCU'nun modeli CY8C24 - 794. 
Aslinda durum söyle :
Su an WinXP/ VISTA 'da çalisan USB uygulamam mevcut, CyAPI.h, CyAPI.Lib, CyUSB.sys 'deki fonksyonlari kullaniyor. PSoC'ta da buna uygun olarak programlanmis Endpointlar vs. var ve gayet saglikli bir biçimde iletisimdeler.
PC tarafinin kaynak kodlari var, PSoC kodu yok.
WinCe Platformuna geçis yapmak istiyoruz bu yüzden CyUSB 'nin Windows CE 'ye port edilmis driver'ini arastirdim, meger yokmus, Cypress partnerlerine yonlendiriyor, bir  Jungo isimli, "kisa zaman içinde" driver gelistirmeye yardimci olan bir programa.

Daha önce WinCE'ye driver port eden oldumu ? örnegin USB PIC 'ler için .

t2

FTDI çipler için wince için hazır sürücüsü vardı. Onunla örnek yapıp çalıştırmıştım.

Projenize özel WINDOWS CE sürücüsü geliştirmek için windows driver kit kullanılabilir Mİ bilmiyorum. Bu CD yi ücretsiz indirip çok çeşitli sürücüler geliştirebiliyorsunuz.


picusta

Tamamdir hallettim. Jungo olunca driver'i yazmak  (çogunu Jungo yapiyor ) yarim gunluk is.
BSP'ye dll ve registry 'i ekleyince fistik gibi çalisti. Cypress'teki kod'da iki bulktransfer endpoint'undan ibaretti.


t2

Full Jungo külliyatı va rmı? bizde beleş driver yapıversek.

picusta

Son sivri 'de Jungo küllü beles.
- Init, Uninit ile driver'i "açip kapiyorsun".
- USB baglaninca çikinca sana callback'ler ile haber veriyor (attach / detach).
- WDU_Transfer ile istedigin endpoint'tan okuyup yazabiliyrosun.
-  BSP'ye  wduapi ve windrv6.dll dosyalarini eklemelisin.
Daha önceden PIC18F4550 ile ugrasirken, seri port emulasyonu ( CDC) için yaklasik 20 kod dosyasi eklerdim (application note ile gelen), yazdigim programda da kisitlamalar vardi. O zaman Jungo kullansaydim PIC'teki kod daha esnek ve öz olurdu.

t2

CDC yaparsak driver niyetine sadece inf oluyor. 32 bit ve 64 bit windowsta kaba kuvvetle bunu driver olarak gösterebiliyoruz ve cihaz çalışıyor.

Jungo ile diriver yaparsak 64 bit windowsta durum nasıl oluyor. sertifika filan gerekiyormuş galiba *.cab dosyası ? da mı oluşturulacak yoksa yüklenemiyormuş.

Mümkünse hazır yapılmış bir driver örneği paylaşabilir misiniz? 

picusta

Isletim sistemi ile Jungo konusuyor, windrv6.dll asil driver. 64-bit windows için WHQL certificat vs.. mevcut.
Yazdigin kod User mode'da çalisiyor ve Jungo driver'i ie konusuyor.

Driver wizard isimli program sayesinde USB aygitini tak, o sana INF dosyasi olustursun, endpointlari siralasin, test için bilgi al /gönder.
Bir sonraki asama da örnek program olusturulmasi.
örnek program console tipi uygulama, menu ile çalismakta. Buraya örnek kodu koymama gerek yok, Jungo yuklendiginde C:\Windriver\samples dosyasinin altinda bulunuyor.
Mantigi anlattigim gibi, bu adimlarin detayini okumak için http://www.jungo.com/st/support/documentation/windriver/10.2.0/wdusb_manual.mhtml/DriverWizard_Walkthrough.html
Alıntı- Init, Uninit ile driver'i "açip kapiyorsun".
- USB baglaninca çikinca sana callback'ler ile haber veriyor (attach / detach).
- WDU_Transfer ile istedigin endpoint'tan okuyup yazabiliyrosun.
-  BSP'ye  wduapi ve windrv6.dll dosyalarini eklemelisin.


Bu arada ben bu ürünün reklamini kesinlikle yapmiyorum. Kisa zamanda sonuca ulasmak için kullandim. DDK, WDK'yi bilmeden, ugrasmadan istedigime ulastim, zamani bil ögrenmek isteyenlere WDK'y ögrenmeyi ve kullanmayi tavsiye ederim.



t2

AlıntıDriver wizard isimli program sayesinde USB aygitini tak, o sana INF dosyasi olustursun, endpointlari siralasin, test için bilgi al /gönder.


;D ;D. Bunun olabilmesi için öncelikle cihazın zaten driveri olmalı ve windows bunu tanımış olmalı.  Driverin yoksa bu da driver üretemiyor. Benim anladığım bu.  Başka driver üreten programlar  vardı onlar öyleydi.

Mesela Compuware Driver Studio

Eğer böyle benim dediğim gibi değilse de yeteri kadar ilgilenemediğimden ve anlamadığımdan olabilir.

picusta

Driver wizard PC'ne bagli olan bütün aygitlari siraliyor. Oradan istedigini seçip "Bunun için driver olustur" seçiyorsun, o sana inf dosyasini olusturuyor, eski driver'i sutluyor. Verdigim link'i incelemen kafi, su üç resimde anlasiliyor :




Deneme sürümünü veya son sivri den indir, sonra istedigin cihaz için (driver'i olsun veya olmasin) driver gelistir.
Driver wizard ile yaptigim bir deneme 'de su oldu : sisteme bagli olan USB audio kartindan gelen ham veriyi yakalamak.
Teknik olarak nasil oluyor sorusuna gelirsek zannedersem söyle "alternatesettings 0 Endpoint 0 "'da bütün konfigürasyon (interface ve endpoint) bilgileri mevcut. O sayede cihazin endpointlarini ve interface'lerini listeliyor.