Gestione della Memoria nella .NET Compact Framework e Windows Mobile (Parte 0 – Windows CE e Windows Mobile)

Il primo dei punti indicati nel mio precedent post era “Memoria Virtuale sui sistemi operativi basati sulla piattaforma Windows CE”… mi sono accorto però che prima di cominciare a parlare di memoria, credo sia giusto dissipare la nebbia (nonostante non ci sia più la “nebbia di una volta”! Smile) a proposito di termini come “piattaforma”, “sistema operativo”, “Platform Builder”, “Adaptation Kit”, “OEM, “ODM”, etc… ecco perchè credo si debba partire da una “Parte 0”…

Anzitutto: Windows CE e Windows Mobile non sono la stessa cosa. Dopo un po’ di tempo che ci si lavora può apparire ovvio, ma se sei un programmatore alle prime esperienze sui cosiddetti “Smart Device” allora potrebbe non esserlo. Anzi, in teoria il vero nome di “Windows CE” adesso sarebbe “Windows Embedded CE”, ma non voglio fare confusione con quello che una volta era noto come “Windows XP Embedded” e che adesso è stato separato in diversi prodotti:

  • “Windows Embedded Stardard”
  • “Windows Embedded Enterprise”
  • “Windows Embedded POSReady”
  • “Windows Embedded NavReady”
  • “Windows Embedded Server”

Trascuriamo per ora queste 5 piattaforme embedded (a dir la verità non sono il mio campo…) e concentriamoci su Windows CE e Mobile.

Windows CE è una piattaforma per “OEM (Original Equipment Manufacturer). Questo significa che Microsoft fornisce al costruttore (un esempio ne è l’italianissima Datalogic ) uno strumento di sviluppo del tutto simile a Visual Studio (anzi, da Windows CE 6.0 si integra con Visual Studio), ma pensato non per sviluppare applicazioni ma per sviluppare sistemi operativi basati sulla piattaforma fornita da Microsoft. Il tool in questione si chiama “Platform Builder for Windows CE”, e fino alla versione 5.0 era un tool separato da Visual Studio.

Windows CE è una piattaforma modulare. Questo significa che l’OEM ha piena libertà di includere soltanto i moduli, i driver e le applicazioni che gli interessano. Microsoft fornisce circa il 90% di codice sorgente della piattaforma Windows CE, oltre ad esempi di codice driver e varie raccomandazioni (che l’OEM può scegliere di seguire o no). Ad esempio, se il dispositivo non sarà dotato di un’uscita audio, allora non sarà inserito il driver audio. Se non deve avere un display, allora l’OEM non svilupperà nè inserirà un driver video. E così via per la connettività di rete, la presenza di lettore di codice a barre o una fotocamera. Su un dispositivo basato su Windows CE l’OEM può includere quello che vuole. Ecco perchè, dal punto di vista dello supporto tecnico agli Sviluppatori, spesso non ci è possibile aiutare un programmatore che abbia come target uno specifico dispositivo il cui sistema operativo sia basato con Windows CE. Infatti, l’OEM può anche decidere se offrire agli sviluppatori di applicazioni la possibilità di interagire via codice con particolari funzioni del dispositivo, attraverso un cosiddetto “Private SDK”.

Un dettaglio importante: al contrario dei sistemi operativi Windows Embedded (Standard\Enterprise\POSReady\NavReady\Server), per i sistemi operativi basati su Windows CE gli OEM *COMPILANO* il codice sorgente della piattaforma (a parte circa un 10% fornito da Microsoft e corrispondente allo zoccolo duro del kernel e altre funzionalità).

Windows Mobile è una particolare personalizzazione di Windows CE, in cui però l’OEM deve creare un sistema operativo che soddisfi tutta una serie di requisiti, detta “Windows Mobile Logo Test Kit”. Il tool usato dai Windows Mobile-OEM si chiama “Adaptation Kit for Windows Mobile”, una edizione speciale del “Platform Builder”, e serve ad adattare la “piattaforma Windows Mobile” al preciso hardware che essi stessi hanno costruito oppure che hanno commissionato ad un ODM (“Original Device Manufacturer”). Nello scenario di Windows Mobile non vanno dimenticati gli Operatori Mobili, che spesso “brandizzano” un dispositivo richiedendo all’OEM di inserire particolari applicazioni e in genere di configurare la connettività della rete mobile (GPRS, UMTS, WAP, etc.). Attenzione: nulla vieta ad un WinMo-OEM di includere anche funzionalità particolari come il lettore di codice a barre o un chip RFID o altro… l’importante è che il set minimo sia lo stesso. Inoltre, anche i WinMo-OEM possono fornire SDK Privati relativi a funzionalità specifiche del loro sistema operativo, un esempio ne è quello di Samsung che permette di accedere programmaticamente all’accelerometro e altre funzioni, attraverso API documentate e supportate da Samsung stessa.

Infine, un ultimo dettaglio prima di parlare di memoria: Windows Mobile 5.0, 6, 6.1 e 6.5 sono tutte piattaforme basate su Windows CE 5.0. Quindi condividono la stessa gestione della memoria virtuale, a parte alcuni dettagli introdotti nelle ultime, a totale beneficio degli Sviluppatori di applicazioni.

Credo che a questo punto possiamo cominciare a parlare di memoria… o no? Sarcastic (commenti ben accetti!)

A presto, ciao!
~raffaele

Raffaele Limosani
Senior Support Engineer
Windows Mobile & Embedded Developer Support
My Blog around Mobile Development