-
SerenityOS को वास्तविक हार्डवेयर पर लाना
- मैंने SerenityOS प्रोजेक्ट में और गहराई से काम करने का फैसला इसलिए किया क्योंकि इसका कोडबेस केवल QEMU पर ही चलता था और वास्तविक हार्डवेयर पर नहीं चल पाता था। इसे हल करने के लिए मैंने Dell 3100 Chromebook चुना।
-
Chromebook चुनने का कारण
- Chromebook किफायती और आसानी से उपलब्ध हैं, और इनमें Cr50 security chip होता है जिससे डिवाइस बंद होने पर भी डिबगिंग की जा सकती है। Dell 3100 मॉडल चुनने का कारण यह था कि इसकी कीमत कम थी और कीबोर्ड भी हाई-एंड मॉडल्स की तुलना में बेहतर था।
-
cros_ec समस्या
- Chromebook का Cr50 chip डिबगिंग के लिए बहुत काम का था, लेकिन Dell 3100 में यह सही तरह से काम नहीं कर रहा था। कुछ hardware hacks आज़माए गए, लेकिन सफल नहीं हुए।
-
वैकल्पिक समाधान खोजने का प्रयास
- जब Cr50 chip काम नहीं कर पाया, तब Raspberry Pi Pico बोर्ड से एक वैकल्पिक डिबगिंग सेटअप बनाया। इसके जरिए UART और SPI flash को जोड़ा गया ताकि डिबगिंग संभव हो सके।
-
सॉफ्टवेयर पक्ष
- USB डिवाइस कनेक्शन के लिए CircuitPython का इस्तेमाल किया गया और EEPROM flashing के लिए serprog protocol को CircuitPython में implement किया गया।
-
SerenityOS डिबगिंग
- SerenityOS kernel को डिबग करने के लिए Alpine Linux सेटअप किया गया और GRUB के ज़रिये kernel को अपने-आप डाउनलोड कर टेस्ट करने वाला environment बनाया गया।
-
16550 UART को समझना
- 16550 UART serial communication के लिए एक standard interface है और अधिकांश PCs में मौजूद होता है। लेकिन Dell 3100 में इसे MMIO के जरिए implement किया गया था, जिससे शुरुआत में डिबगिंग कठिन हो गई।
-
eMMC ड्राइवर लागू करना
- eMMC driver को लागू करने के लिए SD और MMC के बीच का फर्क समझा और initialization sequence को implement किया। पता चला कि power control register की गलत सेटिंग समस्या थी, जिसे ठीक कर दिया गया।
-
निष्कर्ष
- यह project करीब 6 महीने चला और वास्तविक हार्डवेयर पर SerenityOS चलाने की दिशा में यह एक महत्वपूर्ण कदम था। आगे और डिबगिंग तथा सुधार की जरूरत बनी रहेगी।
1 टिप्पणियां
Hacker News टिप्पणी