2014. május 7., szerda

Windows 8.1 vs Microchip CDC

ENGLISH VERSION

És a nyertes...
Én. :-)
Miután sikerült felélesztenem az FRDM-KE06Z boardot, elkezdtem küzdeni a robottal.
Mintegy három nap szenvedéssel keresztülrágtam magam a Freescale nem túl értelmes driver tömegén, a CodeWarriorba rosszul települő mintaprogramon, és a saját mellényúlásaimon.
Eljutottam oda, hogy a motor vezérlés megy PWM-mel.
El kezdtem gondolkozni, mi legyen a folytatás. Az egyik lehetőség, hogy felteszem a még hiányzó optikai érzékelőt és megcsinálom a klasszikus "kövesd a vonalat" robotot - ehhez valahogy most nincs túl sok kedvem, bár biztos, hogy fel fogom szerelni az érzékelőt.
Ezen kívül még számtalan ötlet jutott eszembe, de van egy dolog ami piszkálja a fantáziámat. Ennek a freedom boardnak van infravörös adó-vevő része. Ezt két dologra tudnám használni. Közelítésérzékelőnek, vagy távirányító infra vevőnek.
Végülis arra jutottam, hogy ez utóbbinak állok neki.
Ahhoz, hogy valami fogalmam legyen a megírandó kódról előkapartam két eszközt a fiókból:
Egy a DealeXtrame-ről származó mini távirányító (ez lesz a robot távirányítója)


Egy dangerousprototypes féle IR Toy (ezzel akarom megnézni a frekvenciákat, kódokat, jelformákat)

Fogtam az IR Toy-t feldugtam a gépemre és...
Na szóval a cik itt kezdődik.
Az IR Toy-t nem ismerte fel a gép.
Nyomoztam. A drivere a firmware upgrade package-ben van benne. Letöltöttem.
Közölte, hogy ehhez az OS-hez nincs aláírva és nem rakta fel.
Valahonnan emlékeztem rá, hogy van valami USB telepítő az ilyen típusú eszközökhöz. Megkerestem, letöltöttem. Zadig WinUSB fedőnevű szerkezetről van szó. Fel is raktam vele az IR Toy-t. Minden szép, csak épp soros portom nem lett tőle.
Vissza a gyökerekhez. El kezdtem keresgélni, hogyan lehetne Windows 8.1-hez is jó cat fájlt gyártani a meglévő inf-hez. Elvégre a driver működése (usbser.sys) nem kérdéses, hiszen az az operációs rendszer része, csak kell egy olyan inf ami a Vendor/Product ID-t hozzárendeli ehhez a driverhez.
Rá is találtam az inf2cat.exe címü eszközre. Ez a Windows WDK része.
Feltelepítettem egy 8-as WDK-t és hozzá egy 8.1-es update-et.
Inf2cat lefuttat:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Inf2Cat.exe" /drv:<inf path> /os:7_X86,7_X64,8_X86,8_X64,6_3_X86,6_3_X64
Nem fut le.
A mérleg: 1 error, 2 warrning
Error: a fájlban megadott driver dátum túl régi az új operációs rendszerekhez
Warrning: a hivatkozott driver fájl nincs rajta a forráslistán.
A dátumot (és a verziót) átírtam, a warrningok meg természetesek, hiszen rendszer driverről van szó.
Inf2cat mégegyszer. Lefut, megkapom a cat fájlt.
Driver telepít. Valami ismeretlen hibát dob.
Nyomozás tovább. Kiderül, hogy az alap ok a Windows 8/8.1 driver policy, ami nem engedi meg az aláíratlan meghajtókat. Itt volt számomra a félreértés. Nem csak a bináris drivernek, hanem az inf fájlnak is kell az aláírás.
Két lehetőségem maradt:
  • Kikapcsolni a driver policy-t a telepítés idejére
  • Aláírni a drivert ( pontosaban a cat fájlt)
Válasszuk a nehezebbet.
Ez alapján a leírás alapján indultam, de messze leegyszerüsítettem azt:
http://technet.microsoft.com/en-us/library/dd919238(v=WS.10).aspx
Van saját enterprise root ca-m, így a thrusted root dolgokkal nem kell foglakoznom.
Először is kell egy Code Signing tanúsítvány.
1. Felraktam a CA-ra. Code Signing template-et mert nem volt fenn.
2. Kértem maganak egy tanúsítványt a certificates mmc-ből (saját account)
3. Kiexportáltam a tanusítványt (private kulcs nem kell)
4. Beimportáltam a tanúsítványt a trusted Publishersbe (machine account)
Akkor most írjunk alá
5. SignTool-al /a kapcsolóval (A tanúsítványt megtalálja magától, timestamp meg nem kell most még. Max timestamp nélkül a driver megáll a tanusítvány lejáratakor.) aláírtam a cat fájlt:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe" sign /a mchpcdc.cat
Dirvet telepítés...
Felment, van soros portom.:
U.i.: Azon gondolkozom, hogy kéne csinálni egy weblapot, ami egy saját root ca-val egy driver template-ből megcsinálja ezt a hókusz-pókuszt bárkinek úgy, hogy csak a Product/Vendor ID-t kelljen megadni.

Nincsenek megjegyzések:

Megjegyzés küldése

Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.