لإجراء اختبارات الشهادات تلقائيًا، يجب إجراء إعداد إضافي.
تحدث كل خطوات التثبيت والضبط أدناه على جهاز Windows الذي يشغّل برنامج GRL Test Harness. يُرجى تنزيل أحدث إصدار من نظام اختبار GRL Thread Test وتثبيته قبل المتابعة.
بعد التثبيت، هناك طريقتَين للتشغيل التلقائي للجهاز قيد الاختبار (DUT):
أداة التشغيل التلقائي لـ OpenThread
تثبيت
- ثبِّت البرنامج التالي:
- Python
- Git لنظام التشغيل Windows (يُنصح بشدة باستخدام برنامج Bash)
- استنسِق مستودع OpenThread للحصول على النصوص البرمجية للأساليب المبرمَجة:
git clone https://github.com/openthread/openthread
- تثبيت متطلبات Python:
cd tools/harness-automation
pip install -r requirements.txt
- ثبِّت كلاً من Google Chrome وChromeDriver.
الضبط
- أنشئ ملف إعداد لأداة التشغيل التلقائي:
cp autothreadharness/settings_sample.py autothreadharness/settings.py
- عدِّل ملف الإعداد الجديد وفقًا للتعليمات الواردة في الملف.
- أضِف المعلّمة التالية إلى ملف إعداد "مجموعة الأدوات التجريبية"
على الرابط
C:\GRL\Thread1.1\Config\Configuration.ini
:BrowserAutoNavigate = False
دعم مختبَر مختلط
تتيح "أداة برمجة نظام التشغيل" أيضًا استخدام فحوصات مختلطة، حيث تكون الأجهزة المرجعية المستخدَمة في كل حالة اختبار مجموعة مختلطة من الأجهزة بدلاً من الأجهزة نفسها. على سبيل المثال، بدلاً من استخدام 32 لوحة TI CC2538 تعمل في OpenThread لجميع حالات الاختبار، يمكنك المزج والمطابقة بين الأجهزة المرجعية الأربعة لسلاسل المحادثات لكل حالة اختبار على النحو المطلوب.
لاستخدام الاختبارات المختلطة، يجب إجراء ضبط إضافي:
- أضِف المعلّمة الإضافية التالية إلى ملف إعداد "مجموعة أدوات الاختبار"
الذي يمكنك العثور عليه على
C:\GRL\Thread1.1\Config\Configuration.ini
:EnableDeviceSelection = True
- نزِّل ملف إعداد الطوبولوجيا من مجموعة Thread
.
أضِف هذا الملف في
TopologyConfig.txt
إلىC:\GRL\Thread1.1\Thread_Harness\TestScripts
. ويفصِّل هذا الملف الجهاز الذي يجب استخدامه لكل دور في كل حالة اختبار.
يمكن تعديل ملف ضبط الطوبولوجيا الذي تقدمه مجموعة سلاسل المحادثات لتهيئات الأسقف المختلطة الأخرى، ولكن للحصول على الاعتماد الرسمي يجب استخدام الإعداد الأصلي.
في ما يلي القيم الصالحة التي يمكن استخدامها للأجهزة المرجعية في ملف ضبط الطوبولوجيا:
القيمة في ملف ضبط الطوبولوجيا | جهاز مرجع حزام الاختبار |
---|---|
ARM |
ARM: NXP FRDM-K64F باستخدام Firefly 6LoWPAN Shield (درع WPALo آخر) |
NXP |
NXP(Freescale): USB-KW24D512 مفتاح إلكتروني |
OpenThread |
OpenThread: TI CC2538DK |
SiLabs |
سيلابس: EM358x USB Stick |
يجب أن يكون كل إدخال لحالة الاختبار في ملف إعداد الطوبولوجيا على سطر منفصل ومنسّق في أزواج role:device
على النحو التالي:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
اختبار DUT Auto لـ DUT
يوفّر برنامج اختبار GRL Test ميزة الاكتشاف التلقائي المتقدّمة (Auto DUT) التي تسرّع عملية التحقّق لموردي تسلسل استدعاء الدوال البرمجية لسلاسل المحادثات.
ويوفّر OpenThread مثالاً على واجهة وحدة تحكّم مضيف سلسلة المحادثات (THCI) التي تتيح لنظام الاختبار التحكّم في مكوّنك أو منتجك كما لو كان أحد المنصّات المرجعية. وفقًا لخصائص المنفذ التسلسلي للنظام الأساسي الخاص بك، يمكن أن DUT إما:
العمل كمنصة مرجعية حالية في OpenThread
إذا كان المنفذ التسلسلي لـ DUT يعمل ضمن إعدادات 115200 8-N-1، وكان الجهاز يستجيب بشكل صحيح بعد كل عملية إعادة ضبط للجهاز (على سبيل المثال، لتأكيد اتصال الجهاز الصالح بنظام التشغيل Windows)، يمكن للنظام الأساسي استخدام أداة OpenThread THCI. تتيح هذه الأداة للجهاز العمل كمنصة مرجعية لـ OpenThread أثناء الاختبار.
- أغلِق جدول اختبار GRL، إذا كان مفتوحًا.
- اربط الجهاز بجهاز Windows.
- ابحث عن معرّف جهاز المنافذ التسلسلية للجهاز، باستخدام وحدة Python pySerial:
- ثبّت pySerial على جهاز Windows.
- استخدِم Python على سطر الأوامر في Windows لإحصاء جميع معرّفات الأجهزة (VID وPID) للأجهزة المتصلة بالجهاز. في هذا الإخراج، يتم توصيل جهاز واحد باستخدام معرّف VID=1366 وPID=1015:
python -m serial.tools.list_ports -v
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- إذا كنت تعرف منفذ COM، يمكنك استخدام أمر مختلف. على سبيل المثال، إذا كان منفذ COM هو
COM10
:python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
['USB\VID_1366+PID_1015+MI_00']
- عدِّل قائمة الجهاز الذهبي:
- فتح
C:\GRL\Thread1.1\Config\Configuration.ini
- تعديل مجموعة OpenThread في مصفوفة
GoldenDeviceHardwareIds
باستخدام معرّف المورِّد (VID) ومعرّف الإصدار (PID) للأجهزة:GoldenDeviceHardwareIds = {
'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
'SiLabs': 'VID:PID=10C4:8A5E',
'ARM': 'VID:PID=0D28:0204',
'OpenThread':['VID:PID=10C4:EA60','VID:PID=1366:1015']}
- فتح
- فعِّل وضع DUT التلقائي.
كمنصّة مرجع جديدة
وإذا كان منفذ DUT التسلسلي لا يعمل ضمن إعدادات المنافذ التسلسلية المناسبة، أو إذا لم يستجِب الجهاز بشكل صحيح بعد إعادة ضبط الجهاز (يُخرج رمزًا غير قابل للقراءة خلال 3 إلى 6 ثوانٍ من إعادة الضبط)، يمكن تخصيص OpenThread لمعالجة الجهاز كمنصة جديدة في اختبار.
على سبيل المثال، لتخصيص THCI باستخدام النظام الأساسي Nordic Semiconductor nRF52840:
- أغلِق جدول اختبار GRL، إذا كان مفتوحًا.
يمكنك تعديل
/tools/harness-thci/OpenThread.py
بناءً على سمات UART للجهاز المستهدف. وقد تختلف التعديلات بين الأجهزة المستهدفة. في حالة النظام الأساسي Nordic nRF52840:- أعد تسمية ملف
OpenThread.py
إلىnRF52840.py
. تغيير أول ثلاث مرات لـ "OpenThread"&&;;RR52840":
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):
تغيير معلمات المنفذ التسلسلي:
def _connect(self): print 'My port is %s' % self.port if self.port.startswith('COM'): self.handle = serial.Serial(self.port, 115200, timeout=0) time.sleep(1) self.handle.write('\r\n') time.sleep(0.1) self._is_net = False elif ':' in self.port: host, port = self.port.split(':') self.handle = socket.create_connection((host, port)) self.handle.setblocking(0) self._is_net = True else: raise Exception('Unknown port schema') self.UIStatusMsg = self.getVersionNumber()
تغيير وقت السكون للتخلص من تأثير مخرجات الرموز غير القابلة للقراءة بعد إعادة ضبط الجهاز:
def powerDown(self): """power down the Thread device""" print '%s call powerDown' % self.port self._sendline('reset') self.isPowerDown = True time.sleep(8) # New addition def reboot(self): """reset and rejoin to Thread Network without any timeout Returns: True: successful to reset and rejoin the Thread Network False: fail to reset and rejoin the Thread Network """ print '%s call reboot' % self.port try: self._sendline('reset') self.isPowerDown = True time.sleep(8) # Updated from 3 to 8 def reset(self): """factory reset""" print '%s call reset' % self.port try: self._sendline('factoryreset') time.sleep(8) # Updated from 3 to 8 self._read() def resetAndRejoin(self, timeout): """reset and join back Thread Network with a given timeout delay Args: timeout: a timeout interval before rejoin Thread Network Returns: True: successful to reset and rejoin Thread Network False: fail to reset and rejoin the Thread Network """ print '%s call resetAndRejoin' % self.port print timeout try: self._sendline('reset') self.isPowerDown = True time.sleep(timeout) if timeout < 8: # Sleep a bit longer if the timeout is short time.sleep(8 - timeout)
- أعد تسمية ملف
نسخ ملف
nRF52840.py
المعدَّل إلىC:\GRL\Thread1.1\Thread_Harness\THCI
أضِف معلومات النظام الأساسي الجديد إلى "نظام الاختبار":
- أنشئ رمزًا (بتنسيق png أو jpg) لتسهيل تمييز نظامك الأساسي ونسخه إلى
C:\GRL\Thread1.1\Web\images
. تعديل
C:\GRL\Thread1.1\Web\data\deviceInputFields.xml
باستخدام قسمDEVICE
جديد، حيث المعلّمةthumbnail
هي ملف الرمز:<DEVICE name="nRF52840" thumbnail="nRF52840.jpg" description ="nRF52840: Nordic" THCI="nRF52840"> <ITEM label="Serial Line" type="text" forParam="SerialPort" validation="COM" hint="eg: COM1">COM </ITEM> <ITEM label="Speed" type="text" forParam="SerialBaudRate" validation="baud-rate" hint="eg: 115200">115200 </ITEM> </DEVICE>
- أنشئ رمزًا (بتنسيق png أو jpg) لتسهيل تمييز نظامك الأساسي ونسخه إلى
اربط الجهاز بجهاز Windows.
ابحث عن معرّف جهاز المنافذ التسلسلية للجهاز، باستخدام وحدة Python pySerial:
- ثبّت pySerial على جهاز Windows.
- استخدِم Python على سطر الأوامر في Windows لإحصاء جميع معرّفات الأجهزة (VID وPID) للأجهزة المتصلة بالجهاز. في هذا الإخراج، يتم توصيل جهاز واحد باستخدام معرّف VID=1366 وPID=1015:
python -m serial.tools.list_ports -v
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- إذا كنت تعرف منفذ COM، يمكنك استخدام أمر مختلف. على سبيل المثال، إذا كان منفذ COM هو
COM10
:python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
['USB\VID_1366+PID_1015+MI_00']
يمكنك تحديث قائمة الأجهزة الذهبية:
- فتح
C:\GRL\Thread1.1\Config\Configuration.ini
- إضافة مجموعة أنظمة أساسية جديدة في المصفوفة
GoldenDeviceHardwareIds
باستخدام VID وPID للجهاز:GoldenDeviceHardwareIds = {
'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
'SiLabs': 'VID:PID=10C4:8A5E',
'ARM': 'VID:PID=0D28:0204',
'OpenThread':'VID:PID=10C4:EA60',
'nRF52840': 'VID:PID=1366:1015'}
- فتح
تفعيل وضع DUT التلقائي
بعد اكتمال أحد خياري الإعداد أعلاه:
- افتح تطبيق GRL Test Harness، وسيظهر الجهاز/المنفذ الآن كمرجع مرجعي جديد.
- ضع علامة في مربّع الاختيار Enable Auto DUT Device Select (تفعيل اختيار الأجهزة تلقائيًا) أسفل قائمة Devices (الأجهزة) المتوافقة.
- حدد زر الاختيار تعيين كجهاز DUT ضمن الجهاز/المنفذ المستهدف لضبط الجهاز باعتباره DUT.