Convertire un'applicazione con operazioni in tempo reale esistentePort an existing real-time capable application

È possibile convertire la maggior parte delle applicazioni ARM Cortex-M4 esistenti per l'esecuzione su MT3620 come applicazioni con operazioni in tempo reale (RTApp), se non hanno dipendenze da hardware specifico.Most existing ARM Cortex-M4 applications can be ported to run as real-time capable applications (RTApps) on the MT3620, if they do not have specific hardware dependencies. È anche possibile convertire le applicazioni eseguite con un sistema operativo in tempo reale (RTOS) esistente.You can also port applications that run with an existing real-time operating system (RTOS). La conversione include le attività seguenti:Porting involves the following tasks:

  1. Importare il progetto in Visual StudioImport the project into Visual Studio
  2. Configurare il progetto per il processore di destinazioneConfigure the project for the target processor
  3. Configurare i parametri specifici del dispositivoConfigure device-specific parameters
  4. Creare i file ELFCreate ELF files

Importare un progetto CMake in Visual StudioImport a CMake project into Visual Studio

Se l'applicazione esistente usa CMake, è possibile importarla clonando il repository direttamente da Visual Studio o copiando l'origine nel computer.If your existing application uses CMake, you can import it by cloning the repository directly from within Visual Studio or by copying the source to your PC. Quindi, in Visual Studio selezionare File>Apri cartella e passare alla cartella radice che contiene il file CMakeLists.txt per l'applicazione.Then, in Visual Studio, select File>Open Folder and navigate to the root folder that contains the CMakeLists.txt file for the application.

Configurare il progetto per il processore di destinazioneConfigure the project for the target processor

Se il progetto non è già configurato per i core per operazioni in tempo reale di Azure Sphere (processori ARM Cortex M4 su MT3620), è necessario configurarlo.If the project is not already configured for the Azure Sphere real-time cores (ARM Cortex M4 processors on the MT3620), you will need to configure it.

  1. Copiare i file launch.vs.json e CMakeSettings.json da uno degli esempi di Azure Sphere.Copy the launch.vs.json and CMakeSettings.json files from one of the Azure Sphere samples.

  2. Se necessario, modificare il file CMakeSettings.json.Edit the CMakeSettings.json file if necessary. Per impostazione predefinita, il progetto è configurato per usare i compilatori GCC ARM forniti da Visual Studio.By default, the project is configured to use the ARM GCC compilers that are supplied by Visual Studio. È possibile usare un compilatore diverso modificando il valore della variabile ARM_GNU_PATH in CMakeSettings.json.You can use a different compiler by changing the value of the ARM_GNU_PATH variable in CMakeSettings.json.

Configurare i parametri specifici del dispositivoConfigure device-specific parameters

Il codice esistente in genere richiede alcune modifiche per l'esecuzione in Azure Sphere.Existing code typically requires a few changes to run on Azure Sphere.

Per modificare il codice per l'uso delle periferiche di Azure Sphere, vedere Usare periferiche in un'applicazione con funzionalità in tempo reale.To modify your code to use Azure Sphere peripherals, see use peripherals in a real-time capable application.

È anche possibile aggiungere il supporto per la comunicazione con un'applicazione di alto livello.You can also add support to communicate with a high-level application.

Creare i file ELFCreate ELF files

Le immagini RTApp per Azure Sphere devono essere create come immagini ELF, non come file binari non elaborati.RTApp images for Azure Sphere must be created as ELF images, not as raw binaries. Visual Studio crea l'immagine dell'applicazione nel formato corretto.Visual Studio creates the application image in the correct form.

Il punto di ingresso per il file ELF può essere:The entry point for the ELF file can be either:

  • Un puntatore alla funzione del punto di ingresso, se è impostato il bit meno significativo dell'indirizzo. Corrisponde all'uso di Thumb-2.A pointer to the entry point function, if the least significant bit (LSB) of the address is set; this corresponds to the use of Thumb-2. In questo caso, il puntatore dello stack non è definito.In this case, the stack pointer is undefined.
  • Un puntatore a una coppia DWORD (SP, PC), simile a un vettore di reimpostazione Cortex-M, se il byte meno significativo è 0.Pointer to a (SP, PC) dword pair, similar to a Cortex-M reset vector, if the LSB is 0.

Le toolchain in genere creano un'immagine ELF che include le informazioni di debug.Toolchains typically create an ELF image that includes debugging information. Poiché questi file possono essere di grandi dimensioni, usare l'utilità arm-none-eabi-strip per rimuovere eventuali informazioni non necessarie dall'immagine ELF prima che venga incorporata nel pacchetto immagine.Because these files can be large, use the arm-none-eabi-strip utility to remove any unnecessary information from the ELF image before it is embedded into the image package. Mantenere l'immagine originale che contiene le informazioni di debug, perché è utile quando si usa GDB per il debug.Keep the original image that contains the debug information, because it is useful when using GDB to debug.

Se si esegue la conversione di un progetto CMake esistente da una piattaforma diversa e non si usa Visual Studio, potrebbe essere necessario modificare l'immagine ELF prima di poterla distribuire.If you are porting an existing CMake project from a different platform and are not using Visual Studio, you might need to modify the ELF image before you can deploy it. Per informazioni dettagliate sul layout dei file ELF e la modalità di caricamento delle applicazioni in Azure Sphere, vedere Considerazioni sulla gestione di memoria e latenza.Manage memory and latency considerations provides details about ELF file layout and how Azure Sphere loads applications.

risoluzione dei problemiTroubleshooting

Se si verificano problemi, vedere Risoluzione dei problemi delle applicazioni con funzionalità in tempo reale.If you encounter problems, see Troubleshooting real-time capable applications.