Migrasi dari versi 1 ke versi 3 untuk port OTA PAL - FreeRTOS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Migrasi dari versi 1 ke versi 3 untuk port OTA PAL

Perpustakaan Over-the-air Pembaruan memperkenalkan beberapa perubahan dalam struktur folder dan penempatan konfigurasi yang diperlukan oleh perpustakaan dan aplikasi demo. Untuk aplikasi OTA yang dirancang untuk bekerja dengan v1.2.0 untuk bermigrasi ke v3.0.0 pustaka, Anda harus memperbarui tanda tangan fungsi port PAL dan menyertakan file konfigurasi tambahan seperti yang dijelaskan dalam panduan migrasi ini.

Perubahan OTA PAL

  • Nama direktori port OTA PAL telah diperbarui dari ota keota_pal_for_aws. Folder ini harus berisi 2 file: ota_pal.c danota_pal.h. File header PAL libraries/freertos_plus/aws/ota/src/aws_iot_ota_pal.h telah dihapus dari perpustakaan OTA dan harus ditentukan di dalam port.

  • Kode pengembalian (OTA_Err_t) diterjemahkan ke dalam enumOTAMainStatus_t. Lihat ota_platform_interface.h untuk kode pengembalian yang diterjemahkan. Makro pembantu juga disediakan untuk menggabungkan OtaPalMainStatus dan OtaPalSubStatus kode dan mengekstrak OtaMainStatus dari OtaPalStatus dan serupa.

  • Masuk ke PAL

    • Menghapus DEFINE_OTA_METHOD_NAME makro.

    • Sebelumnya:OTA_LOG_L1( "[%s] Receive file created.\r\n", OTA_METHOD_NAME );.

    • Diperbarui: LogInfo(( "Receive file created.")); GunakanLogDebug, LogWarn dan LogError untuk log yang sesuai.

  • Variabel cOTA_JSON_FileSignatureKey berubah menjadiOTA_JsonFileSignatureKey.

Fungsi

Tanda tangan fungsi didefinisikan ota_pal.h dan dimulai dengan awalan, bukanotaPal. prvPAL

catatan

Nama pasti PAL secara teknis terbuka, tetapi agar kompatibel dengan tes kualifikasi, nama tersebut harus sesuai dengan yang ditentukan di bawah ini.

Versi 1

Versi 3

Catatan

OTA_Err_t prvPAL_CreateFileForRx( OTA_FileContext_t * const *C* );

OtaPalStatus_t otaPal_CreateFileForRx( OtaFileContext_t * const *pFileContext* );

Buat file penerima baru untuk potongan data saat mereka masuk.

int16_t prvPAL_WriteBlock( OTA_FileContext_t * const C, uint32_t ulOffset, uint8_t * const pcData, uint32_t ulBlockSize );

int16_t otaPal_WriteBlock( OtaFileContext_t * const pFileContext, uint32_t ulOffset, uint8_t * const pData, uint32_t ulBlockSize );

Tulis blok data ke file yang ditentukan pada offset yang diberikan.

OTA_Err_t prvPAL_ActivateNewImage( void );

OtaPalStatus_t otaPal_ActivateNewImage( OtaFileContext_t * const *pFileContext* );

Aktifkan gambar MCU terbaru yang diterima melalui OTA.

OTA_Err_t prvPAL_ResetDevice( void );

OtaPalStatus_t otaPal_ResetDevice( OtaFileContext_t * const *pFileContext* );

Setel ulang perangkat.

OTA_Err_t prvPAL_CloseFile( OTA_FileContext_t * const *C* );

OtaPalStatus_t otaPal_CloseFile( OtaFileContext_t * const *pFileContext* );

Otentikasi dan tutup file penerima yang mendasarinya dalam konteks OTA yang ditentukan.

OTA_Err_t prvPAL_Abort( OTA_FileContext_t * const *C* );

OtaPalStatus_t otaPal_Abort( OtaFileContext_t * const *pFileContext* );

Hentikan transfer OTA.

OTA_Err_t prvPAL_SetPlatformImageState( OTA_ImageState_t *eState* );

OtaPalStatus_t otaPal_SetPlatformImageState( OtaFileContext_t * const pFileContext, OtaImageState_t eState );

Mencoba untuk mengatur status gambar pembaruan OTA.

OTA_PAL_ImageState_t prvPAL_GetPlatformImageState( void );

OtaPalImageState_t otaPal_GetPlatformImageState( OtaFileContext_t * const *pFileContext* );

Dapatkan status gambar pembaruan OTA.

  • Versi 1: OTA_Err_t prvPAL_CreateFileForRx( OTA_FileContext_t * const *C* );

    Versi 3: OtaPalStatus_t otaPal_CreateFileForRx( OtaFileContext_t * const *pFileContext* );

    Catatan: Buat file penerimaan baru untuk potongan data saat masuk.

  • Versi 1: int16_t prvPAL_WriteBlock( OTA_FileContext_t * const C, uint32_t ulOffset, uint8_t * const pcData, uint32_t ulBlockSize );

    Versi 3: int16_t otaPal_WriteBlock( OtaFileContext_t * const pFileContext, uint32_t ulOffset, uint8_t * const pData, uint32_t ulBlockSize );

    Catatan: Tulis blok data ke file yang ditentukan pada offset yang diberikan.

  • Versi 1: OTA_Err_t prvPAL_ActivateNewImage( void );

    Versi 3: OtaPalStatus_t otaPal_ActivateNewImage( OtaFileContext_t * const *pFileContext* );

    Catatan: Aktifkan gambar MCU terbaru yang diterima melalui OTA.

  • Versi 1: OTA_Err_t prvPAL_ResetDevice( void );

    Versi 3: OtaPalStatus_t otaPal_ResetDevice( OtaFileContext_t * const *pFileContext* );

    Catatan: Setel ulang perangkat.

  • Versi 1: OTA_Err_t prvPAL_CloseFile( OTA_FileContext_t * const *C* );

    Versi 3: OtaPalStatus_t otaPal_CloseFile( OtaFileContext_t * const *pFileContext* );

    Catatan: Mengautentikasi dan menutup file penerima yang mendasarinya dalam konteks OTA yang ditentukan.

  • Versi 1: OTA_Err_t prvPAL_Abort( OTA_FileContext_t * const *C* );

    Versi 3: OtaPalStatus_t otaPal_Abort( OtaFileContext_t * const *pFileContext* );

    Catatan: Hentikan transfer OTA.

  • Versi 1: OTA_Err_t prvPAL_SetPlatformImageState( OTA_ImageState_t *eState* );

    Versi 3: OtaPalStatus_t otaPal_SetPlatformImageState( OtaFileContext_t * const pFileContext, OtaImageState_t eState );

    Catatan: Mencoba mengatur status gambar pembaruan OTA.

  • Versi 1: OTA_PAL_ImageState_t prvPAL_GetPlatformImageState( void );

    Versi 3: OtaPalImageState_t otaPal_GetPlatformImageState( OtaFileContext_t * const *pFileContext* );

    Catatan: Dapatkan status gambar pembaruan OTA.

Jenis Data

Versi 1

File

Versi 3

File

Catatan

OTA_PAL_ImageState_t

aws_iot_ota_agent.h

OtaPalImageState_t

ota_private.h

Status gambar diatur oleh implementasi platform.

OTA_Err_t

aws_iot_ota_agent.h

OtaErr_t OtaPalStatus_t (combination of OtaPalMainStatus_t and OtaPalSubStatus_t)

ota.h, ota_platform_interface.h

v1: Ini adalah makro yang mendefinisikan 32 bilangan bulat yang tidak ditandatangani.

v3: Enum khusus yang mewakili jenis kesalahan dan terkait dengan kode kesalahan.

OTA_FileContext_t

aws_iot_ota_agent.h

OtaFileContext_t

ota_private.h

v1: Berisi enum dan buffer untuk data.

v3: Berisi variabel panjang data tambahan.

OTA_ImageState_t

aws_iot_ota_agent.h

OtaImageState_t

ota_private.h

OTA Image menyatakan

  • Versi 1: OTA_PAL_ImageState_t

    Berkas: aws_iot_ota_agent.h

    Versi 3: OtaPalImageState_t

    Berkas: ota_private.h

    Catatan: Status gambar yang ditetapkan oleh implementasi platform.

  • Versi 1: OTA_Err_t

    Berkas: aws_iot_ota_agent.h

    Versi 3: OtaErr_t OtaPalStatus_t (combination of OtaPalMainStatus_t and OtaPalSubStatus_t)

    Berkas:ota.h, ota_platform_interface.h

    Catatan: v1: Ini adalah makro yang mendefinisikan 32 bilangan bulat yang tidak ditandatangani. v3: Enum khusus yang mewakili jenis kesalahan dan terkait dengan kode kesalahan.

  • Versi 1: OTA_FileContext_t

    Berkas: aws_iot_ota_agent.h

    Versi 3: OtaFileContext_t

    Berkas: ota_private.h

    Catatan: v1: Berisi enum dan buffer untuk data. v3: Berisi variabel panjang data tambahan.

  • Versi 1: OTA_ImageState_t

    Berkas: aws_iot_ota_agent.h

    Versi 3: OtaImageState_t

    Berkas: ota_private.h

    Catatan: Status gambar OTA

Perubahan konfigurasi

File aws_ota_agent_config.h diubah namanya menjadi ota_config.hyang mengubah penjaga include dari _AWS_OTA_AGENT_CONFIG_H_ keOTA_CONFIG_H_.

  • File aws_ota_codesigner_certificate.h telah dihapus.

  • Termasuk tumpukan logging baru untuk mencetak pesan debug:

    /**************************************************/ /******* DO NOT CHANGE the following order ********/ /**************************************************/ /* Logging related header files are required to be included in the following order: * 1. Include the header file "logging_levels.h". * 2. Define LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL. * 3. Include the header file "logging_stack.h". */ /* Include header that defines log levels. */ #include "logging_levels.h" /* Configure name and log level for the OTA library. */ #ifndef LIBRARY_LOG_NAME #define LIBRARY_LOG_NAME "OTA" #endif #ifndef LIBRARY_LOG_LEVEL #define LIBRARY_LOG_LEVEL LOG_INFO #endif #include "logging_stack.h" /************ End of logging configuration ****************/
  • Menambahkan konfigurasi konstan:

    /** * @brief Size of the file data block message (excluding the header). */ #define otaconfigFILE_BLOCK_SIZE ( 1UL << otaconfigLOG2_FILE_BLOCK_SIZE )

File Baru: ota_demo_config.hberisi konfigurasi yang diperlukan oleh demo OTA seperti sertifikat penandatanganan kode dan versi aplikasi.

  • signingcredentialSIGNING_CERTIFICATE_PEMyang didefinisikan dalam demos/include/aws_ota_codesigner_certificate.h telah dipindahkan ke ota_demo_config.h as otapalconfigCODE_SIGNING_CERTIFICATE dan dapat diakses dari file PAL sebagai:

    static const char codeSigningCertificatePEM[] = otapalconfigCODE_SIGNING_CERTIFICATE;

    File aws_ota_codesigner_certificate.h telah dihapus.

  • MakroAPP_VERSION_BUILD,APP_VERSION_MINOR, APP_VERSION_MAJOR telah ditambahkan keota_demo_config.h. File lama yang berisi informasi versi telah dihapus, misalnya tests/include/aws_application_version.hlibraries/c_sdk/standard/common/include/iot_appversion32.h,demos/demo_runner/aws_demo_version.c.

Perubahan pada tes OTA PAL

  • Menghapus grup uji “Full_ota_agent” bersama dengan semua file terkait. Kelompok uji ini sebelumnya diperlukan untuk kualifikasi. Tes ini untuk perpustakaan OTA dan tidak khusus untuk port OTA PAL. Pustaka OTA sekarang memiliki cakupan pengujian lengkap yang di-host di repositori OTA sehingga grup pengujian ini tidak lagi diperlukan.

  • Menghapus grup uji “Full_OTA_CBOR” dan “Quarantine_OTA_CBOR” serta semua file terkait. Tes ini bukan bagian dari tes kualifikasi. Fungsionalitas yang dicakup tes ini sekarang sedang diuji di repositori OTA.

  • Memindahkan file pengujian dari direktori perpustakaan ke tests/integration_tests/ota_pal direktori.

  • Memperbarui tes kualifikasi OTA PAL untuk menggunakan v3.0.0 dari API perpustakaan OTA.

  • Memperbarui cara pengujian OTA PAL mengakses sertifikat penandatanganan kode untuk pengujian. Sebelumnya ada file header khusus untuk kredensi penandatanganan kode. Ini tidak lagi berlaku untuk versi baru perpustakaan. Kode pengujian mengharapkan variabel ini didefinisikan dalamota_pal.c. Nilai ditetapkan ke makro yang didefinisikan dalam file konfigurasi OTA khusus platform.

Daftar periksa

Gunakan daftar periksa ini untuk memastikan Anda mengikuti langkah-langkah yang diperlukan untuk migrasi:

  • Perbarui nama folder port ota pal dari ota keota_pal_for_aws.

  • Tambahkan file ota_pal.h dengan fungsi yang disebutkan di atas. Untuk ota_pal.h file contoh, lihat GitHub.

  • Tambahkan file konfigurasi:

    • Ubah nama file dari aws_ota_agent_config.h menjadi (atau buat)ota_config.h.

      • Tambahkan:

        otaconfigFILE_BLOCK_SIZE ( 1UL << otaconfigLOG2_FILE_BLOCK_SIZE )
      • Termasuk:

        #include "ota_demo_config.h"
    • Salin file di atas ke aws_test config folder dan ganti semua termasuk ota_demo_config.h denganaws_test_ota_config.h.

    • Tambahkan ota_demo_config.h file.

    • Tambahkan aws_test_ota_config.h file.

  • Buat perubahan berikut keota_pal.c:

    • Perbarui sertakan dengan nama file pustaka OTA terbaru.

    • Hapus DEFINE_OTA_METHOD_NAME makro.

    • Perbarui tanda tangan fungsi OTA PAL.

    • Perbarui nama variabel konteks file dari C kepFileContext.

    • Perbarui OTA_FileContext_t struct dan semua variabel terkait.

    • Perbarui cOTA_JSON_FileSignatureKey keOTA_JsonFileSignatureKey.

    • Perbarui OTA_PAL_ImageState_t dan Ota_ImageState_t jenisnya.

    • Perbarui jenis kesalahan dan nilai.

    • Perbarui makro pencetakan untuk menggunakan tumpukan logging.

    • Perbarui signingcredentialSIGNING_CERTIFICATE_PEM yang akan menjadiotapalconfigCODE_SIGNING_CERTIFICATE.

    • Perbarui otaPal_CheckFileSignature dan otaPal_ReadAndAssumeCertificate fungsi komentar.

  • Perbarui CMakeLists.txtfile.

  • Perbarui proyek IDE.