Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

สร้าง OpenThread

โซ่เครื่องมือ

toolchain หลักที่รองรับสำหรับการสร้าง OpenThread คือ GNU Autotools

GNU Autotools

คำแนะนำในการสร้างตัวอย่างด้วย GNU Autotools สามารถพบได้ใน โฟลเดอร์แพลตฟอร์ม ของแต่ละตัวอย่าง โปรดทราบว่าเจตนาของตัวอย่างเหล่านี้คือการแสดงโค้ดขั้นต่ำที่จำเป็นในการเรียกใช้ OpenThread บนแต่ละแพลตฟอร์มที่เกี่ยวข้อง ดังนั้นจึงไม่เน้นความสามารถทั้งหมดของแพลตฟอร์ม

การกำหนดค่าเพิ่มเติมในระหว่างการสร้างอาจจำเป็นขึ้นอยู่กับกรณีการใช้งานของคุณ

GNU Autotools - สร้าง Nest Labs

Nest Labs ได้สร้างเฟรมเวิร์กระบบบิวด์แบบครบวงจรที่กำหนดเองตาม GNU Autotools ใช้สำหรับแพ็คเกจซอฟต์แวร์แบบสแตนด์อโลนที่ต้องการรองรับ:

  • การสร้างและกำหนดเป้าหมายกับระบบโฮสต์การสร้างแบบสแตนด์อโลน
  • ระบบเป้าหมายแบบฝังโดยใช้ห่วงโซ่เครื่องมือที่ใช้ GCC หรือเข้ากันได้

ขอแนะนำให้ใช้รุ่น Nest Labs ของ GNU Autotools กับ OpenThread เนื่องจากระบบโฮสต์บิวด์บางระบบอาจไม่มี GNU Autotools หรืออาจมีเวอร์ชันและการแจกแจงที่แตกต่างกัน สิ่งนี้นำไปสู่เอาต์พุต Autotools หลักและรองที่ไม่สอดคล้องกันซึ่งส่งผลให้ผู้ใช้และประสบการณ์การสนับสนุนแตกต่างกัน Nest Labs build หลีกเลี่ยงสิ่งนี้โดยจัดเตรียมชุดของ GNU Autotools ที่มีคุณสมบัติเหมาะสมที่สร้างไว้ล่วงหน้าพร้อมด้วยสคริปต์ที่เกี่ยวข้องซึ่งไม่ต้องอาศัยเวอร์ชันของ Autotools บนระบบโฮสต์การสร้าง

โดยทั่วไปโปรเจ็กต์นี้จะถูกย่อย (หรือ git submoduled) ลงในที่เก็บโปรเจ็กต์เป้าหมายและทำหน้าที่เป็นส่วนเริ่มต้นสำหรับระบบบิลด์ของโปรเจ็กต์นั้น

หากต้องการเรียนรู้เพิ่มเติมหรือใช้เครื่องมือนี้สำหรับงานสร้าง OpenThread ของคุณโปรดดูที่ README

วิธีสร้าง OpenThread

ขั้นตอนในการสร้าง OpenThread จะแตกต่างกันไปขึ้นอยู่กับ toolchain เครื่องผู้ใช้และแพลตฟอร์มเป้าหมาย

ขั้นตอนการทำงานที่พบบ่อยที่สุดคือ:

  1. ตั้งค่าสภาพแวดล้อมการสร้างและติดตั้ง toolchain ที่ต้องการ:
    1. ในการสร้างบนเครื่องโดยตรง โปรดดูที่ Simulation Codelab สำหรับคำแนะนำโดยละเอียด
    2. ในการใช้คอนเทนเนอร์ Docker กับสภาพแวดล้อมที่กำหนดไว้ล่วงหน้าให้ ดาวน์โหลดและเรียกใช้อิมเมจ environment OpenThread:
      docker pull openthread/environment:latest
      docker run -it --rm openthread/environment bash
  2. ภายในสภาพแวดล้อมที่คุณเลือกโคลนที่เก็บ OpenThread Git:
    git clone https://github.com/openthread/openthread
  3. จากไดเร็กทอรีรูทของที่เก็บโคลน:
    1. ติดตั้ง GNU toolchain และการอ้างอิงอื่น ๆ (ทางเลือก):
      ./script/bootstrap
    2. ตั้งค่าสภาพแวดล้อม:
      ./bootstrap
    3. กำหนดค่าและสร้างโดยใช้ตัวอย่างแพลตฟอร์มที่กำหนดไว้ล่วงหน้าพร้อมการปรับแต่งเพิ่มเติมผ่านสวิตช์ทั่วไป:
      1. แก้ไขค่าคงที่เวลาคอมไพล์ /examples/platforms/ <platform> /openthread-core- <platform> -config.h ไฟล์ /examples/platforms/ <platform> /openthread-core- <platform> -config.h
      2. สร้างการกำหนดค่า:
        make -f examples/Makefile-<platform> <switches>
  4. แฟลชไบนารีที่ต้องการไปยังแพลตฟอร์มเป้าหมาย ไบนารีที่สร้างขึ้นทั้งหมดจะอยู่ใน /output/ <platform> /bin เมื่อใช้โหมดขั้นสูง <platform> อาจเฉพาะสำหรับเครื่องของผู้ใช้ ตัวอย่างเช่น x86_64-apple-darwin

คำแนะนำเฉพาะในการสร้างแพลตฟอร์มที่รองรับด้วย GNU Autotools สามารถพบได้ใน โฟลเดอร์แพลตฟอร์ม ของแต่ละตัวอย่าง

การกำหนดค่า

คุณสามารถกำหนดค่า OpenThread สำหรับฟังก์ชันและลักษณะการทำงานที่แตกต่างกันในระหว่างกระบวนการสร้าง ตัวเลือกการกำหนดค่าที่ใช้ได้มีรายละเอียดตามตำแหน่งต่อไปนี้:

ประเภท สถานที่
ค่าคงที่เวลาคอมไพล์ แสดงอยู่ในไฟล์ส่วนหัวทั้งหมดใน /src/core/config
สวิตช์สร้าง Makefile แสดงรายการใน /examples/common-switches.mk

สร้างตัวอย่าง

ใช้สวิตช์เพื่อเปิดใช้งานฟังก์ชันสำหรับแพลตฟอร์มตัวอย่าง ตัวอย่างเช่นในการสร้างตัวอย่าง CC2538 โดยเปิดใช้งานการสนับสนุนข้าราชการและผู้เข้าร่วม:

make -f examples/Makefile-cc2538 COMMISSIONER=1 JOINER=1

หรือเพื่อสร้างตัวอย่าง nRF52840 โดยเปิดใช้งาน คุณสมบัติ Jam Detection :

make -f examples/Makefile-nrf52840 JAM_DETECTION=1

ไบนารี

ไบนารีต่อไปนี้ถูกสร้างขึ้นใน /output/ <platform> /bin จากกระบวนการสร้าง ในการพิจารณาว่าไบนารีใดถูกสร้างขึ้นให้ใช้กำหนดค่าแฟล็กตัวเลือกด้วยคำสั่ง ./configure กำหนดค่าเพื่อสร้าง Makefile อัพเดตสำหรับการสร้าง ตัวอย่างเช่นในการสร้าง OpenThread และสร้างเฉพาะไบนารี CLI:

./configure --enable-cli
make
ไบนารี่ คำอธิบาย กำหนดค่าแฟล็กตัวเลือก
ot-cli-ftd อุปกรณ์ Full Thread สำหรับการออกแบบ SoC --enable-cli
--enable-ftd
ot-cli-mtd อุปกรณ์ด้ายน้อยที่สุดสำหรับการออกแบบ SoC --enable-cli
--enable-mtd
ot-ncp-ftd อุปกรณ์ Full Thread สำหรับการออกแบบ Network Co-Processor (NCP) --enable-ncp
--enable-ftd
ot-ncp-mtd อุปกรณ์ด้ายน้อยที่สุดสำหรับการออกแบบ NCP --enable-ncp
--enable-mtd
ot-rcp การออกแบบ Radio Co-Processor (RCP) --enable-ncp
--enable-radio-only

หากไม่ได้ใช้แฟล็กเหล่านี้หรือตัวอย่างแพลตฟอร์มแอ็พพลิเคชันจะไม่ถูกสร้างขึ้น แต่ไฟล์ไลบรารี OpenThread ยังคงสร้างใน /output/ <platform> /lib เพื่อใช้ในโปรเจ็กต์

ตรวจสอบตัวอย่าง Makefiles สำหรับแต่ละแพลตฟอร์มเพื่อดูว่าแฟล็กใดที่แต่ละแพลตฟอร์มรองรับ ตัวอย่างเช่น TI CC2650 ไม่รองรับ FTD สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ FTD และ MTD โปรดดูที่ Thread Primer สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการออกแบบ SoC และ NCP โปรดดูที่ แพลตฟอร์ม

กระบวนการแฟลชไบนารีเหล่านี้แตกต่างกันไปตามแพลตฟอร์มตัวอย่าง ดู READMEs ใน โฟลเดอร์ตัวอย่าง ของแต่ละแพลตฟอร์มสำหรับคำแนะนำโดยละเอียด

OpenThread Daemon

OpenThread Daemon (OT Daemon) เป็นโหมดบิลด์ OpenThread POSIX ที่รัน OpenThread เป็นบริการและใช้กับการออกแบบ RCP สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างและใช้งานโปรดดูที่ OpenThread Daemon

สร้างแพ็คเกจการสนับสนุน

Build Support Packages (BSP) อยู่ใน /third_party BSP เป็นรหัสของบุคคลที่สามเพิ่มเติมที่ใช้โดย OpenThread บนแต่ละแพลตฟอร์มที่เกี่ยวข้องโดยทั่วไปจะรวมไว้เมื่อ พอร์ต OpenThread ไปยังแพลตฟอร์มฮาร์ดแวร์ใหม่