Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Alat Penyedia Pabrik OpenWeave

jinja-placeholder-0 .md "> Lihat sumber di GitHub

Alat Penyedia Pabrik OpenWeave menyediakan cara yang mudah untuk menyediakan informasi konfigurasi per-perangkat yang persisten ke perangkat yang mendukung Weave. Alat Provisioning Pabrik dimaksudkan untuk digunakan sebagai bagian dari proses jalur manufaktur yang mencap perangkat individual dengan informasi identitas dan kredensial yang unik sebelum dikirim ke pelanggan. Ini juga dapat digunakan oleh pengembang untuk mempersonalisasikan perangkat keras pra-produksi yang digunakan selama proses pengembangan.

Teori Operasi

Tujuan dari Alat Penyedia Pabrik OpenWeave adalah untuk menyuntikkan informasi konfigurasi tertentu ke dalam toko konfigurasi persisten perangkat, yang dapat diambil dan digunakan saat runtime oleh firmware perangkat. Konfigurasi perangkat yang persisten biasanya disimpan di dalam flash internal perangkat, meskipun rincian persisnya bagaimana data disimpan, dan dalam format apa, bervariasi dari platform ke platform. Alat Penyedia Pabrik itu sendiri tidak tergantung pada format penyimpanan akhir, dan bergantung pada kode dalam firmware perangkat untuk menulis data dengan cara yang benar. Antarmuka pengguna alat ini juga sebagian besar tidak tergantung pada jenis perangkat keras yang dikonfigurasikan, yang berarti bahwa proses pembuatan serupa dapat digunakan di seluruh lini produk yang didasarkan pada platform perangkat keras yang berbeda.

Factory Provisioning Tool dirancang untuk bekerja pada mesin host yang terhubung ke perangkat target melalui beberapa bentuk antarmuka debug atau kontrol - misalnya, port JTAG atau SWD. Alat ini berfungsi dengan menyuntikkan informasi yang disediakan ke dalam RAM perangkat dalam bentuk yang dikodekan secara khusus. Perangkat kemudian diinstruksikan untuk memulai kembali, di mana kode titik bawaan untuk firmware perangkat menempatkan data yang disandikan, memvalidasi integritasnya, dan menulis nilai yang terkandung ke dalam penyimpanan persisten dalam format yang sesuai untuk platform.

Kode pada perangkat yang mendeteksi dan memproses data penyediaan yang disuntikkan adalah bawaan untuk Lapisan Perangkat OpenWeave, dan dapat diaktifkan pada platform apa pun yang didukung. Setelah diaktifkan, kode berjalan secara otomatis setiap kali perangkat melakukan boot, pada suatu titik di awal proses inisialisasi perangkat. Kode beroperasi dengan memindai wilayah platform-spesifik RAM. Pada platform dengan pemasangan memori yang sederhana (misalnya, <1M), pemindaian mencakup semua RAM yang tersedia.

Ketika ditempatkan dalam RAM, data penyediaan dikodekan dengan awalan yang mudah diidentifikasi, yang memungkinkan untuk dengan cepat ditemukan selama proses pemindaian. Nilai pemeriksaan integritas berdasarkan hash kriptografis digunakan untuk mengonfirmasi validitas data sebelum diproses.

Secara default, alat penyediaan memilih lokasi RAM di mana untuk menyuntikkan data penyediaan berdasarkan pada platform perangkat target. Pilihan ini dapat diganti melalui argumen ke alat. Secara umum, tidak diperlukan firmware perangkat mencadangkan lokasi RAM secara khusus untuk menerima data penyediaan. Lebih khusus lagi, penyediaan data ditulis ke lokasi RAM yang dialokasikan untuk tujuan lain, tetapi umumnya tidak digunakan pada awal proses boot perangkat. Pilihan umum adalah bagian atas tumpukan sistem awal, atau ujung tumpukan arena.

Alat Penyedia Pabrik bergantung pada seperangkat alat pengembangan eksternal untuk antarmuka ke perangkat target. Alat khusus yang digunakan tergantung pada jenis perangkat target. Dua antarmuka perangkat saat ini didukung:

  • probe debug J-Link SEGGER terhubung ke port JTAG atau SWD perangkat
  • port serial USB yang terhubung ke Espressif ESP32

Antarmuka J-Link bergantung pada alat Komandan J-Link SEGGER (JLinkExe), yang harus diinstal secara terpisah pada mesin host.

Antarmuka ESP32 bergantung pada perintah Espressif esptool.py, yang disediakan sebagai bagian dari ESP-IDF SDK Espressif.

Jenis informasi yang dapat disediakan

Alat Penyedia Pabrik OpenWeave mampu menyediakan jenis informasi berikut:

  • Nomor seri perangkat
  • Id perangkat Weave yang ditetapkan pabrikan
  • Sertifikat Tenun dan kunci pribadi yang ditetapkan oleh pabrik
  • Kode pasangan menenun
  • Nomor revisi produk
  • Tanggal pembuatan

Meskipun secara umum perangkat akan membutuhkan semua informasi di atas untuk beroperasi dengan baik, tidak diperlukan untuk menyediakan semua informasi pada saat yang sama. Dengan demikian, penyediaan berbagai jenis informasi dapat terjadi pada titik yang berbeda dalam proses pembuatan. Selain itu, dimungkinkan untuk mengganti nilai yang sebelumnya disediakan dengan nilai baru di langkah penyediaan selanjutnya.

Sumber informasi penyediaan

Informasi penyediaan perangkat dapat diberikan ke Alat Penyedia Pabrik dengan cara-cara berikut:

  • Argumen baris perintah
  • Menggunakan file CSV yang tersedia
  • Dengan mengambil nilai dari server penyedia Nest

Garis komando

Dalam bentuk yang paling sederhana, informasi penyediaan perangkat ditentukan secara langsung pada baris perintah ke Alat Penyedia Pabrik OpenWeave. Sebagai contoh:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --pairing-code NESTUS --mfg-date 2019/04/01

Nilai data biner, seperti sertifikat Weave dan kunci pribadi, dapat ditentukan baik sebagai string base-64, atau sebagai nama file yang berisi data yang diinginkan dalam bentuk mentah (biner).

Lihat di bawah untuk daftar lengkap argumen baris perintah yang tersedia.

Menyediakan file CSV

Untuk mengakomodasi penyediaan massal perangkat, Alat Penyedia Pabrik juga dapat membaca data penyediaan dari file data penyediaan yang diformat CSV. Kolom file ini diharapkan sesuai dengan tipe data penyediaan yang spesifik - yaitu, Serial_Num , Certificate , Private_Key , dll. Baris dalam file memberikan nilai individual untuk perangkat tertentu, diindeks oleh perangkat Weave id ( Device_Id ). Id perangkat tertentu yang akan disediakan harus ditentukan pada baris perintah. Sebagai contoh:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-csv-file ./dev-provisioning-data.csv

Kolom CSV berikut didukung:

Nama Format Deskripsi
Device_Id 16 digit hex Menenun id perangkat. Harus ada.
Serial_Num tali Nomor seri perangkat.
Certificate string base-64 Sertifikat perangkat Menenun yang ditetapkan pabrik.
Private_Key string base-64 Kunci pribadi Weave yang ditetapkan pabrikan.
Pairing_Code tali Kode pasangan menenun.
Product_Rev bilangan bulat Nomor revisi produk.
Mfg_Date YYYY / MM / DD Tanggal pembuatan perangkat.

Kolom dapat muncul dalam file CSV dalam urutan apa pun. Semua kolom bersifat opsional, dengan pengecualian Device_Id . Nilai apa pun yang tidak ada dalam file CSV sama sekali tidak disediakan pada perangkat.

Pengguna dapat menentukan nilai penyediaan individu pada baris perintah di samping file CSV, dalam hal ini nilai baris perintah lebih diutamakan daripada yang ada dalam file.

Dukungan format file CSV oleh Factory Provisioning Tool kompatibel dengan output dari perintah gen-provisioning-data alat weave .

Server penyedia sarang

Alat Penyedia Pabrik mendukung pengambilan informasi penyediaan yang dipilih dari server penyedia Nest menggunakan protokol berbasis HTTPS. Protokol server pencadangan dapat digunakan untuk mengambil sertifikat perangkat Weave yang ditetapkan produsen, kunci pribadi yang sesuai, dan kode pemasangan Weave dari server pencadangan.

Lokasi jaringan dari server penyedia ditentukan dengan menyediakan URL dasar pada baris perintah alat penyedia. Informasi penyediaan yang diinginkan dipilih dengan menentukan id perangkat Weave pada baris perintah. Sebagai contoh:

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000001 \
    --prov-server https://192.168.172.2:8000/

Pengguna dapat menentukan nilai penyediaan individu pada baris perintah di samping URL server penyediaan. Dalam hal ini, nilai yang diberikan pada baris perintah lebih diutamakan dari nilai yang dikembalikan oleh server.

Mengaktifkan / menonaktifkan dukungan penyediaan pabrik

Dukungan untuk penyediaan pabrik OpenWeave dalam firmware perangkat dikontrol oleh WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING opsi konfigurasi waktu kompilasi. Opsi ini diaktifkan secara default. Fitur ini dapat dinonaktifkan dengan WeaveProjectConfig.h opsi dalam file WeaveProjectConfig.h aplikasi. Sebagai contoh:

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

Secara umum aman untuk mengaktifkan penyediaan pabrik di firmware perangkat produksi dengan ketentuan bahwa antarmuka debug perangkat dinonaktifkan dengan benar pada perangkat produksi. Ini dapat dicapai baik melalui sarana perangkat keras (misalnya, dengan meniup sekering dalam SoC), atau dalam perangkat lunak (misalnya, melalui boot loader aman yang memblokir akses debug sebagai bagian dari proses boot).

Menjalankan Alat Penyedia Pabrik

Alat Penyedia Pabrik OpenWeave mendukung opsi baris perintah berikut:

Pilihan Deskripsi
--target <string> Jenis perangkat target. Pilihannya adalah: nrf52840 , esp32
--load-addr <hex-digits> Alamat dalam memori perangkat tempat data penyediaan akan ditulis.
--verbose, -v Sesuaikan tingkat verbositas keluaran. Gunakan beberapa argumen untuk meningkatkan verbositas.
--serial-num <string> Atur nomor seri perangkat.
--device-id <hex-digits> Tetapkan id perangkat yang ditetapkan pabrikan.
--device-cert <base-64> | <file-name> Tetapkan sertifikat perangkat Weave yang ditetapkan pabrik.
--device-key <base-64> | <file-name> Tetapkan kunci pribadi perangkat Menenun yang ditetapkan pabrik.
--pairing-code <string> Tetapkan kode pemasangan perangkat.
--product-rev <integer> Atur revisi produk untuk perangkat.
--mfg-date <YYYY / MM / DD> | hari ini | sekarang Tetapkan tanggal pembuatan perangkat.
--jlink-cmd <path-name> Path ke perintah JLink. Default ke 'JLinkExe'.
--jlink-if SWD | JTAG Jenis antarmuka J-Link. Default ke SWD.
--jlink-speed <integer> | adaptif | mobil Kecepatan antarmuka J-Link.
--jlink-sn <string> J-Link menyelidiki nomor seri.
--esptool-cmd <path-name> Path ke perintah esptool. Standarnya adalah 'esptool.py'.
--port <path-name> Nama perangkat port COM untuk ESP32. Standarnya ke / tty / USB0.
--kecepatan <integer> Tingkat Baud untuk port COM. Default ke 115200.
--prov-csv-file <file-name> Baca data penyediaan perangkat dari file CSV yang tersedia.
--prov-server <url> Baca data penyediaan perangkat dari server penyedia.
--disable-server-validation Saat menggunakan HTTPS, nonaktifkan validasi sertifikat yang disajikan oleh server penyedia.

Contohnya

Perintah berikut menetapkan id perangkat, nomor seri, revisi produk, dan kode pemasangan ke nilai tertentu. Tanggal pembuatan diatur ke tanggal saat ini. Dan sertifikat perangkat dan kunci pribadi diatur untuk menguji nilai yang diberikan dalam file CSV yang disediakan dengan repositori sumber openweave-core .

 ./weave-factory-prov-tool --target nrf52840 --device-id 18B4300000000042 \
    --serial-num JAYS_DEVICE_42 --product-rev 1 --pairing-code NESTUS --mfg-date today \
    --prov-csv-file ~/projects/openweave-core/certs/development/device/test-dev-provisioning-data.csv