Bootloader demo untuk Microchip Curiosity PIC32MZEF - Gratis RTOS

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

Bootloader demo untuk Microchip Curiosity PIC32MZEF

penting

Demo ini di-host di repositori Amazon-Freertos yang tidak digunakan lagi. Kami menyarankan Anda mulai di sini ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang sudah ada berdasarkan repositori Amazon-Freertos yang sekarang tidak digunakan lagi, lihat. Panduan Migrasi Repositori Github Amazon-freertos

catatan

Sesuai dengan Microchip, kami menghapus Curiosity PIC32MZEF (DM320104) dari cabang utama repositori FreeRTOS Reference Integration dan tidak akan lagi membawanya dalam rilis baru. Microchip telah mengeluarkan pemberitahuan resmi bahwa PIC32MZEF (DM320104) tidak lagi direkomendasikan untuk desain baru. Proyek PIC32MZEF dan kode sumber masih dapat diakses melalui tag rilis sebelumnya. Microchip merekomendasikan agar pelanggan menggunakan papan Pengembangan Curiosity PIC32MZ-EF-2.0 (DM320209) untuk desain baru. Platform Pic32Mzv1 masih dapat ditemukan di v202012.00 dari repositori Integrasi Referensi FreeRTOS. Namun, platform ini tidak lagi didukung oleh Referensi FreeRTOS v202107.00.

Bootloader demo ini mengimplementasikan pemeriksaan versi firmware, verifikasi tanda tangan kriptografi, dan pengujian mandiri aplikasi. Kemampuan ini mendukung pembaruan firmware over-the-air (OTA) untuk FreeRTOS.

Verifikasi firmware termasuk memverifikasi keaslian dan integritas firmware baru yang diterima melalui udara. Bootloader memverifikasi tanda tangan kriptografi aplikasi sebelum boot. Demo ini menggunakan algoritma tanda tangan digital kurva elips (ECDSA) di atas SHA-256. Utilitas yang disediakan dapat digunakan untuk menghasilkan aplikasi yang ditandatangani yang dapat di-flash pada perangkat.

Bootloader mendukung fitur-fitur berikut yang diperlukan untuk OTA:

  • Mempertahankan gambar aplikasi pada perangkat dan beralih di antara mereka.

  • Memungkinkan eksekusi self-test dari gambar OTA yang diterima dan rollback pada kegagalan.

  • Memeriksa tanda tangan dan versi gambar pembaruan OTA.

catatan

Untuk mengatur dan menjalankan demo FreeRTOS, ikuti langkah-langkahnya. Memulai dengan FreeRTOS

Status bootloader

Proses bootloader ditampilkan di mesin status berikut.

Mulai mesin status Bootloader yang menampilkan Inisialisasi, Verifikasi, Status eksekusi, dan status Kesalahan dengan opsi Notify Error.

Tabel berikut menjelaskan status bootloader.

Status Bootloader Deskripsi

Inisialisasi

Bootloader dalam keadaan inisialisasi.

Verifikasi

Bootloader memverifikasi gambar yang ada di perangkat.

Jalankan Gambar

Bootloader meluncurkan gambar yang dipilih.

Jalankan Default

Bootloader meluncurkan gambar default.

Kesalahan

Bootloader dalam keadaan kesalahan.

Dalam diagram sebelumnya, keduanya Execute Image dan Execute Default ditampilkan sebagai negara. Execution

Status Eksekusi Bootloader

Bootloader dalam Execution keadaan dan siap meluncurkan gambar terverifikasi yang dipilih. Jika gambar yang akan diluncurkan ada di bank atas, bank ditukar sebelum mengeksekusi gambar, karena aplikasi selalu dibangun untuk bank bawah.

Status Eksekusi Default Bootloader

Jika opsi konfigurasi untuk meluncurkan gambar default diaktifkan, bootloader meluncurkan aplikasi dari alamat eksekusi default. Opsi ini harus dinonaktifkan kecuali saat debugging.

Status Kesalahan Bootloader

Bootloader dalam keadaan kesalahan dan tidak ada gambar yang valid di perangkat. Bootloader harus memberi tahu pengguna. Implementasi default mengirimkan pesan log ke konsol dan mengedipkan LED dengan cepat di papan tanpa batas waktu.

Perangkat flash

Platform Microchip Curiosity PIC32MZEF berisi flash program internal dua megabyte (MB) yang dibagi menjadi dua bank. Ini mendukung pertukaran peta memori antara kedua bank ini dan pembaruan langsung. Bootloader demo diprogram di wilayah flash boot bawah yang terpisah.

Diagram tata letak memori yang menunjukkan Lower Boot Flash, Lower Program Flash sebesar 1MB, dan Upper Program Flash dari wilayah 2MB yang dipetakan ke Bootloader, Application Bank 0, dan Application Bank 1 masing-masing.

Struktur gambar aplikasi

Struktur gambar OTA menampilkan header, deskriptor, biner aplikasi (ditandatangani oleh layanan penandatangan), dan bagian trailer dengan bidang seperti kode ajaib, nomor urut, alamat awal dan akhir, alamat eksekusi, ID perangkat keras.

Diagram menunjukkan komponen utama dari gambar aplikasi yang disimpan di setiap bank perangkat.

Komponen Ukuran (dalam byte)

Header gambar

8 byte

Deskriptor gambar

24 byte

Aplikasi biner

< 1 MB - (324)

Trailer

292 byte

Header gambar

Gambar aplikasi pada perangkat harus dimulai dengan header yang terdiri dari kode ajaib dan bendera gambar.

Bidang Header Ukuran (dalam byte)

Kode ajaib

7 byte

Bendera gambar

1 byte

Kode ajaib

Gambar pada perangkat flash harus dimulai dengan kode ajaib. Kode ajaib default adalah@AFRTOS. Bootloader memeriksa apakah ada kode ajaib yang valid sebelum mem-boot gambar. Ini adalah langkah pertama verifikasi.

Bendera gambar

Bendera gambar digunakan untuk menyimpan status gambar aplikasi. Bendera digunakan dalam proses OTA. Bendera gambar kedua bank menentukan keadaan perangkat. Jika gambar yang dijalankan ditandai sebagai komit tertunda, itu berarti perangkat berada dalam fase uji mandiri OTA. Bahkan jika gambar pada perangkat ditandai valid, mereka melalui langkah verifikasi yang sama pada setiap boot. Jika gambar ditandai sebagai baru, bootloader menandainya sebagai komit tertunda dan meluncurkannya untuk self-test setelah verifikasi. Bootloader juga menginisialisasi dan memulai pengatur waktu pengawas sehingga jika gambar OTA baru gagal menguji sendiri, perangkat reboot dan bootloader menolak gambar dengan menghapusnya dan menjalankan gambar valid sebelumnya.

Perangkat hanya dapat memiliki satu gambar yang valid. Gambar lainnya dapat berupa gambar OTA baru atau komit yang tertunda (self-test). Setelah pembaruan OTA berhasil, gambar lama dihapus dari perangkat.

Status Nilai Deskripsi

Gambar baru

0xFF

Gambar aplikasi baru dan tidak pernah dieksekusi.

Komit tertunda

0xFE

Gambar aplikasi ditandai untuk eksekusi uji.

Valid

0xFC

Gambar aplikasi ditandai valid dan berkomitmen.

Tidak valid

0xF8

Gambar aplikasi ditandai tidak valid.

Deskriptor gambar

Gambar aplikasi pada perangkat flash harus berisi deskriptor gambar mengikuti header gambar. Deskriptor gambar dihasilkan oleh utilitas pasca-build yang menggunakan file konfigurasi (ota-descriptor.config) untuk menghasilkan deskriptor yang sesuai dan menambahnya ke biner aplikasi. Output dari langkah pasca-build ini adalah gambar biner yang dapat digunakan untuk OTA.

Bidang Deskriptor Ukuran (dalam byte)

Nomor Urutan

4 byte

Alamat Mulai

4 byte

Alamat Akhir

4 byte

Alamat Eksekusi

4 byte

ID Perangkat Keras

4 byte

Dilindungi

4 byte

Nomor Urutan

Nomor urut harus ditambah sebelum membuat gambar OTA baru. Lihat ota-descriptor.config filenya. Bootloader menggunakan nomor ini untuk menentukan gambar yang akan di-boot. Nilai yang valid adalah dari 1 hingga 4294967295.

Alamat Mulai

Alamat awal gambar aplikasi pada perangkat. Karena deskriptor gambar ditambahkan ke biner aplikasi, alamat ini adalah awal dari deskriptor gambar.

Alamat Akhir

Alamat akhir gambar aplikasi pada perangkat, tidak termasuk trailer gambar.

Alamat Eksekusi

Alamat eksekusi gambar.

ID Perangkat Keras

ID perangkat keras unik yang digunakan oleh bootloader untuk memastikan gambar OTA dibuat untuk platform yang benar.

Dilindungi

Ini dicadangkan untuk penggunaan masa depan.

Cuplikan gambar

Cuplikan gambar ditambahkan ke biner aplikasi. Ini berisi string tipe tanda tangan, ukuran tanda tangan, dan tanda tangan gambar.

Bidang Trailer Ukuran (dalam byte)

Jenis Tanda Tangan

32 byte

Ukuran Tanda Tangan

4 byte

Tanda tangan

256 byte

Jenis Tanda Tangan

Tipe tanda tangan adalah string yang mewakili algoritma kriptografi yang digunakan dan berfungsi sebagai penanda untuk trailer. Bootloader mendukung algoritme tanda tangan digital kurva elips (ECDSA). Defaultnya adalah sig-sha256-ecdsa.

Ukuran Tanda Tangan

Ukuran tanda tangan kriptografi, dalam byte.

Tanda tangan

Tanda tangan kriptografi dari biner aplikasi ditambahkan dengan deskriptor gambar.

Konfigurasi bootloader

Opsi konfigurasi bootloader dasar disediakan difreertos/vendors/microchip/boards/curiosity_pic32mzef/bootloader/config_files/aws_boot_config.h. Beberapa opsi disediakan hanya untuk tujuan debugging.

Aktifkan Mulai Default

Mengaktifkan eksekusi aplikasi dari alamat default dan harus diaktifkan untuk debugging saja. Gambar dieksekusi dari alamat default tanpa verifikasi apa pun.

Aktifkan Verifikasi Tanda Tangan Crypto

Mengaktifkan verifikasi tanda tangan kriptografi saat boot. Gambar yang gagal dihapus dari perangkat. Opsi ini disediakan hanya untuk tujuan debugging dan harus tetap diaktifkan dalam produksi.

Hapus Gambar Tidak Valid

Mengaktifkan penghapusan bank penuh jika verifikasi gambar di bank itu gagal. Opsi ini disediakan untuk debugging dan harus tetap diaktifkan dalam produksi.

Aktifkan Verifikasi ID Perangkat Keras

Mengaktifkan verifikasi ID perangkat keras di deskriptor gambar OTA dan ID perangkat keras yang diprogram di bootloader. Ini opsional dan dapat dinonaktifkan jika verifikasi ID perangkat keras tidak diperlukan.

Aktifkan Verifikasi Alamat

Memungkinkan verifikasi alamat awal, akhir, dan eksekusi di deskriptor gambar OTA. Kami menyarankan agar Anda tetap mengaktifkan opsi ini.

Membangun bootloader

Bootloader demo disertakan sebagai proyek yang dapat dimuat dalam proyek yang terletak freertos/vendors/microchip/boards/curiosity_pic32mzef/aws_demos/mplab/ di aws_demos repositori kode sumber FreeRTOS. Ketika aws_demos proyek dibangun, ia membangun bootloader terlebih dahulu, diikuti oleh aplikasi. Output akhir adalah gambar hex terpadu termasuk bootloader dan aplikasi. factory_image_generator.pyUtilitas disediakan untuk menghasilkan gambar hex terpadu dengan tanda tangan kriptografi. Skrip utilitas bootloader terletak di. freertos/demos/ota/bootloader/utility/

Langkah pra-pembuatan bootloader

Langkah pra-build ini mengeksekusi skrip utilitas yang disebut codesigner_cert_utility.py yang mengekstrak kunci publik dari sertifikat penandatanganan kode dan menghasilkan file header C yang berisi kunci publik dalam format yang disandikan Abstract Syntax Notation One (ASN.1). Header ini dikompilasi ke dalam proyek bootloader. Header yang dihasilkan berisi dua konstanta: array kunci publik dan panjang kunci. Proyek bootloader juga dapat dibangun tanpa aws_demos dan dapat di-debug sebagai aplikasi normal.