ในการทดสอบการรับรองโดยอัตโนมัติจำเป็นต้องมีการตั้งค่าเพิ่มเติม
ขั้นตอนการติดตั้งและการกำหนดค่าด้านล่างทั้งหมดเกิดขึ้นกับเครื่อง Windows ที่ใช้ซอฟต์แวร์ GRL Test Harness ดาวน์โหลดและติดตั้ง GRL Thread Test Harness ล่าสุด ก่อนดำเนินการต่อ
เมื่อติดตั้งแล้วมีวิธีการทำงานอัตโนมัติสองวิธีสำหรับอุปกรณ์ที่อยู่ระหว่างการทดสอบ (DUT):
OpenThread Harness Automation Tool
ติดตั้ง
- ติดตั้งซอฟต์แวร์ต่อไปนี้:
- Python 2.7
- 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
- อัพเดตไฟล์คอนฟิกูเรชันใหม่ตามคำแนะนำในไฟล์
- เพิ่มพารามิเตอร์ต่อไปนี้ในไฟล์คอนฟิกูเรชัน Test Harness ที่
C:\GRL\Thread1.1\Config\Configuration.ini
:BrowserAutoNavigate = False
การสนับสนุน testbed แบบผสม
นอกจากนี้ Harness Automation Tool ยังรองรับ Testbeds แบบผสมโดยที่อุปกรณ์อ้างอิงที่ใช้ในแต่ละกรณีการทดสอบเป็นชุดอุปกรณ์แบบผสมแทนที่จะเป็นอุปกรณ์เดียวกันทั้งหมด ตัวอย่างเช่นแทนที่จะใช้บอร์ด 32 TI CC2538 ที่รัน OpenThread สำหรับกรณีทดสอบทั้งหมดคุณสามารถผสมผสานและจับคู่อุปกรณ์อ้างอิง Thread ทั้งสี่สำหรับกรณีทดสอบแต่ละกรณีได้ตามต้องการ
ในการใช้เตียงทดสอบแบบผสมจำเป็นต้องมีการกำหนดค่าเพิ่มเติม:
- เพิ่มพารามิเตอร์เพิ่มเติมต่อไปนี้ในไฟล์คอนฟิกูเรชัน Test Harness ที่
C:\GRL\Thread1.1\Config\Configuration.ini
:EnableDeviceSelection = True
- ดาวน์โหลดไฟล์คอนฟิกูเรชันโทโพโลยีจากกลุ่มเธรด เพิ่มไฟล์นี้เป็น
TopologyConfig.txt
ไปที่C:\GRL\Thread1.1\Thread_Harness\TestScripts
ไฟล์นี้ให้รายละเอียดอุปกรณ์อ้างอิงที่จะใช้สำหรับแต่ละบทบาทในแต่ละกรณีการทดสอบ
ไฟล์คอนฟิกูเรชันโทโพโลยีที่จัดเตรียมโดยกลุ่มเธรดสามารถแก้ไขได้สำหรับการกำหนดค่าเตียงผสมอื่น ๆ แต่สำหรับการรับรองอย่างเป็นทางการจะต้องใช้การกำหนดค่าดั้งเดิม
ค่าที่ใช้ได้สำหรับอุปกรณ์อ้างอิงในไฟล์คอนฟิกูเรชันโทโพโลยีคือ:
ค่าในไฟล์คอนฟิกูเรชันโทโพโลยี | อุปกรณ์อ้างอิง Test Harness |
---|---|
ARM | ARM: NXP FRDM-K64F พร้อม Firefly 6LoWPAN Shield |
NXP | NXP (Freescale): USB-KW24D512 ดองเกิล |
OpenThread | OpenThread: TI CC2538DK |
SiLabs | Silabs: EM358x USB Stick |
รายการกรณีทดสอบแต่ละรายการในไฟล์คอนฟิกูเรชันโทโพโลยีต้องอยู่ในบรรทัดแยกกันและจัดรูปแบบใน role:device
คู่ role:device
ดังนี้:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
ทดสอบ Harness Auto DUT mode
ซอฟต์แวร์ GRL Test Harness มีคุณสมบัติการค้นหาอัตโนมัติขั้นสูง (Auto DUT) ซึ่งช่วยเร่งกระบวนการตรวจสอบความถูกต้องสำหรับผู้จำหน่ายสแตกอ้างอิงเธรด
OpenThread มีตัวอย่าง Thread Host Controller Interface (THCI) ที่อนุญาตให้ Test Harness ควบคุมส่วนประกอบหรือผลิตภัณฑ์ของคุณราวกับว่าเป็นหนึ่งในแพลตฟอร์มอ้างอิง ตามลักษณะพอร์ตอนุกรมของแพลตฟอร์มเฉพาะของคุณ DUT ของคุณอาจ:
ทำหน้าที่เป็นแพลตฟอร์มอ้างอิง OpenThread ที่มีอยู่
หากพอร์ตอนุกรมของฟังก์ชัน DUT ภายใต้การตั้งค่า 115200 8-N-1 และอุปกรณ์ตอบสนองอย่างถูกต้องหลังจากรีเซ็ตอุปกรณ์ทางกายภาพทุกครั้ง (ตัวอย่างเช่นเพื่อยืนยันการเชื่อมต่อที่ถูกต้องของอุปกรณ์กับเครื่อง Windows) จากนั้นแพลตฟอร์มจะสามารถใช้ เครื่องมือ OpenThread THCI เครื่องมือนี้ช่วยให้อุปกรณ์ทำหน้าที่เป็นแพลตฟอร์มอ้างอิง OpenThread ในระหว่างการทดสอบ
- ปิด GRL Test Harness หากเปิดอยู่
- ติดอุปกรณ์เข้ากับเครื่อง 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']}
- เปิด
- เปิดใช้งานโหมด Auto DUT
ทำหน้าที่เป็นแพลตฟอร์มอ้างอิงใหม่
หากพอร์ตอนุกรมของ DUT ไม่ทำงานภายใต้การตั้งค่าพอร์ตอนุกรมที่เหมาะสมหรืออุปกรณ์ไม่ตอบสนองอย่างถูกต้องหลังจากรีเซ็ตอุปกรณ์ทางกายภาพ (ส่งออกรหัสที่อ่านไม่ได้ภายใน 3-6 วินาทีของการรีเซ็ต) จากนั้น OpenThread THCI สามารถปรับแต่งเพื่อรักษา อุปกรณ์เป็นแพลตฟอร์มใหม่ใน Test Harness
ตัวอย่างเช่นในการปรับแต่ง THCI โดยใช้แพลตฟอร์ม Nordic Semiconductor nRF52840 :
- ปิด GRL Test Harness หากเปิดอยู่
แก้ไข
/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
เพิ่มข้อมูลแพลตฟอร์มใหม่ไปยัง Test Harness:
- สร้างไอคอน (ในรูปแบบ 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'}
- เปิด
เปิดใช้งานโหมด Auto DUT
หลังจากตัวเลือกการกำหนดค่าหนึ่งในสองตัวเลือกด้านบนเสร็จสมบูรณ์:
- เปิด GRL Test Harness อุปกรณ์ / พอร์ตจะปรากฏเป็นอุปกรณ์อ้างอิงใหม่
- เลือกช่องทำเครื่องหมาย เปิดใช้งานการเลือกอุปกรณ์ DUT อัตโนมัติ ด้านล่างรายการฮาร์ดแวร์ที่รองรับ
- เลือกปุ่มตัวเลือก Set as DUT ใต้อุปกรณ์ / พอร์ตเป้าหมายเพื่อตั้งค่าอุปกรณ์เป็น DUT
