สถานะของ Zephyr และ NuttX RTOS การรองรับเพื่อ ESP32

Espressif เพิ่งประกาศว่าระบบปฏิบัติการโอเพ่นซอร์สแบบเรียลไทม์ทั้ง Zephyr และ NuttX ได้รับการรองรับอย่างเป็นทางการสำหรับ WiSoC (Wireless system-on-chip) ซีรีส์ ESP32

อันที่จริงสิ่งนี้เกิดขึ้นนานแล้ว และเมื่อฉันลองใช้พอร์ตนักพัฒนาชุมชนของ Zephyr OS บน ESP32 ในปี 2561 เป็นครั้งแรกมันไม่ทำงานเลย และฉันก็ไม่สามารถทำให้ตัวอย่าง ไฟ LED กะพริบบนบอร์ดWemos Lolin32และ ไม่สามารถสร้างรหัสตัวอย่าง WiFi ได้สำเร็จ แต่เวลาผ่านไปแล้ว Espressif Systems เริ่มทำงานกับ Zephyr อย่างเป็นทางการในปี 2563 และตอนนี้ I/O, WiFi และฟังก์ชันอื่นๆ บางอย่างสามารถใช้งานได้ตามปกติบน Zephyr และ NuttX RTOS

ESP32-Zephyr-NuttX

Zephyr รองรับ ESP32

ครั้งแรกที่เราเขียนเกี่ยวกับโครงการ Zephyr ในปี 2559 โดยอธิบายถึงระบบปฏิบัติการดังนี้:

Zephyr Project เป็นระบบปฏิบัติการแบบ Real-time Operating System (RTOS)  ที่ออกแบบมาเพื่อใ่ช้งานแอปพลิเคชัน Internet of Things (IoT)  และประกอบด้วย microkerne สำหรับงานที่มีลำดับความสำคัญต่ำกว่า ตลอดจน nanokernel สำหรับจัดการส่วนแบบเรียลไทม์, footprint หน่วยความจำ Zephyr อาจเหลือเพียง 8KB รองรับชุดคำสั่ง x86, ARMv7-M และ ARC รวมถึงสแต็ค Bluetooth และ 6LoWPAN รวมถึงไดรเวอร์ I/O สำหรับ GPIO, ADC, I2C และ SPI และรองรับการใช้งานที่จำกัด โปรโตคอล (CoAP) และ Datagram Transport Layer Security (DTLS)

ตั้งแต่นั้นมา เราได้เห็นระบบปฏิบัติการแบบเรียลไทม์ที่ใช้ในไมโครคอนโทรลเลอร์ไร้สายหลายตัว โดยเฉพาะชิป Nordic Semi nRF ที่มี Zephyr เป็นส่วนหนึ่งของ nRF Connect SDK ของบริษัท, QuickLogic EOS S3 MCU + eFPGA SoC , บอร์ด STM32 พร้อมวิทยุ LoRaและอื่นๆ อีกมากมาย ขึ้น

การรองรับ ESP32 อาจไม่สมบูรณ์เท่ากับ ESP-IDF, Arduino หรือ MicroPython รองรับบลูทูธ ESP32 ตั้งแต่เมษายน 2564 และ  ESP32-C3 ตั้งแต่สิงหาคม 2564  แต่คุณจะพบเอกสารเพื่อเริ่มต้นหรือบล็อกโพสต์ ลงวันที่เมษายน 2564 สำหรับสิ่งเดียวกันที่อธิบายว่า UART, I2C, GPIO, SPI Master และTimers นั้นทำงานได้ตามปกคิ WiFi เพิ่งได้รับการดัดแปลง และEmbarcados มีบทช่วยสอนเป็นภาษาโปรตุเกส ยังคงมีการทำงานมากขึ้นที่จะทำ หากคุณต้องการทราบความคืบหน้า คุณสามารถตรวจสอบแผนงาน Zephyr ESP32 บน Github  การอัปเดตครั้งล่าสุด (26 กรกฎาคม) แสดงให้เห็นว่า SMP ( ใช้ได้เพียงคอร์เดียวเท่านั้น) DMA, ULP, ADC, DAC, CAN และ I2S ยังคงต้องทำงานต่อไป

NuttX RTOS รองรับ ESP32

NuttX เป็นระบบปฏิบัติการแบบเรียลไทม์ที่พัฒนาขึ้นโดย Greg Nutt ให้เป็นมาตรฐาน POSIX สำหรับไมโครคอนโทรลเลอร์ 8 บิต ตอนนี้เป็นโปรเจ็กต์ Apache Incubatorแล้ว NuttX ปรับขนาดจากสภาพแวดล้อมไมโครคอนโทรลเลอร์ 8 บิตเป็น 32 บิต และส่วนใหญ่เป็นไปตามมาตรฐาน POSIX และ ANSI แม้ว่า API มาตรฐานเพิ่มเติมจาก Unix และ RTOS ทั่วไปอื่น ๆ เช่น VxWorks สามารถนำมาใช้เพื่อเพิ่มฟังก์ชันการทำงานที่ไม่สามารถใช้งานได้ภายใต้สิ่งเหล่านี้ มาตรฐานหรือสำหรับการทำงานที่ไม่เหมาะสมกับสภาพแวดล้อมแบบฝังลึก (เช่น fork)

ในขณะที่ NuttX เก่ากว่า Zephyr ฉันไม่ค่อยได้เห็นบ่อยและสำหรับตัวเองใช้เพียงครั้งเดียวเป็นส่วนหนึ่งของ บอร์ดSpresense SDK ของ Sony  ในบทความที่เกี่ยวกับ NuttX เราสังเกตเห็นบอร์ด Jupiter Nano ที่ขับเคลื่อนด้วยโปรเซสเซอร์ 500 MHz Microchip SAMA5 Cortex-A5 และรองรับทั้ง NuttX และ Linux

เราสามารถค้นหาซอร์สโค้ดที่เกี่ยวข้องกับ ESP32 ในที่เก็บ Apache NuttX ที่มีทั้งโฟลเดอร์ ESP32 และ ESP32-S2 สำหรับ WiSoC ที่ใช้ Xtensa รวมถึงโฟลเดอร์ ESP32-C3 สำหรับตัวแปร RISC-V ที่ใหม่กว่า ฉันรู้สึกว่าเอกสารประกอบ Nuttx ดีกว่าของ Zephyr (ฉันได้ดูไปสองสามนาทีแล้ว) และเราสามารถค้นหารายการคุณสมบัติที่รองรับและไม่รองรับได้

ESP32-NuttX-Features

รองรับ GPIO และ WiFi อีกครั้ง แต่ฟีเจอร์อื่นๆ เช่น Bluetooth และ ADC ไม่รองรับ ดูเหมือนว่ารายการจะใกล้เคียงกับ Zephyr อย่างคร่าว ๆ และตอนหลังอธิบายว่าคุณลักษณะบางอย่างได้รับการใช้งานกับ FreeRTOS RTOS ที่ใช้ใน ESP-IDF ดังนั้นจึงยากต่อการย้ายไปยังระบบปฏิบัติการอื่น

คุณยังจะพบบล็อกโพสต์การเริ่มต้นใช้งานและอีกบล็อกหนึ่งเป็นภาษาโปรตุเกส แต่มีภาพหน้าจอเป็นภาษาอังกฤษ ซึ่งแสดงวิธีใช้ไลบรารีกราฟิก LVGL กับ NuttX บน ESP32

Espressif Sytems ยังกล่าวอีกว่าพวกเขาช่วยพอร์ต MCUboot ด้านความปลอดภัยโครงการ IoT bootloader ให้กับทั้ง Zephyr และ NuttX และคุณสามารถค้นหาการนำเสนอล่าสุดที่มีรายละเอียดว่าการบูต NuttX อย่างปลอดภัยด้วย MCUboot บนบอร์ดพัฒนา ESP32-Devkit-C ได้อย่างไร

ประเด็นหลักคือ Zephyr และ NuttX RTOSes รองรับ ESP32 ได้ดีขึ้นอย่างมากในช่วงไม่กี่ปีที่ผ่านมา แต่ขึ้นอยู่กับชุดคุณลักษณะที่แอปพลิเคชันของคุณกำหนด ซึ่งอาจยังไม่เหมาะสำหรับการปรับใช้เชิงพาณิชย์

แปลจากบทความภาษาอังกฤษ : Status of Zephyr and NuttX RTOS support for ESP32

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
โฆษณา