Vyvijime pro PocketPC na 3 zpusoby
červenec 17, 2008
Jakozto linuxovy uzivatel bych byl rad, kdyby vyvojove nastroje pro PocketPC byly nativne dostupne pro linux. Z pochopitelnych duvodu nejsou. Jednak kdyz uz nekdo vyviji pro Windows Mobile, tak ma asi i “velky” Windows a ma k dispozici veci typu ActiveSync, atd. Microsoft nema duvod tyto nastroje poskytovat pro linux, kdyz sam vyrabi vlastni operacni system. Taky z hlediska trhu je to nesmysl. Lidi s linuxem, kteri by vyvijeli pro Windows Mobile, neni zrovna miliardy, aby se to vyplatilo. A naslo by se urcite i spoustu dalsich rozumnych duvodu.
Proto je uzivatel linuxu odkazan v zasade na 2 pristupy. Bud pouzije arm-wince-gcc, coz je sympaticky projekt, ktery pouziva gcc pro kompilaci nativniho kodu pro Windows CE. Bohuzel podpora pro MFC zde neni, coz je skoda, protoze MFC je na platforme Windows Mobile dostupne vsude, takze netreba trapit uzivatele s instalaci chybejicich knihoven, frameworku, a jine zbere. Osobne jsem projekt nezkousel, ale z doslechu vim, ze veci ve WIN32API funguji.
Druhy pristup je pouzit virtualizaci a ty wokna si virtualizovat. Mate-li vsak strasi a slabsi stroj jako ja, nelze hovorit o produktivite. Free nastroj pro vyvoj je v zasade jen jeden a to je eVC 4.0 (3.0 uz ze stranek MS stahnout nejde, aspon ja to nevydoloval). eVC 4.0 je pekny, az na to, ze to kazdou chvili spadne, ale co by clovek nechtel od veci co jsou zadarmo, ze? :) Virtualizace se teoreticky tvari hezky, ale prakticke mi to neprijde. Zkousel jsem vmplayer a co chvili zacal ukladat obrovsky kusy dat na disk, ale takovym zpusobem, ze se neslo nikam prepnout, treba ani opustit ten virtualni stroj. Pri ukladani souboru, clovek videl 2-3 s zpozdeni, nez se to ulozilo. Az na tyto problemy to funguje bezvadne. ActiveSync bezi, emulator bezi, eVC bezi, da se pripojit na emulator, lze pripojit i fyzicke zarizeni. Jiny problem ale je napr. nemoznost krokovat binarku z eVC 4.0 v emulatoru WM6 (nekompatibilita, moc nove, eVC nezna). Jo, muzete si koupit VS2005/8 a pak mate “vsechno” funkcni z krabice ;-)
Dale by nekdo mohl rict, ze si to eVC naemuluje ve wine. Coz je myslenka hezka, ale prakticky nerealizovatelna, protoze eVC ve wine nainstalovat nejde. Dalsi problem by asi byl s ActiveSync, takze myslenka na to, ze vsechno odemulujeme ve wine se rozplyne celkem brzy.
No a pak je tu reseni pro tvrdy chlapy. V zasade jde o to prenest nezbytne casti pro preklad a linkovani do linuxu, pro projekt vytvorit Makefile, kod editovat svym oblibenym editorem v linuxu a pouzit make pro preklad a sestaveni.
Co vsechno musite prenest? clarm.exe, link.exe, rc.exe, coz je prekladac, linker, kompilator resourcu.
Kde to vezmete? V EVC 4.0.
Jak to pustit v linuxu? Pres wine :)
Co je k tomu jeste treba? Instalovat SDK pro PocketPC 2003, kde jsou liby a header soubory, ktery bude potreba.
Ovsem jak testovat? Nasnade je prenest binakru na zarizeni a vse delat tam. Ovsem pokud neco nevyjde, musime HR a obnovit zarizeni, coz nas nepotesi. Toz by to chtelo emulator. A ono to jde. Windows Mobile 6 SDK jde pod wine nainstalovat, stejne tak ARM Standalone emulator, SDK ma “jen” binarni obrazy pro emulator.
Zda se to jako fantazie, ale neni. Samotnymu se mi to podarilo a ted muzu psat kod v eclipse, prekladat a testovat v emulatoru a to vse v linuxu, bez zpomaleni vmplayerem. Ovsem stejne jako vsechno, i toto neni prefektni. Emulator nejde pripojit k internetu, takze nelze delat sitove programy. Nicmene i toto by mely byt teoreticky mozne, pokud by se podarilo do wine dostat VirtualPC od MS (instalator pustit jde, ale nedobehl mi do konce). Dalsi vec co muze citelne chybet je nemoznost debuggovani. Holt zpatky na stromy a uzijme si ladicich vypisu…
Pozn.: Vyvoj v C# nezminuji, protoze v tom nedelam a ani o tom nic nevim (a ani nechci :)
8 Comments Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed
1.
Techi | srpen 2, 2008 at 5:10 pm
Když už někdo pro PPC profesionálně vyvíjí, tak si to Visual Studio na Windows pořídí. Pro linuxový PDA se nejlíp vyvíjí na Linuxu, pro iPhone na Mac OS a pro Windows Mobile na Windows. Hledat alternativní řešení je IMHO ztráta času. Když chceš univerzální aplikaci, tak si jí napiš v Javě :D
2.
P3T3 | srpen 13, 2008 at 3:06 pm
Já zkoušel cegcc-mingw32ce, ale ztroskotal jsem, že nejde zkompilovat příkaz SHInitDialog :-( Teď bych to rád zkusil přes Wine, ale je to nějaké dost hrbolaté a já klopýtám, co vyextrahovat, jak nastavit cílovou platformu a pod. Rada by byla moc vítaná ;-)
3.
David | srpen 14, 2008 at 12:06 dop.
Je treba soubory:
ARMASM.EXE CLTHUMB.EXE CVTRES.EXE C1XX_ARM.DLL DUMPBIN.EXE LIB.EXE MIDLC.EXE MSPDB60.DLL RC.EXE
CLARM.EXE CVPACK.EXE C1_ARM.DLL C2_ARM.DLL EDITBIN.EXE LINK.EXE MIDL.EXE RCDLL.DLL
Jsou v instalaci eVC (a je nutny to eVC nainstalovat na windowsi masine – ve vmware to jde – a najit to tam. bude to tam 2x jednou pro ARM4V a druhy pro emulator – chces pochopitelne ty binarky pro arm).
A pak wine clarm.exe uz dela to co chces.
Pak ale jeste nic neprelozis, pac nemas headery a liby. Ty jsou v SDK 2003, ktery uz do wine hodit jde – viz clanek. Pak je dobry si nechat v eVC vygenerovat makefile a ten prepsat na GNU makefile. Kdyz si pak nastavis prekladac a linker na ty clarm a link, tak uz prekladas. Nezapomen na preklad resource (pres rc.exe)
4.
P3T3 | srpen 14, 2008 at 5:13 dop.
Děkuji za tak rychlou odpověď!
Do těch souborů jsem se víceméně strefil. Ve WINE jsem spustil eVC4.0, to se zeptalo, kam se má rozbalit ZIP, tak jsem ho nechal uložit do adresáře TEMP a z něho to začal postupně kopírovat. Poprvé pokus/omyl, teď si dělám skriptík podle Tvého soupisu na automatické kopírování, kdybych to někdy měl opakovat ;-).
Jenom jsem zjistil, že dva z těch souborů (CVTRES.EXE & MSPDB60.DLL) jsou současně na dvou místech: COMMON/EVC/BIN/ & WCE/wce400/BIN/ a samozřejmě je každý jiný. Ten CVTRES ale zná v obou umístěních parametr ARM, takže asi bude jedno,kterýpoužiju !? Chápu to správně, že je to konvertor resource souborů?
Potíž ale asi bude s tím SDKčkem, včera jsem se díval na MS stránky a chce to Genuine Win, což sice mám (XP doma na dně šuplíku originál placku i licenci), ale nejsou nainstalované na žádném dostupném stroj v okruhu několika mil :-( Jediná verze bez té jejich hvězdičky je SDK pro Smartphone, takže to zatím zkusím stáhnout, ale bojím se, že to nebude použitelné. Knihovny jsou přeci jen toršku rozdílné.
Ještě jednou Ti děkuji a pokud bys měl další tipy, bud za ně rád, Petr
5.
David | srpen 14, 2008 at 5:26 dop.
Ono mozna ty cvtres.exe a mspdb60.dll potreba nebudou (pokud to nevola clarm.exe, link.exe nebo rc.exe), ja to vykopiroval pro jistotu – zkus to a uvidis. Jinak jsem to bral z WCE/wce400/BIN/
Pokud chces vyvijet pro Pocket PC, tak potrebujes Pocket PC verzi – smartphone ti nepomuze. Jinak koukam, ze od posledne, co jsem to stahoval, je vic veci s hvezdickou…
Jinka jsem premyslel, ze bych to sepsal cely do nejakyho serialu na pokracovani, co se ma udelat…
6.
P3T3 | srpen 15, 2008 at 3:45 pm
Ahoj,
tak se mi povedlo zkompilovat první FUNKČNÍ program pro WinCE v Debianu s Wine ;-)
Je to sice “jednořádkový” nazdar světe, ale už začínám chápat, jak se asi bude kompilovat ve Wine. Taky jsem ještě k těm Tebou doporučeným souborům doplnil BSCMAKE.EXE /asi do budoucna bude potřeba, je to tuším make ;-) /.
Můj postup je takový, že z linuxové konzole zavolám “wineconsole kompiluj.bat”, kde mám nastavení cest pro PATH, LIB a INCLUDE, dále pak volání CLARM.EXE s veškerými parametry a následně LINK.EXE zase s parametry. Výsledkem je zkompilovaný WINCE exe soubor.
Parametry pro clarm i link jsem čerpal z *.vcp souborů na code.google Tvého programu Richesse-GPS.
Jo a zatím nemám jiné include ani lib než ty “free” z SDK pro SMARTPHONE 2003, ale i tak to šlo zkompilovat a hlavně pak SPUSTIT na mém HTC Kaiser s WCE6.1 :-P
Ahoj Petr
7.
David | srpen 15, 2008 at 11:48 pm
bscmake ma podle me neco do cineni se source code browserem (ale ten ja nepouzivam).
Ja to vsechno zenu pres Makefile, kde ty cesty teda taky nastavuju. Make se mi zda lepsi, resi zavislosti, preklada jen co se zmenilo, atd. Ale i to je dobrej zacatek, dal muzes zkusit ten make. Dalsi vyhoda je, ze pak na to muzes nasadit nejaky IDE, ktery umi pracovat s makefile (ja jedu na eclipse)
IMHO ti ty headery a liby funguji, pac pouzivaj jen nejaky zaklad, ktery bude na SP a PPC stejny, pokud by ses dostal treba na kod s property-page, tak to ti na SP nepujde vubec. Takze casem to SDK pro PPC potrebovat budes.
8.
P3T3 | srpen 19, 2008 at 6:38 dop.
Ahoj,
tak jsem nakonec na Mikrosoftích stránkách našel, že “Windows CE 5.0: Standard Software Development Kit (SDK)” je ke stažení bez nějakých omezení, nebo kontrol originálnosti OS. Tedy alespoň prozatím, snad jim to vydrží dost dlouho, aby se dalo regulérně stahovat, instalovat a programovat. Poslední předchozí Pocket verze , která je volně ke stažení je 2000. Proto jsem taky tahal tu verzi SP 2003, protože jsem chtěl něco novějšího a bylo mi jasné, že ten můj jednořádkový program MUSÍ fungovat.
Takže jsem si tento SDK stáhnul a nainstaloval. Obsahuje Include a Lib nejen pro ARM a Emulátor, ale i SH, MIPS i x86, ty jsem ale neinstaloval.
Narazil jsem tady na zajímavou věc, že od WCE500 je už všechno UNICODE, takže i můj testovací “Nazdar světe” musel doznat mikro úpravy: místo MessageBox je nyní MessageBoxW :-D
Zkoušel jsem si udělat i Makefile, ale tady jsem pohořel, asi by mi pomohlo, kdybys mi mohl nějaký jednodušší poskytnout. Abych nemusel všechno složitě hledat a ladit. Z dostupných *.VCP souborů pro projekty eVC nejsem schopen zkonstruovat fungující Makefile :-(
A z jiného soudku: poslal jsem Ti screeny z RichesseGPS pro ceode.google
Zdar petr