หากต้องการทดสอบการรับรองโดยอัตโนมัติ คุณจะต้องตั้งค่าเพิ่มเติม
ขั้นตอนการติดตั้งและการกำหนดค่าทั้งหมดด้านล่างจะเกิดขึ้นในเครื่อง Windows ที่เรียกใช้ซอฟต์แวร์ GRL Test Harness ดาวน์โหลดและติดตั้ง ชุดทดสอบ Thread ของ GRL เวอร์ชันล่าสุดก่อน ดำเนินการต่อ
เมื่อติดตั้งแล้ว อุปกรณ์ภายใต้การทดสอบ (DUT) จะมีวิธีการทำงานอัตโนมัติ 2 วิธีดังนี้
เครื่องมือการทำงานอัตโนมัติของ OpenThread Harness
ติดตั้ง
- ติดตั้งซอฟต์แวร์ต่อไปนี้
- Python 2.7
- Git สำหรับ Windows (ขอแนะนำอย่างยิ่งให้รองรับ Bash)
- โคลนที่เก็บ OpenThread เพื่อรับสคริปต์การทำงานอัตโนมัติ
git clone https://github.com/openthread/openthread - ติดตั้งข้อกำหนดของ Python โดยใช้คำสั่งต่อไปนี้
cd tools/harness-automationpip install -r requirements.txt - ติดตั้งทั้ง Google Chrome และ ChromeDriver
กำหนดค่า
- สร้างไฟล์การกำหนดค่าสำหรับเครื่องมือการทำงานอัตโนมัติ
cp autothreadharness/settings_sample.py autothreadharness/settings.py - อัปเดตไฟล์การกำหนดค่าใหม่ตามวิธีการใน ไฟล์
- เพิ่มพารามิเตอร์ต่อไปนี้ลงในไฟล์การกำหนดค่า Test Harness ซึ่งอยู่ที่
C:\GRL\Thread1.1\Config\Configuration.iniBrowserAutoNavigate = False
การสนับสนุน Testbed แบบผสม
นอกจากนี้ เครื่องมือการทดสอบอัตโนมัติของ Harness ยังรองรับ Testbed แบบผสม ซึ่งอุปกรณ์อ้างอิงที่ใช้ในกรณีทดสอบแต่ละกรณีจะเป็นชุดอุปกรณ์แบบผสม ไม่ใช่อุปกรณ์เดียวกันทั้งหมด ตัวอย่างเช่น แทนที่จะใช้บอร์ด TI CC2538 จำนวน 32 บอร์ดที่เรียกใช้ OpenThread สำหรับกรณีทดสอบทั้งหมด คุณสามารถผสมและจับคู่ระหว่างอุปกรณ์อ้างอิง Thread ทั้ง 4 เครื่อง สำหรับแต่ละกรณีทดสอบได้ตามต้องการ
หากต้องการใช้ Testbed แบบผสม คุณต้องกำหนดค่าเพิ่มเติมดังนี้
- เพิ่มพารามิเตอร์เพิ่มเติมต่อไปนี้ลงในไฟล์การกำหนดค่า Test Harness ซึ่งอยู่ที่
C:\GRL\Thread1.1\Config\Configuration.iniEnableDeviceSelection = True
- ดาวน์โหลดไฟล์การกำหนดค่าโทโพโลยีจาก Thread
Group
เพิ่มไฟล์นี้เป็น
TopologyConfig.txtในC:\GRL\Thread1.1\Thread_Harness\TestScriptsไฟล์นี้จะแสดงรายละเอียดว่าควรใช้อุปกรณ์อ้างอิงใดสำหรับแต่ละบทบาทในแต่ละกรณีทดสอบ
คุณสามารถแก้ไขไฟล์การกำหนดค่าโทโพโลยีที่ Thread Group จัดเตรียมไว้ให้สำหรับการกำหนดค่าแบบผสมอื่นๆ ได้ แต่ต้องใช้การกำหนดค่าเดิมสำหรับการรับรองอย่างเป็นทางการ
ค่าที่ถูกต้องสำหรับใช้อ้างอิงอุปกรณ์ในไฟล์การกำหนดค่าโทโพโลยี มีดังนี้
| ค่าในไฟล์การกำหนดค่าโทโพโลยี | อุปกรณ์อ้างอิงของโปรแกรมทดสอบอัตโนมัติ |
|---|---|
ARM |
ARM: NXP FRDM-K64F พร้อม Firefly 6LoWPAN Shield |
NXP |
NXP(Freescale): ดองเกิล 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) ซึ่งช่วยเร่งกระบวนการตรวจสอบสำหรับผู้ให้บริการ Thread Reference Stack
OpenThread มีตัวอย่าง Thread Host Controller Interface (THCI) ที่ช่วยให้ Test Harness ควบคุมคอมโพเนนต์หรือผลิตภัณฑ์ของคุณได้ราวกับว่าเป็น แพลตฟอร์มอ้างอิง DUT อาจทำอย่างใดอย่างหนึ่งต่อไปนี้ ทั้งนี้ขึ้นอยู่กับลักษณะของพอร์ตอนุกรมของแพลตฟอร์มที่คุณใช้
ทำหน้าที่เป็นแพลตฟอร์มการอ้างอิง OpenThread ที่มีอยู่
หากพอร์ตอนุกรมของ DUT ทำงานภายใต้การตั้งค่า 115200 8-N-1 และ อุปกรณ์ตอบสนองอย่างถูกต้องหลังจากรีเซ็ตอุปกรณ์จริงทุกครั้ง (เช่น เพื่อ ยืนยันการเชื่อมต่อที่ถูกต้องของอุปกรณ์กับเครื่อง Windows) แพลตฟอร์ม จะใช้เครื่องมือ THCI ของ OpenThread ได้ เครื่องมือนี้ช่วยให้อุปกรณ์ทำหน้าที่เป็น แพลตฟอร์มการอ้างอิง OpenThread ในระหว่างการทดสอบ
- ปิด GRL Test Harness หากเปิดอยู่
- เชื่อมต่ออุปกรณ์กับเครื่อง Windows
- ค้นหาตัวระบุฮาร์ดแวร์พอร์ตอนุกรมของอุปกรณ์โดยใช้โมดูล pySerial ของ Python
ดังนี้
- ติดตั้ง pySerial ในเครื่อง Windows
- ใช้ Python ในบรรทัดคำสั่งของ Windows เพื่อแสดงรายการตัวระบุฮาร์ดแวร์ทั้งหมด (VID และ PID) สำหรับอุปกรณ์ที่เชื่อมต่อกับเครื่อง ในเอาต์พุตนี้ อุปกรณ์ 1 เครื่องเชื่อมต่อด้วยตัวระบุ VID=1366 และ PID=1015
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - หากทราบพอร์ต COM อยู่แล้ว คุณจะใช้คำสั่งอื่นได้ เช่น หากพอร์ต COM คือ
COM10python -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 ใน
GoldenDeviceHardwareIdsarray ด้วย 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 วินาทีหลังการรีเซ็ต) คุณสามารถปรับแต่ง THCI ของ OpenThread เพื่อถือว่าอุปกรณ์เป็นแพลตฟอร์มใหม่ใน Test Harness ได้
ตัวอย่างเช่น หากต้องการปรับแต่ง THCI โดยใช้แพลตฟอร์ม Nordic Semiconductor nRF52840 ให้ทำดังนี้
- ปิด GRL Test Harness หากเปิดอยู่
แก้ไข
/tools/harness-thci/OpenThread.pyโดยอิงตามลักษณะของ UART ของอุปกรณ์เป้าหมาย การแก้ไขอาจ แตกต่างกันไปในแต่ละอุปกรณ์เป้าหมาย ในกรณีของแพลตฟอร์ม Nordic nRF52840 ให้ทำดังนี้- เปลี่ยนชื่อไฟล์
OpenThread.pyเป็นnRF52840.py เปลี่ยน "OpenThread" 3 รายการแรกเป็น "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
ค้นหาตัวระบุฮาร์ดแวร์ของพอร์ตอนุกรมของอุปกรณ์โดยใช้โมดูล pySerial ของ Python
- ติดตั้ง pySerial ในเครื่อง Windows
- ใช้ Python ในบรรทัดคำสั่งของ Windows เพื่อแสดงรายการตัวระบุฮาร์ดแวร์ทั้งหมด (VID และ PID) สำหรับอุปกรณ์ที่เชื่อมต่อกับเครื่อง ในเอาต์พุตนี้ อุปกรณ์ 1 เครื่องเชื่อมต่อด้วยตัวระบุ VID=1366 และ PID=1015
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - หากทราบพอร์ต COM อยู่แล้ว คุณจะใช้คำสั่งอื่นได้ เช่น หากพอร์ต COM คือ
COM10python -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 อุปกรณ์/พอร์ตจะปรากฏเป็นอุปกรณ์อ้างอิงใหม่
- เลือกช่องทําเครื่องหมายเปิดใช้การเลือกอุปกรณ์ DUT อัตโนมัติใต้รายการฮาร์ดแวร์ที่รองรับ
- เลือกปุ่มตัวเลือกตั้งค่าเป็น DUT ใต้อุปกรณ์/พอร์ตเป้าหมายเพื่อตั้งค่า อุปกรณ์เป็น DUT