एकल महिला हार्डवेयर कंपनी का टेक स्टैक
(blog.thea.codes)-
ओपन सोर्स सिंथेसाइज़र कंपनी Winterbloom चलाने वाली एक इंजीनियर द्वारा इस्तेमाल की जा रही तकनीकों और टूल्स का विवरण
-
अत्याधुनिक चीज़ों के पीछे भागने के बजाय, जिन टूल्स और तकनीकों को वह अच्छी तरह समझती हैं, उनसे अपने लक्ष्य हासिल करती हैं
"Lateral thinking with withered technology"
→ यानी (नई तकनीक नहीं बल्कि) पुरानी पड़ चुकी तकनीक का उपयोग करके मज़े पर ध्यान केंद्रित करें, तो बिल्कुल नई चीज़ बनाई जा सकती है — इस तरह की पार्श्व सोच
→ यह बात "Gunpei Yokoi" ने कही थी, जिन्होंने आधुनिक Nintendo की तकनीकी विकास दर्शन को आकार दिया: वही व्यक्ति जिन्होंने Nintendo के handheld game device (Game Boy) और VR गेम बनाए
- माइक्रोकंट्रोलर: ध्यान केंद्रित करने के लिए 2-3 उत्पाद चुने गए हैं
→ Microchip SAM D21, D51, D11
→ ये तीनों USB, flexible SERCOM, multi-channel 12-bit ADC, advanced timers आदि को सपोर्ट करते हैं
→ अतिरिक्त रूप से RP2040 (जब analog I/O की ज़रूरत न हो), STM32H7 (जब firmware के भीतर sound generate करनी हो) पर भी विचार किया जा रहा है
- हार्डवेयर डिज़ाइन: ओपन सोर्स electronic design automation tool KiCAD का उपयोग
→ इस्तेमाल किए जाने वाले components के लिए common symbol, footprint, और 3D model वाली KiCad libraries GitHub पर साझा की जा रही हैं
→ पसंदीदा प्रमुख components की सूची Notion page पर सार्वजनिक है (विवरण, part number, datasheet, manufacturer, खरीद लिंक, उपयोग)
-
firmware: language, libraries, build system, testing framework आदि (नीचे एक-एक बिंदु में)
-
C भाषा, GCC, CMSIS
→ पुरानी लेकिन परिचित C भाषा का उपयोग
→ Keil/IAR जैसे paid compiler मौजूद हैं, लेकिन open source GCC ARM Embedded Toolchain का उपयोग किया जाता है
→ Microchip द्वारा दिया गया HAL संभालना बहुत मुश्किल है, इसलिए CMSIS library सीधे इस्तेमाल की जाती है और उसके ऊपर एक छोटी abstraction लिखी जाती है
CMSIS, ARM द्वारा दिया गया vendor-independent hardware abstraction layer है
- firmware libraries
→ TinyUSB: बेहतरीन और छोटा USB library
→ Marco Paland's Printf: माइक्रोकंट्रोलर के लिए optimized printf implementation
→ libfixmath: fixed-point calculations के लिए छोटी library (उन माइक्रोकंट्रोलर्स में उपयोगी जिनमें fixed-point unit नहीं होता)
→ µnit: बहुत छोटा और उपयोगी testing framework
- build system
→ Python और Ninja से build
→ शुरुआत Makefile से हुई थी, लेकिन समय के साथ उसे लिखना मुश्किल हो गया, इसलिए बदलाव किया गया
- Python-आधारित tooling
→ wintertools नाम के repo में एकीकृत रूप से प्रबंधित
→ firmware/hardware से जुड़े build/test में मदद करने वाले scripts का संग्रह
- CircuitPython
→ कुछ products custom firmware का उपयोग नहीं करते, बल्कि माइक्रोकंट्रोलर शिक्षा के लिए इस्तेमाल होने वाले CircuitPython का उपयोग करते हैं
→ इससे ग्राहकों के लिए customization आसान हो जाती है
→ firmware/software development को और आसान बनाता है
→ Adafruit द्वारा संचालित एक शानदार community मौजूद है
- दस्तावेज़ और user guide
→ Markdown में लिखे जाते हैं। MkDocs से static webpage बनाकर GitHub Pages पर host किया जाता है
→ Bulma CSS framework का उपयोग
→ चीज़ों को सरल रखने के लिए Sass/LESS आदि का उपयोग नहीं किया जाता
- JavaScript
→ जानबूझकर बहुत जटिल Node.js ecosystem से बचा गया है
→ सामान्य JavaScript और modules, classes, arrow functions, Canvas, WebMIDI, TypedArray आदि का उपयोग
→ भविष्य में Deno से उम्मीदें हैं
2 टिप्पणियां
कमाल है.. अकेले यह सब करना..
ऊपर का लेख और शीर्षक मिलते-जुलते हैं, लेकिन यह hardware startup होने की वजह से इसकी बात पूरी तरह अलग है, इसलिए इसे पढ़ना दिलचस्प लगा।