Windows CE 6.0 R3 Build System Series – 6. Inizializzazione del sistema di build : PBInitEnv.bat e wince.bat

Come già descritto negli articoli precedenti, il sistema di build deve essere correttamente inizializzato per poter essere utilizzato al fine della compilazione di un’immagine di Windows CE. Tale inizializzazione consiste nel setting di una serie di Sysgen Variable ed Environment Variable, che viene eseguita mediante due specifici file batch, il PBInitEnv.bat ed ilwince.bat (quest’ultimo invocato durante l’esecuzione del primo).

Di seguito, descriverò le principali operazioni eseguite da ciascuno di essi.

PBInitEnv.bat

Tale file batch è reperibile al percorso %_PROJECTROOT% ed il suo scopo è quello di settare le principali Environment Variable, nonchè le Sysgen Variable associate ai componenti selezionati nel Catalog Items e quelle relative alla BSP per i driver inclusi nell’immagine. Tale file viene sempre modificato ogni qual volta aggiungiamo/rimuoviamo componenti dall’immagine, perché a tali azioni corrisponde il set o meno di una variabile.

Inizialmente, esso setta alcune Environment Variable di tipo generico tra le quali la _WINCEROOT, _FLATRELEASEDIR, _PROJECTROOT. E’ da sottolineare che ogni qual volta utilizziamo una configurazione di build differente (Release, Debug oppure una nuova configurazione derivata da esse), la _FLATRELEASEDIR cambia (a meno che non la definiamo noi forzatamente sempre uguale attraverso le proprietà del progetto) per cui il PBInitEnv.bat viene modificato.

5481.pbinitenv1_38D56F89

Dove MyOSDesign è il nome del progetto sul quale stiamo lavorando e MyPlatform è la corrispondete BSP.

Successivamente viene invocato il wince.bat al quale vengono passati i tre seguenti parametri :

  • target cpu : indica la CPU target (nel nostro caso è ARMV4I);
  • project : indica il progetto del sistema operativo (nel nostro caso è MyOSDesign);
  • platform : indica la BSP del target device (nel nostro caso è MyPlatform);

6523.pbinitenv2_76825745

Al termine dell’esecuzione del wince.bat, vengono ripulite tutte le variabili relative alle impostazioni dell’immagine (le IMG_XXX ed IMGNO_XXX) ossia quelle che sono settate attraverso le “Build Options”.

6786.pbinitenv3_0A9B73CF

Inoltre, vengono settate tutte le Sysgen Variable (SYSGEN_XXX) e le BSP Variable (BSP_XXX, BSPNO_XXX) relative rispettivamente ai componenti ed ai driver selezionati attraverso il Catalog Items.

5040.pbinitenv4_29DE1AA2

8836.pbinitenv5_503FFDED

Viene settata la variabile WINCEDEBUG che indica la configurazione di build correntemente utilizzata (debug/retail) e tutte le variabile che lo sviluppatore può aver impostato manualmente attraverso la scheda “Environment Variables” nelle proprietà del progetto.

2086.pbinitenv6_0F9DB17E

Inoltre, vengono settate tutte le variabili relative alle impostazioni dell’immagine (le IMG_XXX ed IMGNO_XXX) ossia quelle che sono definite attraverso le “Build Options”.

Successivamente, viene impostata la variabile _USER_SYSGEN_BAT_FILES, come un elenco di tutti file batch ProjSysgen.bat associati ai sottoprogetti inclusi nell’OS Design. Tali file batch saranno lanciati successivamente dal cesysgen.bat, per eseguire il Sysgen sui sottoprogetti.

Infine, vengono impostate le variabili relative alla localizzazione, anche in questo caso definite attraverso la scheda “Locale” delle proprietà del progetto.

8322.pbinitenv7_00F30599

wince.bat

Si trova al percorso %_PUBLICROOT%\COMMON\OAK\MISC e viene invocato dal PBInitEnv.bat per proseguire l’inizializzazione dell’ambiente di build e soprattutto per settare il _DEPTREES, la variabile che conterrà l’elenco delle cartelle sulle quali eseguire le operazioni di Sysgen e Build.

Come anticipato nel paragrafo precedente, esso riceve in ingresso i tre seguenti parametri :

  • target cpu : indica la CPU target (nel nostro caso è ARMV4I);
  • project : indica il progetto del sistema operativo (nel nostro caso è MyOSDesign);
  • platform : indica la BSP del target device (nel nostro caso è MyPlatform);

In prima istanza, setta tutte le directory root principali, quali _PUBLICROOT, _PRIVATEROOT, _PLATFORMROOT, _MAKEENVROOT (dove si trovano tutti i file batch) e così via.

Estraendo i tre parametri ricevuti in ingresso, inizializza correttamente le variabili _TGTCPU, _TGTPROJ e _TGTPLAT e ne esegue un processo di validazione.

7827.wince1_1982A2E9

Esse corrispondono rispettivamente a “target cpu”, “project” e “platform”. E’ da osservare che per ricavare ciascun parametro, viene utilizzato sempre l’accumulatore %1 ma grazie all’operazione di shift, ciascun parametro rimanente viene spostato in tale accumulatore (shiftando appunto verso sinistra).

Eseguendo il parsing su tali variabili, vengono settate la _TGTCPUFAMILY e _TGTCPUISA.

0410.wince2_06CDA932

A questo punto, viene settata la _PROJECTROOT ma soprattutto, se esiste, viene invocato il batch file a livello di progetto %_TGTPROJ%.bat, se è stato creato dallo sviluppatore per poter settare altre eventuali variabili di ambiente personalizzate.

3733.wince3_3139DA4F

Successivamente, viene costruita una delle variabili principali del sistema di build, ossia la _DEPTREES che contiene tutte le cartelle nell’ambito delle quali saranno eseguite le operazioni di Sysgen e di Build successive.

Alla _DEPTREES vengono aggiunte sia le cartelle nella _PUBLICROOT …

0003.wince4_3780B0DD

… sia quella relativa al progetto.

4722.wince6_2F890E7B

Successivamente, viene settata la variabile PATH di Windows con i percorsi dei vari tool che saranno utilizzati dal sistema di build e viene invocato il %_TARGETPLATROOT%\%_TGTPLAT%.BAT che ha il compito di settare una serie di BSP Variable strettamente legate alla platform e non necessariamente in relazione con l’OS Design.

6378.wince5_5D0A2E3E

Infine, se esistenti, vengono lanciati una serie di file batch opzionali che permettono una customizzazione dell’ambiente di build. Alcuni esempi sono :

  • setenv.bat : esegue delle operazioni di inizializzazione private definite dallo sviluppatore (%_WINCEROOT%\developr\%USERNAME%\setenv.bat);
  • postWinCE.bat : esegue delle inizializzazioni eventualmente necessarie e specifiche per i sottoprogetti dell’OS Design (%_PROJECTROOT%\postWinCE.bat);

7144.wince7_557EBED1

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