يجب إجراء إعداد إضافي لإجراء اختبارات الشهادات آليًا.
تحدث جميع خطوات التثبيت والتهيئة أدناه على الجهاز الذي يعمل بنظام Windows تشغيل برنامج GRL Test Harness. نزِّل أحدث إصدار وثبِّته. سلسلة اختبار GRL لسلسلة المحادثات قبل المتابعة.
بعد التثبيت، هناك طريقتان للتشغيل الآلي للجهاز قيد الاختبار. (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
الدعم المختلط للاختبار
وتتوافق أداة Harness Automation أيضًا مع مجموعات الاختبار المختلطة، حيث يكون المرجع الأجهزة المستخدمة في كل حالة اختبار عبارة عن مجموعة مختلطة من الأجهزة بدلاً من جميع الجهاز نفسه. على سبيل المثال، بدلاً من استخدام 32 لوحة بتنسيق TI CC2538 قيد التشغيل بالنسبة إلى جميع حالات الاختبار، يمكنك الخلط والتوفيق بين Threads الأربعة أجهزة مرجعية لكل حالة اختبار على النحو المطلوب.
لاستخدام أجهزة الاختبار المختلطة، يلزم إجراء ضبط إضافي على النحو التالي:
- أضِف المَعلمة الإضافية التالية إلى إعدادات "مفعِّل الاختبار".
على
C:\GRL\Thread1.1\Config\Configuration.ini
:EnableDeviceSelection = True
- نزِّل ملف إعداد المخطط من سلسلة المحادثات.
المجموعة:
إضافة هذا الملف باسم
TopologyConfig.txt
إلىC:\GRL\Thread1.1\Thread_Harness\TestScripts
يوضح هذا الملف بالتفصيل جهاز مرجعي لاستخدامه لكل دور في كل حالة اختبار.
يمكن تعديل ملف إعداد المخطط المقدَّم من Thread Group من أجل غير ذلك من تكوينات أسرّة مختلطة، ولكن للحصول على الشهادة الرسمية، استخدام التهيئة.
قيم صالحة للاستخدام للأجهزة المرجعية في ملف إعداد المخططات هي:
القيمة في ملف تهيئة المخطط | الجهاز المرجعي لحزام الاختبار |
---|---|
ARM |
ARM: NXP FRDM-K64F مع Firefly 6LoWPAN Shield |
NXP |
NXP(التدرّج الحر): مفاتيح إلكترونية USB-KW24D512 |
OpenThread |
OpenThread: TI CC2538DK |
SiLabs |
Silabs: EM358x USB Stick |
يجب أن يكون كل إدخال حالة اختبار في ملف تهيئة المخطط على صفحة منفصلة
ومنسقة في role:device
أزواج على النحو التالي:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
وضع DUT التلقائي لحزام الاختبار
يوفِّر برنامج GRL Test Harness ميزة متقدّمة للاكتشاف التلقائي. (Auto DUT) تعمل على تسريع عملية التحقّق من حِزم المراجع لسلسلة المحادثات البائعين.
تقدم OpenThread مثالاً واجهة وحدة تحكّم مضيف سلسلة المحادثات (THCI) التي تسمح لحزام الاختبار بالتحكم في المكون أو المنتج كما لو كان باستخدام إحدى المنصات المرجعية. وفقًا لخصائص المنفذ التسلسلي نظامك الأساسي المحدد، يمكن لـ DUT إجراء ما يلي:
العمل كمنصة مرجعية حالية OpenThread
إذا كان المنفذ التسلسلي لـ DUT يعمل ضمن إعدادات 115200 8-N-1، استجابة الجهاز بشكل صحيح بعد كل إعادة ضبط للجهاز (على سبيل المثال، تأكيد اتصال الجهاز الصالح بجهاز Windows)، ثم أداة OpenThread THCI تتيح هذه الأداة للجهاز القيام منصة OpenThread المرجعية أثناء الاختبار.
- أغلِق حزام اختبار GRL إذا كان مفتوحًا.
- وصِّل الجهاز بجهاز Windows.
- البحث عن معرّف الجهاز للمنفذ التسلسلي للجهاز باستخدام Python pySerial
الوحدة:
- تثبيت pySerial على جهاز Windows.
- استخدام بايثون على سطر أوامر 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 للتعامل مع الجهاز كنظام أساسي جديد في الاختبار. حزام للتعليق على الكتف والظهر.
على سبيل المثال، لتخصيص مؤشر THCI باستخدام وحدة أشباه الموصلات الشمالية منصة nRF52840:
- أغلِق حزام اختبار GRL إذا كان مفتوحًا.
تعديل
/tools/harness-thci/OpenThread.py
بناءً على خصائص UART للجهاز المستهدف. قد تتضمن التعديلات بين الأجهزة المستهدفة. في حالة النظام الأساسي Nordic nRF52840:- أعِد تسمية ملف "
OpenThread.py
" إلى "nRF52840.py
". تغيير أول ثلاثة تكرارات لـ "OpenThread" إلى "nRF52840":
>> 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.
- استخدام بايثون على سطر أوامر 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، وسيظهر الجهاز/المنفذ الآن كمرجع جديد الخاص بك.
- ضع علامة في مربّع الاختيار تفعيل ميزة DUT تلقائيًا للأجهزة أسفل القائمة المتوافقة. قائمة الأجهزة.
- انقر على زرّ الاختيار ضبط كـ DUT تحت الجهاز/المنفذ المستهدَف لضبطه. الجهاز باسم DUT.