1. Giriş
Thread, OpenThread, OTNS ve Silk nedir?
Thread, IP'ye dayalı ve düşük güçle çalışan kablosuz örgü ağ iletişimi protokolüdür. Bu şekilde, cihazlar arası ve cihazlar arası güvenli iletişimlere olanak tanır. İş parçacığı ağları, tek hata noktasını önlemek için topoloji değişikliklerine uyum sağlayabilir.
Google tarafından yayınlanan OpenThread, Thread'in açık kaynaklı bir uygulamasıdır. OpenThread, küçük kod boyutuna ve bellek ayak izine rağmen İleti Dizisi Spesifikasyonu'nda tanımlanan tüm özellikleri destekler.
OpenThread Network Simülatörü (OTNS), posix platformlarında simüle edilmiş OpenThread düğümleri çalıştırarak İş Parçacığının ağlarını simüle etmek için kullanılabilir. OTNS, simülasyonu yapılan İş Parçacık ağlarını görselleştirmek ve çalıştırmak için kullanımı kolay bir Web arayüzü (OTNS-Web) sunar.
Silk, OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için kullanılan tam otomatik bir test platformudur.
Neler öğreneceksiniz?
- OpenThread işlevinin doğrulama çerçevesi: İpek
- OTNS özelliği etkinleştirilmiş gerçek cihazlar için OpenThread oluşturma
- İpek testi destek kayıtlarını çalıştırarak oluşturulan İş Parçacığının durumunu izlemek için OTNS-Web arayüzünü kullanın
Bu codelab, İpek'i OTNS ile kullanmaya odaklanmaktadır. İpek ve OTNS'nin diğer özellikleri kapsam dışıdır.
Gerekenler
Donanım:
- 6 Nordic Semiconductor nRF52840 geliştirme kartları
- Kartları bağlamak için 6 adet USB-Mikro USB kablosu
- USB çoğaltıcı
Yazılım:
- Linux x86_64 ile sınırlıdır.
- Git.
- Go 1.11 ve sonraki sürümler.
- Web tarayıcısı. OTNS-Web, simülasyonları görüntülemek için bir web tarayıcısı kullanır.
Ön koşullar:
2. Ön koşullar
Önceki temel Codelab uygulamalarını tamamlayın
- İleti Dizisi Primer. Bu Codelab'de öğretilenleri anlamak için Thread'in temel kavramlarını bilmeniz gerekir.
- nRF52840 kartları ve OpenThread ile bir İş Parçacığı ağı oluşturun. Bu Codelab'de bir Mesaj Dizisi ağını başarıyla oluşturduğunuz varsayılmaktadır.
- OTNS kullanarak İş Parçacığı Ağlarını simüle edin. Bu Codelab, OTNS aracını başarıyla çalıştırdığınızı varsayar.
Paket ön koşullarını kontrol etme
Tüm ön koşulların karşılandığından emin olalım.
otns
yürütülebilir dosyasının$PATH
içinde aranabilir olup olmadığını kontrol etmek içinwhich otns
komutunu çalıştırın.wpantund
hizmetinin kullanılabilir olduğundan emin olmak içinwhich wpantund
aracını çalıştırın.- ARM GNU araç zinciri, J-Link ve
nrfjprog
paketlerinin mevcut olduğundan emin olun. openthread
klasörünün altındamake -f examples/Makefile-nrf52840
çalıştırarak bir OpenThread ikili programının oluşturulabildiğinden emin olun.
Not: Kurulum konusunda rehberlik almak için lütfen bağlantılı dokümanlara bakın. 1. koşul, OTNS kullanarak ileti dizisi ağlarını simüle etme, diğerleri ise nRF52840 kartları ve OpenThread ile bir İş Parçacık ağı oluşturma kaynaklıdır.
3. İpek kurulumu
İpeği klonlamak ve ortamı ayarlamak için kaynak dizininizin altında aşağıdaki komutları çalıştırın:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
Donanım yapılandırma dosyası tanımla
Silk'in makinenize bağlı mevcut test donanımı kaynaklarını toplamasına izin vermek için aşağıdaki biçimde bir hwconfig.ini
dosyası tanımlayın:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
İpek'in bir parçası olan ve Arayüz Seri Numarasını ve USB Arayüz Numarasını bulmak için kullanılabilecek usbinfo
adlı bir araç yüklüdür. DutSerial, çipe basılan veya J-Link ürünleri için usbinfo
tarafından görüntülenen SN numarasıdır.
[DEFAULT]
bölümündeki LayoutCenter
ve LayoutRadius
alanları, cihazlar web kullanıcı arayüzünde görselleştirilirken düzenin şeklini tanımlar. Bunları burada sunulan değerlere ayarlamak iyi bir başlangıç noktası olabilir.
Ardından her test cihazı için bir bölüm tanımlayıp ilgili donanım bilgilerini sağlar.
4. OTNS etkin OpenThread derlemesi
Görüntü derleme ve yanıp sönme
Varsayılan olarak, OpenThread cihazları OTNS ile ilgili mesajları yayınlamaz. Geliştirici panolarının, OTNS görselleştirme için gerekli olan günlük arayüzlerine durum mesajları göndermesine izin vermek için FTD görüntüsü derlemek ve onaltılık biçime dönüştürmek için OpenThread kaynak dizininin altında aşağıdaki komutu çalıştırın.
$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive $ cd ot-nrf528xx $ ./script/bootstrap $ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON $ cd ./build/bin $ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex
Kartları taşımak için nrfjprog
kullanmak üzere İş Parçacık Kodu Codelab Oluşturma'nın 4. adımındaki talimatları uygulayın. Ardından, tüm panoları nRF USB bağlantı noktası üzerinden ana makineye bağlayın. Aynı USB-Mikro-USB kabloları, J-Link bağlantı noktalarından çıkarılabilir ve nRF52840 geliştirme kartlarına ait nRF USB bağlantı noktalarına bağlanabilir. Bu sayede, yalnızca bu 6 kabloyu kullanarak test yapılabilir. Zahmetten kaçınmak için 12 kablo kullanın ve her iki bağlantı noktasına da takın.
5. OTNS sunucusunu gerçek modla çalıştırma
OTNS'nin varsayılan parametrelerle çalıştırılması, kullanıcının bir İleti dizisi ağını simüle etmesine olanak tanır. Gerçek bir fiziksel ağ için görselleştirme aracı olarak kullanmak için aşağıdaki komutu çalıştırın:
otns -raw -real -ot-cli otns-silk-proxy
Bu bağımsız değişkenler, OTNS'ye gRPC ve UDP iletilerini, ağı simüle etmek için birden fazla ot-cli
işlemi çalıştırmak yerine nasıl görselleştirmesi gerektiğini açıklayan talimat verir. Tarayıcınız görselleştirme sayfasını boş bir tuvalle otomatik olarak açmalıdır.
6. OTNS desteğiyle İpek testi vakaları çalıştırma
Silk, OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için kullanılan tam otomatik bir test platformudur. README projesindeki talimatlar, projenin nasıl kullanılacağını kapsar.
silk/unit_tests
konumunda bulunan silk_run_test.py
dosyası size avantaj sağlar. İpek, test yazışması yürütülürken OTNS desteği sağlar. OTNS gerçek mod hizmeti yerel olarak zaten çalıştığından, silk_run_test.py
dosyasını bir çıkış günlük dosyası, giriş test komut dosyaları ve hwconfig.ini
dosyası için istenen konumlarla değiştirmemiz yeterlidir. -s localhost
bağımsız değişkeni, İpek'e OTNS mesajlarını localhost
adresine göndermesini bildirir.
Örneğin, bir kullanıcı silk_run_test.py
dosyasındaki şu değişiklikleri kullanarak ot_test_form_network.py
adlı testi çalıştırabilir. /opt/openthread_test/
, İpek'in günlük çıkışı ve yapılandırma dosyası için kullandığı varsayılan yoldur ancak herhangi bir yolu kullanabilirsiniz.
silk_run_test.py
import datetime
import os
from silk.tests import silk_run
RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'
os.chdir('~/src/silk/silk/tests/')
timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')
run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'
argv = [
'tests/silk_run.py',
'-v2',
'-c', CONFIG_PATH + 'hwconfig.ini',
'-d', run_log_path,
'-s', 'localhost',
'ot_test_form_network.py'
]
silk_run.SilkRunner(argv=argv)
Oluşturulan ağın topoloji görselleştirmesi OTNS web kullanıcı arayüzünde gösterilir.
Sol üst köşede görselleştirme istatistikleri, OT sürümü ve test başlığı gösterilir. Sol alt köşede, sağda gösterilen günlük penceresinin kontrolleri vardır. Başlangıçta düğümler eklenir ancak ağ oluşturulmaz. Test ilerledikçe her düğümün modları ve rolleri değişir ve bağlantılar oluşturulur.
7. Tebrikler
Tebrikler, İpek testini fiziksel İş Parçacığı cihazlarında başarıyla çalıştırdınız ve OTNS kullanarak görselleştirdiniz!
OTNS desteğine sahip donanım yazılımlarıyla sunulan geliştirme kartları kullanarak İpek testi yürüttünüz. Jamboard'lar, durumlarını izleyin ve tümünü izleyen bir İpek sunucusuna bildirir ve diğer test bilgileriyle birlikte OTNS hizmetine gönderir. Gerçek modda çalışan OTNS, web arayüzündeki İş Parçacığı ağını görselleştirir.
Sonraki adım
İpek paketinde yer alan diğer OpenThread test durumlarını çalıştırmayı deneyin.
Daha fazla bilgi
Çeşitli OpenThread kaynakları için openthread.io ve Silk'e göz atın.