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 टिप्पणियां
Hacker News राय
लगता है कि यह लेखक RTOS से वही उम्मीद कर रहा है जो Arduino environment से होती है
RTOS का संक्षिप्त सार:
पारंपरिक UNIX तरीके से पूरे सिस्टम में toolchain install करना कष्टदायक है
PlatformIO सही दिशा में जा रहा है
RP2040 projects को Rust और Embassy पर migrate कर रहा हूँ
Zephyr, Pi Pico को 100% सपोर्ट करता है
ThreadX open source है
किसी वास्तविक project में Hubris इस्तेमाल करके देखना चाहता हूँ
मेरा मानना है कि microPython आसान रास्ता है
एक साधारण green-thread timer खुद बनाया
FreeRTOS मूल रूप से industry standard है
Rust RTIC rp2040 को सपोर्ट करता है और बहुत lightweight है