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ı

jinja-placeholder-0 .md "> Kaynağı GitHub'da görüntüle

OpenWeave Fabrika Hazırlama Aracı, Weave özellikli aygıtlara kalıcı, aygıt başına yapılandırma bilgilerini sağlamak için kullanışlı bir yol sağlar. Fabrika Hazırlama Aracı, müşterilere gönderilmeden önce tek tek 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 Fabrika Hazırlama Aracının amacı, belirli yapılandırma bilgilerini aygıtın kalıcı yapılandırma deposuna enjekte etmektir; burada aygıt ürün yazılımı tarafından çalışma zamanında alınabilir ve kullanılabilir. Kalıcı cihaz yapılandırması tipik olarak cihazın dahili flaşında saklanır, ancak verilerin tam olarak nasıl depolandığının ve hangi formatta platformdan platforma değiştiğinin detayları. Fabrika Sağlama Aracı'nın kendisi son depolama biçiminden bağımsızdır ve verileri doğru şekilde yazmak için cihazın bellenimindeki kodlara dayanır. Aracın kullanıcı arayüzü de, yapılandırılan donanım türünden büyük ölçüde bağımsızdır, yani farklı donanım platformlarına dayanan ürün hatlarında benzer üretim süreçleri kullanılabilir.

Fabrika Sağlama Aracı, bir hata ayıklama veya kontrol arabirimi (örneğin, bir JTAG veya SWD bağlantı noktası) aracılığıyla bir hedef aygıta bağlanan bir ana makine üzerinde çalışacak şekilde tasarlanmıştır. Araç, hazırlık bilgilerini aygıtın RAM'ine özel olarak kodlanmış bir biçimde enjekte ederek çalışır. Daha sonra, cihazın yeniden başlatılması istenir; bu noktada cihazın ürün yazılımında yerleşik olan 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 sağlama verilerini algılayan ve işleyen cihazdaki kod OpenWeave Cihaz Katmanı'nda yerleşiktir ve desteklenen herhangi bir platformda etkinleştirilebilir. Etkinleştirildiğinde, aygıt her başlatıldığında kod, aygıt başlatma işleminin erken bir noktasında otomatik olarak çalışır. Kod, platforma özgü bir RAM bölgesini tarayarak çalışır. Mütevazı bellek bağlarına sahip platformlarda (örneğin, <1M), tarama kullanılabilir tüm RAM'i kapsar.

RAM'e yerleştirildiğinde, temel hazırlık verileri, tarama işlemi sırasında hızlı bir şekilde bulunmasını sağlayan, kolayca tanımlanabilen bir önekle kodlanır. İşlenmeden önce verilerin geçerliliğini doğrulamak için bir kriptografik karmaya dayalı bir bütünlük denetimi değeri kullanılır.

Varsayılan olarak, temel hazırlık aracı, temel veri platformuna dayalı olarak temel hazırlık verilerinin enjekte edileceği RAM konumunu seçer. Bu seçim, aracın argümanıyla geçersiz kılınabilir. Genel olarak, aygıt ürün yazılımının özel olarak provizyon verisi almak için bir RAM konumu ayırması gerekmez. Daha tipik olarak, provizyon verileri başka amaçlar için tahsis edilen bir RAM konumuna yazılır, ancak genellikle cihazın önyükleme işleminin başında kullanılmaz. Ortak seçenekler, ilk sistem yığınının üst kısmı veya bir yığın arenasının uzak ucudur.

Fabrika Sağlama Aracı, hedef aygıta arabirim oluşturmak için bir dizi harici geliştirme aracına dayanır. Kullanılan belirli araçlar hedef cihazın tipine bağlıdır. Şu anda iki cihaz arayüzü desteklenmektedir:

  • 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ıca yüklenmesi gereken SEGGER J-Link Komutanı 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 Fabrika Hazırlama Aracı, aşağıdaki türde bilgileri sağlama yeteneğine sahiptir:

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

Genellikle bir cihazın düzgün çalışması için yukarıdaki bilgilerin hepsine ihtiyaç duymasına rağmen, tüm bilgilerin aynı anda sağlanması gerekli değildir. Böylece, üretim sürecinde farklı noktalarda farklı tipte bilgi sağlanması gerçekleşebilir. Ayrıca, bir sonraki sağlama adımında önceden sağlanan değerleri yeni değerlerle değiştirmek de mümkündür.

Bilgi sağlama kaynakları

Cihaz temel hazırlık bilgileri Fabrika Yetkilendirme Aracına aşağıdaki şekillerde sağlanabilir:

  • Komut satırı bağımsız değişkenleri
  • Temel hazırlık CSV dosyası kullanma
  • Bir Nest sağlama sunucusundan değerler getirerek

Komut satırı

En basit biçimde, aygıt sağlama bilgileri doğrudan OpenWeave Fabrika Hazırlama Aracı'nın komut satırında belirtilir. Örneğin:

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

Örgü 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ını sağlama

Aygıtların toplu olarak sağlanmasına uyum sağlamak için Fabrika Hazırlama Aracı, CSV biçimli bir sağlama veri dosyasından sağlama 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 aygıtı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ı desteklenir:

ad Biçim Açıklama
Device_Id 16 onaltılık basamak Örgü cihazı kimliği. Mevcut olmalı.
Serial_Num sicim Cihaz seri numarası.
Certificate base-64 dizesi Üretici tarafından atanan Örgü cihazı sertifikası.
Private_Key base-64 dizesi Üretici tarafından atanan Weave özel anahtarı.
Pairing_Code sicim Örgü eşleme 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ı ön hazırlık değerleri belirtebilir, bu durumda komut satırı değeri dosyadakilerden daha önceliklidir.

Fabrika Hazırlama Aracı tarafından sağlanan CSV dosya biçimi desteği, weave aracının gen-provisioning-data komutunun çıktısıyla uyumludur.

Nest temel hazırlık sunucusu

Fabrika Sağlama Aracı, HTTPS tabanlı bir protokol kullanarak bir Nest sağlama sunucusundan belirli temel hazırlık bilgilerinin getirilmesini destekler. Yetkilendirme sunucusu protokolü, Üretici tarafından atanan Weave device sertifikasını, karşılık gelen özel anahtarı ve yetkilendirme sunucusundan Weave eşleştirme kodunu almak için kullanılabilir.

Yetkilendirme sunucusunun ağ konumu, yetkilendirme aracı komut satırına bir temel URL sağlanarak belirtilir. İstenen temel hazırlık bilgisi, komut satırında Örgü 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ı, yetkilendirme sunucusu URL'sine ek olarak komut satırında ayrı yetkilendirme değerleri belirtebilir. Bu durumda, komut satırında verilen değerler sunucu tarafından döndürülen değerlerden önce gelir.

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

Cihaz ürün yazılımında OpenWeave fabrika hazırlığı 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çenek geçersiz WeaveProjectConfig.h devre dışı bırakılabilir. Örneğin:

#define WEAVE_DEVICE_CONFIG_ENABLE_FACTORY_PROVISIONING 0

Genel olarak, aygıt hata ayıklama arabiriminin üretim aygıtlarında uygun şekilde devre dışı bırakılması koşuluyla, üretim aygıtı 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ımda (örneğin, önyükleme işleminin bir parçası olarak hata ayıklama erişimini engelleyen güvenli bir önyükleyici ile) elde edilebilir.

Fabrika Hazırlama Aracını Çalıştırma

OpenWeave Fabrika Hazırlama 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> Temel hazırlık verilerinin yazılacağı aygıt belleğindeki adres.
--verbose, -v Çıktı ayrıntı düzeyini ayarlayın. Ayrıntı düzeyini artırmak için birden fazla argüman kullanın.
--seri-num <dizgi> Cihazın seri numarasını ayarlayın.
--device-id <hex-digits> Üreticinin atadığı cihaz kimliğini ayarlayın.
- aygıt-cert <base-64> | <dosya adı> Üreticinin atadığı Weave device sertifikasını ayarlayın.
- aygıt tuşu <base-64> | <dosya adı> Üreticinin atadığı Weave device özel anahtarını ayarlayın.
--pairing-code <dizgi> Cihaz eşleme kodunu ayarlayın.
--product-rev <tamsayı> 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 komutunun yolu. Varsayılan olarak 'JLinkExe'.
--jlink-if SWD | JTAG J-Link arayüz tipi. Varsayılan olarak SWD'dir.
--jlink hızı <tamsayı> | uyarlanabilir | Oto J-Link arayüz hızı.
--jlink-sn <dizgi> J-Link prob seri numarası.
--esptool-cmd <yol adı> Esptool komutunun yolu. Varsayılan olarak 'esptool.py'.
--port <yol-adı> ESP32 için COM bağlantı noktası aygıt adı. Varsayılan olarak / tty / USB0.
- hız <tamsayı> COM bağlantı noktası için baud hızı. Varsayılan değer 115200'dür.
--prov-csv-dosya <file-name> Bir temel hazırlık CSV dosyasından cihaz temel hazırlık verilerini okuyun.
--prov-server <url> Bir sağlama sunucusundan cihaz temel hazırlık verilerini okuyun.
--disable-sunucu doğrulama HTTPS kullanırken, sağlama sunucusu tarafından sunulan sertifikanın doğrulanmasını devre dışı bırakın.

Örnekler

Aşağıdaki komut aygıt kimliği, seri numarası, ürün revizyonu ve eşleme kodunu belirli değerlere ayarlar. Üretim tarihi geçerli tarihe ayarlanır. Aygıt sertifikası ve özel anahtar, openweave-core kaynak havuzuyla birlikte verilen bir CSV dosyasında verilen değerleri test edecek şekilde ayarlanmıştı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