Condividi tramite


Introduzione a Contenitore di app per Windows CE

Il Contenitore di app per Windows CE è una tecnologia che consente la maggior parte delle applicazioni CE da eseguire su Windows 10 IoT Core.

La soluzione è compilata in due fasi. La prima fase crea un'immagine di Windows CE 2013 usando un BSP per l'architettura x86 o ARM32. Quindi, nella seconda fase, questa immagine è inclusa in un'immagine Windows 10 IoT Core che usa il BSP x64 o ARM32 per l'hardware del dispositivo specifico in cui verrà installata la soluzione.

Architettura del contenitore di app CE

Per altre informazioni su questa architettura, vedere questo video: Modernizzazione dei dispositivi Windows CE.

Prerequisiti

Il software Contenitore di app per Windows CE richiede una versione aggiornata di Windows Compact 2013 (numero di build 6294 a partire da giugno 2020 o versione successiva) insieme ai pacchetti Windows 10 IoT Core per x64 e ARM32 (aggiornamento di agosto 2020 o versione successiva) . Per ottenere i pacchetti più recenti per Windows 10 IoT Core, contattare il distributore Microsoft.

Nota

È necessario disporre di una sottoscrizione valida di IoT Core Services per distribuire un dispositivo che usa la tecnologia contenitore di app CE.

Inoltre, sono necessari gli elementi seguenti:

Configurazione, compilazione e creazione di pacchetti ce per il Contenitore di app per Windows CE

Il processo di creazione di un'immagine di Windows Embedded Compact 2013 non è stato aggiornato in modo significativo. Il processo generale per la creazione di un'immagine è:

  1. Creare un progetto di progettazione del sistema operativo con Platform Builder

  2. Selezionare il pacchetto BSP (Platform Builder Board Support Package)

  3. Scegliere il modello di progettazione appropriato

  4. Configurare le opzioni fornite dal modello di progettazione

  5. Facoltativamente, aggiungere progetti secondari al progetto di progettazione

  6. Compilare l'immagine

La modifica principale riguarda la selezione del BSP corretto e considerazioni aggiuntive per l'immagine CE. Questa guida presuppone che tu abbia già familiarità con il processo di compilazione di un'immagine di sistema Windows CE, ma vale la pena esaminare in modo più approfondito la sezione modificata.

Il passaggio 2 è l'unica parte del processo di progetto di progettazione del sistema operativo precedente che viene modificato quando si usa il contenitore di app CE, vedere di seguito per altri dettagli.

Passaggio 2 - Selezione BSP di Platform Builder

Per supportare la Contenitore di app per Windows CE, è stato aggiunto un nuovo provider di servizi BSP destinato alle architetture x86 e ARM a Platform Builder.

Quando si crea una progettazione del sistema operativo per il contenitore di app CE, selezionare "Contenitore di app per Windows CE: x86" o "Contenitore di app per Windows CE: ARMv7" (ARM32) a seconda dell'hardware sottostante per il dispositivo basato su IoT Core.

Ad esempio, se il dispositivo IoT Core di destinazione usa hardware Intel, si selezionerà l'opzione "Contenitore di app per Windows CE: x86". In alternativa, se l'hardware IoT Core usa NXP i.MX6, si selezionerà l'opzione "Contenitore di app per Windows CE: ARMv7".

Selezionare il provider di servizi di configurazione del contenitore di app ce

Dopo aver eseguito questa operazione, sarà possibile configurare le opzioni e i sottoproi progetti esattamente come si farebbe normalmente per un'immagine di Windows Embedded Compact. Queste configurazioni verranno integrate nel contenitore CE che verrà distribuito nell'immagine Windows 10 IoT Core.

Compilazione dell'immagine Windows 10 IoT Core

Nota

Questo processo è descritto in modo più dettagliato nei lab che fanno parte della Guida alla produzione di Windows 10 IoT Core. La sezione seguente fornisce solo azioni aggiuntive da eseguire in determinate fasi del processo di compilazione delle immagini IoT Core. Prima di procedere, è consigliabile acquisire familiarità con la Guida alla produzione di Windows 10 IoT Core.

Panoramica processo

A differenza del processo di creazione di un'immagine di Windows Embedded Compact, Windows 10 IoT Core separa ancora la creazione del firmware, i pacchetti di supporto della scheda, la definizione dell'immagine e l'inclusione dell'applicazione. Usando tecnologie diverse per questi componenti, è possibile separare il lavoro che è necessario eseguire tra team diversi o singoli utenti dell'organizzazione.

I passaggi di base per la creazione di un'immagine sono i seguenti:

  1. Creare un'area di lavoro

  2. Importare il pacchetto di supporto della scheda IoT Core (BSP) appropriato

  3. Importare il contenitore di app CE creato in precedenza

  4. Creare la definizione del prodotto

  5. Aggiungere funzionalità e applicazioni al prodotto

  6. Compilare l'aggiornamento Flash completo (FFU)

  7. Distribuire l'FFU nel dispositivo e testare

  8. Finalizzare e firmare l'FFU al dettaglio

Sono disponibili guide dettagliate per ognuno di questi passaggi come parte della Guida alla produzione di Windows 10 IoT Core. Anche se alcuni di questi passaggi sono come il processo di utilizzo di Platform Builder (PB) per creare un'immagine del dispositivo, vale la pena esplorare alcune aree in modo più approfondito.

Passaggio 1- Creare un'area di lavoro

Vedere la documentazione Creare un'immagine di base, nella Guida alla produzione di IoT Core per informazioni su come creare un'area di lavoro.

Passaggio 2: Importare il pacchetto di supporto della scheda IoT Core (BSP) appropriato

Esaminare la documentazione Creare un'immagine di base nella Guida alla produzione di IoT Core per il supporto della scheda.

Passaggio 3: Importazione del Contenitore di app per Windows CE

Il Contenitore di app per Windows CE viene creato usando PB come descritto in precedenza e importato nell'area di lavoro di IoT Core usando il comando Import-IoTCEPAL. Questo comando copia il contenuto necessario dalla directory versione flat ce nell'area di lavoro IoT ADK. Se richiamato più volte, viene eseguito il backup dello Source-\$Arch\CEPAL.OLD stato precedente nella directory nell'area di lavoro.

Passaggio 4: Creare la definizione del prodotto

Esaminare la documentazione Creare un'immagine di base, nella Guida alla produzione di IoT Core per creare la definizione del prodotto.

Passaggio 5: Aggiunta di un contenitore di app CE a un prodotto

Dopo aver importato la definizione del contenitore di app CE nell'area di lavoro, è necessario assicurarsi di eseguire il comando Add-IoTCEPAL , che aggiungerà un riferimento ai pacchetti del contenitore di app CE ai file di OEMInput.xml di prodotto pertinenti (Test e vendita).

Il passaggio successivo consiste nell'usare il comando Add-IoTProductFeature per aggiungere la funzionalità IOT_CEPAL al OEMInput.xml. In questo modo viene aggiunto il supporto dell'host Windows per la Contenitore di app per Windows CE (app UWP front-end windows CE e driver di supporto) alla definizione del prodotto e include il contenitore di app CE nel gruppo App predefinito. In una sezione successiva verrà descritta la configurazione di avvio.

Passaggio 6: Compilare i file CAB

Questo è un passaggio importante durante la creazione del FFU e deve essere eseguito ogni volta che si modifica una configurazione, aggiungere/modificare un'applicazione o driver. Verrà usata l'opzione New-IoTCabPackage con l'opzione "Tutti". È anche possibile creare funzionalità singole in base alle esigenze, ma in generale è necessario ricompilare tutti i pacchetti prima del passaggio di compilazione del FFU come procedura consigliata.

Passaggio 7: Distribuzione del FFU nel dispositivo

Dopo aver compilato l'immagine, è possibile distribuirla in un dispositivo. Questa operazione può essere eseguita dalla riga di comando usando gestione e manutenzione e manutenzione distribuzione tramite il processo di distribuzione specifico del dispositivo o usando il Dashboard Windows 10 IoT Core. Altri dettagli sono disponibili come parte della Guida alla produzione di Windows 10 IoT Core.

Distribuzione del Contenitore di app per Windows CE in un dispositivo quando si usa un FFU esistente

Le CAB ce sono pacchetti distribuibili in IoT Core. Se è presente un'immagine IoT Core esistente, queste CAB possono essere distribuite nel dispositivo usando il APPLYUPDATE comando . Copiare prima le CAB nel dispositivo, quindi eseguire il commit e il commit delle CAB con APPLYUPDATE. Si noti che l'aggiornamento in questo modo rispetta il controllo delle versioni dei pacchetti, quindi se le versioni aggiornate dei pacchetti devono essere distribuite nel dispositivo, devono avere un numero di versione maggiore. Vedere il comando Set-IoTCabVersion nell'ambiente ADK IoT. Altre informazioni su questo argomento sono disponibili in Creare e installare pacchetti

Passaggio 8 - Creazione di un'immagine di vendita al dettaglio

Avere un'immagine firmata correttamente è una parte importante della protezione e dell'aggiornamento di un dispositivo. Per Windows 10 IoT Core, questa differenza viene visualizzata come differenza tra le build firmate dai test e dalle build firmate al dettaglio. Non distribuire mai pubblicamente un'immagine firmata dal test. Le immagini firmate dai test devono essere usate solo a scopo di debug ed è necessario correggere eventuali errori o modifiche alla configurazione prima di creare l'immagine finale firmata al dettaglio.

Nota

Oltre agli strumenti di sviluppo e distribuzione installati nel computer, è necessario quanto segue per abilitare la firma della vendita al dettaglio:

  • Un certificato di firma del codice per la vendita al dettaglio
  • Un certificato di firma incrociata

Firma corretta e inclusione delle applicazioni

Se hai una o più applicazioni personalizzate che vuoi includere nell'immagine di vendita al dettaglio di Windows 10 IoT Core, devi verificare che queste applicazioni siano firmate correttamente durante l'inclusione nell'immagine di vendita al dettaglio.

Informazioni aggiuntive

Aggiunta di nuove applicazioni a un'immagine esistente

Per aggiungere una nuova applicazione a una progettazione del sistema operativo esistente, è possibile aggiungere il progetto come sottoprogetto al progetto di progettazione del sistema operativo oppure creare normali pacchetti CAB di distribuzione per distribuirli nel dispositivo come parte della configurazione iniziale del dispositivo.

Procedure consigliate per la creazione di pacchetti

È sempre consigliabile assicurarsi che i pacchetti siano il più granulare possibile per ridurre il tempo di aggiornamento.

Poiché un pacchetto è la più piccola unità di aggiornamento, assicurarsi che ogni pacchetto sia il più piccolo possibile. Quando si compila in Platform Builder, i pacchetti generati vengono separati in base alla sezione di memoria e al tipo di modulo/file in base al file bib automaticamente.

  • Per gli asset personalizzati compilati in Platform Builder e inseriti in un pacchetto tramite OSDesign.bib, prendere in considerazione l'aggiunta di asset personalizzati in una sezione di memoria separata in BIB (non in NK), in modo che gli aggiornamenti al codice personalizzato possano essere forniti separatamente dagli aggiornamenti al sistema operativo CE.

  • Per gli asset personalizzati aggiunti tramite i comandi di creazione pacchetti di IoT ADK: assicurarsi che i pacchetti creati siano il più piccolo possibile.

Aggiunta di altri elementi al pacchetto Platform Builder

In generale, è consigliabile non modificare il pacchetto risultante prodotto da Platform Builder per includere componenti aggiuntivi nell'immagine di sistema. Seguire invece la guida alla produzione di Windows 10 IoT Core. Tuttavia, se i file devono essere aggiunti al pacchetto creato da Platform Builder, seguire il processo esistente. Quando si aggiunge contenuto al pacchetto generato da PB, considerare quanto segue:

  • È prevista una dimensione massima per i pacchetti (circa 400 MB) e il superamento di questa dimensione impedirà l'aggiornamento.

  • Aggiornamenti verifica la granularità del pacchetto. Se è necessario aggiornare un singolo asset nel pacchetto, tutti gli asset del pacchetto verranno aggiornati contemporaneamente. Per ridurre le dimensioni degli aggiornamenti, isolare il contenuto in pacchetti separati per ridurre al minimo le dimensioni complessive degli aggiornamenti.

Aggiunta di file aggiuntivi tramite Platform Builder

Il processo di creazione dei pacchetti descritto in precedenza è basato sugli stessi input che vengono inseriti nella compilazione di un file CE BIN. Pertanto, se ai file viene fatto riferimento in OSDesign.bib e le voci del Registro di sistema vengono aggiunte a OSDesign.reg, il MAKEIMG processo includerà questi file nel file CAB risultante. Durante questo processo MAKEIMG verranno ora eseguite le operazioni seguenti:

  1. ROMIMAGE creerà una directory denominata CEPAL\_PKG all'interno della directory FRD (Flat Release Directory) che esegue l'installazione di una struttura di directory installata per Windows CE per CEPAL.

  2. ROMIMAGE inventaria tutti i file CE inseriti in CEPAL\_PKG in base ai file CE BIB.

  3. ROMIMAGE creerà più file WM.XML per ogni sezione della memoria. Questa operazione viene eseguita in modo che gli aggiornamenti possano essere inseriti in modo più granulare perché l'unità minima di aggiornamento è un pacchetto.

  4. ROMIMAGE creerà che fa riferimento a tutti i pacchetti creati.

Tutti i pacchetti creati verranno denominati con un prefisso fisso di “%OEM\_NAME%.WindowsCE.\*”, dove %OEM\_NAME% viene popolato durante il processo di creazione di IoT Core quando si chiama New-IoTCabPackage. Il nome del pacchetto all'interno dello spazio dei nomi deriva dalla sezione memoria nel file BIB (ad esempio NK) seguito da modules/files (anche determinato dal file BIB).

Comunicazione tra applicazioni Windows Embedded Compact 2013 e Windows 10 IoT Core

L'approccio consigliato per comunicare tra le applicazioni in esecuzione nel contenitore CE consiste nell'usare il loopback locale. Per altre informazioni, vedere Local Loopback in questo documento.

Avvio automatico dell'applicazione contenitore di app ce

Per avviare automaticamente l'applicazione contenitore CE, è possibile creare un pacchetto di provisioning che imposta l'applicazione di avvio su "Microsoft.Windows.IoT.CEPAL.DkMonUWP_cw5n1h2txyewy! App" e incluso questo pacchetto di provisioning nell'immagine. Sarà anche necessario rimuovere l'applicazione di avvio predefinita usando il comando Remove-IoTProductFeature e rimuovendo l'ID funzionalità IOT_BERTHA dalla definizione del prodotto IoT Core.

Impostazioni di configurazione disponibili per il Contenitore di app per Windows CE

Configurazione basata sul Registro di sistema in CE

Stack non eseguibile per impostazione predefinita

L'Contenitore di app per Windows CE ha disabilitato le pagine dello stack eseguibile per impostazione predefinita per migliorare la sicurezza. Tuttavia, alcune applicazioni legacy possono basarsi su questo comportamento per l'esecuzione corretta. Per abilitare uno stack eseguibile, impostare il valore del Registro di sistema seguente nell'immagine CE (è consigliabile che venga inserito in OSDesign.reg in Platform Builder)

KeyPath = HKEY\_LOCAL\_MACHINE\CEPAL
ValueName = MemoryOptions Type = REG\_DWORD
Value = 1
Override a 16 bit 565 per GWES

Se la Contenitore di app per Windows CE è configurata con uno schermo a 32 bit, le conversioni RGB a 16 bit a 32 bit vengono eseguite da GWES presupponendo che i dati dei pixel RGB a 16 bit siano in formato RGB555. Se le risorse bitmap sono a 16 bit 565 e la conversione in rgb555 di queste risorse non è possibile, il comportamento di conversione predefinito di GWES può essere modificato tramite una chiave del Registro di sistema. Creare la chiave del Registro di sistema seguente:

HKEY\_LOCAL\_MACHINE\SYSTEM\GDI\16bpp565RGBPalette.

Configurazione basata sul Registro di sistema nell'host (IoT Core)

Configurazione delle porte seriali per il Contenitore di app per Windows CE

Le porte seriali host devono essere mappate nell'ambiente CE. Questo mapping esiste nel Registro di sistema in IoT Core e deve essere configurato dall'autore dell'immagine.

In HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serialle voci di configurazione esistono per eseguire il mapping delle porte COM guest alle porte COM host usando lo schema seguente.

KeyPath = HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serial\0

ValueName = Guest Type = REG\_SZ Value = COM1

ValueName = Host

Type = REG\_SZ

Value = \\?\Some\DeviceInterface\Path

KeyPath= HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serial\1

ValueName = Guest Type = REG\_SZ Value = COM2

ValueName= Host Type = REG\_SZ

Value = \\?\Some\Other\DeviceInterface\Path

Se il percorso del Registro di sistema precedente non esiste all'avvio di CE, verrà scritta una configurazione predefinita basata sui dispositivi seriali individuati nel sistema.

Configurazione basata su file nell'host

Il contenitore CE può essere configurato usando un file locale nell'host C:\WindowsCE\CEEnvConfig.json. Ecco un esempio di questo file di configurazione:

{
 "OEMOptions" :
    {
     "GUI" : true,
     "Width" : 1024,
     "Height" : 768, "FillScreen" : true, "ColorDepth" : 32,
     "RefreshRate" : 30, "noAslrSupport" : true, "OemConfigApp" : "",
     "OemConfigFile" : ""
    },
 "CEPALDevOptions" :
    {
     "VsDebugMode" : true, "FastDebugBoot" : false
    }
 }

OEMOptions

Chiave Descrizione
GUI Avviare il contenitore dell'app CE con l'interfaccia utente (impostazione predefinita true)
Larghezza Larghezza della visualizzazione del contenitore dell'app CE (impostazione predefinita 1024)
Altezza Altezza della visualizzazione del contenitore dell'app CE (impostazione predefinita 768)
FillScreen
ColorDepth Imposta i bit predefiniti per pixel (impostazione predefinita 32)
RefreshRate Quante volte lo schermo viene ridisegnato al secondo
noAslrSupport Disabilita la casualizzazione casuale del layout dello spazio degli indirizzi nel contenitore dell'app CE (valore predefinito true)
OEMConfigApp Nome della famiglia di pacchetti di un'app fornita dall'OEM che deve essere avviata per la configurazione.
OEMConfigFile Percorso di un file che contiene opzioni di configurazione aggiuntive condivise tra OEMConfigApp e il contenitore dell'app CE

Il contenitore dell'app CE rende disponibile solo un'interfaccia di rete per l'uso. Se nel sistema host sono presenti più schede di interfaccia di rete, è necessario selezionare un'interfaccia nel Registro host per assicurarsi che la scheda di interfaccia di rete selezionata sia deterministica.

OEMConfigFile

OEMConfigFile viene specificato in C:\WindowsCE\CEEnvConfig.json. Assicurarsi che questo file possa essere letto da un'applicazione UWP. Di seguito è riportato un esempio:

{
   “FactoryReset”: false, “PlatformBuilderDebugMode”: false,
   “NetInterface”: “Some Network Profile Id”
}

Opzioni:

Chiave Descrizione
FactoryReset Usato dall'app di configurazione per segnalare al contenitore dell'app CE di eseguire il dump dello stato persistente.
PlatformBuilderDebugMode Usato per avviare il contenitore di app CE con il supporto KITL per il debug con Platform Builder.
NetInterface Selezionare un'interfaccia di rete per ce in base al nome del profilo.

Riferimenti