Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

OpenWeave Fabrika Sağlama Aracı

Kaynağı GitHub'da görüntüleyin

OpenWeave Factory Provisioning Tool, Weave özellikli cihazlarda cihaz başına kalıcı konfigürasyon bilgilerinin sağlanması için uygun bir yol sağlar. Fabrika Sağlama Aracı, müşterilere gönderilmeden önce ayrı cihazları benzersiz kimlik ve kimlik bilgileriyle damgalayan bir üretim hattı sürecinin bir parçası olarak kullanılmak üzere tasarlanmıştır. Ayrıca geliştiriciler tarafından geliştirme sürecinde kullanılan üretim öncesi donanımı kişiselleştirmek için de kullanılabilir.

Operasyon teorisi

OpenWeave Factory Provisioning Tool'un amacı, seçilen konfigürasyon bilgilerini bir cihazın kalıcı konfigürasyon deposuna enjekte etmektir; burada, cihaz üretici yazılımı tarafından çalışma zamanında alınıp kullanılabilir. Kalıcı cihaz yapılandırması tipik olarak cihazın dahili flaşında saklanır, ancak verilerin tam olarak nasıl ve hangi formatta depolandığına ilişkin ayrıntılar platformdan platforma farklılık gösterir. Fabrika Sağlama Aracı, son depolama biçiminden bağımsızdır ve verileri doğru şekilde yazmak için aygıtın aygıt yazılımındaki koda güvenir. Aracın kullanıcı arayüzü de büyük ölçüde yapılandırılan donanımın türünden bağımsızdır, yani benzer üretim süreçleri, farklı donanım platformlarına dayanan ürün grupları arasında kullanılabilir.

Fabrika Sağlama Aracı, bir tür hata ayıklama veya kontrol arabirimi (örneğin, bir JTAG veya SWD bağlantı noktası) aracılığıyla bir hedef cihaza bağlanan bir ana makinede çalışacak şekilde tasarlanmıştır. Araç, ön hazırlık bilgilerini cihazın RAM'ına özel olarak kodlanmış bir biçimde enjekte ederek çalışır. Daha sonra cihaza yeniden başlatma talimatı verilir; bu noktada, cihazın aygıt yazılımında yerleşik kod, kodlanmış verileri bulur, bütünlüğünü doğrular ve içerilen değerleri platforma uygun bir formatta kalıcı depolamaya yazar.

Enjekte edilen provizyon verilerini algılayan ve işleyen cihaz üzeri kod, OpenWeave Cihaz Katmanında yerleşiktir ve desteklenen herhangi bir platformda etkinleştirilebilir. Etkinleştirildiğinde, kod, cihaz başlatma işleminin erken bir noktasında, cihaz her önyüklendiğinde otomatik olarak çalışır. Kod, platforma özgü bir RAM bölgesini tarayarak çalışır. Mütevazı bellek bağlantılarına sahip platformlarda (örneğin, <1M), tarama mevcut tüm RAM'leri kapsar.

RAM'e yerleştirildiğinde, provizyon verileri, tarama işlemi sırasında hızlı bir şekilde bulunmasına olanak tanıyan, kolayca tanımlanabilen bir önek ile kodlanır. Kriptografik karma tabanlı bir bütünlük kontrol değeri, işlemeden önce verilerin geçerliliğini onaylamak için kullanılır.

Varsayılan olarak ön hazırlık aracı, hedef cihaz platformuna bağlı olarak ön sağlama verilerinin enjekte edileceği RAM konumunu seçer. Bu seçim, araca yönelik bir argüman aracılığıyla geçersiz kılınabilir. Genel olarak, aygıt sabit yazılımının, özellikle sağlama verilerini almak için bir RAM konumu ayırması gerekli değildir. Daha tipik olarak, provizyon verileri, başka amaçlar için tahsis edilen, ancak genellikle aygıt önyükleme işleminin başlarında kullanılmayan bir RAM konumuna yazılır. Yaygın seçimler, ilk sistem yığınının tepesi veya bir yığın alanının uzak ucudur.

Fabrika Temel Hazırlık Aracı, hedef cihazla arayüz oluşturmak için bir dizi harici geliştirme aracına dayanır. Kullanılan belirli araçlar, hedef cihazın türüne bağlıdır. Şu anda iki cihaz arayüzü desteklenmektedir:

  • bir cihazın JTAG veya SWD bağlantı noktasına bağlı bir SEGGER J-Link hata ayıklama probu
  • Espressif ESP32'ye bağlı bir USB seri bağlantı noktası

J-Link arayüzü, ana makineye ayrı olarak yüklenmesi gereken SEGGER J-Link Commander aracına (JLinkExe) dayanır.

ESP32 arayüzü, Espressif'in ESP-IDF SDK'sının bir parçası olarak sağlanan Espressif esptool.py komutuna dayanır.

Sağlanabilecek bilgi türleri

OpenWeave Factory Provisioning Tool aşağıdaki bilgi türlerini sağlayabilir:

  • Cihaz seri numarası
  • Üretici tarafından atanan Weave cihaz kimliği
  • Üretici tarafından atanan Weave sertifikası ve özel anahtar
  • Örgü eşleştirme kodu
  • Ürün revizyon numarası
  • Üretim tarihi

Genelde bir aygıtın düzgün çalışması için yukarıdaki tüm bilgilere ihtiyaç duymasına rağmen, tüm bilgileri aynı anda sağlaması gerekli değildir. Bu nedenle, farklı bilgi türlerinin sağlanması, üretim sürecinin farklı noktalarında gerçekleşebilir. Ek olarak, önceden sağlanan değerleri sonraki bir sağlama adımında yeni değerlerle değiştirmek mümkündür.

Temel hazırlık bilgileri kaynakları

Aygıt sağlama bilgileri, Fabrika Sağlama Aracına aşağıdaki şekillerde sağlanabilir:

  • Komut satırı argümanları
  • Sağlama CSV dosyası kullanma
  • Bir Nest sağlama sunucusundan değerler alarak

Komut satırı

En basit haliyle, aygıt sağlama bilgileri doğrudan OpenWeave Fabrika Sağlama Aracına komut satırında belirtilir. Örneğin:

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

Weave sertifikası ve özel anahtar gibi ikili veri değerleri, temel 64 dizeleri olarak veya ham (ikili) biçimde istenen verileri içeren dosyaların adları olarak belirtilebilir.

Kullanılabilir komut satırı bağımsız değişkenlerinin tam listesi için aşağıya bakın.

CSV dosyası sağlanıyor

Cihazların toplu provizyonunu sağlamak için Fabrika Temel Hazırlık Aracı, CSV formatlı bir provizyon veri dosyasından provizyon verilerini de okuyabilir. Olduğunu, - bu dosyanın sütunlar belirli provizyon veri türlerine karşılık gelen beklenen Serial_Num , Certificate , Private_Key vb dosyasındaki satırlar Dokuma cihaz kimliği (tarafından dizine belirli cihazlara ilişkin tek tek değerleri vermek Device_Id ). Temel hazırlığı yapılacak belirli cihazın kimliği komut satırında belirtilmelidir. Örneğin:

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

Aşağıdaki CSV sütunları desteklenmektedir:

İsim Biçim Açıklama
Device_Id 16 onaltılık basamak Örgü cihaz kimliği. Mevcut olmalı.
Serial_Num dizi Cihaz seri numarası.
Certificate temel-64 dize Üretici tarafından atanan Weave cihazı sertifikası.
Private_Key temel-64 dize Üretici tarafından atanan Weave özel anahtarı.
Pairing_Code dizi Örgü eşleştirme kodu.
Product_Rev tamsayı Ürün revizyon numarası.
Mfg_Date YYYY / AA / GG Cihaz üretim tarihi.

Sütunlar, CSV dosyasında herhangi bir sırada görünebilir. Device_Id dışında tüm sütunlar isteğe Device_Id . CSV dosyasında bulunmayan herhangi bir değer sadece cihazda sağlanan değil.

Kullanıcı, CSV dosyasına ek olarak komut satırında ayrı provizyon değerleri belirleyebilir, bu durumda komut satırı değeri dosyadakilere göre öncelikli olur.

Factory Provisioning Tool tarafından sağlanan CSV dosya formatı desteği, weave aracının gen-provisioning-data komutunun çıktısı ile uyumludur.

Nest sağlama sunucusu

Factory Provisioning Tool, HTTPS tabanlı bir protokol kullanarak bir Nest sağlama sunucusundan belirli temel hazırlık bilgilerinin alınmasını destekler. Sağlama sunucusu protokolü, Üretici tarafından atanan Weave cihaz sertifikasını, ilgili özel anahtarı ve Weave eşleştirme kodunu tedarik sunucusundan almak için kullanılabilir.

Sağlama sunucusunun ağ konumu, sağlama aracı komut satırında bir temel URL sağlanarak belirtilir. İstenilen provizyon bilgileri, komut satırında Weave cihaz kimliği belirtilerek seçilir. Örneğin:

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

Kullanıcı, sağlama sunucusu URL'sine ek olarak komut satırında ayrı sağlama değerleri belirtebilir. Bu durumda, komut satırında verilen değerler, sunucu tarafından döndürülen değerlere göre önceliklidir.

Fabrika sağlama desteğini etkinleştirme / devre dışı bırakma

Cihaz belleniminde OpenWeave fabrika sağlama desteği WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING derleme zamanı yapılandırma seçeneği ile kontrol edilir. Bu seçenek varsayılan olarak etkindir. Özellik, uygulamanın WeaveProjectConfig.h dosyasındaki seçeneği geçersiz kılarak devre dışı bırakılabilir. Örneğin:

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

Genel olarak, üretim cihazlarında cihaz hata ayıklama arayüzünün uygun şekilde devre dışı bırakılması koşuluyla, üretim cihazı sabit yazılımında fabrika provizyonunu etkinleştirmek güvenlidir . Bu, donanım araçlarıyla (örneğin, SoC'deki sigortaları üfleyerek) veya yazılımla (örneğin, önyükleme işleminin bir parçası olarak hata ayıklama erişimini engelleyen güvenli bir önyükleme yükleyicisi aracılığıyla) gerçekleştirilebilir.

Fabrika Temel Hazırlık Aracını Çalıştırma

OpenWeave Fabrika Sağlama Aracı aşağıdaki komut satırı seçeneklerini destekler:

Seçenek Açıklama
--target <string> Hedef cihaz türü. Seçenekler şunlardır: nrf52840 , esp32
--load-addr <hex-digits> Yetkilendirme verilerinin yazılacağı cihaz belleğindeki adres.
--verbose, -v Çıktı ayrıntı düzeyini ayarlayın. Ayrıntı düzeyini artırmak için birden çok bağımsız değişken kullanın.
--serial-num <string> Cihazın seri numarasını ayarlayın.
--device-id <hex-digits> Üretici tarafından atanan cihaz kimliğini ayarlayın.
--device-cert <base-64> | <dosya adı> Üretici tarafından atanan Weave cihaz sertifikasını ayarlayın.
--device-key <base-64> | <dosya adı> Üretici tarafından atanan Weave cihazı özel anahtarını ayarlayın.
--pairing-code <string> Cihaz eşleştirme kodunu ayarlayın.
--product-rev <integer> Cihaz için ürün revizyonunu ayarlayın.
--mfg-tarih <YYYY / AA / GG> | bugün | şimdi Cihazın üretim tarihini ayarlayın.
--jlink-cmd <yol adı> JLink komutu yolu. Varsayılan "JLinkExe" dir.
--jlink-if SWD | JTAG J-Link arabirim türü. SWD için varsayılanlar.
--jlink-speed <tam sayı> | uyarlanabilir | Oto J-Link arayüz hızı.
--jlink-sn <string> J-Link probu seri numarası.
--esptool-cmd <yol adı> Esptool komutunun yolu. Varsayılan "esptool.py" dir.
--port <yol adı> ESP32 için COM bağlantı noktası aygıt adı. / Tty / USB0'a varsayılan.
--speed <integer> COM bağlantı noktası için baud hızı. Varsayılan 115200.
--prov-csv-file <dosya-adı> Temel hazırlık CSV dosyasından cihaz sağlama verilerini okuyun.
--prov-server <url> Sağlama sunucusundan cihaz sağlama verilerini okuyun.
--disable-server-validation HTTPS kullanırken, sağlama sunucusu tarafından sunulan sertifikanın doğrulamasını devre dışı bırakın.

Örnekler

Aşağıdaki komut, cihaz kimliğini, seri numarasını, ürün revizyonunu ve eşleştirme kodunu belirli değerlere ayarlar. Üretim tarihi güncel tarihe ayarlanmıştır. Cihaz sertifikası ve özel anahtar, openweave-core kaynak havuzuyla sağlanan bir CSV dosyasında verilen değerleri test edecek şekilde ayarlanır.

./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