Windows Embedded Compact 2013 : supporto per il debugging di un’applicazione .Net Compact Framework 3.9

Siamo giunti alla quarta puntata di questo tutorial che ha come oggetto lo sviluppo e l’utilizzo di un componente proprietario in un’immagine del sistema operativo Windows Embedded Compact 2013. Nel primo post, abbiamo visto come firmare un assembly compilato per il .Net Compact Framework 3.9 in modo da poterlo registrare nella GAC (Gloabal Assembly Cache); per farlo, abbiamo usato l’assembly della libreria M2Mqtt. Nel secondo post, abbiamo realizzato un componente che sia visibile nel catalog items di Platform Builder e che permetta di includere facilmente tale libreria con tutte le impostazioni necessarie per la registrazione nella GAC. Nel terzo post, abbiamo visto come sia possibile distribuire il proprio componente a terze parti e come sia semplice includerlo nel sistema operativo. A questo punto, il passo successivo consiste nel predisporre l’immagine con alcuni strumenti di debug in vista dell’applicazione di esempio nell’ultimo post.

Il framework Core Connectivity

Una delle principali caratteristiche di Windows Embedded Compact sin dalle prime versioni è quella di poter eseguire il debugging delle applicazioni managed (e non) sviluppate con il .Net Compact Framework direttamente sul target device. Tale potenzialità viene fornita attraverso Core Connectivity, ossia un framework di comunicazione che permette di stabilire una connessione con il target device per poter effettuare debugging (oltre ad un’altra serie di funzionalità).

Tale framework è costituito da una serie di file che possiamo trovare sul PC di sviluppo a seguito dell’installazione di Platform Builder nella seguente cartella :

C:\Program Files\Common Files\microsoft shared\Embedded Tools\CoreCon\11.0\Target\wce800 directory (sottocartelle x86 o armv7 in base al target).

In particolare sono :

  • ConmanClient3.exe : avvia il servizio di connessione sul device;
  • Clientshutdown.exe : arresta il servizio di connessione;
  • CMAccept3.exe : disabilita temporaneamente la sicurezza sul device per permettere la connessione dal PC;
  • DeviceagentTransport.dll, EDbgTL.dll, TcpConnectionA.dll : DLL necessarie alla connessione;

Per poter utilizzare tale infrastruttura, è necessario copiare questi file sul target device ed eseguire prima ConmanClient3.exe (per avviare il servizio) e successivamente CMAccept3.exe (per disabilitare la protezione); da questo momento in poi abbiamo 3 minuti per connetterci al target. Per evitare questo timeout e disabilitare la sicurezza sul sistema, è possibile impostare la seguente chiave di registro :

[HKLM\System]
“CoreConOverrideSecurity”=dword:1

E’ importante ricordarsi di rimuovere questa impostazione nel momento in cui andremo a generare l’immagine per la produzione.

L’inclusione di questo framework nell’immagine del sistema operativo è comparabile all’inclusione di un componente (come visto nei post precedenti) per cui è necessario copiare i file nella release directory (con una custom build action o un file batch), modificare il BIB file (dell’OS Design, BSP o SubProject) e modificare il REG file (se vogliamo aggiungere la chiave che disabilita la sicurezza). Anche in questo caso ci viene in aiuto un componente per Platform Builder già pronto e disponibile online su CodePlex : AutoLaunch for Windows Embedded Compact (CE).

AutoLaunch : includiamo il CoreCon con un click !

AutoLaunch è un componente per Platform Builder, sviluppato da Samuel Phung e David Jones, che permette di includere con un semplice click il framework CoreCon nell’immagine del sistema operativo, occupandosi anche di disabilitare eventualmente la sicurezza con la corrispondente impostazione nel registro di sistema e di avviare anche il servizio di connessione al boot del target device. In questo modo, lo sviluppatore non deve fare assolutamente nulla se non stabilire la connessione del proprio ambiente Visual Studio per avviare il debug della propria applicazione.

Questa è la sua funzionalità principale, il cui scopo primario è però quello di fornire la possibilità di impostare delle applicazioni da lanciare all’avvio anche con un eventuale delay. Infatti, questo componente non contiene esclusivamente files da includere o meno nell’immagine ma è caratterizzato anche da un vero e proprio programma scritto in C++ che esegue l’operazione suddetta.

Come tutti i componenti sviluppati da terze parti per Platform Builder, dopo averlo scaricato dal sito CodePlex è necessario estrarre il suo contenuto nella cartella \WINCE800\3rdParty in modo che esso risulti immediatamente visibile nel catalog items.

0285.AutoLaunch_01_thumb_210BE842

E’ possibile decidere di includere o meno i componenti CoreCon, usando l’item “Autolaunch CoreCon”, in modo che la variabile di ambiente BSP_AUTOLAUNCH_CORECON ad esso associata sia settata ed il BIB file includa i files corrispondenti. Sulla base della medesima variabile di ambiente, il REG file permette di impostare la disabilitazione della sicurezza e l’avvio automatico del servizio di connessione.

1768.AutoLaunch_02_thumb_40511FC6

Le ultime due operazioni da fare per avere un’immagine pronta per il debugging sono :

  • disablitare il KITL (Kernel Indipendent Transport Layer) avendo incluso i componenti CoreCon;
  • includere il componente “Application Builder Debugging Support” del catalog items (in CoreOS –> Windows Embedded Compact –> Applications and Services Development –> Diagnostics and Debugging Tools) necessario per utilizzare l’Application Builder (di cui parleremo nell’ultimo post);

A conclusione di questo post, abbiamo tutto il necessario per poter buildare un’immagine che sia predisposta per il deploy ed il debugging di un’applicazione .Net Compact Framework 3.9 che faccia uso del componente M2Mqtt incluso; vedremo come fare proprio nell’ultimo post di questa serie !

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s