1 पॉइंट द्वारा GN⁺ 2024-07-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें

RTOS की ओर बदलाव: RP2040 पर अनुभव

Martijn Braam

  • कंप्यूटर से जुड़े काम करने वाले Martijn Braam का लेख
  • कई माइक्रोकंट्रोलर प्रोजेक्ट्स पर काम कर रहे हैं
  • मुख्य रूप से Raspberry Pi Pico बोर्ड का उपयोग करते हैं, और डेवलपमेंट अनुभव अच्छा रहा

प्रोजेक्ट का अवलोकन

  • वीडियो उपकरण को नियंत्रित करने वाला हार्डवेयर कंट्रोलर बनाया
  • PTZ कैमरा और वीडियो स्विचिंग उपकरण का नियंत्रण
  • मौजूदा कंट्रोलर का प्रदर्शन अच्छा नहीं था, इसलिए नया पैनल बनाना आवश्यक था

हार्डवेयर डिज़ाइन

  • 9 RGB बटन, analog joystick, और display शामिल
  • RS-485 और Ethernet communication module का उपयोग
  • कई बार हार्डवेयर संशोधन के बाद फीचर्स का इम्प्लीमेंटेशन पूरा हुआ

शुरुआती सॉफ़्टवेयर

  • pico-sdk का उपयोग करने वाले cmake प्रोजेक्ट से शुरुआत
  • दूसरे core को Wiznet module के लिए आवंटित किया, पहला core user interface I/O संभालता था
  • कई कार्यों को एक साथ संभालने की जटिलता बढ़ी

FreeRTOS

  • FreeRTOS का उपयोग करके कई कार्यों को parallel में प्रोसेस किया
  • कई tasks बनाए: button, LED, network, DHCP, mDNS, ATEM, VISCA
  • FreeRTOS की समस्याएँ: printf इस्तेमाल करने पर सिस्टम रुक जाता था, hardware abstraction की कमी

Apache NuttX

  • Unix system जैसा environment देता है
  • शुरुआती configuration के बाद वास्तविक shell इस्तेमाल किया जा सकता है
  • menuconfig/Kconfig system के जरिए hardware configuration संभव
  • i2c bus configuration समस्या के कारण basic functionality काम नहीं कर रही थी
  • file system path और shell की आवश्यकता नहीं थी

Zephyr

  • प्रोजेक्ट configuration के लिए Python utility उपलब्ध कराता है
  • 5GB का git repository डाउनलोड करना आवश्यक
  • Zephyr SDK install करना पड़ता है, हालांकि मौजूदा ARM toolchain भी इस्तेमाल किया जा सकता है
  • Raspberry Pi Pico का समर्थन कमजोर, इसलिए अन्य बोर्ड आज़माए गए
  • build errors और warnings ठीक करने के बाद भी यह काम नहीं किया

निष्कर्ष

  • FreeRTOS का उपयोग करके कुछ applications सफलतापूर्वक build किए गए
  • printf के लिए वैकल्पिक implementation की आवश्यकता
  • FreeRTOS का उपयोग जारी रखकर इच्छित functionality हासिल करने की कोशिश

GN⁺ का सारांश

  • यह लेख माइक्रोकंट्रोलर प्रोजेक्ट में RTOS की ओर बदलाव की प्रक्रिया पर है
  • FreeRTOS, Apache NuttX, और Zephyr के फायदे-नुकसान की तुलना की गई है
  • निष्कर्ष यह है कि FreeRTOS सबसे उपयुक्त विकल्प है
  • RTOS चुनते समय विचार करने योग्य विभिन्न तत्वों को समझने में मदद मिलती है
  • समान प्रकार की कार्यक्षमता वाले प्रोजेक्ट्स में FreeRTOS और Zephyr शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-07-07
Hacker News राय
  • लगता है कि यह लेखक RTOS से वही उम्मीद कर रहा है जो Arduino environment से होती है

    • कई Arduino mbed या freertos का उपयोग करते हैं
    • Zephyr इस्तेमाल में आसान है और Pi Pico को भी सपोर्ट करता है
  • RTOS का संक्षिप्त सार:

    • FreeRTOS: ज़्यादातर SOC/डिवाइस पर सपोर्टेड है, लेकिन ड्राइवर हर SOC/डिवाइस के लिए अलग होते हैं
    • Zephyr: वास्तविक hardware abstraction को सपोर्ट करता है और ज़्यादातर SOC को सपोर्ट करता है
    • NuttX: सपोर्ट अच्छा नहीं है, लेकिन जब चलता है तो बहुत शानदार होता है
  • पारंपरिक UNIX तरीके से पूरे सिस्टम में toolchain install करना कष्टदायक है

    • Python को टूल के रूप में इस्तेमाल करने से version समस्याएँ पैदा होती हैं
    • टूल static-linked binaries होने चाहिए
  • PlatformIO सही दिशा में जा रहा है

    • toolchain, SDK, libraries और project configuration को manage करना चाहिए
    • build कहीं भी reproducible होना चाहिए
  • RP2040 projects को Rust और Embassy पर migrate कर रहा हूँ

    • Rust की आदत डालना कठिन है, लेकिन संतोषजनक है
  • Zephyr, Pi Pico को 100% सपोर्ट करता है

    • हैरानी है कि क्या इसने documentation नहीं देखी
  • ThreadX open source है

  • किसी वास्तविक project में Hubris इस्तेमाल करके देखना चाहता हूँ

    • C के साथ और ज़्यादा दर्द झेलना पड़ता है, लेकिन यह Erlang/Elixir जैसा है
  • मेरा मानना है कि microPython आसान रास्ता है

    • async/await आधारित cooperative multitasking अच्छी तरह काम करती है
  • एक साधारण green-thread timer खुद बनाया

    • यह वास्तविक process management को सपोर्ट नहीं करता, लेकिन अलग-अलग sensors को interrogate कर सकता है और signals को process कर सकता है
  • FreeRTOS मूल रूप से industry standard है

  • Rust RTIC rp2040 को सपोर्ट करता है और बहुत lightweight है